def changed(self):
     self.disconnectAll()
     #        self.scenario.genNbEnf()
     self.populate()
     self.action_compute.setEnabled(True)
     self.emit(SIGNAL('changed()'))
     self.connectAll()
    def rmvPerson(self, noi=None):
        if noi is None:
            noi = self.nbRow() - 1
        self.scenario.rmvIndiv(noi)
        self.rmvRow()
        self.add_btn.setEnabled(True)

        self.emit(SIGNAL('compoChanged()'))
 def resetScenario(self):
     '''
     Resets scenario
     '''
     while self.nbRow() > 1:
         self.rmvPerson()
     self.simulation.reset_scenario
     self.emit(SIGNAL('compoChanged()'))
    def __init__(self, scenario, parent=None):
        super(Logement, self).__init__(parent)
        self.setupUi(self)
        self.parent = parent
        self.scenario = scenario
        self.spinCP.setValue(scenario.menage[0]['code_postal'])
        self.spinLoyer.setValue(scenario.menage[0]['loyer'])
        self.comboSo.setCurrentIndex(scenario.menage[0]['so'] -
                                     1)  # -1 because 0 is "non renseigné"
        self.spinTH.setValue(
            scenario.menage[0]['zthabm'])  # -1 because 0 is "non renseigné"

        def update_ville(code):
            commune = get_zone(code)
            if commune is not None:
                self.bbox.button(QDialogButtonBox.Ok).setEnabled(True)
            else:
                commune = ("Ce code postal n'est pas reconnu", '2')
                self.bbox.button(QDialogButtonBox.Ok).setEnabled(False)

            self.commune.setText(commune[0])
            self.spinZone.setValue(int(commune[1]))

        update_ville(self.spinCP.value())

        self.connect(self.spinCP, SIGNAL('valueChanged(int)'), update_ville)

        def update_th(value):
            self.spinTH.setValue(int(value))

        self.connect(self.spinTH, SIGNAL('valueChanged(int)'), update_th)

        def so_changed(value):
            if value in (0, 1):
                self.spinLoyer.setValue(0)
                self.spinLoyer.setEnabled(False)
            else:
                self.spinLoyer.setValue(500)
                self.spinLoyer.setEnabled(True)

        self.connect(self.comboSo, SIGNAL('currentIndexChanged(int)'),
                     so_changed)
        self.connect(self.bbox, SIGNAL("accepted()"), SLOT("accept()"))
        self.connect(self.bbox, SIGNAL("rejected()"), SLOT("reject()"))
 def quifamChanged(self, newFam):
     if newFam == 'parent 1':
         qui = 'chef'
     elif newFam == 'parent 2':
         qui = 'part'
     elif newFam == 'enfant':
         qui = 'enf'
     senderNoi = int(self.sender().objectName()[3])
     self.scenario.modifyFam(senderNoi, newQuifam=qui)
     self.emit(SIGNAL('compoChanged()'))
 def set_x_axis(self):
     '''
     Sets the varying variable of the scenario
     '''
     widget = self.x_axis_box
     if isinstance(widget, QComboBox):
         data = widget.itemData(widget.currentIndex())
         x_axis = unicode(data)
         self.scenario.x_axis = x_axis
         self.set_option('x_axis', x_axis)
     self.emit(SIGNAL('compoChanged()'))
 def load(self):
     cas_type_dir = self.get_option('import_dir')
     fileName = QFileDialog.getOpenFileName(self, _("Open a test case"),
                                            cas_type_dir,
                                            u"Cas type OpenFisca (*.ofct)")
     if not fileName == '':
         n = len(self.scenario.indiv)
         try:
             self.scenario.openFile(fileName)
             while n < self.nbRow():
                 self.addRow()
                 n += 1
             while n > self.nbRow():
                 self.rmvRow()
                 n -= 1
             self.emit(SIGNAL('compoChanged()'))
             self.emit(SIGNAL("ok()"))
         except Exception, e:
             QMessageBox.critical(
                 self, "Erreur",
                 u"Erreur lors de l'ouverture du fichier : le fichier n'est pas reconnu : \n "
                 + e, QMessageBox.Ok, QMessageBox.NoButton)
 def openDeclaration(self):
     """
     Open the declaration widget
     """
     noi = int(self.sender().objectName()[3])
     self.scenario.genNbEnf()
     msg = self.scenario.check_consistency()
     if msg:
         QMessageBox.critical(self, u"Ménage non valide", msg,
                              QMessageBox.Ok, QMessageBox.NoButton)
         return False
     self._declaration = Declaration(self, noi)
     self._declaration.exec_()
     self.emit(SIGNAL('compoChanged()'))
    def set_maxrev(self):
        '''
        Sets the varying variable of the scenario
        '''
        widget = self.maxrev_box

        if isinstance(widget, QSpinBox) or isinstance(widget, QDoubleSpinBox):
            maxrev = widget.value()
            print "in set_maxrev :", maxrev
            self.scenario.maxrev = maxrev
            self.set_option('maxrev', maxrev)
            self.maxrev = maxrev

        self.emit(SIGNAL('compoChanged()'))
 def addPerson(self):
     noi = self.nbRow()
     self.addRow()
     if noi == 1:
         self.scenario.addIndiv(noi,
                                birth=date(1975, 1, 1),
                                quifoy='conj',
                                quifam='part')
     else:
         self.scenario.addIndiv(noi,
                                birth=date(2000, 1, 1),
                                quifoy='pac',
                                quifam='enf')
     self.emit(SIGNAL('compoChanged()'))
    def addPref(self):
        noi = 0
        self._listPerson.append([
            QLabel('%d' % (noi + 1), self),
            QDateEdit(self),
            QComboBox(self),
            QComboBox(self),
            QPushButton(self),
            QComboBox(self),
            QComboBox(self)
        ])

        temp = self._listPerson[0]

        temp[S.birth].setDisplayFormat(
            QApplication.translate("Page01", "dd MMM yyyy", None,
                                   QApplication.UnicodeUTF8))
        temp[S.birth].setObjectName('Bir%d' % noi)
        temp[S.birth].setCurrentSection(QDateEdit.YearSection)

        temp[S.decpos].setObjectName('Dec%d' % noi)
        temp[S.decpos].addItems(['vous'])
        temp[S.decpos].setEnabled(False)

        temp[S.decnum].setObjectName('Foy%d' % noi)
        temp[S.decnum].setEnabled(False)

        temp[S.fampos].addItems(['parent 1'])
        temp[S.fampos].setObjectName('Fam%d' % noi)
        temp[S.fampos].setEnabled(False)

        temp[S.famnum].setObjectName('Fam%d' % noi)
        temp[S.famnum].setEnabled(False)

        temp[S.decbtn].setObjectName('But%d' % noi)

        for i in xrange(7):
            self.gridLayout.addWidget(temp[i], noi + 2, i)
            self.gridLayout.setAlignment(temp[i], Qt.AlignCenter)

        self.emit(SIGNAL('compoChanged()'))
 def connectAll(self):
     for person in self._listPerson:
         QObject.connect(person[S.birth], SIGNAL('dateChanged(QDate)'),
                         self.birthChanged)
         QObject.connect(person[S.decpos],
                         SIGNAL('currentIndexChanged(QString)'),
                         self.quifoyChanged)
         QObject.connect(person[S.decnum],
                         SIGNAL('currentIndexChanged(int)'),
                         self.foyerChanged)
         QObject.connect(person[S.fampos],
                         SIGNAL('currentIndexChanged(QString)'),
                         self.quifamChanged)
         QObject.connect(person[S.famnum],
                         SIGNAL('currentIndexChanged(int)'),
                         self.familleChanged)
         QObject.connect(person[S.decbtn], SIGNAL('clicked()'),
                         self.openDeclaration)
