From 8ab70d9cc8975d6fb2790dfad0491cfe22f6683c Mon Sep 17 00:00:00 2001 From: "pascale.noyret" Date: Thu, 30 Jul 2015 11:38:19 +0200 Subject: [PATCH] PSEN --- InterfaceQT4/browser.py | 38 +++++++++ InterfaceQT4/compocomm.py | 2 +- InterfaceQT4/compomacro.py | 7 +- InterfaceQT4/compooper.py | 4 +- InterfaceQT4/composimp.py | 10 +++ InterfaceQT4/configuration.py | 6 +- InterfaceQT4/gereListe.py | 51 ++++++++--- InterfaceQT4/monChoixCommande.py | 2 +- InterfaceQT4/monWidgetPlusieursBase.py | 2 +- InterfaceQT4/monWidgetPlusieursInto.py | 21 +++-- InterfaceQT4/monWidgetSimpBase.py | 2 +- InterfaceQT4/politiquesValidation.py | 7 +- InterfaceQT4/qtEficas.py | 86 +++++++++++-------- InterfaceQT4/readercata.py | 4 + InterfaceQT4/typeNode.py | 30 ++++--- PSEN_Eficas/ExtractGeneratorandLoadList.py | 5 +- PSEN_Eficas/opsPSEN.py | 64 +++++--------- UiQT4/desBaseWidget.ui | 4 +- UiQT4/desWidgetCB.ui | 6 +- UiQT4/desWidgetPlusieursBase.ui | 24 ++++-- UiQT4/desWidgetPlusieursInto.ui | 10 +++ UiQT4/makefile | 2 +- convert/parseur_python.py | 98 ++++++++++++---------- 23 files changed, 298 insertions(+), 187 deletions(-) diff --git a/InterfaceQT4/browser.py b/InterfaceQT4/browser.py index 0b31bc27..ae530c3c 100644 --- a/InterfaceQT4/browser.py +++ b/InterfaceQT4/browser.py @@ -419,6 +419,10 @@ class JDCNode(QTreeWidgetItem): Methode externe """ self.editor.init_modif() + + verifiePosition=self.verifiePosition(name,pos) + if not verifiePosition : return 0 + index = self.treeParent.children.index(self) if pos == 'before': index = index elif pos == 'after': index = index +1 @@ -427,6 +431,40 @@ class JDCNode(QTreeWidgetItem): return 0 return self.treeParent.append_child(name,pos=index,plier=plier) + def verifiePosition(self,name,pos): + from InterfaceQT4 import compojdc + if not (isinstance(self.treeParent, compojdc.Node)) : return True + if name not in self.editor.Classement_Commandes_Ds_Arbre : return True + indexName=self.editor.Classement_Commandes_Ds_Arbre.index(name) + + etapes=self.item.jdc.etapes + if etapes == [] : return True + + indexOu=etapes.index(self.item.object) + if pos=="after" : indexOu = indexOu+1 + print self.editor.Classement_Commandes_Ds_Arbre + print indexOu + print indexName + print name + print etapes + for e in etapes[:indexOu] : + nom=e.nom + if nom not in self.editor.Classement_Commandes_Ds_Arbre : continue + indexEtape=self.editor.Classement_Commandes_Ds_Arbre.index(nom) + if indexEtape > indexName : + comment=tr('le mot clef ')+name+tr(' doit etre insere avant ')+nom + QMessageBox.information( None,tr('insertion impossible'),comment, ) + return False + for e in etapes[indexOu:] : + nom=e.nom + if nom not in self.editor.Classement_Commandes_Ds_Arbre : continue + indexEtape=self.editor.Classement_Commandes_Ds_Arbre.index(nom) + if indexEtape < indexName : + comment=tr('le mot clef ')+name+tr(' doit etre insere apres ')+nom + QMessageBox.information( None,tr('insertion impossible'),comment, ) + return False + return True + def append_child(self,name,pos=None,plier=False): """ Methode pour ajouter un objet fils a l'objet associe au noeud self. diff --git a/InterfaceQT4/compocomm.py b/InterfaceQT4/compocomm.py index d3e15102..cff5e26a 100644 --- a/InterfaceQT4/compocomm.py +++ b/InterfaceQT4/compocomm.py @@ -39,7 +39,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel): def createPopUpMenu(self): typeNode.PopUpMenuNodePartiel.createPopUpMenu(self) self.Decommente = QAction(tr("Decommenter"),self.tree) - self.tree.connect(self.Decommente,SIGNAL("activated()"),self.Decommenter) + self.tree.connect(self.Decommente,SIGNAL("triggered()"),self.Decommenter) self.Decommente.setStatusTip(tr("Decommente la commande ")) if hasattr(self.item,'uncomment'): diff --git a/InterfaceQT4/compomacro.py b/InterfaceQT4/compomacro.py index 12849ab0..2d8e030a 100644 --- a/InterfaceQT4/compomacro.py +++ b/InterfaceQT4/compomacro.py @@ -47,7 +47,7 @@ class MACRONode(browser.JDCNode,typeNode.PopUpMenuNode): typeNode.PopUpMenuNode.createPopUpMenu(self) if ("AFFE_CARA_ELEM" in self.item.get_genealogie()) and self.editor.salome: self.ViewElt = QAction(tr('View3D'),self.tree) - self.tree.connect(self.ViewElt,SIGNAL("activated()"),self.view3D) + self.tree.connect(self.ViewElt,SIGNAL("triggered()"),self.view3D) self.ViewElt.setStatusTip(tr("affiche dans Geom les elements de structure")) self.menu.addAction(self.ViewElt) if self.item.isvalid() : @@ -61,11 +61,6 @@ class MACRONode(browser.JDCNode,typeNode.PopUpMenuNode): troisD.envoievisu() - #def doPaste(self,node_selected): - # print 'je suis la' - # objetACopier = self.item.get_copie_objet() - # child=self.append_brother(objetACopier) - # return child class MACROTreeItem(compooper.EtapeTreeItem): diff --git a/InterfaceQT4/compooper.py b/InterfaceQT4/compooper.py index a895160c..595843c1 100644 --- a/InterfaceQT4/compooper.py +++ b/InterfaceQT4/compooper.py @@ -72,7 +72,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode): typeNode.PopUpMenuNode.createPopUpMenu(self) if ("AFFE_CARA_ELEM" in self.item.get_genealogie()) and self.editor.salome: self.ViewElt = QAction(tr('View3D'),self.tree) - self.tree.connect(self.ViewElt,SIGNAL("activated()"),self.view3D) + self.tree.connect(self.ViewElt,SIGNAL("triggered()"),self.view3D) self.ViewElt.setStatusTip(tr("affiche dans Geom les elements de structure")) self.menu.addAction(self.ViewElt) if self.item.isvalid() : @@ -81,7 +81,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode): self.ViewElt.setEnabled(0) if self.item.get_nom() == "DISTRIBUTION" : self.Graphe = QAction(tr('Graphique'),self.tree) - self.tree.connect(self.Graphe,SIGNAL("activated()"),self.viewPng) + self.tree.connect(self.Graphe,SIGNAL("triggered()"),self.viewPng) self.Graphe.setStatusTip(tr("affiche la distribution ")) self.menu.addAction(self.Graphe) if self.item.isvalid() : diff --git a/InterfaceQT4/composimp.py b/InterfaceQT4/composimp.py index 802a188d..c82c28d4 100644 --- a/InterfaceQT4/composimp.py +++ b/InterfaceQT4/composimp.py @@ -224,6 +224,16 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): if self.item.wait_assd() and self.item.is_list_SansOrdreNiDoublon(): from monWidgetPlusieursInto import MonWidgetPlusieursInto widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif self.item.wait_tuple() : + if self.item.object.definition.type[0].ntuple == 2: + from monWidgetPlusieursTuple2 import MonWidgetPlusieursTuple2 + widget=MonWidgetPlusieursTuple2(self,maDefinition,monNom,monObjet,parentQt,maCommande) + # elif self.item.object.definition.type[0].ntuple == 3 : + # from monWidgetSimpTuple3 import MonWidgetSimpTuple3 + # widget=MonWidgetSimpTuple3(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + print "Pas de Tuple de longueur > 3" + print "Prevenir la maintenance " elif self.item.has_into(): if self.item.is_list_SansOrdreNiDoublon(): from monWidgetPlusieursInto import MonWidgetPlusieursInto diff --git a/InterfaceQT4/configuration.py b/InterfaceQT4/configuration.py index ff2f4aad..c4e1ef7d 100644 --- a/InterfaceQT4/configuration.py +++ b/InterfaceQT4/configuration.py @@ -51,7 +51,11 @@ class CONFIG_BASE: else : self.name="editeur.ini" self.rep_mat = None self.repIni = repIni - self.rep_user = os.path.join(os.environ['HOME'],'.config/Eficas',appli.code) + if sys.platform[0:5]=="linux" : + self.rep_user = os.path.join(os.environ['HOME'],'.config/Eficas',appli.code) + else : + self.rep_user = os.path.join('C:/','.config/Eficas',appli.code) + self.setValeursParDefaut() diff --git a/InterfaceQT4/gereListe.py b/InterfaceQT4/gereListe.py index 11a43dbd..4383448f 100644 --- a/InterfaceQT4/gereListe.py +++ b/InterfaceQT4/gereListe.py @@ -35,21 +35,43 @@ class LECustom(QLineEdit): """ Constructor """ - QMainWindow.__init__(self,parent) + QLineEdit.__init__(self,parent) self.parentQt=parentQt self.num=i + self.dansUnTuple=False def focusInEvent(self,event): - print "dans focusInEvent de LECustom" + #print "dans focusInEvent de LECustom" self.parentQt.LineEditEnCours=self self.parentQt.NumLineEditEnCours=self.num - self.setFrame(True) + self.setStyleSheet("border: 2px solid gray") QLineEdit.focusInEvent(self,event) def focusOutEvent(self,event): - self.setFrame(False) + #print "dans focusOutEvent de LECustom" + self.setStyleSheet("border: 0px") + if self.dansUnTuple : self.setStyleSheet("background:rgb(235,235,235); border: 0px;") + elif self.num % 2 == 1 : self.setStyleSheet("background:rgb(210,210,210)") + else : self.setStyleSheet("background:rgb(235,235,235)") QLineEdit.focusOutEvent(self,event) + def clean(self): + self.setText("") + + def getValeur(self): + return self.text() + + def setValeur(self,valeur): + self.setText(valeur) + +# --------------------------- # +class LECustomTuple(LECustom): +# --------------------------- # + def __init__(self,parent): + # index sera mis a jour par TupleCustom + parentQt=parent.parent().parent().parent() + LECustom. __init__(self,parent,parentQt,0) + # ---------------------------- # class MonLabelListeClic(QLabel): # ---------------------------- # @@ -115,21 +137,21 @@ class GereListe: def moinsPushed(self): # on supprime le dernier if self.NumLineEditEnCours==self.indexDernierLabel : - nomLineEdit=self.nomLine+str(aRemonter) + nomLineEdit=self.nomLine+str(self.indexDernierLabel) courant=getattr(self,nomLineEdit) - courant.setText("") + courant.clean() else : for i in range (self.NumLineEditEnCours, self.indexDernierLabel): aRemonter=i+1 nomLineEdit=self.nomLine+str(aRemonter) courant=getattr(self,nomLineEdit) - valeurARemonter=courant.text() + valeurARemonter=courant.getValeur() nomLineEdit=self.nomLine+str(i) courant=getattr(self,nomLineEdit) - courant.setText(valeurARemonter) + courant.setValeur(valeurARemonter) nomLineEdit=self.nomLine+str(self.indexDernierLabel) courant=getattr(self,nomLineEdit) - courant.setText("") + courant.clean() self.changeValeur(changeDePlace=False,oblige=True) self.setValide() @@ -138,17 +160,20 @@ class GereListe: self.editor.affiche_infos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint') return self.ajoutLineEdit() + self.descendLesLignes() + + def descendLesLignes(self): if self.NumLineEditEnCours==self.indexDernierLabel : return nomLineEdit=self.nomLine+str(self.NumLineEditEnCours+1) courant=getattr(self,nomLineEdit) - valeurADescendre=courant.text() - courant.setText("") + valeurADescendre=courant.getValeur() + courant.clean() for i in range (self.NumLineEditEnCours+1, self.indexDernierLabel): aDescendre=i+1 nomLineEdit=self.nomLine+str(aDescendre) courant=getattr(self,nomLineEdit) - valeurAGarder=courant.text() - courant.setText(valeurADescendre) + valeurAGarder=courant.getValeur() + courant.setValeur(valeurADescendre) valeurADescendre=valeurAGarder self.changeValeur(changeDePlace=False) self.scrollArea.ensureWidgetVisible(self.LineEditEnCours) diff --git a/InterfaceQT4/monChoixCommande.py b/InterfaceQT4/monChoixCommande.py index 674ceaeb..a6ac039f 100644 --- a/InterfaceQT4/monChoixCommande.py +++ b/InterfaceQT4/monChoixCommande.py @@ -103,6 +103,7 @@ class MonChoixCommande(Ui_ChoixCommandes,QtGui.QWidget): plier=self.editor.afficheCommandesPliees if nodeCourrant==self.node : nouveau=self.node.append_child(self.name,'first',plier) else : nouveau=nodeCourrant.append_brother(self.name,plier=plier) + if nouveau == 0 : return # on n a pas insere le noeud nouveau.setDeplie() #if self.editor.afficheApresInsert==True : nouveau.plieToutEtReaffiche() if self.editor.afficheApresInsert == True : @@ -112,7 +113,6 @@ class MonChoixCommande(Ui_ChoixCommandes,QtGui.QWidget): nouveau.fenetre.donnePremier() #nouveau.deplieToutEtReaffiche() else : - print "je passe la" self.node.setSelected(False) nouveau.setSelected(True) self.node.tree.setCurrentItem(nouveau) diff --git a/InterfaceQT4/monWidgetPlusieursBase.py b/InterfaceQT4/monWidgetPlusieursBase.py index 3026b3cf..a43800ab 100644 --- a/InterfaceQT4/monWidgetPlusieursBase.py +++ b/InterfaceQT4/monWidgetPlusieursBase.py @@ -42,6 +42,7 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe): self.nomLine="lineEditVal" self.inInit=True self.indexDernierLabel=0 + self.NumLineEditEnCours=0 self.listeAffichageWidget=[] Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) GereListe.__init__(self) @@ -63,7 +64,6 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe): def setValeurs(self): - print "je passe dans SetValeur" self.vScrollBar = self.scrollArea.verticalScrollBar() self.politique=PolitiquePlusieurs(self.node,self.editor) # construction du min de valeur a entrer diff --git a/InterfaceQT4/monWidgetPlusieursInto.py b/InterfaceQT4/monWidgetPlusieursInto.py index d5bdabf7..5678b5a8 100644 --- a/InterfaceQT4/monWidgetPlusieursInto.py +++ b/InterfaceQT4/monWidgetPlusieursInto.py @@ -29,7 +29,7 @@ from feuille import Feuille from desWidgetPlusieursInto import Ui_WidgetPlusieursInto from politiquesValidation import PolitiquePlusieurs from qtSaisie import SaisieValeur -from gereListe import GereListe +#from gereListe import GereListe class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille): @@ -39,6 +39,7 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.listeValeursCourantes=self.node.item.GetListeValeurs() self.parentQt.commandesLayout.insertWidget(-1,self) + self.connect(self.CBCheck, SIGNAL('stateChanged(int)'),self.change) # try except si la liste des possibles est vide # prevoir qqchose try : @@ -47,12 +48,21 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille): pass + def change(self,int): + if self.CBCheck.isChecked() : + for i in range(len(self.listeAAfficher)): + nomCB="lineEditVal"+str(i+1) + courant=getattr(self,nomCB) + courant.setChecked(True) + else : + min,max = self.node.item.GetMinMax() + for i in range(len(self.listeAAfficher)): + nomCB="lineEditVal"+str(i+1) + courant=getattr(self,nomCB) + courant.setChecked(False) + def setValeurs(self): self.listeValeursCourantes=self.node.item.GetListeValeurs() - #print self.monSimpDef.into - #if len(self.monSimpDef.into)*20 > 400 : self.setMinimumHeight(400) - #else : self.setMinimumHeight(len(self.monSimpDef.into)*30) - #self.adjustSize() if hasattr(self.node.item.definition.validators,'set_MCSimp'): obj=self.node.item.getObject() self.node.item.definition.validators.set_MCSimp(obj) @@ -173,6 +183,7 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille): self.editor.affiche_infos(tr("Nombre maximal de valeurs : ") + str(max),Qt.red) else : self.editor.affiche_infos(tr("")) + if self.listeValeursCourantes== [] : self.listeValeursCourantes=None self.node.item.set_valeur(self.listeValeursCourantes) self.setValide() self.reaffiche() diff --git a/InterfaceQT4/monWidgetSimpBase.py b/InterfaceQT4/monWidgetSimpBase.py index caf27e01..c431983c 100644 --- a/InterfaceQT4/monWidgetSimpBase.py +++ b/InterfaceQT4/monWidgetSimpBase.py @@ -35,7 +35,7 @@ class MonWidgetSimpBase (Ui_WidgetSimpBase,Feuille): def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - print "MonWidgetSimpBase", nom + #print "MonWidgetSimpBase", nom self.parentQt.commandesLayout.insertWidget(-1,self) self.setFocusPolicy(Qt.StrongFocus) self.connect(self.lineEditVal,SIGNAL("returnPressed()"),self.LEValeurPressed) diff --git a/InterfaceQT4/politiquesValidation.py b/InterfaceQT4/politiquesValidation.py index 6daaf273..b7c3a48f 100644 --- a/InterfaceQT4/politiquesValidation.py +++ b/InterfaceQT4/politiquesValidation.py @@ -232,7 +232,7 @@ class PolitiquePlusieurs(Validation): return valide,commentaire,commentaire2,listeRetour - def AjoutTuple(self,valeurTuple,index,listecourante): + def AjoutTuple(self,valeurTuple,listecourante): listeRetour=[] commentaire="Nouvelle valeur acceptee" commentaire2="" @@ -257,10 +257,5 @@ class PolitiquePlusieurs(Validation): if not encorevalide : commentaire2=self.node.item.info_erreur_liste() return valide,commentaire,commentaire2,listeRetour - #min,max = self.node.item.GetMinMax() - #if len(listecourante) >= max : - # commentaire="La liste a deja atteint le nombre maximum d'elements,ajout refuse" - # valide=0 - # return valide,commentaire,commentaire2,listeRetour listeRetour.append(valeurTuple) return valide,commentaire,commentaire2,listeRetour diff --git a/InterfaceQT4/qtEficas.py b/InterfaceQT4/qtEficas.py index fb9cf98e..22d9627c 100644 --- a/InterfaceQT4/qtEficas.py +++ b/InterfaceQT4/qtEficas.py @@ -137,8 +137,8 @@ class Appli(Ui_Eficas,QMainWindow): if hasattr(self,intituleAction): action=getattr(self,intituleAction) self.toolBar.removeAction(action) - if self.code in Appli.__dict__.keys(): - listeTexte=apply(Appli.__dict__[self.code],(self,)) + if self.code.upper() in Appli.__dict__.keys(): + listeTexte=apply(Appli.__dict__[self.code.upper()],(self,)) def initAides(self): #print "je passe la" @@ -169,7 +169,7 @@ class Appli(Ui_Eficas,QMainWindow): if not(self.actionExecution in self.toolBar.actions()): self.toolBar.addAction(self.actionExecution) self.actionExecution.setText(QApplication.translate("Eficas", "Execution ", None, QApplication.UnicodeUTF8)) - self.connect(self.actionExecution,SIGNAL("activated()"),self.run) + self.connect(self.actionExecution,SIGNAL("triggered()"),self.run) def ajoutSauveExecution(self): self.actionSaveRun = QAction(self) @@ -180,7 +180,7 @@ class Appli(Ui_Eficas,QMainWindow): if not(self.actionSaveRun in self.toolBar.actions()): self.toolBar.addAction(self.actionSaveRun) self.actionSaveRun.setText(QApplication.translate("Eficas", "Save Run", None, QApplication.UnicodeUTF8)) - self.connect(self.actionSaveRun,SIGNAL("activated()"),self.saveRun) + self.connect(self.actionSaveRun,SIGNAL("triggered()"),self.saveRun) def griserActionsStructures(self): self.actionCouper.setEnabled(False) @@ -246,6 +246,9 @@ class Appli(Ui_Eficas,QMainWindow): self.menuOptions.addAction(self.actionParametres_Eficas) self.menuOptions.setTitle(tr("Options")) + def PSEN(self): + self.ajoutExecution() + self.ajoutSauveExecution() def ChercheGrpMesh(self): Msg,listeGroup=self.ChercheGrpMeshInSalome() @@ -255,12 +258,18 @@ class Appli(Ui_Eficas,QMainWindow): print "il faut gerer les erreurs" def ChercheGrpMaille(self): - Msg,listeGroup=self.ChercheGrpMailleInSalome() + # Normalement la variable self.salome permet de savoir si on est ou non dans Salome + try: + Msg,listeGroup=self.ChercheGrpMailleInSalome() # recherche dans Salomé + #Msg = None; listeGroup = None # recherche manuelle, i.e., sans Salomé si ligne précédente commentée + except: + raise ValueError('Salome non ouvert') if Msg == None : self.viewmanager.handleAjoutGroup(listeGroup) else : print "il faut gerer les erreurs" + def ChercheGrp(self): #Msg,listeGroup=self.ChercheGrpMailleInSalome() #if Msg == None : @@ -291,33 +300,33 @@ class Appli(Ui_Eficas,QMainWindow): def connecterSignaux(self) : self.connect(self.recentMenu,SIGNAL('aboutToShow()'),self.handleShowRecentMenu) - self.connect(self.action_Nouveau,SIGNAL("activated()"),self.fileNew) - self.connect(self.actionNouvel_Include,SIGNAL("activated()"),self.NewInclude) - self.connect(self.action_Ouvrir,SIGNAL("activated()"),self.fileOpen) - self.connect(self.actionEnregistrer,SIGNAL("activated()"),self.fileSave) - self.connect(self.actionEnregistrer_sous,SIGNAL("activated()"),self.fileSaveAs) - self.connect(self.actionFermer,SIGNAL("activated()"),self.fileClose) - self.connect(self.actionFermer_tout,SIGNAL("activated()"),self.fileCloseAll) - self.connect(self.actionQuitter,SIGNAL("activated()"),self.fileExit) + self.connect(self.action_Nouveau,SIGNAL("triggered()"),self.fileNew) + self.connect(self.actionNouvel_Include,SIGNAL("triggered()"),self.NewInclude) + self.connect(self.action_Ouvrir,SIGNAL("triggered()"),self.fileOpen) + self.connect(self.actionEnregistrer,SIGNAL("triggered()"),self.fileSave) + self.connect(self.actionEnregistrer_sous,SIGNAL("triggered()"),self.fileSaveAs) + self.connect(self.actionFermer,SIGNAL("triggered()"),self.fileClose) + self.connect(self.actionFermer_tout,SIGNAL("triggered()"),self.fileCloseAll) + self.connect(self.actionQuitter,SIGNAL("triggered()"),self.fileExit) - self.connect(self.actionEficas,SIGNAL("activated()"),self.aidePPal) - self.connect(self.actionVersion,SIGNAL("activated()"),self.version) - self.connect(self.actionParametres,SIGNAL("activated()"),self.gestionParam) + self.connect(self.actionEficas,SIGNAL("triggered()"),self.aidePPal) + self.connect(self.actionVersion,SIGNAL("triggered()"),self.version) + self.connect(self.actionParametres,SIGNAL("triggered()"),self.gestionParam) - self.connect(self.actionCouper,SIGNAL("activated()"),self.editCut) - self.connect(self.actionCopier,SIGNAL("activated()"),self.editCopy) - self.connect(self.actionColler,SIGNAL("activated()"),self.editPaste) - self.connect(self.actionSupprimer,SIGNAL("activated()"),self.supprimer) - self.connect(self.actionRechercher,SIGNAL("activated()"),self.rechercher) - self.connect(self.actionDeplier_replier,SIGNAL("activated()"),self.Deplier) + self.connect(self.actionCouper,SIGNAL("triggered()"),self.editCut) + self.connect(self.actionCopier,SIGNAL("triggered()"),self.editCopy) + self.connect(self.actionColler,SIGNAL("triggered()"),self.editPaste) + self.connect(self.actionSupprimer,SIGNAL("triggered()"),self.supprimer) + self.connect(self.actionRechercher,SIGNAL("triggered()"),self.rechercher) + self.connect(self.actionDeplier_replier,SIGNAL("triggered()"),self.Deplier) - self.connect(self.actionRapport_de_Validation,SIGNAL("activated()"),self.jdcRapport) - self.connect(self.actionFichier_Source,SIGNAL("activated()"),self.jdcFichierSource) - self.connect(self.actionFichier_Resultat,SIGNAL("activated()"),self.visuJdcPy) + self.connect(self.actionRapport_de_Validation,SIGNAL("triggered()"),self.jdcRapport) + self.connect(self.actionFichier_Source,SIGNAL("triggered()"),self.jdcFichierSource) + self.connect(self.actionFichier_Resultat,SIGNAL("triggered()"),self.visuJdcPy) - #self.connect(self.helpIndexAction,SIGNAL("activated()"),self.helpIndex) - #self.connect(self.helpContentsAction,SIGNAL("activated()"),self.helpContents) + #self.connect(self.helpIndexAction,SIGNAL("triggered()"),self.helpIndex) + #self.connect(self.helpContentsAction,SIGNAL("triggered()"),self.helpContents) # Pour Aster self.actionTraduitV9V10 = QAction(self) @@ -332,28 +341,28 @@ class Appli(Ui_Eficas,QMainWindow): self.actionSauveLigne = QAction(self) self.actionSauveLigne.setText(tr("Sauve Format Ligne")) - self.connect(self.actionParametres_Eficas,SIGNAL("activated()"),self.optionEditeur) - self.connect(self.actionLecteur_Pdf,SIGNAL("activated()"),self.optionPdf) - self.connect(self.actionTraduitV9V10,SIGNAL("activated()"),self.traductionV9V10) - self.connect(self.actionTraduitV10V11,SIGNAL("activated()"),self.traductionV10V11) - self.connect(self.actionTraduitV11V12,SIGNAL("activated()"),self.traductionV11V12) - self.connect(self.actionSauveLigne,SIGNAL("activated()"),self.sauveLigne) + self.connect(self.actionParametres_Eficas,SIGNAL("triggered()"),self.optionEditeur) + self.connect(self.actionLecteur_Pdf,SIGNAL("triggered()"),self.optionPdf) + self.connect(self.actionTraduitV9V10,SIGNAL("triggered()"),self.traductionV9V10) + self.connect(self.actionTraduitV10V11,SIGNAL("triggered()"),self.traductionV10V11) + self.connect(self.actionTraduitV11V12,SIGNAL("triggered()"),self.traductionV11V12) + self.connect(self.actionSauveLigne,SIGNAL("triggered()"),self.sauveLigne) # Pour Carmel self.actionChercheGrpMaille = QAction(self) self.actionChercheGrpMaille.setText(tr("Acquiert Groupe Maille")) - self.connect(self.actionChercheGrpMaille,SIGNAL("activated()"),self.ChercheGrpMaille) + self.connect(self.actionChercheGrpMaille,SIGNAL("triggered()"),self.ChercheGrpMaille) # Pour CarmelCND self.actionChercheGrp = QAction(self) self.actionChercheGrp.setText(tr("Accquisition Groupe Maille")) - self.connect(self.actionChercheGrp,SIGNAL("activated()"),self.ChercheGrp) + self.connect(self.actionChercheGrp,SIGNAL("triggered()"),self.ChercheGrp) # Pour Aide self.actionCode = QAction(self) self.actionCode.setText(tr("Specificites Maille")) - self.connect(self.actionCode,SIGNAL("activated()"),self.aideCode) + self.connect(self.actionCode,SIGNAL("triggered()"),self.aideCode) def Deplier(self): self.viewmanager.handleDeplier() @@ -407,7 +416,10 @@ class Appli(Ui_Eficas,QMainWindow): self.recent = QStringList() try : #if 1 : - rep=os.path.join(os.environ['HOME'],'.config/Eficas',self.code) + if sys.platform[0:5]=="linux" : + rep=os.path.join(os.environ['HOME'],'.config/Eficas',self.code) + else : + rep=os.path.join('C:/','.config/Eficas',self.code) monFichier=rep+"/listefichiers_"+self.code index=0 f=open(monFichier) diff --git a/InterfaceQT4/readercata.py b/InterfaceQT4/readercata.py index b0f63f57..62f418e6 100644 --- a/InterfaceQT4/readercata.py +++ b/InterfaceQT4/readercata.py @@ -158,6 +158,10 @@ class READERCATA: if self.mode_nouv_commande== "initial" : self.Retrouve_Ordre_Cata_Standard() if hasattr(self.cata, 'Ordre_Des_Commandes') : self.Ordre_Des_Commandes=self.cata.Ordre_Des_Commandes else : self.Ordre_Des_Commandes=None + + if hasattr(self.cata, 'Classement_Commandes_Ds_Arbre') : + self.Classement_Commandes_Ds_Arbre=self.cata.Classement_Commandes_Ds_Arbre + else : self.Classement_Commandes_Ds_Arbre=() #print self.cata.Ordre_Des_Commandes # diff --git a/InterfaceQT4/typeNode.py b/InterfaceQT4/typeNode.py index 8d667442..c21b19f1 100644 --- a/InterfaceQT4/typeNode.py +++ b/InterfaceQT4/typeNode.py @@ -33,10 +33,11 @@ class PopUpMenuRacine : def createPopUpMenu(self): print "createPopUpMenu" self.ParamApres = QAction(tr('Parametre'),self.tree) - self.tree.connect(self.ParamApres,SIGNAL("activated()"),self.addParametersApres) + self.tree.connect(self.ParamApres,SIGNAL("triggered()"),self.addParametersApres) self.ParamApres.setStatusTip(tr("Insere un parametre")) self.menu = QMenu(self.tree) self.menu.addAction(self.ParamApres) + self.menu.setStyleSheet("background:rgb(220,220,220); ") def addParametersApres(self): @@ -52,6 +53,9 @@ class PopUpMenuNodeMinimal : #self.appliEficas.salome=True self.createActions() self.menu = QMenu(self.tree) + #self.menu.setStyleSheet("background:rgb(235,235,235); QMenu::item:selected { background-color: red; }") + #ne fonctionne pas --> la ligne de commentaire devient rouge + self.menu.setStyleSheet("background:rgb(220,220,220); ") #items du menu self.menu.addAction(self.Supprime) if hasattr(self.appliEficas, 'mesScripts'): @@ -71,18 +75,18 @@ class PopUpMenuNodeMinimal : self.action=QAction(label,self.tree) self.action.setStatusTip(tip) if numero==4: - self.tree.connect(self.action,SIGNAL("activated()"),self.AppelleFonction4) + self.tree.connect(self.action,SIGNAL("triggered()"),self.AppelleFonction4) if numero==3: - self.tree.connect(self.action,SIGNAL("activated()"),self.AppelleFonction3) + self.tree.connect(self.action,SIGNAL("triggered()"),self.AppelleFonction3) numero=4 if numero==2: - self.tree.connect(self.action,SIGNAL("activated()"),self.AppelleFonction2) + self.tree.connect(self.action,SIGNAL("triggered()"),self.AppelleFonction2) numero=3 if numero==1: - self.tree.connect(self.action,SIGNAL("activated()"),self.AppelleFonction1) + self.tree.connect(self.action,SIGNAL("triggered()"),self.AppelleFonction1) numero=2 if numero==0: - self.tree.connect(self.action,SIGNAL("activated()"),self.AppelleFonction0) + self.tree.connect(self.action,SIGNAL("triggered()"),self.AppelleFonction0) numero=1 self.menu.addAction(self.action) @@ -128,24 +132,24 @@ class PopUpMenuNodeMinimal : def createActions(self): self.CommApres = QAction(tr('apres'),self.tree) - self.tree.connect(self.CommApres,SIGNAL("activated()"),self.addCommApres) + self.tree.connect(self.CommApres,SIGNAL("triggered()"),self.addCommApres) self.CommApres.setStatusTip(tr("Insere un commentaire apres la commande ")) self.CommAvant = QAction(tr('avant'),self.tree) - self.tree.connect(self.CommAvant,SIGNAL("activated()"),self.addCommAvant) + self.tree.connect(self.CommAvant,SIGNAL("triggered()"),self.addCommAvant) self.CommAvant.setStatusTip(tr("Insere un commentaire avant la commande ")) self.ParamApres = QAction(tr('apres'),self.tree) - self.tree.connect(self.ParamApres,SIGNAL("activated()"),self.addParametersApres) + self.tree.connect(self.ParamApres,SIGNAL("triggered()"),self.addParametersApres) self.ParamApres.setStatusTip(tr("Insere un parametre apres la commande ")) self.ParamAvant = QAction(tr('avant'),self.tree) - self.tree.connect(self.ParamAvant,SIGNAL("activated()"),self.addParametersAvant) + self.tree.connect(self.ParamAvant,SIGNAL("triggered()"),self.addParametersAvant) self.ParamAvant.setStatusTip(tr("Insere un parametre avant la commande ")) self.Supprime = QAction(tr('Supprimer'),self.tree) - self.tree.connect(self.Supprime,SIGNAL("activated()"),self.supprimeNoeud) + self.tree.connect(self.Supprime,SIGNAL("triggered()"),self.supprimeNoeud) self.Supprime.setStatusTip(tr("supprime le mot clef ")) self.Documentation = QAction(tr('Documentation'),self.tree) - self.tree.connect(self.Documentation,SIGNAL("activated()"),self.viewDoc) + self.tree.connect(self.Documentation,SIGNAL("triggered()"),self.viewDoc) self.Documentation.setStatusTip(tr("documentation sur la commande ")) def supprimeNoeud(self): @@ -226,7 +230,7 @@ class PopUpMenuNode(PopUpMenuNodePartiel) : def createPopUpMenu(self): PopUpMenuNodePartiel.createPopUpMenu(self) self.Commente = QAction(tr('ce noeud'),self.tree) - self.tree.connect(self.Commente,SIGNAL("activated()"),self.Commenter) + self.tree.connect(self.Commente,SIGNAL("triggered()"),self.Commenter) self.Commente.setStatusTip(tr("commente le noeud ")) self.commentMenu.addAction(self.Commente) self.menu.removeAction(self.Supprime) diff --git a/PSEN_Eficas/ExtractGeneratorandLoadList.py b/PSEN_Eficas/ExtractGeneratorandLoadList.py index e30826d0..08f45480 100755 --- a/PSEN_Eficas/ExtractGeneratorandLoadList.py +++ b/PSEN_Eficas/ExtractGeneratorandLoadList.py @@ -1,5 +1,4 @@ -NetworkFile = r"C:\Users\J15773\Documents\GTDosier\PSENdocs\Victoria\JAMAIQUE\2030Conv_HFP2.sav" - +NetworkFile = r"C:\Users\J15773\Documents\GTDosier\PSENdocs\Victoria ALL - EFICAS PSEN\Data\2030Conv_HFP2.sav" PSSE_PATH = "C:/Program Files/PTI/PSSE33/PSSBIN" #emplacement de PSSE def ExtractGeneratorandLoadList(NetworkFile,PSSE_PATH): @@ -7,6 +6,8 @@ def ExtractGeneratorandLoadList(NetworkFile,PSSE_PATH): import os import sys + print NetworkFile + print PSSE_PATH sys.path.append(PSSE_PATH) os.environ['PATH'] += ';' + PSSE_PATH + ';' diff --git a/PSEN_Eficas/opsPSEN.py b/PSEN_Eficas/opsPSEN.py index 894cb715..1d859343 100755 --- a/PSEN_Eficas/opsPSEN.py +++ b/PSEN_Eficas/opsPSEN.py @@ -18,20 +18,18 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -import re -#from ExtractGeneratorandLoadList import ExtractGeneratorandLoadList -from ExtractGeneratorandLoadList import ExtractGeneratorandLoadList2 +#from ExtractGeneratorLoadLineandTransfoDico import ExtractGeneratorLoadLineandTransfoDico +from ExtractGeneratorLoadLineandTransfoDico import ExtractGeneratorLoadLineandTransfoDico2 -def INCLUDE(self,chemin_psse,fichier_sav,**args): +def INCLUDE(self,PSSE_path,sav_file,**args): """ Fonction sd_prod pour la macro INCLUDE """ - print "INCLUDE", self reevalue=0 if hasattr(self,'fichier_ini'): reevalue=1 - if self.fichier_ini == fichier_sav : return + if self.fichier_ini == sav_file : return if hasattr(self,'old_context_fichier_init' ): for concept in self.old_context_fichier_init.values(): self.jdc.delete_concept(concept) @@ -40,7 +38,7 @@ def INCLUDE(self,chemin_psse,fichier_sav,**args): self.reevalue_sd_jdc() self.jdc.reset_context() - self.fichier_ini=fichier_sav + self.fichier_ini=sav_file self.contexte_fichier_init = {} self.fichier_unite = 999 self.fichier_err = None @@ -48,9 +46,10 @@ def INCLUDE(self,chemin_psse,fichier_sav,**args): unite = 999 - pattern_debut_ligne = re.compile(r'^[0-9].*') - try: - MachineListOrigin,LoadListOrigin= ExtractGeneratorandLoadList2(fichier_sav,chemin_psse) + try : + #if 1: + MachineDico,LoadDico,LineDico,TransfoDico = ExtractGeneratorLoadLineandTransfoDico2(sav_file,PSSE_path) + #else : except : if self.jdc.appli is not None: self.jdc.appli.affiche_alerte("Error", 'An error happened in ExtractGeneratorandLoadList execution ') @@ -60,40 +59,17 @@ def INCLUDE(self,chemin_psse,fichier_sav,**args): self.fichier_err = str(exc) self.contexte_fichier_init = {} - MachineList=[] - LoadList=[] - BusBarList=[] - for m in MachineListOrigin: - if m in LoadListOrigin : BusBarList.append(m) - else : MachineList.append(m) + for nom in MachineDico.keys(): + self.fichier_text += "%s=MONGENER(ID='%s',);\n" % (nom, 'a') - for m in LoadListOrigin: - if m not in MachineListOrigin : LoadList.append(m) + for nom in LoadDico.keys(): + self.fichier_text += "%s=MACHARGE(ID='%s',);\n" % (nom, 'a') + + for nom in LineDico.keys(): + self.fichier_text += "%s=MALIGNE(ID='%s',);\n" % (nom,'a') - for m in MachineList: - nouv=m[0].replace(' ','_') - nouveau=nouv.replace('.','_') - nom = nouveau+"__"+str(m[1]) - if pattern_debut_ligne.match(nom): nom='_'+nom - id = str(m[3]) - self.fichier_text += "%s=MONGENER(ID='%s',);\n" % (nom, id) - - for m in BusBarList: - nouv=m[0].replace(' ','_') - nouveau=nouv.replace('.','_') - nom = nouveau+"__"+str(m[1]) - if pattern_debut_ligne.match(nom): nom='_'+nom - id = str(m[3]) - self.fichier_text += "%s=MONBUSBAR(ID='%s',);\n" % (nom, id) - - for m in LoadList: - nouv=m[0].replace(' ','_') - nouveau=nouv.replace('.','_') - nom = nouveau+"__"+str(m[1]) - if pattern_debut_ligne.match(nom): nom='_'+nom - if pattern_debut_ligne.match(nom): print 'match' - id = str(m[3]) - self.fichier_text += "%s=MACHARGE(ID='%s',);\n" % (nom, id) + for nom in TransfoDico.keys(): + self.fichier_text += "%s=MONTRANSFO(ID='%s',);\n" % (nom,'a') import Extensions.jdc_include self.JdC_aux = Extensions.jdc_include.JDC_CATA_INCLUDE(code='PSEN', execmodul=None) @@ -101,6 +77,10 @@ def INCLUDE(self,chemin_psse,fichier_sav,**args): self.old_context_fichier_init = self.contexte_fichier_init self.parent.record_unit(unite, self) + self.jdc.MachineDico=MachineDico + self.jdc.LoadDico=LoadDico + self.jdc.LineDico=LineDico + self.jdc.TransfoDico=TransfoDico def INCLUDE_context(self,d): """ diff --git a/UiQT4/desBaseWidget.ui b/UiQT4/desBaseWidget.ui index a44c7fa3..b9aabfd4 100644 --- a/UiQT4/desBaseWidget.ui +++ b/UiQT4/desBaseWidget.ui @@ -42,7 +42,9 @@ - background:rgb(247,247,247) + background:rgb(247,247,247); + + diff --git a/UiQT4/desWidgetCB.ui b/UiQT4/desWidgetCB.ui index b15d99e5..8ed1be92 100644 --- a/UiQT4/desWidgetCB.ui +++ b/UiQT4/desWidgetCB.ui @@ -7,7 +7,7 @@ 0 0 739 - 60 + 62 @@ -42,7 +42,7 @@ 0 - 1 + 2 0 @@ -220,7 +220,7 @@ QComboBox:on { - 7 + 100 false diff --git a/UiQT4/desWidgetPlusieursBase.ui b/UiQT4/desWidgetPlusieursBase.ui index bdbdfee0..20c44b49 100644 --- a/UiQT4/desWidgetPlusieursBase.ui +++ b/UiQT4/desWidgetPlusieursBase.ui @@ -45,7 +45,7 @@ border: 1px solid gray; 0 - 0 + 5 @@ -167,6 +167,9 @@ border: 1px solid gray; + + 0 + @@ -211,7 +214,7 @@ border: 1px solid gray; 0 0 546 - 175 + 194 @@ -222,7 +225,7 @@ border: 1px solid gray; - 1 + 2 2 @@ -259,6 +262,9 @@ border: 1px solid gray; QFrame::Box + + 0 + @@ -310,7 +316,9 @@ border: 1px solid gray; ... - + + + @@ -347,7 +355,9 @@ border: 1px solid gray; ... - + + + @@ -637,7 +647,9 @@ border: 1px solid gray; ... - + + + diff --git a/UiQT4/desWidgetPlusieursInto.ui b/UiQT4/desWidgetPlusieursInto.ui index 0478b322..ce9b3b8d 100644 --- a/UiQT4/desWidgetPlusieursInto.ui +++ b/UiQT4/desWidgetPlusieursInto.ui @@ -261,6 +261,16 @@ + + + + + + + true + + + diff --git a/UiQT4/makefile b/UiQT4/makefile index 15e0c3af..9ddd2e5e 100644 --- a/UiQT4/makefile +++ b/UiQT4/makefile @@ -12,7 +12,7 @@ PY_FILES = desSelectVal.py desViewTexte.py desChoixCommandes.py desWidgetComman desWidgetSimpFichier.py desWidgetSimpTxt.py desRecherche.py desWidgetCommentaire.py\ desWidgetTuple2.py desWidgetTuple3.py desWidgetCreeParam.py desWidgetParam.py desWidgetHeure.py desWidgetDate.py\ desWidgetVide.py desWidgetInformation.py desVisu.py desSelectVal.py desWidgetUniqueSDCO.py desWidgetSDCOInto.py\ - desWidgetMatrice.py + desWidgetMatrice.py desWidgetPlusieursTuple.py Tuple2.py Tuple3.py QM_FILES=eficas_en.qm diff --git a/convert/parseur_python.py b/convert/parseur_python.py index b6d1a49d..ba49c2e8 100644 --- a/convert/parseur_python.py +++ b/convert/parseur_python.py @@ -26,7 +26,13 @@ stringsAndCommentsRE = \ re.compile(u"(\"\"\".*?\"\"\"|'''.*?'''|\"[^\"]*\"|\'[^\']*\'|#.*?\n)", re.DOTALL) allchars = string.maketrans(u"", "") allcharsExceptNewline = allchars[: allchars.index('\n')]+allchars[allchars.index('\n')+1:] -allcharsExceptNewlineTranstable = string.maketrans(allcharsExceptNewline, '*'*len(allcharsExceptNewline)) +if sys.platform[0:5]=="linux" : + allcharsExceptNewlineTranstable = string.maketrans(allcharsExceptNewline, '*'*len(allcharsExceptNewline)) +elif sys.platform[0:3]=="win" : + allcharsExceptNewlineTranstable = dict((ord(char), u'*') for char in allcharsExceptNewline)#string.maketrans(allcharsExceptNewline, '*'*len(allcharsExceptNewline)) +else : + allcharsExceptNewlineTranstable = string.maketrans(allcharsExceptNewline, '*'*len(allcharsExceptNewline)) + print 'Plateforme non geree' def maskStringsAndComments(src): """Masque tous les caracteres de src contenus dans des commentaires ou des strings multilignes (triples @@ -40,12 +46,14 @@ def maskStringsAndComments(src): for i in xrange(1, len(allstrings), 2): if allstrings[i].startswith(u"'''")or allstrings[i].startswith('"""'): allstrings[i] = allstrings[i][:3]+ \ - allstrings[i][3:-3].translate(allcharsExceptNewlineTranstable)+ \ - allstrings[i][-3:] + allstrings[i][3:-3].translate(allcharsExceptNewlineTranstable)+ \ + allstrings[i][-3:] else: + test= allstrings[i][1:-1].translate(allcharsExceptNewlineTranstable) + #test +\ allstrings[i] = allstrings[i][0]+ \ - allstrings[i][1:-1].translate(allcharsExceptNewlineTranstable)+ \ - allstrings[i][-1] + allstrings[i][1:-1].translate(allcharsExceptNewlineTranstable)+ \ + allstrings[i][-1] return "".join(allstrings) @@ -119,8 +127,8 @@ def construit_genea(texte,liste_mc): class ENTITE_JDC : - """Classe de base pour tous les objets créés lors de la conversion - Tout objet dérivé est enregistré auprès de son pere a sa création + """Classe de base pour tous les objets créés lors de la conversion + Tout objet dérivé est enregistré auprès de son pere a sa création """ def __init__(self,pere): self.texte = '' @@ -143,8 +151,8 @@ class COMMENTAIRE(ENTITE_JDC): def __str__(self): """ - Retourne une chaine de caractères représentants self - sous une forme interprétable par EFICAS + Retourne une chaine de caractères représentants self + sous une forme interprétable par EFICAS """ t=repr(self.texte) return "COMMENTAIRE(u"+t+")\n" @@ -160,8 +168,8 @@ class COMMENTAIRE(ENTITE_JDC): if texte[0] == '#': self.texte = self.texte+texte[1:] else: - # le dièse n'est pas sur le premier caractere - amont,aval = string.split(texte,'#',1) # on découpe suivant la première occurrence de # + # le dièse n'est pas sur le premier caractere + amont,aval = string.split(texte,'#',1) # on découpe suivant la première occurrence de # self.texte = self.texte +amont + aval class COMMANDE(ENTITE_JDC): @@ -174,12 +182,12 @@ class COMMANDE(ENTITE_JDC): def get_nb_par(self): """ - Retourne la différence entre le nombre de parenthèses ouvrantes - et le nombre de parenthèses fermantes présentes dans self.texte - Peut donc retourner un entier négatif + Retourne la différence entre le nombre de parenthèses ouvrantes + et le nombre de parenthèses fermantes présentes dans self.texte + Peut donc retourner un entier négatif """ # faire attention aux commentaires contenus dans self.texte - # qui peuvent eux-memes contenir des parenthèses !!!! + # qui peuvent eux-memes contenir des parenthèses !!!! l_lignes = string.split(self.texte,'\n') nb = 0 for ligne in l_lignes: @@ -200,7 +208,7 @@ class AFFECTATION(ENTITE_JDC): def __str__(self): """ - Retourne une expression de l'affectation compréhensible par ACCAS + Retourne une expression de l'affectation compréhensible par ACCAS et exploitable par EFICAS """ nom,valeur = string.split(self.texte,'=',1) @@ -221,7 +229,7 @@ class COMMANDE_COMMENTARISEE(ENTITE_JDC): def __str__(self): """ - Retourne une expression de la commande commentarisée compréhensible par ACCAS + Retourne une expression de la commande commentarisée compréhensible par ACCAS et exploitable par EFICAS """ return "COMMANDE_COMM(texte="+repr(self.texte)+")\n" @@ -238,7 +246,7 @@ class AFFECTATION_EVAL(ENTITE_JDC): def __str__(self): """ - Retourne une expression du paramètre EVAL compréhensible par ACCAS + Retourne une expression du paramètre EVAL compréhensible par ACCAS et exploitable par EFICAS """ nom,valeur = string.split(self.texte,'=',1) @@ -249,8 +257,8 @@ class AFFECTATION_EVAL(ENTITE_JDC): class PARSEUR_PYTHON: """ - Cette classe sert a générer un objet PARSEUR_PYTHON qui réalise l'analyse d'un texte - représentant un JDC Python en distinguant : + Cette classe sert a générer un objet PARSEUR_PYTHON qui réalise l'analyse d'un texte + représentant un JDC Python en distinguant : - les commentaires inter commandes - les affectations - les commandes @@ -267,12 +275,12 @@ class PARSEUR_PYTHON: def is_affectation(self,texte): """ - Méthode booléenne qui retourne 1 si le texte est celui d'une affectation dans un jeu de commandes + Méthode booléenne qui retourne 1 si le texte est celui d'une affectation dans un jeu de commandes Aster, 0 sinon """ if '=' not in texte : return 0 if self.pattern_commande.match(texte): - # cas d'une procédure ... + # cas d'une procédure ... return 0 amont,aval = string.split(texte,'=',1) aval = string.strip(aval) @@ -289,12 +297,12 @@ class PARSEUR_PYTHON: def is_eval(self,texte): """ - Méthode booléenne qui retourne 1 si le texte est celui d'une affectation de type EVAL + Méthode booléenne qui retourne 1 si le texte est celui d'une affectation de type EVAL dans un jeu de commandes Aster, 0 sinon """ if '=' not in texte : return 0 if self.pattern_commande.match(texte): - # cas d'une procédure ... + # cas d'une procédure ... return 0 amont,aval = string.split(texte,'=',1) aval = string.strip(aval) @@ -306,11 +314,11 @@ class PARSEUR_PYTHON: def is_commande(self,texte): """ - Méthode booléenne qui retourne 1 si le texte est celui d'une commande dans un jeu de commandes + Méthode booléenne qui retourne 1 si le texte est celui d'une commande dans un jeu de commandes Aster, 0 sinon """ if self.pattern_commande.match(texte): - # cas d'une procédure ... + # cas d'une procédure ... return 1 # A ce stade il faut avoir un OPER ou une MACRO, bref un '=' ! if '=' not in texte : return 0 @@ -326,7 +334,7 @@ class PARSEUR_PYTHON: def analyse(self): """ Eclate la chaine self.texte en self.l_objets une liste lignes d'instructions - et de commentaires (parmi lesquels des instructions "commentarisées"). + et de commentaires (parmi lesquels des instructions "commentarisées"). """ l_lignes = string.split(self.texte,'\n') commentaire_courant = None @@ -371,24 +379,24 @@ class PARSEUR_PYTHON: continue if pattern_2comments.match(ligne): - #on a trouvé une commande commentarisée : double commentaire sans rien devant a part des blancs + #on a trouvé une commande commentarisée : double commentaire sans rien devant a part des blancs if commentaire_courant: #Si un commentaire ordinaire est en cours on le termine commentaire_courant = None if commande_courante : - # on a un objet commentarisé a l'intérieur d'une commande - # --> non traité pour l'instant : on l'ajoute simplement a la commande courante comme + # on a un objet commentarisé a l'intérieur d'une commande + # --> non traité pour l'instant : on l'ajoute simplement a la commande courante comme # un commentaire ordinaire commande_courante.append_text(ligne) elif commande_commentarisee_courante : # commande_commentarisee en cours : on ajoute la ligne commande_commentarisee_courante.append_text(ligne) - # on a 2 commandes commentarisées de suite + # on a 2 commandes commentarisées de suite if pattern_finComments.match(ligne) : commande_commentarisee_courante = None else: - # debut de commande commentarisée : on crée un objet commande_commentarisee_courante + # debut de commande commentarisée : on crée un objet commande_commentarisee_courante commande_commentarisee_courante = COMMANDE_COMMENTARISEE(self) commande_commentarisee_courante.append_text(ligne) @@ -402,29 +410,29 @@ class PARSEUR_PYTHON: commande_commentarisee_courante = None if commande_courante : - # il s'agit d'un commentaire a l'intérieur d'une commande --> on ne fait rien de special + # il s'agit d'un commentaire a l'intérieur d'une commande --> on ne fait rien de special #on l'ajoute au texte de la commande commande_courante.append_text(ligne) elif commentaire_courant : - # il s'agit de la nième ligne d'un commentaire entre deux commandes + # il s'agit de la nième ligne d'un commentaire entre deux commandes # --> on ajoute cette ligne au commentaire courant commentaire_courant.append_text(ligne) else : # il s'agit d'un nouveau commentaire entre deux commandes - # --> on le crée et il devient le commentaire courant + # --> on le crée et il devient le commentaire courant commentaire_courant = COMMENTAIRE(self) commentaire_courant.append_text(ligne) #on passe a la ligne suivante continue - # la ligne contient des données autre qu'un éventuel commentaire + # la ligne contient des données autre qu'un éventuel commentaire if commentaire_courant : - # on clot un éventuel commentaire courant + # on clot un éventuel commentaire courant commentaire_courant = None if commande_commentarisee_courante : - # on clot une éventuelle commande commentarisee courante + # on clot une éventuelle commande commentarisee courante commande_commentarisee_courante = None if commande_courante : @@ -433,7 +441,7 @@ class PARSEUR_PYTHON: if not linecontinueRE.search(line) \ and (hangingBraces == emptyHangingBraces) \ and not hangingComments: - #la commande est terminée + #la commande est terminée #print "fin de commande" self.analyse_reel(commande_courante.texte) commande_courante = None @@ -447,7 +455,7 @@ class PARSEUR_PYTHON: if not linecontinueRE.search(line) \ and (hangingBraces == emptyHangingBraces) \ and not hangingComments: - #L'affectation est terminée + #L'affectation est terminée affectation_courante=None #on passe a la ligne suivante continue @@ -488,7 +496,7 @@ class PARSEUR_PYTHON: if not linecontinueRE.search(line) \ and (hangingBraces == emptyHangingBraces) \ and not hangingComments: - #L'affectation est terminée + #L'affectation est terminée affectation_courante=None #on passe a la ligne suivante continue @@ -498,11 +506,11 @@ class PARSEUR_PYTHON: affectation_courante = None commande_courante = COMMANDE(self) commande_courante.append_text(ligne) - #si la commande est complète, on la termine + #si la commande est complète, on la termine if not linecontinueRE.search(line) \ and (hangingBraces == emptyHangingBraces) \ and not hangingComments: - #la commande est terminée + #la commande est terminée #print "fin de commande" self.analyse_reel(commande_courante.texte) commande_courante = None @@ -511,7 +519,7 @@ class PARSEUR_PYTHON: def enleve (self,texte) : """Supprime de texte tous les caracteres blancs, fins de ligne, tabulations - Le nouveau texte est retourné + Le nouveau texte est retourné """ i=0 chaine="" @@ -588,7 +596,7 @@ class PARSEUR_PYTHON: except : pass mot="" - # ou de ( imbriqueés + # ou de ( imbriqueés else : #cas du mocle facteur simple ou mot="" -- 2.39.2