def __init__(self, id, locator=None): Declaration.__init__(self, locator) self.id = id self.products = [] self.reactants = [] self.efficiencies = [] self.ford = [] self.arrhenius = None self.units = {} self.lt = None self.rev = None self.rlt = None self.duplicate = None self.thirdBody = None self.reversible = None self.falloff = None self.low = None self.sri = None self.troe = None self.radiation = None return
def __init__(self, symbol, weight=None, locator=None): Declaration.__init__(self, locator) self.symbol = symbol self.weight = weight return
def __init__(self, symbol, locator=None): Declaration.__init__(self, locator) self.symbol = symbol self.phase = None self.composition = [] return
def openDeclaration(self): 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 __init__(self, symbol, locator=None): Declaration.__init__(self, locator) self.symbol = symbol self.phase = None self.composition = [] self.range = None self.lowParameters = [] self.highParameters = [] return
def __str__(self): str = "symbol='%s'" % self.symbol if self.weight: str += "weight=%g" % self.weight str += ", " + Declaration.__str__(self) return str
def convert_to_ast(node): program = Program() program.set_name(node.get_name()) program.set_type(node.get_type()) dclr_child = node.get_child_nodes()[0] dclr_list = DclrList() while True: if dclr_child is not None and dclr_child.get_name() == 'var': ident_name = dclr_child.get_child_nodes()[0] declaration = Declaration(ident_name.get_name()) declaration.set_name(ident_name.get_name()) declaration.set_type(symbol_table.get(ident_name.get_name())) dclr_list.add_declaration_to_list(declaration) AST.dot.edge(dclr_list.get_gv_name(), declaration.get_gv_name()) length = len(dclr_child.get_child_nodes()) dclr_child = dclr_child.get_child_nodes()[length - 1] else: break program.set_dclr_list(dclr_list) AST.dot.edge(program.get_gv_name(), dclr_list.get_gv_name()) stmt_child = node.get_child_nodes()[2] stmt_list = generate_statement_list(stmt_child) if stmt_list.get_type_error(): AST.dot.edge(program.get_gv_name(), stmt_list.get_gv_name(), color='red') else: AST.dot.edge(program.get_gv_name(), stmt_list.get_gv_name()) program.set_stmt_list(stmt_list) return program
def __str__(self): str = "symbol='%s'" % self.symbol if self.phase: str += ", phase=%s" % self.phase if self.composition: str += ", composition=%s" % `self.composition` str += ", " + Declaration.__str__(self) return str
def __str__(self): str = "symbol='%s'" % self.symbol if self.phase: str += ", phase=%s" % self.phase if self.composition: str += ", composition=%s" % ` self.composition ` if self.range: str += ", parametrization range=%s" % ` self.range ` if self.lowParameters: str += ", low=%s" % ` self.lowParameters ` if self.highParameters: str += ", high=%s" % ` self.highParameters ` str += ", " + Declaration.__str__(self) return str
class ScenarioWidget(QDockWidget, Ui_Menage): def __init__(self, scenario, parent = None): super(ScenarioWidget, self).__init__(parent) self.setupUi(self) self.parent = parent self.scenario = scenario self.connect(self.open_btn, SIGNAL('clicked()'), self.openScenario) self.connect(self.save_btn, SIGNAL('clicked()'), self.saveScenario) 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, SIGNAL('compoChanged()'), self.changed) self._listPerson = [] self.addPref() self.rmv_btn.setEnabled(False) self.emit(SIGNAL("ok()")) def changed(self): self.disconnectAll() self.scenario.genNbEnf() self.populate() self.emit(SIGNAL('changed()')) self.connectAll() def nbRow(self): return self.scenario.nbIndiv() def populate(self): self.populateBirth() self.populateQuifoyCombo() self.populateFoyerCombo() self.populateQuifamCombo() self.populateFamilleCombo() def populateBirth(self): for noi, vals in self.scenario.indiv.iteritems(): birth = QDate(vals['birth']) self._listPerson[noi][S.birth].setDate(birth) def populateFoyerCombo(self): declarKeys = self.scenario.declar.keys() for noi, vals in self.scenario.indiv.iteritems(): noidec = vals['noidec'] box = self._listPerson[noi][S.decnum] box.clear() button = self._listPerson[noi][S.decbtn] button.setText('Foyer %d' % (noidec+1)) if vals['quifoy'] == 'vous': box.addItems(['%d' % (noidec+1)]) button.setEnabled(True) else : box.addItems(['%d' % (k+1) for k in declarKeys]) button.setEnabled(False) box.setCurrentIndex(declarKeys.index(noidec)) def populateQuifoyCombo(self): for noi, vals in self.scenario.indiv.iteritems(): quifoy = vals['quifoy'] # retrieve the foyer combobox of individu number noi box = self._listPerson[noi][S.decpos] # set the combobox to 'vous' 'conj' or 'pac' if quifoy == 'vous': box.setCurrentIndex(0) elif quifoy == 'conj': box.setCurrentIndex(1) elif quifoy[:3] == 'pac': box.setCurrentIndex(2) def populateFamilleCombo(self): familleKeys = self.scenario.famille.keys() for noi, vals in self.scenario.indiv.iteritems(): noichef = vals['noichef'] box = self._listPerson[noi][S.famnum] box.clear() if vals['quifam'] == 'parent 1': box.addItems(['%d' % (noichef+1)]) else : box.addItems(['%d' % (k+1) for k in familleKeys]) box.setCurrentIndex(familleKeys.index(noichef)) def populateQuifamCombo(self): for noi, vals in self.scenario.indiv.iteritems(): quifam = vals['quifam'] # retrieve the foyer combobox of individu number noi box = self._listPerson[noi][S.fampos] # set the combobox to 'parent 1' 'parent 2' or 'enfant' if quifam == 'chef': box.setCurrentIndex(0) elif quifam == 'part': box.setCurrentIndex(1) elif quifam[:3] == 'enf': box.setCurrentIndex(2) def birthChanged(self, date): senderNoi = int(self.sender().objectName()[3]) self.scenario.indiv[senderNoi].update({'birth': date.toPyDate()}) 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 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 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 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 addRow(self): noi = len(self._listPerson) self._listPerson.append([QLabel('%d' % (noi+1), self), QDateEdit(self), QComboBox(self), QComboBox(self), QPushButton(self), QComboBox(self), QComboBox(self)]) temp = self._listPerson[-1] 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', 'conj', 'pac']) temp[S.decnum].setObjectName('Foy%d' % noi) temp[S.fampos].setObjectName('Fam%d' % noi) temp[S.fampos].addItems(['parent 1', 'parent 2', 'enfant']) temp[S.famnum].setObjectName('Fam%d' % noi) 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.rmv_btn.setEnabled(True) if len(self.scenario.indiv) == 9: self.add_btn.setEnabled(False) def rmvPerson(self, noi = None): if noi == None: noi = self.nbRow() - 1 self.scenario.rmvIndiv(noi) self.rmvRow() self.add_btn.setEnabled(True) self.emit(SIGNAL('compoChanged()')) def rmvRow(self): ''' Enlève le dernier individu et l'efface dans le foyer ''' toDel = self._listPerson.pop() for widget in toDel: widget.setParent(None) if len(self.scenario.indiv) == 1: self.rmv_btn.setEnabled(False) def openDeclaration(self): 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 openLogement(self): self._logement = Logement(self.scenario, self) self._logement.exec_() self.emit(SIGNAL('compoChanged()')) def openInfoComp(self): self._infocomp = InfoComp(self.scenario, self) self._infocomp.exec_() self.emit(SIGNAL('compoChanged()')) def disconnectAll(self): for person in self._listPerson: QObject.disconnect(person[S.birth], SIGNAL('dateChanged(QDate)'), self.birthChanged) QObject.disconnect(person[S.decpos], SIGNAL('currentIndexChanged(QString)'), self.quifoyChanged) QObject.disconnect(person[S.decnum], SIGNAL('currentIndexChanged(int)'), self.foyerChanged) QObject.disconnect(person[S.fampos], SIGNAL('currentIndexChanged(QString)'), self.quifamChanged) QObject.disconnect(person[S.famnum], SIGNAL('currentIndexChanged(int)'), self.familleChanged) QObject.disconnect(person[S.decbtn], SIGNAL('clicked()'), self.openDeclaration) 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) def openScenario(self): cas_type_dir = CONF.get('paths', 'cas_type_dir') fileName = QFileDialog.getOpenFileName(self, u"Ouvrir un cas type", 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", QMessageBox.Ok, QMessageBox.NoButton)
class ScenarioWidget(QDockWidget, Ui_Menage): def __init__(self, scenario, parent=None): super(ScenarioWidget, self).__init__(parent) self.setupUi(self) self.parent = parent self.scenario = scenario self.connect(self.open_btn, SIGNAL('clicked()'), self.openScenario) self.connect(self.save_btn, SIGNAL('clicked()'), self.saveScenario) 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, SIGNAL('compoChanged()'), self.changed) self._listPerson = [] self.addPref() self.rmv_btn.setEnabled(False) self.emit(SIGNAL("ok()")) def changed(self): self.disconnectAll() self.scenario.genNbEnf() self.populate() self.emit(SIGNAL('changed()')) self.connectAll() def nbRow(self): return self.scenario.nbIndiv() def populate(self): self.populateBirth() self.populateQuifoyCombo() self.populateFoyerCombo() self.populateQuifamCombo() self.populateFamilleCombo() def populateBirth(self): for noi, vals in self.scenario.indiv.iteritems(): birth = QDate(vals['birth']) self._listPerson[noi][S.birth].setDate(birth) def populateFoyerCombo(self): declarKeys = self.scenario.declar.keys() for noi, vals in self.scenario.indiv.iteritems(): noidec = vals['noidec'] box = self._listPerson[noi][S.decnum] box.clear() button = self._listPerson[noi][S.decbtn] button.setText('Foyer %d' % (noidec + 1)) if vals['quifoy'] == 'vous': box.addItems(['%d' % (noidec + 1)]) button.setEnabled(True) else: box.addItems(['%d' % (k + 1) for k in declarKeys]) button.setEnabled(False) box.setCurrentIndex(declarKeys.index(noidec)) def populateQuifoyCombo(self): for noi, vals in self.scenario.indiv.iteritems(): quifoy = vals['quifoy'] # retrieve the foyer combobox of individu number noi box = self._listPerson[noi][S.decpos] # set the combobox to 'vous' 'conj' or 'pac' if quifoy == 'vous': box.setCurrentIndex(0) elif quifoy == 'conj': box.setCurrentIndex(1) elif quifoy[:3] == 'pac': box.setCurrentIndex(2) def populateFamilleCombo(self): familleKeys = self.scenario.famille.keys() for noi, vals in self.scenario.indiv.iteritems(): noichef = vals['noichef'] box = self._listPerson[noi][S.famnum] box.clear() if vals['quifam'] == 'parent 1': box.addItems(['%d' % (noichef + 1)]) else: box.addItems(['%d' % (k + 1) for k in familleKeys]) box.setCurrentIndex(familleKeys.index(noichef)) def populateQuifamCombo(self): for noi, vals in self.scenario.indiv.iteritems(): quifam = vals['quifam'] # retrieve the foyer combobox of individu number noi box = self._listPerson[noi][S.fampos] # set the combobox to 'parent 1' 'parent 2' or 'enfant' if quifam == 'chef': box.setCurrentIndex(0) elif quifam == 'part': box.setCurrentIndex(1) elif quifam[:3] == 'enf': box.setCurrentIndex(2) def birthChanged(self, date): senderNoi = int(self.sender().objectName()[3]) self.scenario.indiv[senderNoi].update({'birth': date.toPyDate()}) 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 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 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 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 addRow(self): noi = len(self._listPerson) self._listPerson.append([ QLabel('%d' % (noi + 1), self), QDateEdit(self), QComboBox(self), QComboBox(self), QPushButton(self), QComboBox(self), QComboBox(self) ]) temp = self._listPerson[-1] 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', 'conj', 'pac']) temp[S.decnum].setObjectName('Foy%d' % noi) temp[S.fampos].setObjectName('Fam%d' % noi) temp[S.fampos].addItems(['parent 1', 'parent 2', 'enfant']) temp[S.famnum].setObjectName('Fam%d' % noi) 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.rmv_btn.setEnabled(True) if len(self.scenario.indiv) == 9: self.add_btn.setEnabled(False) def rmvPerson(self, noi=None): if noi == None: noi = self.nbRow() - 1 self.scenario.rmvIndiv(noi) self.rmvRow() self.add_btn.setEnabled(True) self.emit(SIGNAL('compoChanged()')) def rmvRow(self): ''' Enlève le dernier individu et l'efface dans le foyer ''' toDel = self._listPerson.pop() for widget in toDel: widget.setParent(None) if len(self.scenario.indiv) == 1: self.rmv_btn.setEnabled(False) def openDeclaration(self): 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 openLogement(self): self._logement = Logement(self.scenario, self) self._logement.exec_() self.emit(SIGNAL('compoChanged()')) def openInfoComp(self): self._infocomp = InfoComp(self.scenario, self) self._infocomp.exec_() self.emit(SIGNAL('compoChanged()')) def disconnectAll(self): for person in self._listPerson: QObject.disconnect(person[S.birth], SIGNAL('dateChanged(QDate)'), self.birthChanged) QObject.disconnect(person[S.decpos], SIGNAL('currentIndexChanged(QString)'), self.quifoyChanged) QObject.disconnect(person[S.decnum], SIGNAL('currentIndexChanged(int)'), self.foyerChanged) QObject.disconnect(person[S.fampos], SIGNAL('currentIndexChanged(QString)'), self.quifamChanged) QObject.disconnect(person[S.famnum], SIGNAL('currentIndexChanged(int)'), self.familleChanged) QObject.disconnect(person[S.decbtn], SIGNAL('clicked()'), self.openDeclaration) 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) def openScenario(self): cas_type_dir = CONF.get('paths', 'cas_type_dir') fileName = QFileDialog.getOpenFileName(self, u"Ouvrir un cas type", 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", QMessageBox.Ok, QMessageBox.NoButton)
def __str__(self): str = "symbol='%s', " % self.symbol + Declaration.__str__(self) return str
def __init__(self, symbol, locator=None): Declaration.__init__(self, locator) self.symbol = symbol return