Exemple #13
0
 def calculated(self):
     self.emit(SIGNAL('calculated()'))
 def birthChanged(self, date):
     senderNoi = int(self.sender().objectName()[3])
     self.scenario.indiv[senderNoi].update({'birth': date.toPyDate()})
     self.emit(SIGNAL('compoChanged()'))
 def openInfoComp(self):
     self._infocomp = InfoComp(self.scenario, self)
     self._infocomp.exec_()
     self.emit(SIGNAL('compoChanged()'))
 def openLogement(self):
     self._logement = Logement(self.scenario, self)
     self._logement.exec_()
     self.emit(SIGNAL('compoChanged()'))
 def foyerChanged(self):
     sender = self.sender()
     noi = int(sender.objectName()[3])
     newfoyer = int(sender.currentText()[-1]) - 1
     self.scenario.modify(noi, newFoyer=newfoyer)
     self.emit(SIGNAL('compoChanged()'))
 def quifoyChanged(self, newQuifoy):
     senderNoi = int(self.sender().objectName()[3])
     self.scenario.modify(senderNoi, newQuifoy=newQuifoy)
     self.emit(SIGNAL('compoChanged()'))
 def familleChanged(self):
     sender = self.sender()
     noi = int(sender.objectName()[3])
     newfamille = int(sender.currentText()[-1]) - 1
     self.scenario.modifyFam(noi, newFamille=newfamille)
     self.emit(SIGNAL('compoChanged()'))
    def __init__(self, scenario=None, parent=None):
        super(CompositionWidget, self).__init__(parent)
        self.setupUi(self)
        if parent is not None:
            self.parent = parent

        self.setLayout(self.verticalLayout)
        # Initialize xaxes
        x_axis = self.get_option('x_axis')
        axes_names = []
        for col, axe in self.XAXIS_PROPERTIES.iteritems():
            self.x_axis_box.addItem(
                col, to_qvariant(axe["name"])
            )  # convert col to label by using tax_benefit_system
            #            self.x_axis_box.addItem(axe.label, to_qvariant(axe.name))
            axes_names.append(axe["name"])
        self.x_axis_box.setCurrentIndex(axes_names.index(x_axis))

        self.initialize_plugin()
        # Initialize maxrev # make it country dependant
        self.maxrev_box.setMinimum(0)
        self.maxrev_box.setMaximum(100000000)
        self.maxrev_box.setSingleStep(1000)
        self.maxrev_box.setSuffix(CURRENCY)
        maxrev = self.get_option('maxrev')
        self.maxrev_box.setValue(maxrev)
        self.maxrev = maxrev

        if scenario is not None:
            self.set_scenario(scenario)

        self.connect(self.open_btn, SIGNAL('clicked()'), self.load)
        self.connect(self.save_btn, SIGNAL('clicked()'), self.save)
        self.connect(self.add_btn, SIGNAL('clicked()'), self.addPerson)
        self.connect(self.rmv_btn, SIGNAL('clicked()'), self.rmvPerson)
        self.connect(self.lgt_btn, SIGNAL('clicked()'), self.openLogement)
        self.connect(self.inf_btn, SIGNAL('clicked()'), self.openInfoComp)
        self.connect(self.reset_btn, SIGNAL('clicked()'), self.resetScenario)
        self.connect(self.x_axis_box, SIGNAL('currentIndexChanged(int)'),
                     self.set_x_axis)
        self.connect(self.maxrev_box, SIGNAL('valueChanged(int)'),
                     self.set_maxrev)
        self.connect(self, SIGNAL('compoChanged()'), self.changed)
        self._listPerson = []
        self.addPref()
        self.rmv_btn.setEnabled(False)
        self.emit(SIGNAL("ok()"))