From: pascale.noyret Date: Mon, 29 Mar 2021 08:54:06 +0000 (+0200) Subject: reindent InterfaceQT4 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=5fd30033057f9eb24ae6764ac83122f5a396628c;p=tools%2Feficas.git reindent InterfaceQT4 --- diff --git a/InterfaceQT4/browser.py b/InterfaceQT4/browser.py index a7b7faad..c968aea7 100644 --- a/InterfaceQT4/browser.py +++ b/InterfaceQT4/browser.py @@ -21,8 +21,8 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str - from builtins import range + from builtins import str + from builtins import range except : pass import re @@ -43,29 +43,29 @@ from .monChoixCommande import MonChoixCommande class JDCTree( QTreeWidget,GereRegles ): #------------------------------------------ - def __init__( self, jdc_item, QWParent): + def __init__( self, jdc_item, QWParent): #---------------------------------------- - self.editor = QWParent + self.editor = QWParent self.plie=False if self.editor.widgetTree !=None : - QTreeWidget.__init__(self, self.editor.widgetTree ) - self.editor.verticalLayout_2.addWidget(self) - if self.editor.enteteQTree=='complet': - self.headerItem().setText(0, "Commande ") - self.headerItem().setText(1, "Concept/Valeur") - else : - self.headerItem().setText(0, "Commande ") - self.setColumnWidth(0,200) - self.setExpandsOnDoubleClick(False) - self.setSelectionMode(3) + QTreeWidget.__init__(self, self.editor.widgetTree ) + self.editor.verticalLayout_2.addWidget(self) + if self.editor.enteteQTree=='complet': + self.headerItem().setText(0, "Commande ") + self.headerItem().setText(1, "Concept/Valeur") + else : + self.headerItem().setText(0, "Commande ") + self.setColumnWidth(0,200) + self.setExpandsOnDoubleClick(False) + self.setSelectionMode(3) else : - QTreeWidget.__init__(self, None ) + QTreeWidget.__init__(self, None ) self.item = jdc_item - self.tree = self + self.tree = self self.appliEficas = self.editor.appliEficas self.childrenComplete=[] self.racine=self.item.itemNode(self,self.item) - + self.itemCourant=None self.itemClicked.connect(self.handleOnItem) @@ -76,12 +76,12 @@ class JDCTree( QTreeWidget,GereRegles ): self.inhibeExpand = True self.expandItem(self.racine) self.inhibeExpand = False - if self.racine.children !=[] : - if self.editor.maConfiguration.afficheCommandesPliees : self.racine.children[0].plieToutEtReaffiche() - else : self.racine.children[0].deplieToutEtReaffiche() - self.racine.children[0].fenetre.donnePremier() - else : - self.racine.affichePanneau() + if self.racine.children !=[] : + if self.editor.maConfiguration.afficheCommandesPliees : self.racine.children[0].plieToutEtReaffiche() + else : self.racine.children[0].deplieToutEtReaffiche() + self.racine.children[0].fenetre.donnePremier() + else : + self.racine.affichePanneau() def contextMenuEvent(self,event) : #--------------------------------- @@ -93,7 +93,7 @@ class JDCTree( QTreeWidget,GereRegles ): #------------------------------------- """ Private slot to show the context menu of the listview. - + @param itm the selected listview item (QListWidgetItem) @param coord the position of the mouse pointer (QPoint) Attention : existeMenu permet de savoir si un menu est associe a cet item @@ -104,13 +104,13 @@ class JDCTree( QTreeWidget,GereRegles ): if item.existeMenu == 0 : return if item.menu == None: - item.createPopUpMenu() + item.createPopUpMenu() # PNPN reflechir a qqchose de generique pour remplacer cette fonctionnalite #if item.menu != None: # if item.item.getNom() == "DISTRIBUTION" and item.item.isValid() : # item.Graphe.setEnabled(1) - # item.menu.exec_(coord) - + # item.menu.exec_(coord) + def handleCollapsedItem(self,item): #---------------------------------- @@ -120,10 +120,10 @@ class JDCTree( QTreeWidget,GereRegles ): # On traite le cas de l item non selectionne self.itemCourant = item itemParent = item - while not (hasattr (itemParent,'getPanel')) : itemParent=itemParent.treeParent - if self.tree.node_selected != itemParent : - item.setExpanded(False) - return + while not (hasattr (itemParent,'getPanel')) : itemParent=itemParent.treeParent + if self.tree.node_selected != itemParent : + item.setExpanded(False) + return item.setPlie() item.plieToutEtReaffiche() @@ -137,44 +137,44 @@ class JDCTree( QTreeWidget,GereRegles ): if self.inhibeExpand == True : return self.itemCourant = item - self.inhibeExpand = True + self.inhibeExpand = True itemParent = item - while not (hasattr (itemParent,'getPanel')) : - if itemParent.plie==True : itemParent.setDeplie() - itemParent=itemParent.treeParent - if self.tree.node_selected != itemParent : - item.setExpanded(True) - self.inhibeExpand = False - return + while not (hasattr (itemParent,'getPanel')) : + if itemParent.plie==True : itemParent.setDeplie() + itemParent=itemParent.treeParent + if self.tree.node_selected != itemParent : + item.setExpanded(True) + self.inhibeExpand = False + return item.deplieToutEtReaffiche() - self.inhibeExpand = False + self.inhibeExpand = False def handleOnItem(self,item,int): #---------------------------------- #print ("je passe dans handleOnItem pour ",self, item.item.nom, item, item.item, item.item.getLabelText()) - + from InterfaceQT4 import composimp - self.inhibeExpand = True + self.inhibeExpand = True self.itemCourant = item itemParent = item - while not (hasattr (itemParent,'getPanel')) : - if itemParent.plie==True : itemParent.setDeplie() - itemAvant=itemParent - itemParent=itemParent.treeParent + while not (hasattr (itemParent,'getPanel')) : + if itemParent.plie==True : itemParent.setDeplie() + itemAvant=itemParent + itemParent=itemParent.treeParent - if itemParent.fenetre != self.editor.fenetreCentraleAffichee : - estUneFeuille=(isinstance(item,composimp.Node)) - # il faut afficher le parent - # Attention - Specification particuliere pour MT qui permet de nn afficher qu 1 niveau - # le catalogue contient cette indication dans fenetreIhm - if estUneFeuille and itemParent.fenetreIhm=='deplie1Niveau' : - itemAvant.afficheCeNiveau() - return - if estUneFeuille : itemParent.affichePanneau() - elif self.editor.maConfiguration.afficheCommandesPliees : itemParent.plieToutEtReafficheSaufItem(item) - else : itemParent.affichePanneau() + if itemParent.fenetre != self.editor.fenetreCentraleAffichee : + estUneFeuille=(isinstance(item,composimp.Node)) + # il faut afficher le parent + # Attention - Specification particuliere pour MT qui permet de nn afficher qu 1 niveau + # le catalogue contient cette indication dans fenetreIhm + if estUneFeuille and itemParent.fenetreIhm=='deplie1Niveau' : + itemAvant.afficheCeNiveau() + return + if estUneFeuille : itemParent.affichePanneau() + elif self.editor.maConfiguration.afficheCommandesPliees : itemParent.plieToutEtReafficheSaufItem(item) + else : itemParent.affichePanneau() elif (isinstance(item,composimp.Node)) and item.fenetre : item.fenetre.rendVisible() @@ -182,17 +182,17 @@ class JDCTree( QTreeWidget,GereRegles ): # aide try : - fr = item.item.getFr() - chaineDecoupee= fr.split('\n') - if len(chaineDecoupee) > 3 : - txt='\n'.join(chaineDecoupee[0:2])+'...\nfull help : double clicked on validity chip of '+ str(item.item.nom)+ ' in central widget' - else : txt=fr - if self.editor: self.editor.afficheCommentaire(str(txt)) + fr = item.item.getFr() + chaineDecoupee= fr.split('\n') + if len(chaineDecoupee) > 3 : + txt='\n'.join(chaineDecoupee[0:2])+'...\nfull help : double clicked on validity chip of '+ str(item.item.nom)+ ' in central widget' + else : txt=fr + if self.editor: self.editor.afficheCommentaire(str(txt)) except: pass item.select() - self.inhibeExpand = False + self.inhibeExpand = False def choisitPremier(self,name): @@ -200,11 +200,11 @@ class JDCTree( QTreeWidget,GereRegles ): self.editor.layoutJDCCHOIX.removeWidget(self.racine.fenetre) self.racine.fenetre.close() new_node=self.racine.appendBrother(name,'after') - + # type de noeud COMMENT = "COMMENTAIRE" PARAMETERS = "PARAMETRE" - + #------------------------------------------ class JDCNode(QTreeWidgetItem,GereRegles): #------------------------------------------ @@ -218,13 +218,13 @@ class JDCNode(QTreeWidgetItem,GereRegles): self.vraiParent = treeParent self.treeParent = treeParent self.tree = self.treeParent.tree - self.editor = self.treeParent.editor + self.editor = self.treeParent.editor self.appliEficas = treeParent.appliEficas self.JESUISOFF = 0 self.firstAffiche = True self.childrenComplete=[] - + from InterfaceQT4 import compocomm from InterfaceQT4 import compoparam from InterfaceQT4 import composimp @@ -233,27 +233,27 @@ class JDCNode(QTreeWidgetItem,GereRegles): else : name = tr(item.getLabelText()[0]) if item.nom != tr(item.nom) : name = str(tr(item.nom)+" :") value = tr(str(item.getText() ) ) - + # si specialisation de la fenetre if self.item.object.definition == None : self.fenetreIhm = None - # Cas des listes de mots_clefs + # Cas des listes de mots_clefs else : self.fenetreIhm = self.item.object.definition.fenetreIhm - + if self.editor.enteteQTree=='complet':mesColonnes=(name,value) else : mesColonnes=(name,) if self.treeParent.plie==True : - self.plie = True - self.appartientAUnNoeudPlie = True - if self.treeParent.item.isMCList() : self.appartientAUnNoeudPlie = self.treeParent.appartientAUnNoeudPlie + self.plie = True + self.appartientAUnNoeudPlie = True + if self.treeParent.item.isMCList() : self.appartientAUnNoeudPlie = self.treeParent.appartientAUnNoeudPlie else : - self.plie = False - self.appartientAUnNoeudPlie = False + self.plie = False + self.appartientAUnNoeudPlie = False #if item.nom == "POUTRE" :print "creation d'un noeud : ", item, " ",item.nom,"", self.treeParent, self.appartientAUnNoeudPlie , self.plie if ancien and itemExpand : self.plie = False - if ancien and not itemExpand : self.plie = True + if ancien and not itemExpand : self.plie = True if (isinstance(self.item,composimp.SIMPTreeItem)) : self.plie=False from InterfaceQT4 import compobloc @@ -261,17 +261,17 @@ class JDCNode(QTreeWidgetItem,GereRegles): ajoutAuParentduNoeud=0 self.treeParent=treeParent - while (isinstance(self.treeParent,compobloc.Node) or ( isinstance(self.treeParent,compomclist.Node) and self.treeParent.item.isMCList())) : - self.treeParent.childrenComplete.append(self) - self.treeParent=self.treeParent.vraiParent + while (isinstance(self.treeParent,compobloc.Node) or ( isinstance(self.treeParent,compomclist.Node) and self.treeParent.item.isMCList())) : + self.treeParent.childrenComplete.append(self) + self.treeParent=self.treeParent.vraiParent self.treeParent.childrenComplete.append(self) - if (isinstance(self,compobloc.Node) or (isinstance(self,compomclist.Node) and self.item.isMCList()) or ( hasattr(self.item.parent,'inhibeValidator') and isinstance(self,compomclist.Node) and self.item.parent.inhibeValidator)) : + if (isinstance(self,compobloc.Node) or (isinstance(self,compomclist.Node) and self.item.isMCList()) or ( hasattr(self.item.parent,'inhibeValidator') and isinstance(self,compomclist.Node) and self.item.parent.inhibeValidator)) : # Le dernier or ne sert que lorsqu'on est en train de creer une liste par les validator - QTreeWidgetItem.__init__(self,None,mesColonnes) + QTreeWidgetItem.__init__(self,None,mesColonnes) else : - QTreeWidgetItem.__init__(self,self.treeParent,mesColonnes) + QTreeWidgetItem.__init__(self,self.treeParent,mesColonnes) self.setToolTip(0,self.item.getFr()) self.setToolTip(1,self.item.getFr()) @@ -295,11 +295,11 @@ class JDCNode(QTreeWidgetItem,GereRegles): self.state="" self.fenetre=None try : - if self.item.getObject().isBLOC() : - self.setExpanded(True) - self.plie=False + if self.item.getObject().isBLOC() : + self.setExpanded(True) + self.plie=False except : - pass + pass def buildChildren(self,posInsertion=10000): @@ -308,41 +308,41 @@ class JDCNode(QTreeWidgetItem,GereRegles): """ Se charge de remettre les noeuds Expanded dans le meme etat """ #print ("*********** buildChildren ",self,self.item, self.item.nom) #print (poum) - + self.listeItemExpanded=[] self.listeItemPlie=[] for enfant in self.childrenComplete : - if enfant.plie : self.listeItemPlie.append(enfant.item) - else : self.listeItemExpanded.append(enfant.item) + if enfant.plie : self.listeItemPlie.append(enfant.item) + else : self.listeItemExpanded.append(enfant.item) for enfant in self.childrenComplete : - parent = enfant.treeParent - parent.removeChild(enfant) - enfant.JESUISOFF=1 - - + parent = enfant.treeParent + parent.removeChild(enfant) + enfant.JESUISOFF=1 + + self.children = [] self.childrenComplete = [] sublist = self.item._getSubList() ind=0 - + for item in sublist : - itemExpand=False - ancien=False - if item in self.listeItemExpanded : itemExpand=True; ancien=True - if item in self.listeItemPlie : itemExpand=False; ancien=True - nouvelItem=item.itemNode(self,item,itemExpand,ancien) - self.children.append(nouvelItem) + itemExpand=False + ancien=False + if item in self.listeItemExpanded : itemExpand=True; ancien=True + if item in self.listeItemPlie : itemExpand=False; ancien=True + nouvelItem=item.itemNode(self,item,itemExpand,ancien) + self.children.append(nouvelItem) #print ("fin *********** buildChildren ",self,self.item, self.item.nom, self.children) - + def chercheNoeudCorrespondant(self,objSimp): #------------------------------------------- sublist = self.item._getSubList() for node in self.childrenComplete: - if node.item.object==objSimp : return node + if node.item.object==objSimp : return node return None @@ -350,71 +350,71 @@ class JDCNode(QTreeWidgetItem,GereRegles): #------------------------- #print ('afficheCeNiveau pour ', self.item.nom, self.item.getLabelText()) for indiceWidget in range(self.editor.widgetCentraleLayout.count()): - widget=self.editor.widgetCentraleLayout.itemAt(indiceWidget) - self.editor.widgetCentraleLayout.removeItem(widget) + widget=self.editor.widgetCentraleLayout.itemAt(indiceWidget) + self.editor.widgetCentraleLayout.removeItem(widget) if self.editor.fenetreCentraleAffichee != None : - self.editor.widgetCentraleLayout.removeWidget(self.editor.fenetreCentraleAffichee) - self.editor.fenetreCentraleAffichee.setParent(None) - self.editor.fenetreCentraleAffichee.close() - self.editor.fenetreCentraleAffichee.deleteLater() + self.editor.widgetCentraleLayout.removeWidget(self.editor.fenetreCentraleAffichee) + self.editor.fenetreCentraleAffichee.setParent(None) + self.editor.fenetreCentraleAffichee.close() + self.editor.fenetreCentraleAffichee.deleteLater() from monWidgetNiveauFact import MonWidgetNiveauFact, MonWidgetNiveauFactTableau maDefinition = self.item.get_definition() monObjet = self.item.object if maDefinition.fenetreIhm=='Tableau' : self.maFenetreCadre=MonWidgetNiveauFactTableau(self,self.editor,maDefinition,monObjet) else : self.maFenetreCadre=MonWidgetNiveauFact(self,self.editor,maDefinition,monObjet) - + self.fenetre = self.maFenetreCadre self.editor.widgetCentraleLayout.addWidget(self.maFenetreCadre) self.editor.fenetreCentraleAffichee=self.maFenetreCadre self.select() #print ('fin afficheCeNiveau pour ', self.item.nom) - - + + def getPanelModifie(self): #------------------------- - + if self.fenetreIhm == None : return None if self.fenetreIhm =='deplie1Niveau': - from InterfaceQT4.monWidgetCommandeDeplie1Niveau import MonWidgetCommandeDeplie1Niveau - return MonWidgetCommandeDeplie1Niveau (self,self.editor ,self.item.object) + from InterfaceQT4.monWidgetCommandeDeplie1Niveau import MonWidgetCommandeDeplie1Niveau + return MonWidgetCommandeDeplie1Niveau (self,self.editor ,self.item.object) return None - + def affichePanneau(self) : #------------------------- #print ('_________________ds affichePanneau pour', self.item.nom) # pour l instant pas d inactif - if not(self.item.isActif()) : - from .monWidgetInactif import MonWidgetInactif - self.fenetre = MonWidgetInactif(self,self.editor) + if not(self.item.isActif()) : + from .monWidgetInactif import MonWidgetInactif + self.fenetre = MonWidgetInactif(self,self.editor) else: - itemParent=self - while not (hasattr (itemParent,'getPanel')) : itemParent=itemParent.treeParent - if itemParent != self : - #print ('j appelle affichePanneau pour ', itemParent.item.nom , 'par', self.item.nom) - itemParent.affichePanneau() - #print ('fin _________________ds affichePanneau pour', self.item.nom) - return - - self.fenetre = self.getPanelModifie() - if self.fenetre == None : self.fenetre=self.getPanel() - self.editor.restoreSplitterSizes() - + itemParent=self + while not (hasattr (itemParent,'getPanel')) : itemParent=itemParent.treeParent + if itemParent != self : + #print ('j appelle affichePanneau pour ', itemParent.item.nom , 'par', self.item.nom) + itemParent.affichePanneau() + #print ('fin _________________ds affichePanneau pour', self.item.nom) + return + + self.fenetre = self.getPanelModifie() + if self.fenetre == None : self.fenetre=self.getPanel() + self.editor.restoreSplitterSizes() + for indiceWidget in range(self.editor.widgetCentraleLayout.count()): - widget = self.editor.widgetCentraleLayout.itemAt(indiceWidget) - self.editor.widgetCentraleLayout.removeItem(widget) + widget = self.editor.widgetCentraleLayout.itemAt(indiceWidget) + self.editor.widgetCentraleLayout.removeItem(widget) # ceinture et bretelle #print 'old fenetre = ',self.editor.fenetreCentraleAffichee - if self.editor.fenetreCentraleAffichee != None : - try : - self.editor.widgetCentraleLayout.removeWidget(self.editor.fenetreCentraleAffichee) - self.editor.fenetreCentraleAffichee.setParent(None) - self.editor.fenetreCentraleAffichee.close() - self.editor.fenetreCentraleAffichee.deleteLater() - except : - pass + if self.editor.fenetreCentraleAffichee != None : + try : + self.editor.widgetCentraleLayout.removeWidget(self.editor.fenetreCentraleAffichee) + self.editor.fenetreCentraleAffichee.setParent(None) + self.editor.fenetreCentraleAffichee.close() + self.editor.fenetreCentraleAffichee.deleteLater() + except : + pass self.editor.widgetCentraleLayout.addWidget(self.fenetre) #print ("j ajoute ", self.fenetre, self.fenetre.node.item.nom) @@ -422,12 +422,12 @@ class JDCNode(QTreeWidgetItem,GereRegles): self.tree.node_selected= self if self.editor.first : - if not(isinstance(self.fenetre,MonChoixCommande)): self.editor.first=False + if not(isinstance(self.fenetre,MonChoixCommande)): self.editor.first=False self.tree.inhibeExpand=True self.tree.expandItem(self) self.tree.inhibeExpand=False #print( '_________________fin affichePanneau pour', self.item.nom) - + def createPopUpMenu(self): #------------------------- @@ -442,32 +442,32 @@ class JDCNode(QTreeWidgetItem,GereRegles): # On traite par une exception le cas ou l'utilisateur final cherche a desactiver # (commentariser) un commentaire. try : - pos=self.treeParent.children.index(self) - commande_comment = self.item.getObjetCommentarise() - # On signale a l editeur du panel (le JDCDisplay) une modification - self.editor.initModif() - self.treeParent.buildChildren() - self.treeParent.children[pos].select() - self.treeParent.children[pos].affichePanneau() + pos=self.treeParent.children.index(self) + commande_comment = self.item.getObjetCommentarise() + # On signale a l editeur du panel (le JDCDisplay) une modification + self.editor.initModif() + self.treeParent.buildChildren() + self.treeParent.children[pos].select() + self.treeParent.children[pos].affichePanneau() except Exception as e: - traceback.print_exc() - QMessageBox.critical( self.editor, "TOO BAD",str(e)) - + traceback.print_exc() + QMessageBox.critical( self.editor, "TOO BAD",str(e)) + def unCommentIt(self): #------------------------- """ Realise la decommentarisation de self """ try : - pos=self.treeParent.children.index(self) - commande,nom = self.item.unComment() - self.editor.initModif() - self.treeParent.buildChildren() - self.treeParent.children[pos].select() - self.treeParent.children[pos].affichePanneau() + pos=self.treeParent.children.index(self) + commande,nom = self.item.unComment() + self.editor.initModif() + self.treeParent.buildChildren() + self.treeParent.children[pos].select() + self.treeParent.children[pos].affichePanneau() except Exception as e: - QMessageBox.critical( self.editor, "Erreur !",str(e)) - + QMessageBox.critical( self.editor, "Erreur !",str(e)) + def addComment( self, after=True ): #----------------------------------- """ @@ -475,11 +475,11 @@ class JDCNode(QTreeWidgetItem,GereRegles): """ self.editor.initModif() if after: - pos = 'after' + pos = 'after' else: - pos = 'before' + pos = 'before' return self.appendBrother( COMMENT, pos ) - + def addParameters( self, after=True ): #------------------------------------- """ @@ -490,19 +490,19 @@ class JDCNode(QTreeWidgetItem,GereRegles): else: pos = 'before' child=self.appendBrother( PARAMETERS, pos ) return child - - + + def select( self ): #------------------ """ Rend le noeud courant (self) selectionne et deselectionne tous les autres - """ + """ #print "select pour", self.item.nom for item in self.tree.selectedItems() : - item.setSelected(0) - self.tree.setCurrentItem( self ) - + item.setSelected(0) + self.tree.setCurrentItem( self ) + #------------------------------------------------------------------ # Methodes de creation et destruction de noeuds #------------------------------------------------------------------ @@ -511,27 +511,27 @@ class JDCNode(QTreeWidgetItem,GereRegles): #---------------------------------------------------- """ Permet d'ajouter un objet frere a l'objet associe au noeud self - par defaut on l'ajoute immediatement apres + par defaut on l'ajoute immediatement apres Methode externe """ self.editor.initModif() from InterfaceQT4 import compojdc if (isinstance(self.treeParent, compojdc.Node)) and not self.verifiePosition(name,pos) : return 0 - + if self.treeParent != self.vraiParent : - index = self.vraiParent.children.index(self) - if pos == 'before' : index = index - elif pos == 'after' : index = index +1 - return self.vraiParent.appendChild(name,pos=index,plier=plier) + index = self.vraiParent.children.index(self) + if pos == 'before' : index = index + elif pos == 'after' : index = index +1 + return self.vraiParent.appendChild(name,pos=index,plier=plier) else : - index = self.treeParent.children.index(self) - if pos == 'before': index = index - elif pos == 'after' : index = index +1 - else: - print(pos, tr(" n'est pas un index valide pour appendBrother")) - return 0 - return self.treeParent.appendChild(name,pos=index,plier=plier) + index = self.treeParent.children.index(self) + if pos == 'before': index = index + elif pos == 'after' : index = index +1 + else: + print(pos, tr(" n'est pas un index valide pour appendBrother")) + return 0 + return self.treeParent.appendChild(name,pos=index,plier=plier) def verifiePosition(self,name,pos,aLaRacine=False): #---------------------------------------------------- @@ -546,21 +546,21 @@ class JDCNode(QTreeWidgetItem,GereRegles): if pos=="after" : indexOu = indexOu+1 for e in etapes[:indexOu] : - nom=e.nom - if nom not in self.editor.readercata.Classement_Commandes_Ds_Arbre : continue - indexEtape=self.editor.readercata.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 + nom=e.nom + if nom not in self.editor.readercata.Classement_Commandes_Ds_Arbre : continue + indexEtape=self.editor.readercata.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.readercata.Classement_Commandes_Ds_Arbre : continue - indexEtape=self.editor.readercata.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 + nom=e.nom + if nom not in self.editor.readercata.Classement_Commandes_Ds_Arbre : continue + indexEtape=self.editor.readercata.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 appendChild(self,name,pos=None,plier=False): @@ -575,7 +575,7 @@ class JDCNode(QTreeWidgetItem,GereRegles): #import traceback #traceback.print_stack() - + self.editor.initModif() if pos == 'first' : index = 0 elif pos == 'last' : index = len(self.children) @@ -586,8 +586,8 @@ class JDCNode(QTreeWidgetItem,GereRegles): # si on essaye d inserer a la racine if (isinstance(self.treeParent,JDCTree) and index==0) : - verifiePosition=self.verifiePosition(name,'first',aLaRacine=True) - if not verifiePosition : return 0 + verifiePosition=self.verifiePosition(name,'first',aLaRacine=True) + if not verifiePosition : return 0 self.tree.inhibeExpand = True obj = self.item.addItem(name,index) # emet le signal 'add' @@ -596,14 +596,14 @@ class JDCNode(QTreeWidgetItem,GereRegles): try : #if 1 : - child = self.children[index] - if plier == True : child.setPlie() - else : child.setDeplie() + child = self.children[index] + if plier == True : child.setPlie() + else : child.setDeplie() except : - child=self.children[index] + child=self.children[index] - try : - if len(obj) > 1 : self.buildChildren() + try : + if len(obj) > 1 : self.buildChildren() except : pass self.tree.inhibeExpand=False @@ -613,23 +613,23 @@ class JDCNode(QTreeWidgetItem,GereRegles): def deplace(self): #----------------- self.editor.initModif() - index = self.treeParent.children.index(self) - 1 + index = self.treeParent.children.index(self) - 1 if index < 0 : index =0 ret=self.treeParent.item.deplaceEntite(self.item.getObject()) def delete(self): #---------------- - """ + """ Methode externe pour la destruction de l'objet associe au noeud """ self.editor.initModif() - index = self.vraiParent.children.index(self) - 1 + index = self.vraiParent.children.index(self) - 1 if index < 0 : index =0 recalcule=0 if self.item.nom == "VARIABLE" : - recalcule=1 - jdc=self.item.jdc + recalcule=1 + jdc=self.item.jdc ret,commentaire=self.vraiParent.item.suppItem(self.item) if ret==0 : self.editor.afficheInfos(commentaire,Qt.red) @@ -640,49 +640,49 @@ class JDCNode(QTreeWidgetItem,GereRegles): if recalcule : jdc.recalculeEtatCorrelation() if ret==0 : - if self.treeParent.childrenComplete : - notdeleted=self.treeParent.childrenComplete[index+1] - notdeleted.select() + if self.treeParent.childrenComplete : + notdeleted=self.treeParent.childrenComplete[index+1] + notdeleted.select() else : - toselect.select() + toselect.select() from InterfaceQT4 import compojdc # cas ou on detruit dans l arbre sans affichage - if isinstance(self.treeParent,compojdc.Node) : - toselect.affichePanneau() + if isinstance(self.treeParent,compojdc.Node) : + toselect.affichePanneau() else : - if self.treeParent.fenetre== None : return - #print "J appelle reaffiche de browser apres delete" - self.treeParent.fenetre.reaffiche(toselect) + if self.treeParent.fenetre== None : return + #print "J appelle reaffiche de browser apres delete" + self.treeParent.fenetre.reaffiche(toselect) def deleteMultiple(self,liste=()): #-------------------------------- - """ + """ Methode externe pour la destruction d une liste de noeud """ - from InterfaceQT4 import compojdc + from InterfaceQT4 import compojdc self.editor.initModif() index=9999 recalcule=0 jdc=self.treeParent parentPosition=jdc while not(isinstance(jdc,compojdc.Node)): - jdc=jdc.treeParent + jdc=jdc.treeParent for noeud in liste : - if not( isinstance(noeud.treeParent, compojdc.Node)): continue - if noeud.item.nom == "VARIABLE" : recalcule=1 - if noeud.treeParent.children.index(noeud) < index : index=noeud.treeParent.children.index(noeud) + if not( isinstance(noeud.treeParent, compojdc.Node)): continue + if noeud.item.nom == "VARIABLE" : recalcule=1 + if noeud.treeParent.children.index(noeud) < index : index=noeud.treeParent.children.index(noeud) if index < 0 : index =0 # Cas ou on detruit dans une ETape - if index == 9999 : - parentPosition=self.treeParent - while not(isinstance(parentPosition, compojdc.Node)): - index=parentPosition.treeParent.children.index(parentPosition) - parentPosition=parentPosition.treeParent + if index == 9999 : + parentPosition=self.treeParent + while not(isinstance(parentPosition, compojdc.Node)): + index=parentPosition.treeParent.children.index(parentPosition) + parentPosition=parentPosition.treeParent for noeud in liste: - noeud.treeParent.item.suppItem(noeud.item) + noeud.treeParent.item.suppItem(noeud.item) jdc.buildChildren() if recalcule : jdc.recalculeEtatCorrelation() @@ -690,16 +690,16 @@ class JDCNode(QTreeWidgetItem,GereRegles): except : toselect=jdc toselect.select() toselect.affichePanneau() -# +# # ------------------------------------------------------------------ - def onValid(self): + def onValid(self): #----------------- if self.JESUISOFF==1 : return - if hasattr(self,'fenetre') and self.fenetre: - try : self.fenetre.setValide() - except : pass + if hasattr(self,'fenetre') and self.fenetre: + try : self.fenetre.setValide() + except : pass # PNPN lignes suivantes a repenser #if (self.item.nom == "VARIABLE" or self.item.nom == "DISTRIBUTION") and self.item.isValid(): @@ -707,7 +707,7 @@ class JDCNode(QTreeWidgetItem,GereRegles): #print (hasattr(self.item,'forceRecalcul')) #if hasattr(self.item,'forceRecalcul') : self.forceRecalculChildren(self.item.forceRecalcul) self.editor.initModif() - + self.updateNodeValid() self.updateNodeLabel() self.updateNodeTexte() @@ -720,7 +720,7 @@ class JDCNode(QTreeWidgetItem,GereRegles): self.editor.initModif() self.updateNodes() if hasattr(self.item,'jdc'): self.item.jdc.aReafficher=True - + def onSupp(self,object): #----------------------- #print ("onSup pour ", self.item.nom, object) @@ -730,7 +730,7 @@ class JDCNode(QTreeWidgetItem,GereRegles): self.editor.initModif() self.updateNodes() if hasattr(self.item,'jdc'): self.item.jdc.aReafficher=True - + def onRedessine(self): #--------------------- #print ('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!je passe dans onRedessine pour', self.item.nom) @@ -757,34 +757,34 @@ class JDCNode(QTreeWidgetItem,GereRegles): # PNPN a reflechir if self.item.nom != tr(self.item.nom) : labeltext = str(tr(self.item.nom)+" :") self.setText(0, tr(labeltext)) - + def updateNodeLabelInBlack(self): #------------------------------- - if hasattr(self.appliEficas,'noeudColore'): - self.appliEficas.noeudColore.setForeground(0,Qt.black) - self.appliEficas.noeudColore.updateNodeLabel - + if hasattr(self.appliEficas,'noeudColore'): + self.appliEficas.noeudColore.setForeground(0,Qt.black) + self.appliEficas.noeudColore.updateNodeLabel + def updateNodeLabelInBlue(self): #------------------------------- if hasattr(self.appliEficas,'noeudColore'): self.appliEficas.noeudColore.setForeground(0,Qt.black) self.setForeground(0,Qt.blue) labeltext,fonte,couleur = self.item.getLabelText() if self.item.nom != tr(self.item.nom) : labeltext = str(tr(self.item.nom)+" :") - self.setText(0, labeltext) + self.setText(0, labeltext) self.appliEficas.noeudColore=self def updatePlusieursNodeLabelInBlue(self,liste): #---------------------------------------------- if hasattr(self.appliEficas,'listeNoeudsColores'): - for noeud in self.appliEficas.listeNoeudsColores: - noeud.setTextColor( 0,Qt.black) - noeud.updateNodeLabel() + for noeud in self.appliEficas.listeNoeudsColores: + noeud.setTextColor( 0,Qt.black) + noeud.updateNodeLabel() self.appliEficas.listeNoeudsColores=[] for noeud in liste : - noeud.setTextColor( 0,Qt.blue ) - labeltext,fonte,couleur = noeud.item.getLabelText() - noeud.setText(0, labeltext) - self.appliEficas.listeNoeudsColores.append(noeud) + noeud.setTextColor( 0,Qt.blue ) + labeltext,fonte,couleur = noeud.item.getLabelText() + noeud.setText(0, labeltext) + self.appliEficas.listeNoeudsColores.append(noeud) def updateNodeTexteInBlack(self): #-------------------------------- @@ -798,7 +798,7 @@ class JDCNode(QTreeWidgetItem,GereRegles): """ Met a jour les noms des SD et valeurs des mots-cles """ value = self.item.getText() self.setText(1, value) - + def updateNodeTexteInBlue(self): #-------------------------------- @@ -820,29 +820,29 @@ class JDCNode(QTreeWidgetItem,GereRegles): self.updateNodeValid() try : self.treeParent.updateValid() except: pass - + def updateTexte(self): #---------------------- """ Met a jour les noms des SD et valeurs des mots-cles """ #print "NODE updateTexte", self.item.getLabelText() self.updateNodeTexte() if self.isExpanded() : - for child in self.children: - if child.isHidden() == false : child.updateTexte() + for child in self.children: + if child.isHidden() == false : child.updateTexte() def forceRecalculChildren(self,niveau): #-------------------------------------- - if self.state == 'recalcule' : - self.state = "" - return + if self.state == 'recalcule' : + self.state = "" + return self.state='recalcule' if hasattr(self.item,'object'): - self.item.object.state="modified" + self.item.object.state="modified" for child in self.children: - if niveau > 0 : child.forceRecalculChildren(niveau - 1) - - + if niveau > 0 : child.forceRecalculChildren(niveau - 1) + + def doPaste(self,node_selected,pos='after'): #-------------------------------------------- @@ -865,9 +865,9 @@ class JDCNode(QTreeWidgetItem,GereRegles): child=None try : #if 1 : - child = self.appendBrother(objet_a_copier,pos) + child = self.appendBrother(objet_a_copier,pos) except : - pass + pass return child def doPastePremier(self,objet_a_copier): @@ -884,17 +884,17 @@ class JDCNode(QTreeWidgetItem,GereRegles): self.inhibeExpand=True from InterfaceQT4 import compojdc if (isinstance(self, compojdc.Node)) : - self.affichePanneau() - self.inhibeExpand=False - return + self.affichePanneau() + self.inhibeExpand=False + return self.editor.deplier = False for item in self.children : - # il ne faut pas plier les blocs - from InterfaceQT4 import compobloc - if (isinstance(item,compobloc.Node)) : continue - item.setPlie() - if item==itemADeplier : - itemADeplier.setDeplie() + # il ne faut pas plier les blocs + from InterfaceQT4 import compobloc + if (isinstance(item,compobloc.Node)) : continue + item.setPlie() + if item==itemADeplier : + itemADeplier.setDeplie() self.affichePanneau() self.inhibeExpand=False @@ -902,14 +902,14 @@ class JDCNode(QTreeWidgetItem,GereRegles): #----------------------------- #print ('plieToutEtReaffiche', self.item.getNom()) from InterfaceQT4 import compojdc - if (isinstance(self, compojdc.Node)) : self.affichePanneau(); return + if (isinstance(self, compojdc.Node)) : self.affichePanneau(); return self.inhibeExpand=True self.editor.deplier = False for item in self.children : - # il ne faut pas plier les blocs - from InterfaceQT4 import compobloc - if (isinstance(item,compobloc.Node)) : continue - item.setPlie() + # il ne faut pas plier les blocs + from InterfaceQT4 import compobloc + if (isinstance(item,compobloc.Node)) : continue + item.setPlie() self.affichePanneau() #print ("fin plieToutEtReaffiche", self.item.getNom()) @@ -917,7 +917,7 @@ class JDCNode(QTreeWidgetItem,GereRegles): #----------------------------- self.editor.deplier = True for item in self.children : - item.setDeplie() + item.setDeplie() self.affichePanneau() def setPlie(self): @@ -925,8 +925,8 @@ class JDCNode(QTreeWidgetItem,GereRegles): #print "je mets inhibeExpand a true dans setPlie" #print ("je suis dans plieTout", self.item.getNom()) from . import compojdc - if self.fenetre == self.editor.fenetreCentraleAffichee and isinstance(self.treeParent,compojdc.Node): - return + if self.fenetre == self.editor.fenetreCentraleAffichee and isinstance(self.treeParent,compojdc.Node): + return self.tree.inhibeExpand=True self.tree.collapseItem(self) self.setPlieChildren() @@ -945,26 +945,26 @@ class JDCNode(QTreeWidgetItem,GereRegles): from InterfaceQT4 import composimp if isinstance(self,composimp.Node) : return for c in self.children : - c.setPlieChildren() - #print "dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.getLabelText()[0] - c.appartientAUnNoeudPlie=True - c.plie=True - #print "dans setPlieChildren plie", c.item.nom - # 01/2018 PNPN : boucle sur MT __ La ligne suivante ne me semble pas necessaire - #if not (isinstance(c,composimp.Node)) :c.setExpanded(False) + c.setPlieChildren() + #print "dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.getLabelText()[0] + c.appartientAUnNoeudPlie=True + c.plie=True + #print "dans setPlieChildren plie", c.item.nom + # 01/2018 PNPN : boucle sur MT __ La ligne suivante ne me semble pas necessaire + #if not (isinstance(c,composimp.Node)) :c.setExpanded(False) # Pour les blocs et les motcles list # on affiche un niveau de plus from InterfaceQT4 import compobloc from InterfaceQT4 import compomclist - if (isinstance(self,compobloc.Node) or ( isinstance(self,compomclist.Node) and self.item.isMCList())) : - niveauPere=self.treeParent - while (isinstance(niveauPere,compobloc.Node) or (isinstance(niveauPere,compomclist.Node) and niveauPere.item.isMCList())) : - niveauPere=niveauPere.treeParent - for c in self.children : - c.appartientAUnNoeudPlie=niveauPere.appartientAUnNoeudPlie - #print ("dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.getLabelText()[0], "mis a la valeur ", niveauPere.appartientAUnNoeudPlie) - c.setExpanded(False) + if (isinstance(self,compobloc.Node) or ( isinstance(self,compomclist.Node) and self.item.isMCList())) : + niveauPere=self.treeParent + while (isinstance(niveauPere,compobloc.Node) or (isinstance(niveauPere,compomclist.Node) and niveauPere.item.isMCList())) : + niveauPere=niveauPere.treeParent + for c in self.children : + c.appartientAUnNoeudPlie=niveauPere.appartientAUnNoeudPlie + #print ("dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.getLabelText()[0], "mis a la valeur ", niveauPere.appartientAUnNoeudPlie) + c.setExpanded(False) def setDeplie(self): @@ -982,12 +982,12 @@ class JDCNode(QTreeWidgetItem,GereRegles): #----------------------------- #print "dans setDeplieChildren appartientAUnNoeudPlie=False ", self.item.getLabelText() for c in self.children : - c.setDeplieChildren() - #print "dans setDeplieChildren ", c.item.nom - c.appartientAUnNoeudPlie=False - c.setExpanded(True) - c.plie=False - + c.setDeplieChildren() + #print "dans setDeplieChildren ", c.item.nom + c.appartientAUnNoeudPlie=False + c.setExpanded(True) + c.plie=False + def selectAvant(self): #----------------------------- i=self.item.jdc.etapes.index(self.item.object) @@ -995,12 +995,12 @@ class JDCNode(QTreeWidgetItem,GereRegles): except : cherche=self.item.jdc.etapes[-1] node=None for i in self.tree.racine.children : - if i.item.object== cherche : - node=i - break - if node : - node.affichePanneau() - node.select() + if i.item.object== cherche : + node=i + break + if node : + node.affichePanneau() + node.select() def selectApres(self): #--------------------- @@ -1009,10 +1009,9 @@ class JDCNode(QTreeWidgetItem,GereRegles): except : cherche=self.item.jdc.etapes[0] node=None for i in self.tree.racine.children : - if i.item.object== cherche : - node=i - break - if node : - node.affichePanneau() - node.select() - + if i.item.object== cherche : + node=i + break + if node : + node.affichePanneau() + node.select() diff --git a/InterfaceQT4/compobloc.py b/InterfaceQT4/compobloc.py index a05c21e8..e0ecb5ff 100644 --- a/InterfaceQT4/compobloc.py +++ b/InterfaceQT4/compobloc.py @@ -28,7 +28,7 @@ from . import typeNode class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): - + def createPopUpMenu(self): typeNode.PopUpMenuNodeMinimal.createPopUpMenu(self) @@ -46,12 +46,12 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): class BLOCTreeItem(compofact.FACTTreeItem): - itemNode=Node + itemNode=Node - def isCopiable(self): - return 0 + def isCopiable(self): + return 0 import Accas treeitem = BLOCTreeItem -objet = Accas.MCBLOC +objet = Accas.MCBLOC diff --git a/InterfaceQT4/compocomm.py b/InterfaceQT4/compocomm.py index 8c501b79..c9bd5565 100644 --- a/InterfaceQT4/compocomm.py +++ b/InterfaceQT4/compocomm.py @@ -43,7 +43,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel): self.Decommente.setStatusTip(tr("Decommente la commande ")) if hasattr(self.item,'unComment'): - self.menu.addAction(self.Decommente) + self.menu.addAction(self.Decommente) def decommenter(self) : item= self.tree.currentItem() @@ -55,20 +55,20 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel): debComm=self.item.getText() self.setText(1,tr(debComm)) - + class COMMTreeItem(Objecttreeitem.ObjectTreeItem): - itemNode=Node + itemNode=Node def init(self): - self.setFunction = self.setValeur + self.setFunction = self.setValeur def getIconName(self): - """ - Retourne le nom de l'icone associee au noeud qui porte self, - dependant de la validite de l'objet - NB : un commentaire est toujours valide ... - """ - return "ast-white-percent" + """ + Retourne le nom de l'icone associee au noeud qui porte self, + dependant de la validite de l'objet + NB : un commentaire est toujours valide ... + """ + return "ast-white-percent" def getLabelText(self): """ Retourne 3 valeurs : @@ -79,11 +79,11 @@ class COMMTreeItem(Objecttreeitem.ObjectTreeItem): return tr('Commentaire'),None,None def getValeur(self): - """ - Retourne la valeur de l'objet Commentaire cad son texte - """ - return self.object.getValeur() or '' - + """ + Retourne la valeur de l'objet Commentaire cad son texte + """ + return self.object.getValeur() or '' + def getText(self): texte = self.object.valeur texte = texte.split('\n')[0] @@ -93,26 +93,26 @@ class COMMTreeItem(Objecttreeitem.ObjectTreeItem): return texte[0:24] def setValeur(self,valeur): - """ - Affecte valeur a l'objet COMMENTAIRE - """ - self.object.setValeur(valeur) - + """ + Affecte valeur a l'objet COMMENTAIRE + """ + self.object.setValeur(valeur) + def getSubList(self): - """ - Retourne la liste des fils de self - """ - return [] + """ + Retourne la liste des fils de self + """ + return [] def getObjetCommentarise(self): - """ - La methode getObjetCommentarise() de la classe compocomm.COMMTreeItem - surcharge la methode getObjetCommentarise de la classe Objecttreeitem.ObjectTreeItem - elle a pour but d'empecher l'utilisateur final de commentariser un commentaire. - """ - raise EficasException( 'Impossible de commentariser un commentaire' ) - + """ + La methode getObjetCommentarise() de la classe compocomm.COMMTreeItem + surcharge la methode getObjetCommentarise de la classe Objecttreeitem.ObjectTreeItem + elle a pour but d'empecher l'utilisateur final de commentariser un commentaire. + """ + raise EficasException( 'Impossible de commentariser un commentaire' ) + import Extensions treeitem =COMMTreeItem -objet = Extensions.commentaire.COMMENTAIRE +objet = Extensions.commentaire.COMMENTAIRE diff --git a/InterfaceQT4/compocommandecomm.py b/InterfaceQT4/compocommandecomm.py index 41eed95a..1ae3b992 100644 --- a/InterfaceQT4/compocommandecomm.py +++ b/InterfaceQT4/compocommandecomm.py @@ -28,18 +28,18 @@ class COMMANDE_COMMTreeItem(Objecttreeitem.ObjectTreeItem): itemNode=compocomm.Node def init(self): - self.setFunction = self.setValeur + self.setFunction = self.setValeur def getIconName(self): - """ - Retourne le nom de l'icone associee au noeud qui porte self, - dependant de la validite de l'objet - NB : une commande commentarisee est toujours valide ... - """ - if self.isValid(): - return "ast-green-percent" - else: - return "ast-red-percent" + """ + Retourne le nom de l'icone associee au noeud qui porte self, + dependant de la validite de l'objet + NB : une commande commentarisee est toujours valide ... + """ + if self.isValid(): + return "ast-green-percent" + else: + return "ast-red-percent" def getLabelText(self): """ Retourne 3 valeurs : @@ -50,11 +50,11 @@ class COMMANDE_COMMTreeItem(Objecttreeitem.ObjectTreeItem): return 'commentaire' def getValeur(self): - """ - Retourne la valeur de la commande commentarisee cad son texte - """ - return self.object.getValeur() or '' - + """ + Retourne la valeur de la commande commentarisee cad son texte + """ + return self.object.getValeur() or '' + def getText(self): texte = self.object.valeur texte = texte.split('\n')[0] @@ -64,31 +64,31 @@ class COMMANDE_COMMTreeItem(Objecttreeitem.ObjectTreeItem): return texte[0:24] def setValeur(self,valeur): - """ - Afefcte valeur a l'objet commande commentarisee - """ - self.object.setValeur(valeur) - + """ + Afefcte valeur a l'objet commande commentarisee + """ + self.object.setValeur(valeur) + def getSubList(self): - """ - Retourne la liste des fils de self - """ - return [] + """ + Retourne la liste des fils de self + """ + return [] def unComment(self): - """ - Demande a l'objet commande commentarisee de se decommentariser. - Si l'operation s'effectue correctement, retourne l'objet commande - et eventuellement le nom de la sd produite, sinon leve une exception - """ - try: - commande,nom = self.object.unComment() - #self.parent.children[pos].select() - except Exception as e: - traceback.print_exc() - raise EficasException(e) - return commande,nom - + """ + Demande a l'objet commande commentarisee de se decommentariser. + Si l'operation s'effectue correctement, retourne l'objet commande + et eventuellement le nom de la sd produite, sinon leve une exception + """ + try: + commande,nom = self.object.unComment() + #self.parent.children[pos].select() + except Exception as e: + traceback.print_exc() + raise EficasException(e) + return commande,nom + import Accas treeitem =COMMANDE_COMMTreeItem -objet = Accas.COMMANDE_COMM +objet = Accas.COMMANDE_COMM diff --git a/InterfaceQT4/compofact.py b/InterfaceQT4/compofact.py index 57dd1df8..619e7547 100644 --- a/InterfaceQT4/compofact.py +++ b/InterfaceQT4/compofact.py @@ -38,17 +38,17 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel): maCommande=commande if hasattr(parentQt,'niveau'): self.niveau=parentQt.niveau+1 else : self.niveau=1 - if hasattr(self,'plie') and self.plie==True : - from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie - widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande) - elif self.editor.maConfiguration.afficheFirstPlies and self.firstAffiche: - self.firstAffiche = False - self.setPlie() - from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie - widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande) + if hasattr(self,'plie') and self.plie==True : + from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie + widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande) + elif self.editor.maConfiguration.afficheFirstPlies and self.firstAffiche: + self.firstAffiche = False + self.setPlie() + from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie + widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande) else: - from InterfaceQT4.monWidgetFact import MonWidgetFact - widget=MonWidgetFact(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande) + from InterfaceQT4.monWidgetFact import MonWidgetFact + widget=MonWidgetFact(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande) return widget @@ -58,95 +58,95 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel): class FACTTreeItem(Objecttreeitem.ObjectTreeItem): - itemNode=Node - - def isExpandable(self): - # ---------------------- - return 1 - - def getText(self): - # ---------------- - return '' - - def getLabelText(self): - # ---------------------- - """ Retourne 3 valeurs : - - le texte à afficher dans le noeud representant l'item - - la fonte dans laquelle afficher ce texte - - la couleur du texte - """ - # None --> fonte et couleur par defaut - if not(hasattr(self.object,'getLabelText')): return self.object.nom,None,None - return self.object.getLabelText(),None,None - - def isValid(self): - # ---------------- - return self.object.isValid() - - def isCopiable(self): - # ---------------- - return 1 - - def getIconName(self): - # ---------------- - if self.object.isValid() : return "ast-green-los" - elif self.object.isOblig(): return "ast-red-los" - else : return "ast-yel-los" - - #PNPN ???? - #def keys(self): - # keys=self.object.mc_dict - # return keys - - def getSubList(self): - # ---------------- - """ - Reactualise la liste des items fils stockes dans self.sublist - """ - liste=self.object.mcListe - sublist=[None]*len(liste) - # suppression des items lies aux objets disparus - for item in self.sublist: - old_obj=item.getObject() - if old_obj in liste: - pos=liste.index(old_obj) - sublist[pos]=item - else: - pass # objets supprimes ignores - # ajout des items lies aux nouveaux objets - pos=0 - for obj in liste: - if sublist[pos] is None: - # nouvel objet : on cree un nouvel item - def setFunction(value, object=obj): - object.setval(value) - item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj, setFunction) - sublist[pos]=item - pos=pos+1 - - self.sublist=sublist - return self.sublist - - def addItem(self,name,pos): - objet = self.object.addEntite(name,pos) - return objet - - def suppItem(self,item) : - """ - Cette methode a pour fonction de supprimer l'item passee en argument - des fils de l'item FACT qui est son pere - - item = item du MOCLE a supprimer du MOCLE pere - - item.getObject() = MCSIMP ou MCBLOC - """ - itemobject=item.getObject() - if itemobject.isOblig() : - return (0, tr('Impossible de supprimer un mot-cle obligatoire ')) - - if self.object.suppEntite(itemobject): - message = tr("Mot-cle %s supprime")+ itemobject.nom - return (1, message) - else: - return (0,tr('Pb interne : impossible de supprimer ce mot-cle')) + itemNode=Node + + def isExpandable(self): + # ---------------------- + return 1 + + def getText(self): + # ---------------- + return '' + + def getLabelText(self): + # ---------------------- + """ Retourne 3 valeurs : + - le texte à afficher dans le noeud representant l'item + - la fonte dans laquelle afficher ce texte + - la couleur du texte + """ + # None --> fonte et couleur par defaut + if not(hasattr(self.object,'getLabelText')): return self.object.nom,None,None + return self.object.getLabelText(),None,None + + def isValid(self): + # ---------------- + return self.object.isValid() + + def isCopiable(self): + # ---------------- + return 1 + + def getIconName(self): + # ---------------- + if self.object.isValid() : return "ast-green-los" + elif self.object.isOblig(): return "ast-red-los" + else : return "ast-yel-los" + + #PNPN ???? + #def keys(self): + # keys=self.object.mc_dict + # return keys + + def getSubList(self): + # ---------------- + """ + Reactualise la liste des items fils stockes dans self.sublist + """ + liste=self.object.mcListe + sublist=[None]*len(liste) + # suppression des items lies aux objets disparus + for item in self.sublist: + old_obj=item.getObject() + if old_obj in liste: + pos=liste.index(old_obj) + sublist[pos]=item + else: + pass # objets supprimes ignores + # ajout des items lies aux nouveaux objets + pos=0 + for obj in liste: + if sublist[pos] is None: + # nouvel objet : on cree un nouvel item + def setFunction(value, object=obj): + object.setval(value) + item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj, setFunction) + sublist[pos]=item + pos=pos+1 + + self.sublist=sublist + return self.sublist + + def addItem(self,name,pos): + objet = self.object.addEntite(name,pos) + return objet + + def suppItem(self,item) : + """ + Cette methode a pour fonction de supprimer l'item passee en argument + des fils de l'item FACT qui est son pere + - item = item du MOCLE a supprimer du MOCLE pere + - item.getObject() = MCSIMP ou MCBLOC + """ + itemobject=item.getObject() + if itemobject.isOblig() : + return (0, tr('Impossible de supprimer un mot-cle obligatoire ')) + + if self.object.suppEntite(itemobject): + message = tr("Mot-cle %s supprime")+ itemobject.nom + return (1, message) + else: + return (0,tr('Pb interne : impossible de supprimer ce mot-cle')) import Accas objet = Accas.MCFACT diff --git a/InterfaceQT4/compoformule.py b/InterfaceQT4/compoformule.py index d18af81b..d78dcbeb 100644 --- a/InterfaceQT4/compoformule.py +++ b/InterfaceQT4/compoformule.py @@ -31,14 +31,14 @@ from . import typeNode class FormuleNode(browser.JDCNode,typeNode.PopUpMenuNode): - + def getPanel(self): - from .monWidgetFormule import MonWidgetFormule - return MonWidgetFormule(self,self.editor,self.item.object) + from .monWidgetFormule import MonWidgetFormule + return MonWidgetFormule(self,self.editor,self.item.object) + - def createPopUpMenu(self): - typeNode.PopUpMenuNode.createPopUpMenu(self) + typeNode.PopUpMenuNode.createPopUpMenu(self) class FORMULETreeItem(compooper.EtapeTreeItem): @@ -49,118 +49,118 @@ class FORMULETreeItem(compooper.EtapeTreeItem): itemNode=FormuleNode def init(self): - self.setFunction = self.setValeur + self.setFunction = self.setValeur # --------------------------------------------------------------------------- -# API de FORMULE pour l'arbre +# API de FORMULE pour l'arbre # --------------------------------------------------------------------------- def getSubList(self): - """ - Retourne la liste des fils de self - On considere que FORMULE n'a pas de fils - --> modification par rapport a MACRO classique - """ - # dans EFICAS on ne souhaite pas afficher les mots-cles fils de FORMULE - # de facon traditionnelle - return [] + """ + Retourne la liste des fils de self + On considere que FORMULE n'a pas de fils + --> modification par rapport a MACRO classique + """ + # dans EFICAS on ne souhaite pas afficher les mots-cles fils de FORMULE + # de facon traditionnelle + return [] def getIconName(self): - """ - Retourne le nom de l'icone a afficher dans l'arbre - Ce nom depend de la validite de l'objet - """ - if self.object.isActif(): - if self.object.isValid(): - return "ast-green-square" + """ + Retourne le nom de l'icone a afficher dans l'arbre + Ce nom depend de la validite de l'objet + """ + if self.object.isActif(): + if self.object.isValid(): + return "ast-green-square" + else: + return "ast-red-square" else: - return "ast-red-square" - else: - return "ast-white-text" + return "ast-white-text" def getLabelText(self): - """ Retourne 3 valeurs : - - le texte a afficher dans le noeud representant l'item - - la fonte dans laquelle afficher ce texte - - la couleur du texte - """ - return self.labeltext,None,None - #if self.object.isActif(): - # None --> fonte et couleur par defaut - # return tr(self.labeltext),None,None - #else: - # return tr(self.labeltext),None,None - #return self.labeltext,fontes.standard_italique,None - + """ Retourne 3 valeurs : + - le texte a afficher dans le noeud representant l'item + - la fonte dans laquelle afficher ce texte + - la couleur du texte + """ + return self.labeltext,None,None + #if self.object.isActif(): + # None --> fonte et couleur par defaut + # return tr(self.labeltext),None,None + #else: + # return tr(self.labeltext),None,None + #return self.labeltext,fontes.standard_italique,None + # --------------------------------------------------------------------------- # Methodes permettant la modification et la lecture des attributs # du parametre = API graphique de la FORMULE pour Panel et EFICAS # --------------------------------------------------------------------------- def getNom(self): - """ - Retourne le nom de la FORMULE - """ - return self.object.getNom() + """ + Retourne le nom de la FORMULE + """ + return self.object.getNom() def getType(self): - """ - Retourne le type de la valeur retournee par la FORMULE - """ - return self.object.type_retourne + """ + Retourne le type de la valeur retournee par la FORMULE + """ + return self.object.type_retourne def getArgs(self): - """ - Retourne les arguments de la FORMULE - """ - args="" - for mot in self.object.mcListe: - if mot.nom == 'NOM_PARA': - args=mot.valeur - break - if args : - if args[0] == "(" and args[-1] ==")": - args=args[1:-1] - # transforme en tuple si ce n est pas deja le casa - try : - args=args.split(',') - except : - pass - return args + """ + Retourne les arguments de la FORMULE + """ + args="" + for mot in self.object.mcListe: + if mot.nom == 'NOM_PARA': + args=mot.valeur + break + if args : + if args[0] == "(" and args[-1] ==")": + args=args[1:-1] + # transforme en tuple si ce n est pas deja le casa + try : + args=args.split(',') + except : + pass + return args def getCorps(self): - """ - Retourne le corps de la FORMULE - """ - corps="" - for mot in self.object.mcListe: - if mot.nom == 'VALE': - corps=mot.valeur - break - return corps + """ + Retourne le corps de la FORMULE + """ + corps="" + for mot in self.object.mcListe: + if mot.nom == 'VALE': + corps=mot.valeur + break + return corps def getListeTypesAutorises(self): - """ - Retourne la liste des types autorises pour les valeurs de sortie - d'une FORMULE - """ - return self.object.l_types_autorises + """ + Retourne la liste des types autorises pour les valeurs de sortie + d'une FORMULE + """ + return self.object.l_types_autorises def saveFormule(self,new_nom,new_typ,new_arg,new_exp): - """ - Verifie si (new_nom,new_typ,new_arg,new_exp) definit bien une FORMULE - licite : - - si oui, stocke ces parametres comme nouveaux parametres de la - FORMULE courante et retourne 1 - - si non, laisse les parametres anciens de la FORMULE inchanges et - retourne 0 - """ - test,erreur = self.object.verifFormule_python(formule=(new_nom,new_typ,new_arg, - new_exp)) - if test : - # la formule est bien correcte : on sauve les nouveaux parametres - test=self.object.updateFormulePython(formule=(new_nom,new_typ,new_exp,new_arg)) - return test,erreur + """ + Verifie si (new_nom,new_typ,new_arg,new_exp) definit bien une FORMULE + licite : + - si oui, stocke ces parametres comme nouveaux parametres de la + FORMULE courante et retourne 1 + - si non, laisse les parametres anciens de la FORMULE inchanges et + retourne 0 + """ + test,erreur = self.object.verifFormule_python(formule=(new_nom,new_typ,new_arg, + new_exp)) + if test : + # la formule est bien correcte : on sauve les nouveaux parametres + test=self.object.updateFormulePython(formule=(new_nom,new_typ,new_exp,new_arg)) + return test,erreur # --------------------------------------------------------------------------- # Acces aux methodes de verification de l'objet FORM_ETAPE diff --git a/InterfaceQT4/compojdc.py b/InterfaceQT4/compojdc.py index 87121de4..70244082 100644 --- a/InterfaceQT4/compojdc.py +++ b/InterfaceQT4/compojdc.py @@ -30,7 +30,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuRacine): def getPanel(self): from .monChoixCommande import MonChoixCommande return MonChoixCommande(self,self.item, self.editor) - + def createPopUpMenu(self): typeNode.PopUpMenuRacine.createPopUpMenu(self) @@ -38,98 +38,98 @@ class Node(browser.JDCNode,typeNode.PopUpMenuRacine): def addParameters(self,apres): param=self.appendChild("PARAMETRE",pos=0) return param - + class JDCTreeItem(Objecttreeitem.ObjectTreeItem): - itemNode=Node - - def isExpandable(self): - return 1 - - def getText(self): - return " " - - def getLabelText(self): - # None --> fonte et couleur par defaut - return tr(self.object.nom),None,None - - def getJdc(self): - """ - Retourne l'objet pointe par self - """ - return self.object - - def getIconName(self): - if self.object.isValid(): - return "ast-green-square" - else: - return "ast-red-square" - - #def keys(self): - # if self.object.etapes_niveaux != []: - # return range(len(self.object.etapes_niveaux)) - # else: - # return range(len(self.object.etapes)) - - def addItem(self,name,pos): - cmd = self._object.addEntite(name,pos) - return cmd - - def suppItem(self,item) : - # item = item de l'ETAPE a supprimer du JDC - # item.getObject() = ETAPE ou COMMENTAIRE - # self.object = JDC - - itemobject=item.getObject() - if self.object.suppEntite(itemobject): - if itemobject.nature == "COMMENTAIRE" : - message = tr("Commentaire supprime") - else : - message = tr("Commande %s supprimee",itemobject.nom) - return 1,message - else: - message=tr("Pb interne : impossible de supprimer cet objet") - return 0,message - - def getSubList(self): - """ - Retourne la liste des items fils de l'item jdc. - Cette liste est conservee et mise a jour a chaque appel - """ - if self.object.etapes_niveaux != []: - liste = self.object.etapes_niveaux - else: - liste = self.object.etapes - sublist=[None]*len(liste) - # suppression des items lies aux objets disparus - for item in self.sublist: - old_obj=item.getObject() - if old_obj in liste: - pos=liste.index(old_obj) - sublist[pos]=item - else: - pass # objets supprimes ignores - # ajout des items lies aux nouveaux objets - pos=0 - for obj in liste: - if sublist[pos] is None: - # nouvel objet : on cree un nouvel item - item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj) - sublist[pos]=item - pos=pos+1 - - self.sublist=sublist - return self.sublist - - def getLNomsEtapes(self): - """ Retourne la liste des noms des etapes de self.object""" - return self.object.getLNomsEtapes() - - def getListeCmd(self): - listeCmd = self.object.niveau.definition.getListeCmd() - return listeCmd + itemNode=Node + + def isExpandable(self): + return 1 + + def getText(self): + return " " + + def getLabelText(self): + # None --> fonte et couleur par defaut + return tr(self.object.nom),None,None + + def getJdc(self): + """ + Retourne l'objet pointe par self + """ + return self.object + + def getIconName(self): + if self.object.isValid(): + return "ast-green-square" + else: + return "ast-red-square" + + #def keys(self): + # if self.object.etapes_niveaux != []: + # return range(len(self.object.etapes_niveaux)) + # else: + # return range(len(self.object.etapes)) + + def addItem(self,name,pos): + cmd = self._object.addEntite(name,pos) + return cmd + + def suppItem(self,item) : + # item = item de l'ETAPE a supprimer du JDC + # item.getObject() = ETAPE ou COMMENTAIRE + # self.object = JDC + + itemobject=item.getObject() + if self.object.suppEntite(itemobject): + if itemobject.nature == "COMMENTAIRE" : + message = tr("Commentaire supprime") + else : + message = tr("Commande %s supprimee",itemobject.nom) + return 1,message + else: + message=tr("Pb interne : impossible de supprimer cet objet") + return 0,message + + def getSubList(self): + """ + Retourne la liste des items fils de l'item jdc. + Cette liste est conservee et mise a jour a chaque appel + """ + if self.object.etapes_niveaux != []: + liste = self.object.etapes_niveaux + else: + liste = self.object.etapes + sublist=[None]*len(liste) + # suppression des items lies aux objets disparus + for item in self.sublist: + old_obj=item.getObject() + if old_obj in liste: + pos=liste.index(old_obj) + sublist[pos]=item + else: + pass # objets supprimes ignores + # ajout des items lies aux nouveaux objets + pos=0 + for obj in liste: + if sublist[pos] is None: + # nouvel objet : on cree un nouvel item + item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj) + sublist[pos]=item + pos=pos+1 + + self.sublist=sublist + return self.sublist + + def getLNomsEtapes(self): + """ Retourne la liste des noms des etapes de self.object""" + return self.object.getLNomsEtapes() + + def getListeCmd(self): + listeCmd = self.object.niveau.definition.getListeCmd() + return listeCmd import Accas treeitem =JDCTreeItem -objet = Accas.JDC +objet = Accas.JDC diff --git a/InterfaceQT4/compomacro.py b/InterfaceQT4/compomacro.py index 9a1fcbb2..4f610b4f 100644 --- a/InterfaceQT4/compomacro.py +++ b/InterfaceQT4/compomacro.py @@ -32,23 +32,23 @@ from InterfaceQT4 import browser from InterfaceQT4 import typeNode -class MACRONode(browser.JDCNode,typeNode.PopUpMenuNode): - +class MACRONode(browser.JDCNode,typeNode.PopUpMenuNode): + def getPanel(self): - from .monWidgetCommande import MonWidgetCommande - return MonWidgetCommande (self,self.editor ,self.item.object) + from .monWidgetCommande import MonWidgetCommande + return MonWidgetCommande (self,self.editor ,self.item.object) def createPopUpMenu(self): - typeNode.PopUpMenuNode.createPopUpMenu(self) + typeNode.PopUpMenuNode.createPopUpMenu(self) # def view3D(self) : # from Editeur import TroisDPal # troisD=TroisDPal.TroisDPilote(self.item,self.editor.appliEficas) # troisD.envoievisu() - - + + class MACROTreeItem(compooper.EtapeTreeItem): # """ Cette classe herite d'une grande partie des comportements # de la classe compooper.EtapeTreeItem @@ -61,97 +61,97 @@ class MACROTreeItem(compooper.EtapeTreeItem): class INCLUDETreeItemBase(MACROTreeItem): - def __init__(self,appliEficas, labeltext, object, setFunction): - MACROTreeItem.__init__(self,appliEficas, labeltext, object, setFunction) + def __init__(self,appliEficas, labeltext, object, setFunction): + MACROTreeItem.__init__(self,appliEficas, labeltext, object, setFunction) def isCopiable(self): - return 0 + return 0 -class INCLUDENode(browser.JDCNode,typeNode.PopUpMenuNode): +class INCLUDENode(browser.JDCNode,typeNode.PopUpMenuNode): def getPanel(self): - from .monWidgetCommande import MonWidgetCommande - return MonWidgetCommande (self,self.editor ,self.item.object) + from .monWidgetCommande import MonWidgetCommande + return MonWidgetCommande (self,self.editor ,self.item.object) def createPopUpMenu(self): - typeNode.PopUpMenuNode.createPopUpMenu(self) - + typeNode.PopUpMenuNode.createPopUpMenu(self) + def makeEdit(self): #,appliEficas,node if self.item.object.text_converted == 0: - # Le texte du fichier inclus n'a pas pu etre converti par le module convert - msg=tr("Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n") - msg=msg+self.item.object.text_error - return - + # Le texte du fichier inclus n'a pas pu etre converti par le module convert + msg=tr("Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n") + msg=msg+self.item.object.text_error + return + if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None: - #L'include n'est pas initialise - self.item.object.buildInclude(None,"") - + #L'include n'est pas initialise + self.item.object.buildInclude(None,"") + # On cree un nouvel onglet dans le bureau self.editor.vm.displayJDC( self.item.object.jdc_aux , self.item.object.jdc_aux.nom ) - + class INCLUDETreeItem(INCLUDETreeItemBase): itemNode=INCLUDENode - + # ------------------------------------ # Classes necessaires a POURSUITE # ------------------------------------ - -class POURSUITENode(browser.JDCNode, typeNode.PopUpMenuNode): + +class POURSUITENode(browser.JDCNode, typeNode.PopUpMenuNode): def getPanel(self): - from .monWidgetCommande import MonWidgetCommande - return MonWidgetCommande (self,self.editor ,self.item.object) + from .monWidgetCommande import MonWidgetCommande + return MonWidgetCommande (self,self.editor ,self.item.object) def createPopUpMenu(self): - typeNode.PopUpMenuNode.createPopUpMenu(self) + typeNode.PopUpMenuNode.createPopUpMenu(self) def makeEdit(self): #,appliEficas,node if self.item.object.text_converted == 0: - msg=tr("Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n") - msg=msg+self.item.object.text_error - return - + msg=tr("Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n") + msg=msg+self.item.object.text_error + return + if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None: text="""DEBUT() FIN()""" self.object.buildPoursuite(None,text) - + # On cree un nouvel onglet dans le bureau self.editor.vm.displayJDC( self.item.object.jdc_aux , self.item.object.jdc_aux.nom) - + class POURSUITETreeItem(INCLUDETreeItemBase): - itemNode=POURSUITENode + itemNode=POURSUITENode # ---------------------------------------- # Classes necessaires a INCLUDE MATERIAU # ---------------------------------------- - + class MATERIAUNode(MACRONode): def getPanel(self): - from .monWidgetCommande import MonWidgetCommande - return MonWidgetCommande (self,self.editor ,self.item.object) + from .monWidgetCommande import MonWidgetCommande + return MonWidgetCommande (self,self.editor ,self.item.object) def createPopUpMenu(self): - typeNode.PopUpMenuNode.createPopUpMenu(self) + typeNode.PopUpMenuNode.createPopUpMenu(self) def makeView(self) : - if hasattr(self.item.object,'fichier_ini') and self.item.object.fichier_ini==None: - QMessageBox.information( self,tr("Include vide"),tr("L'include doit etre correctement initialise pour etre visualise")) - return - f = open(self.item.object.fichier_ini, "rb") - texte = f.read() - f.close() - from desVisu import DVisu - monVisuDialg=DVisu(parent=self.editor.appliEficas,fl=0) - monVisuDialg.TB.setText(texte) - monVisuDialg.show() + if hasattr(self.item.object,'fichier_ini') and self.item.object.fichier_ini==None: + QMessageBox.information( self,tr("Include vide"),tr("L'include doit etre correctement initialise pour etre visualise")) + return + f = open(self.item.object.fichier_ini, "rb") + texte = f.read() + f.close() + from desVisu import DVisu + monVisuDialg=DVisu(parent=self.editor.appliEficas,fl=0) + monVisuDialg.TB.setText(texte) + monVisuDialg.show() class INCLUDE_MATERIAUTreeItem(INCLUDETreeItemBase): @@ -160,22 +160,20 @@ class INCLUDE_MATERIAUTreeItem(INCLUDETreeItemBase): # ------------------------------------ # TreeItem # ------------------------------------ - + def treeitem(appliEficas, labeltext, object, setFunction=None): - """ Factory qui retourne l'item adapte au type de macro : - INCLUDE, POURSUITE, MACRO - """ - if object.nom == "INCLUDE_MATERIAU": - return INCLUDE_MATERIAUTreeItem(appliEficas, labeltext, object, setFunction) - elif object.nom == "INCLUDE" or object.nom== "DICTDATA": - return INCLUDETreeItem(appliEficas, labeltext, object, setFunction) - elif object.nom == "POURSUITE": - return POURSUITETreeItem(appliEficas, labeltext, object, setFunction) - else: - return MACROTreeItem(appliEficas, labeltext, object, setFunction) + """ Factory qui retourne l'item adapte au type de macro : + INCLUDE, POURSUITE, MACRO + """ + if object.nom == "INCLUDE_MATERIAU": + return INCLUDE_MATERIAUTreeItem(appliEficas, labeltext, object, setFunction) + elif object.nom == "INCLUDE" or object.nom== "DICTDATA": + return INCLUDETreeItem(appliEficas, labeltext, object, setFunction) + elif object.nom == "POURSUITE": + return POURSUITETreeItem(appliEficas, labeltext, object, setFunction) + else: + return MACROTreeItem(appliEficas, labeltext, object, setFunction) import Accas objet=Accas.MACRO_ETAPE - - diff --git a/InterfaceQT4/compomclist.py b/InterfaceQT4/compomclist.py index c37efb07..d4bbabae 100644 --- a/InterfaceQT4/compomclist.py +++ b/InterfaceQT4/compomclist.py @@ -45,20 +45,20 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): else : self.niveau=1 # attention si l objet est une mclist on utilise bloc if not (monObjet.isMCList()) : - if hasattr(self,'plie') and self.plie==True : - from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie - widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande) - elif self.editor.maConfiguration.afficheFirstPlies and self.firstAffiche: - self.firstAffiche = False - self.setPlie() - from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie - widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande) - else: - from InterfaceQT4.monWidgetFact import MonWidgetFact - widget=MonWidgetFact(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande) + if hasattr(self,'plie') and self.plie==True : + from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie + widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande) + elif self.editor.maConfiguration.afficheFirstPlies and self.firstAffiche: + self.firstAffiche = False + self.setPlie() + from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie + widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande) + else: + from InterfaceQT4.monWidgetFact import MonWidgetFact + widget=MonWidgetFact(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande) else : - from InterfaceQT4.monWidgetBloc import MonWidgetBloc - widget=MonWidgetBloc(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande) + from InterfaceQT4.monWidgetBloc import MonWidgetBloc + widget=MonWidgetBloc(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande) return widget @@ -80,7 +80,7 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem): Elle adapte ces objets pour leur permettre d'etre integres en tant que noeuds dans un arbre graphique (voir treewidget.py et ObjectTreeItem.py). Cette classe delegue les appels de methode et les acces - aux attributs a l'objet du noyau soit manuellement soit + aux attributs a l'objet du noyau soit manuellement soit automatiquement (voir classe Delegate et attribut object). """ itemNode=Node @@ -92,9 +92,9 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem): def updateDelegate(self): if len(self._object) > 1: - self.setDelegate(self._object) + self.setDelegate(self._object) else: - self.setDelegate(self._object.data[0]) + self.setDelegate(self._object.data[0]) def panel(self,jdcdisplay,pane,node): """ Retourne une instance de l'objet panneau associe a l'item (self) @@ -103,49 +103,49 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem): Si la liste est plus longue on utilise le panneau MCLISTPanel. """ if len(self._object) > 1: - return MCLISTPanel(jdcdisplay,pane,node) + return MCLISTPanel(jdcdisplay,pane,node) elif isinstance(self._object.data[0],ErrorObj): - return compoerror.ERRORPanel(jdcdisplay,pane,node) + return compoerror.ERRORPanel(jdcdisplay,pane,node) else: - return compofact.FACTPanel(jdcdisplay,pane,node) + return compofact.FACTPanel(jdcdisplay,pane,node) def isExpandable(self): if len(self._object) > 1: - return Objecttreeitem.SequenceTreeItem.isExpandable(self) + return Objecttreeitem.SequenceTreeItem.isExpandable(self) else: - return compofact.FACTTreeItem.isExpandable(self) + return compofact.FACTTreeItem.isExpandable(self) def getSubList(self): self.updateDelegate() if len(self._object) <= 1: - self._object.data[0].alt_parent=self._object - return compofact.FACTTreeItem.getSubList(self) + self._object.data[0].alt_parent=self._object + return compofact.FACTTreeItem.getSubList(self) liste=self._object.data sublist=[None]*len(liste) # suppression des items lies aux objets disparus for item in self.sublist: - old_obj=item.getObject() - if old_obj in liste: - pos=liste.index(old_obj) - sublist[pos]=item - else: - pass # objets supprimes ignores + old_obj=item.getObject() + if old_obj in liste: + pos=liste.index(old_obj) + sublist[pos]=item + else: + pass # objets supprimes ignores # ajout des items lies aux nouveaux objets pos=0 for obj in liste: - if sublist[pos] is None: - # nouvel objet : on cree un nouvel item - def setFunction(value, object=obj): - object=value - item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj, setFunction) - sublist[pos]=item - #Attention : on ajoute une information supplementaire pour l'actualisation de - # la validite. L'attribut parent d'un MCFACT pointe sur le parent de la MCLISTE - # et pas sur la MCLISTE elle meme ce qui rompt la chaine de remontee des - # informations de validite. alt_parent permet de remedier a ce defaut. - obj.alt_parent=self._object - pos=pos+1 + if sublist[pos] is None: + # nouvel objet : on cree un nouvel item + def setFunction(value, object=obj): + object=value + item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj, setFunction) + sublist[pos]=item + #Attention : on ajoute une information supplementaire pour l'actualisation de + # la validite. L'attribut parent d'un MCFACT pointe sur le parent de la MCLISTE + # et pas sur la MCLISTE elle meme ce qui rompt la chaine de remontee des + # informations de validite. alt_parent permet de remedier a ce defaut. + obj.alt_parent=self._object + pos=pos+1 self.sublist=sublist return self.sublist @@ -160,13 +160,13 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem): def getDocu(self): """ Retourne la clef de doc de l'objet pointe par self """ - return self.object.getDocu() + return self.object.getDocu() def isCopiable(self): if len(self._object) > 1: - return Objecttreeitem.SequenceTreeItem.isCopiable(self) + return Objecttreeitem.SequenceTreeItem.isCopiable(self) else: - return compofact.FACTTreeItem.isCopiable(self) + return compofact.FACTTreeItem.isCopiable(self) def isMCFact(self): """ @@ -179,40 +179,40 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem): Retourne 1 si l'objet pointe par self est une MCList, 0 sinon """ return len(self._object) > 1 - + def getCopieObjet(self): return self._object.data[0].copy() def addItem(self,obj,pos): #print "compomclist.addItem",obj,pos if len(self._object) <= 1: - return compofact.FACTTreeItem.addItem(self,obj,pos) + return compofact.FACTTreeItem.addItem(self,obj,pos) o= self.object.addEntite(obj,pos) return o def suppItem(self,item): """ - Retire un objet MCFACT de la MCList (self.object) + Retire un objet MCFACT de la MCList (self.object) """ #print "compomclist.suppItem",item obj=item.getObject() if len(self._object) <= 1: - return compofact.FACTTreeItem.suppItem(self,item) + return compofact.FACTTreeItem.suppItem(self,item) if self.object.suppEntite(obj): - if len(self._object) == 1: self.updateDelegate() - message = "Mot-clef " + obj.nom + " supprime" - return (1,message) + if len(self._object) == 1: self.updateDelegate() + message = "Mot-clef " + obj.nom + " supprime" + return (1,message) else: - return (0,tr('Impossible de supprimer ce mot-clef')) + return (0,tr('Impossible de supprimer ce mot-clef')) + - import Accas -objet = Accas.MCList +objet = Accas.MCList def treeitem(appliEficas,labeltext,object,setFunction): - """ Factory qui produit un objet treeitem adapte a un objet - Accas.MCList (attribut objet de ce module) - """ - return MCListTreeItem(appliEficas,labeltext,object,setFunction) + """ Factory qui produit un objet treeitem adapte a un objet + Accas.MCList (attribut objet de ce module) + """ + return MCListTreeItem(appliEficas,labeltext,object,setFunction) diff --git a/InterfaceQT4/compooper.py b/InterfaceQT4/compooper.py index 56e24196..efebbd9e 100644 --- a/InterfaceQT4/compooper.py +++ b/InterfaceQT4/compooper.py @@ -19,7 +19,7 @@ # from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import os @@ -48,16 +48,16 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode): self.editor.initModif() test,mess = self.item.nommeSd(nom) if (test== 0): - self.editor.afficheInfos(mess,'red') - old=self.item.getText() - self.monWidgetNom.setText(old) + self.editor.afficheInfos(mess,'red') + old=self.item.getText() + self.monWidgetNom.setText(old) else : - self.editor.afficheCommentaire(tr("Nommage du concept effectue")) - self.onValid() - try : - self.fenetre.LENom.setText(nom) - except : - pass + self.editor.afficheCommentaire(tr("Nommage du concept effectue")) + self.onValid() + try : + self.fenetre.LENom.setText(nom) + except : + pass def getPanel(self): @@ -74,208 +74,207 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode): class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): - """ La classe EtapeTreeItem est un adaptateur des objets ETAPE du noyau - Accas. Elle leur permet d'etre affichés comme des noeuds - d'un arbre graphique. - Cette classe a entre autres deux attributs importants : - - _object qui est un pointeur vers l'objet du noyau - - object qui pointe vers l'objet auquel sont délégués les - appels de méthode et les acces aux attributs - Dans le cas d'une ETAPE, _object et object pointent vers le - meme objet. - """ - itemNode=Node - - def isExpandable(self): - return 1 - - def getIconName(self): - """ - Retourne le nom de l'icone a afficher dans l'arbre - Ce nom depend de la validite de l'objet - """ - if not self.object.isActif(): - return "ast-white-square" - elif self.object.isValid(): - return "ast-green-square" - else: - valid=self.validChild() - valid= valid * self.validRegles("non") - if self.reste_val != {} : valid=0 - if valid==0 : - return "ast-red-square" - else : - try : - # on traite ici le cas d include materiau - # print self.object.definition.nom - if self.object.fichier_ini != self.object.nom_mater : - return "ast-red-square" - except : - pass - return "ast-yellow-square" - - def getLabelText(self): - """ Retourne 3 valeurs : - - le texte a afficher dans le noeud représentant l'item - - la fonte dans laquelle afficher ce texte - - la couleur du texte - """ - return self.labeltext,None,None - #if self.object.isActif(): + """ La classe EtapeTreeItem est un adaptateur des objets ETAPE du noyau + Accas. Elle leur permet d'etre affichés comme des noeuds + d'un arbre graphique. + Cette classe a entre autres deux attributs importants : + - _object qui est un pointeur vers l'objet du noyau + - object qui pointe vers l'objet auquel sont délégués les + appels de méthode et les acces aux attributs + Dans le cas d'une ETAPE, _object et object pointent vers le + meme objet. + """ + itemNode=Node + + def isExpandable(self): + return 1 + + def getIconName(self): + """ + Retourne le nom de l'icone a afficher dans l'arbre + Ce nom depend de la validite de l'objet + """ + if not self.object.isActif(): + return "ast-white-square" + elif self.object.isValid(): + return "ast-green-square" + else: + valid=self.validChild() + valid= valid * self.validRegles("non") + if self.reste_val != {} : valid=0 + if valid==0 : + return "ast-red-square" + else : + try : + # on traite ici le cas d include materiau + # print self.object.definition.nom + if self.object.fichier_ini != self.object.nom_mater : + return "ast-red-square" + except : + pass + return "ast-yellow-square" + + def getLabelText(self): + """ Retourne 3 valeurs : + - le texte a afficher dans le noeud représentant l'item + - la fonte dans laquelle afficher ce texte + - la couleur du texte + """ + return self.labeltext,None,None + #if self.object.isActif(): # None --> fonte et couleur par défaut - # return self.labeltext,None,None - #else: - # return self.labeltext, None, None #CS_pbruno todo - - #def get_objet(self,name) : - # for v in self.object.mcListe: - # if v.nom == name : return v - # return None - - # def getType_sd_prod(self): - # """ - # Retourne le nom du type du concept résultat de l'étape - # """ - # sd_prod=self.object.getType_produit() - # if sd_prod: - # return sd_prod.__name__ - # else: - # return "" - - def addItem(self,name,pos): - mcent = self._object.addEntite(name,pos) - return mcent - - - def suppItem(self,item) : - # item : item du MOCLE de l'ETAPE a supprimer - # item.getObject() = MCSIMP, MCFACT, MCBLOC ou MCList - itemobject=item.getObject() - if itemobject.isOblig() : - return (0,tr('Impossible de supprimer un mot-clef obligatoire ')) - if self.object.suppEntite(itemobject): - message = tr("Mot-clef %s supprime " , itemobject.nom) - return (1,message) - else : - return (0,tr('Pb interne : impossible de supprimer ce mot-clef')) - - def getText(self): - try: - return self.object.getSdname() - except: - return '' - - # PNPN ???? - #def keys(self): - # keys=self.object.mc_dict - # return keys - - def getSubList(self): - """ - Reactualise la liste des items fils stockes dans self.sublist - """ - if self.isActif(): - liste=self.object.mcListe - else: - liste=[] - - sublist=[None]*len(liste) - # suppression des items lies aux objets disparus - for item in self.sublist: - old_obj=item.getObject() - if old_obj in liste: - pos=liste.index(old_obj) - sublist[pos]=item - else: - pass # objets supprimes ignores - - # ajout des items lies aux nouveaux objets - pos=0 - for obj in liste: - if sublist[pos] is None: - # nouvel objet : on cree un nouvel item - def setFunction(value, object=obj): - object.setval(value) - item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj, setFunction) - sublist[pos]=item - pos=pos+1 - - self.sublist=sublist - return self.sublist - - def isValid(self): - return self.object.isValid() - - def isCopiable(self): - """ - Retourne 1 si l'objet est copiable, 0 sinon - """ - return 1 - - def updateDeplace(self,item): - if item.sd and item.sd.nom: - self.object.sd=item.sd - self.object.sd.nom=item.sd.nom - - def update(self,item): - if item.sd and item.sd.nom: - self.nommeSd(item.sd.nom) - - def nommeSd(self,nom): - """ Lance la méthode de nommage de la SD """ - oldnom="" - if self.object.sd != None : - oldnom=self.object.sd.nom - test,mess= self.object.nommeSd(nom) - if test:self.object.parent.resetContext() - if (test and oldnom in self.appliEficas.dict_reels ): - self.appliEficas.dict_reels[nom]=self.appliEficas.dict_reels[oldnom] - return test,mess - - def isReentrant(self): - return self.object.isReentrant() - - def getNomsSdOperReentrant(self): - return self.object.getNomsSdOperReentrant() - - def getObjetCommentarise(self): - """ - Cette méthode retourne un objet commentarisé - représentatif de self.object - """ - # Format de fichier utilisé - format=self.appliEficas.formatFichierIn - return self.object.getObjetCommentarise(format) - - def getObjetCommentarise_BAK(self): - """ - Cette méthode retourne un objet commentarisé - représentatif de self.object - """ - import generator,Accas - # Format de fichier utilisé - format=self.appliEficas.format_fichier - g=generator.plugins[format]() - texte_commande = g.gener(self.object,format='beautifie') - # Il faut enlever la premiere ligne vide de texte_commande que - # rajoute le generator - rebut,texte_commande = texte_commande.split('\n',1) - # on construit l'objet COMMANDE_COMM repésentatif de self mais non - # enregistré dans le jdc - commande_comment = Accas.COMMANDE_COMM(texte=texte_commande,reg='non', - parent=self.object.parent) - commande_comment.niveau = self.object.niveau - commande_comment.jdc = commande_comment.parent = self.object.jdc - - pos=self.object.parent.etapes.index(self.object) - parent=self.object.parent - self.object.parent.suppEntite(self.object) - parent.addEntite(commande_comment,pos) - - return commande_comment + # return self.labeltext,None,None + #else: + # return self.labeltext, None, None #CS_pbruno todo + + #def get_objet(self,name) : + # for v in self.object.mcListe: + # if v.nom == name : return v + # return None + + # def getType_sd_prod(self): + # """ + # Retourne le nom du type du concept résultat de l'étape + # """ + # sd_prod=self.object.getType_produit() + # if sd_prod: + # return sd_prod.__name__ + # else: + # return "" + + def addItem(self,name,pos): + mcent = self._object.addEntite(name,pos) + return mcent + + + def suppItem(self,item) : + # item : item du MOCLE de l'ETAPE a supprimer + # item.getObject() = MCSIMP, MCFACT, MCBLOC ou MCList + itemobject=item.getObject() + if itemobject.isOblig() : + return (0,tr('Impossible de supprimer un mot-clef obligatoire ')) + if self.object.suppEntite(itemobject): + message = tr("Mot-clef %s supprime " , itemobject.nom) + return (1,message) + else : + return (0,tr('Pb interne : impossible de supprimer ce mot-clef')) + + def getText(self): + try: + return self.object.getSdname() + except: + return '' + + # PNPN ???? + #def keys(self): + # keys=self.object.mc_dict + # return keys + + def getSubList(self): + """ + Reactualise la liste des items fils stockes dans self.sublist + """ + if self.isActif(): + liste=self.object.mcListe + else: + liste=[] + + sublist=[None]*len(liste) + # suppression des items lies aux objets disparus + for item in self.sublist: + old_obj=item.getObject() + if old_obj in liste: + pos=liste.index(old_obj) + sublist[pos]=item + else: + pass # objets supprimes ignores + + # ajout des items lies aux nouveaux objets + pos=0 + for obj in liste: + if sublist[pos] is None: + # nouvel objet : on cree un nouvel item + def setFunction(value, object=obj): + object.setval(value) + item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj, setFunction) + sublist[pos]=item + pos=pos+1 + + self.sublist=sublist + return self.sublist + + def isValid(self): + return self.object.isValid() + + def isCopiable(self): + """ + Retourne 1 si l'objet est copiable, 0 sinon + """ + return 1 + + def updateDeplace(self,item): + if item.sd and item.sd.nom: + self.object.sd=item.sd + self.object.sd.nom=item.sd.nom + + def update(self,item): + if item.sd and item.sd.nom: + self.nommeSd(item.sd.nom) + + def nommeSd(self,nom): + """ Lance la méthode de nommage de la SD """ + oldnom="" + if self.object.sd != None : + oldnom=self.object.sd.nom + test,mess= self.object.nommeSd(nom) + if test:self.object.parent.resetContext() + if (test and oldnom in self.appliEficas.dict_reels ): + self.appliEficas.dict_reels[nom]=self.appliEficas.dict_reels[oldnom] + return test,mess + + def isReentrant(self): + return self.object.isReentrant() + + def getNomsSdOperReentrant(self): + return self.object.getNomsSdOperReentrant() + + def getObjetCommentarise(self): + """ + Cette méthode retourne un objet commentarisé + représentatif de self.object + """ + # Format de fichier utilisé + format=self.appliEficas.formatFichierIn + return self.object.getObjetCommentarise(format) + + def getObjetCommentarise_BAK(self): + """ + Cette méthode retourne un objet commentarisé + représentatif de self.object + """ + import generator,Accas + # Format de fichier utilisé + format=self.appliEficas.format_fichier + g=generator.plugins[format]() + texte_commande = g.gener(self.object,format='beautifie') + # Il faut enlever la premiere ligne vide de texte_commande que + # rajoute le generator + rebut,texte_commande = texte_commande.split('\n',1) + # on construit l'objet COMMANDE_COMM repésentatif de self mais non + # enregistré dans le jdc + commande_comment = Accas.COMMANDE_COMM(texte=texte_commande,reg='non', + parent=self.object.parent) + commande_comment.niveau = self.object.niveau + commande_comment.jdc = commande_comment.parent = self.object.jdc + + pos=self.object.parent.etapes.index(self.object) + parent=self.object.parent + self.object.parent.suppEntite(self.object) + parent.addEntite(commande_comment,pos) + + return commande_comment import Accas treeitem = EtapeTreeItem -objet = Accas.ETAPE - +objet = Accas.ETAPE diff --git a/InterfaceQT4/compoparam.py b/InterfaceQT4/compoparam.py index 74a44238..4260d050 100644 --- a/InterfaceQT4/compoparam.py +++ b/InterfaceQT4/compoparam.py @@ -24,7 +24,7 @@ """ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass @@ -38,10 +38,10 @@ from . import browser from . import typeNode -class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel): +class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel): def getPanel(self): - """ - """ + """ + """ from .monWidgetParam import MonWidgetParam return MonWidgetParam(self, self.editor,self.item.object) @@ -61,26 +61,26 @@ class PARAMTreeItem(Objecttreeitem.ObjectTreeItem): """ itemNode=Node - def init(self): - self.setFunction = self.setValeur + def init(self): + self.setFunction = self.setValeur # --------------------------------------------------------------------------- -# API du PARAMETRE pour l'arbre +# API du PARAMETRE pour l'arbre # --------------------------------------------------------------------------- def getIconName(self): - """ - Retourne le nom de l'icone associee au noeud qui porte self, - dependant de la validite de l'objet - NB : un PARAMETRE est toujours valide ... - """ - if self.isActif(): - if self.isValid(): - return "ast-green-square" - else: - return "ast-red-square" - else: - return "ast-white-square" + """ + Retourne le nom de l'icone associee au noeud qui porte self, + dependant de la validite de l'objet + NB : un PARAMETRE est toujours valide ... + """ + if self.isActif(): + if self.isValid(): + return "ast-green-square" + else: + return "ast-red-square" + else: + return "ast-white-square" def getLabelText(self): """ Retourne 3 valeurs : @@ -88,68 +88,68 @@ class PARAMTreeItem(Objecttreeitem.ObjectTreeItem): - la fonte dans laquelle afficher ce texte - la couleur du texte """ - return tr('PARAMETRE'),None,None + return tr('PARAMETRE'),None,None def getText(self): - """ - Retourne le texte a afficher apres le nom de la commande (ici apres 'parametre') - Ce texte est tronque a 25 caracteres - """ - texte=self.object.nom+"="+str(self.object.valeur) - if type(self.object.valeur) == list : - texte=self.nom+' = [' - for l in self.object.valeur : - texte=texte+str(l) +"," - texte=texte[0:-1]+']' - texte = texte.split('\n')[0] - if len(texte) < 25 : - return texte - else : - return texte[0:24]+'...' + """ + Retourne le texte a afficher apres le nom de la commande (ici apres 'parametre') + Ce texte est tronque a 25 caracteres + """ + texte=self.object.nom+"="+str(self.object.valeur) + if type(self.object.valeur) == list : + texte=self.nom+' = [' + for l in self.object.valeur : + texte=texte+str(l) +"," + texte=texte[0:-1]+']' + texte = texte.split('\n')[0] + if len(texte) < 25 : + return texte + else : + return texte[0:24]+'...' def getSubList(self): - """ - Retourne la liste des fils de self - """ - return [] - + """ + Retourne la liste des fils de self + """ + return [] + # --------------------------------------------------------------------------- # Methodes permettant la modification et la lecture des attributs # du parametre = API graphique du PARAMETRE pour Panel et EFICAS # --------------------------------------------------------------------------- def getValeur(self): - """ - Retourne la valeur de l'objet PARAMETRE cad son texte - """ - if self.object.valeur is None: return '' - else: return self.object.valeur + """ + Retourne la valeur de l'objet PARAMETRE cad son texte + """ + if self.object.valeur is None: return '' + else: return self.object.valeur def getNom(self): - """ - Retourne le nom du parametre - """ - return self.object.nom + """ + Retourne le nom du parametre + """ + return self.object.nom def setValeur(self,new_valeur): - """ - Affecte valeur a l'objet PARAMETRE - """ - self.object.setValeur(new_valeur) + """ + Affecte valeur a l'objet PARAMETRE + """ + self.object.setValeur(new_valeur) def setNom(self,new_nom): - """ - Renomme le parametre - """ - self.object.setNom(new_nom) - #self.object.setAttribut('nom',new_nom) + """ + Renomme le parametre + """ + self.object.setNom(new_nom) + #self.object.setAttribut('nom',new_nom) def getFr(self): - """ - Retourne le fr associe au parametre, cad la bulle d'aide pour EFICAS - """ - return tr("Definition d'un parametre") - + """ + Retourne le fr associe au parametre, cad la bulle d'aide pour EFICAS + """ + return tr("Definition d'un parametre") + import Extensions.parametre treeitem =PARAMTreeItem objet = Extensions.parametre.PARAMETRE diff --git a/InterfaceQT4/compoproc.py b/InterfaceQT4/compoproc.py index dcbea7f0..4fd30296 100644 --- a/InterfaceQT4/compoproc.py +++ b/InterfaceQT4/compoproc.py @@ -37,8 +37,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNode): class ProcEtapeTreeItem(compooper.EtapeTreeItem): itemNode=Node - + import Accas treeitem = ProcEtapeTreeItem -objet = Accas.PROC_ETAPE - +objet = Accas.PROC_ETAPE diff --git a/InterfaceQT4/composimp.py b/InterfaceQT4/composimp.py index d7b1f019..9b211a89 100644 --- a/InterfaceQT4/composimp.py +++ b/InterfaceQT4/composimp.py @@ -21,7 +21,7 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str + from builtins import str except : pass import types,os @@ -37,8 +37,8 @@ from Noyau.N_CR import justifyText from Accas import SalomeEntry from Accas import UserASSD from Accas import UserASSDMultiple - -class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): + +class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): def createPopUpMenu(self): typeNode.PopUpMenuNodeMinimal.createPopUpMenu(self) @@ -50,779 +50,778 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): monObjet=self.item.object monNom=self.item.nom - # label informatif + # label informatif if monObjet.isInformation(): - from InterfaceQT4.monWidgetInfo import MonWidgetInfo - widget=MonWidgetInfo(self,maDefinition,monNom,monObjet,parentQt,maCommande) - self.widget=widget - return widget + from InterfaceQT4.monWidgetInfo import MonWidgetInfo + widget=MonWidgetInfo(self,maDefinition,monNom,monObjet,parentQt,maCommande) + self.widget=widget + return widget - # Attention l ordre des if est important - # Attention il faut gerer les blocs et les facteurs - # a gerer comme dans composimp - # Gestion des matrices + # Attention l ordre des if est important + # Attention il faut gerer les blocs et les facteurs + # a gerer comme dans composimp + # Gestion des matrices if self.item.waitMatrice (): - from InterfaceQT4.monWidgetMatrice import MonWidgetMatrice - widget=MonWidgetMatrice(self,maDefinition,monNom,monObjet,parentQt,maCommande) - self.widget=widget - return widget + from InterfaceQT4.monWidgetMatrice import MonWidgetMatrice + widget=MonWidgetMatrice(self,maDefinition,monNom,monObjet,parentQt,maCommande) + self.widget=widget + return widget - #print "____________________________", monNom, self.item.waitCo() - #print "____________________________", monNom, self.item.waitAssd() + #print "____________________________", monNom, self.item.waitCo() + #print "____________________________", monNom, self.item.waitAssd() # Gestion d'une seule valeur (eventuellement un tuple ou un complexe) if maDefinition.into != [] and maDefinition.into != None: - if type(maDefinition.into) ==types.FunctionType : monInto=maDefinition.into() + if type(maDefinition.into) ==types.FunctionType : monInto=maDefinition.into() else : monInto = maDefinition.into if maDefinition.max == 1 : # A verifier - if maDefinition.intoSug != [] and maDefinition.intoSug != None: - from InterfaceQT4.monWidgetCBIntoSug import MonWidgetCBIntoSug - widget=MonWidgetCBIntoSug(self,maDefinition,monNom,monObjet,parentQt,maCommande) - elif maDefinition.into != [] and maDefinition.into != None: - if maDefinition.fenetreIhm=='menuDeroulant' : - from InterfaceQT4.monWidgetCB import MonWidgetCB - widget=MonWidgetCB(self,maDefinition,monNom,monObjet,parentQt,maCommande) - elif len(monInto) < 4 : - from InterfaceQT4.monWidgetRadioButton import MonWidgetRadioButton - widget=MonWidgetRadioButton(self,maDefinition,monNom,monObjet,parentQt,maCommande) - elif len(monInto) < 7 : - from InterfaceQT4.monWidget4a6RadioButton import MonWidget4a6RadioButton - widget=MonWidget4a6RadioButton(self,maDefinition,monNom,monObjet,parentQt,maCommande) - else : - from InterfaceQT4.monWidgetCB import MonWidgetCB - widget=MonWidgetCB(self,maDefinition,monNom,monObjet,parentQt,maCommande) - - elif self.item.waitBool() : - from InterfaceQT4.monWidgetSimpBool import MonWidgetSimpBool - widget=MonWidgetSimpBool(self,maDefinition,monNom,monObjet,parentQt,maCommande) - elif self.item.waitFichier(): - from InterfaceQT4.monWidgetSimpFichier import MonWidgetSimpFichier - widget=MonWidgetSimpFichier(self,maDefinition,monNom,monObjet,parentQt,maCommande) - - # PNPNPN - a faire - elif self.item.waitDate(): - from InterfaceQT4.monWidgetDate import MonWidgetDate - widget=MonWidgetDate(self,maDefinition,monNom,monObjet,parentQt,maCommande) - elif self.item.waitHeure(): - from InterfaceQT4.monWidgetHeure import MonWidgetHeure - widget=MonWidgetHeure(self,maDefinition,monNom,monObjet,parentQt,maCommande) - - elif self.item.waitTuple() : - num=self.item.object.definition.type[0].ntuple - nomDeLaClasse = 'MonWidgetSimpTuple'+str(num) - nomDuFichier = 'InterfaceQT4.monWidgetSimpTupleN' - try : - #if 1 : - _temp = __import__(nomDuFichier, globals(), locals(), [nomDeLaClasse], 0) - #print (_temp) - MonWidgetSimpTuple = getattr(_temp,nomDeLaClasse) - except : - print ("Pas de Tuple de longueur : ", num) - # print ("Prevenir la maintenance ") - widget=MonWidgetSimpTuple(self,maDefinition,monNom,monObjet,parentQt,maCommande) - - elif self.item.waitComplex(): - from InterfaceQT4.monWidgetSimpComplexe import MonWidgetSimpComplexe - widget=MonWidgetSimpComplexe(self,maDefinition,monNom,monObjet,parentQt,maCommande) - - elif self.item.waitCo(): - if len(self.item.getSdAvantDuBonType()) == 0 : - from InterfaceQT4.monWidgetUniqueSDCO import MonWidgetUniqueSDCO - widget=MonWidgetUniqueSDCO(self,maDefinition,monNom,monObjet,parentQt,maCommande) - else : - from InterfaceQT4.monWidgetSDCOInto import MonWidgetSDCOInto - widget=MonWidgetSDCOInto(self,maDefinition,monNom,monObjet,parentQt,maCommande) - elif self.item.waitAssd(): - - # PN - pour ne pas appeller trop souvent self.item.getSdAvantDuBonType() - if not (self.item.waitUserAssdOrAssdMultipleEnCreation()) : maListe=self.item.getSdAvantDuBonType() - if self.item.waitUserAssdOrAssdMultipleEnCreation() : - from InterfaceQT4.monWidgetCreeUserAssd import MonWidgetCreeUserAssd - widget=MonWidgetCreeUserAssd(self,maDefinition,monNom,monObjet,parentQt,maCommande) - #elif len(self.item.getSdAvantDuBonType()) == 0 : - elif len(maListe) == 0 : - from InterfaceQT4.monWidgetVide import MonWidgetVide - widget=MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande) - #elif len(self.item.getSdAvantDuBonType()) < 4 : - elif len(maListe) < 4 : - from InterfaceQT4.monWidgetRadioButton import MonWidgetRadioButtonSD - widget=MonWidgetRadioButtonSD(self,maDefinition,monNom,monObjet,parentQt,maCommande) - #elif len(self.item.getSdAvantDuBonType()) < 7 : - elif len(maListe) < 7 : - from InterfaceQT4.monWidget4a6RadioButton import MonWidget4a6RadioButtonSD - widget=MonWidget4a6RadioButtonSD(self,maDefinition,monNom,monObjet,parentQt,maCommande) + if maDefinition.intoSug != [] and maDefinition.intoSug != None: + from InterfaceQT4.monWidgetCBIntoSug import MonWidgetCBIntoSug + widget=MonWidgetCBIntoSug(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif maDefinition.into != [] and maDefinition.into != None: + if maDefinition.fenetreIhm=='menuDeroulant' : + from InterfaceQT4.monWidgetCB import MonWidgetCB + widget=MonWidgetCB(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif len(monInto) < 4 : + from InterfaceQT4.monWidgetRadioButton import MonWidgetRadioButton + widget=MonWidgetRadioButton(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif len(monInto) < 7 : + from InterfaceQT4.monWidget4a6RadioButton import MonWidget4a6RadioButton + widget=MonWidget4a6RadioButton(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + from InterfaceQT4.monWidgetCB import MonWidgetCB + widget=MonWidgetCB(self,maDefinition,monNom,monObjet,parentQt,maCommande) + + elif self.item.waitBool() : + from InterfaceQT4.monWidgetSimpBool import MonWidgetSimpBool + widget=MonWidgetSimpBool(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif self.item.waitFichier(): + from InterfaceQT4.monWidgetSimpFichier import MonWidgetSimpFichier + widget=MonWidgetSimpFichier(self,maDefinition,monNom,monObjet,parentQt,maCommande) + + # PNPNPN - a faire + elif self.item.waitDate(): + from InterfaceQT4.monWidgetDate import MonWidgetDate + widget=MonWidgetDate(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif self.item.waitHeure(): + from InterfaceQT4.monWidgetHeure import MonWidgetHeure + widget=MonWidgetHeure(self,maDefinition,monNom,monObjet,parentQt,maCommande) + + elif self.item.waitTuple() : + num=self.item.object.definition.type[0].ntuple + nomDeLaClasse = 'MonWidgetSimpTuple'+str(num) + nomDuFichier = 'InterfaceQT4.monWidgetSimpTupleN' + try : + #if 1 : + _temp = __import__(nomDuFichier, globals(), locals(), [nomDeLaClasse], 0) + #print (_temp) + MonWidgetSimpTuple = getattr(_temp,nomDeLaClasse) + except : + print ("Pas de Tuple de longueur : ", num) + # print ("Prevenir la maintenance ") + widget=MonWidgetSimpTuple(self,maDefinition,monNom,monObjet,parentQt,maCommande) + + elif self.item.waitComplex(): + from InterfaceQT4.monWidgetSimpComplexe import MonWidgetSimpComplexe + widget=MonWidgetSimpComplexe(self,maDefinition,monNom,monObjet,parentQt,maCommande) + + elif self.item.waitCo(): + if len(self.item.getSdAvantDuBonType()) == 0 : + from InterfaceQT4.monWidgetUniqueSDCO import MonWidgetUniqueSDCO + widget=MonWidgetUniqueSDCO(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + from InterfaceQT4.monWidgetSDCOInto import MonWidgetSDCOInto + widget=MonWidgetSDCOInto(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif self.item.waitAssd(): + + # PN - pour ne pas appeller trop souvent self.item.getSdAvantDuBonType() + if not (self.item.waitUserAssdOrAssdMultipleEnCreation()) : maListe=self.item.getSdAvantDuBonType() + if self.item.waitUserAssdOrAssdMultipleEnCreation() : + from InterfaceQT4.monWidgetCreeUserAssd import MonWidgetCreeUserAssd + widget=MonWidgetCreeUserAssd(self,maDefinition,monNom,monObjet,parentQt,maCommande) + #elif len(self.item.getSdAvantDuBonType()) == 0 : + elif len(maListe) == 0 : + from InterfaceQT4.monWidgetVide import MonWidgetVide + widget=MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande) + #elif len(self.item.getSdAvantDuBonType()) < 4 : + elif len(maListe) < 4 : + from InterfaceQT4.monWidgetRadioButton import MonWidgetRadioButtonSD + widget=MonWidgetRadioButtonSD(self,maDefinition,monNom,monObjet,parentQt,maCommande) + #elif len(self.item.getSdAvantDuBonType()) < 7 : + elif len(maListe) < 7 : + from InterfaceQT4.monWidget4a6RadioButton import MonWidget4a6RadioButtonSD + widget=MonWidget4a6RadioButtonSD(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + from InterfaceQT4.monWidgetCB import MonWidgetCBSD + widget=MonWidgetCBSD(self,maDefinition,monNom,monObjet,parentQt,maCommande) + + elif self.item.waitSalome() and self.editor.salome: + from InterfaceQT4.monWidgetSimpSalome import MonWidgetSimpSalome + widget=MonWidgetSimpSalome(self,maDefinition,monNom,monObjet,parentQt,maCommande) + + elif self.item.waitTxm(): + from InterfaceQT4.monWidgetSimpTxt import MonWidgetSimpTxt + widget=MonWidgetSimpTxt(self,maDefinition,monNom,monObjet,parentQt,maCommande) else : - from InterfaceQT4.monWidgetCB import MonWidgetCBSD - widget=MonWidgetCBSD(self,maDefinition,monNom,monObjet,parentQt,maCommande) - - elif self.item.waitSalome() and self.editor.salome: - from InterfaceQT4.monWidgetSimpSalome import MonWidgetSimpSalome - widget=MonWidgetSimpSalome(self,maDefinition,monNom,monObjet,parentQt,maCommande) - - elif self.item.waitTxm(): - from InterfaceQT4.monWidgetSimpTxt import MonWidgetSimpTxt - widget=MonWidgetSimpTxt(self,maDefinition,monNom,monObjet,parentQt,maCommande) - else : - from InterfaceQT4.monWidgetSimpBase import MonWidgetSimpBase - widget=MonWidgetSimpBase(self,maDefinition,monNom,monObjet,parentQt,maCommande) + from InterfaceQT4.monWidgetSimpBase import MonWidgetSimpBase + widget=MonWidgetSimpBase(self,maDefinition,monNom,monObjet,parentQt,maCommande) # Gestion des listes else : - if maDefinition.intoSug != [] and maDefinition.intoSug != None: - if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : - from InterfaceQT4.monWidgetIntoSug import MonWidgetIntoSug - widget=MonWidgetIntoSug(self,maDefinition,monNom,monObjet,parentQt,maCommande) - else : - from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie - widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande) - #if maDefinition.into != [] and maDefinition.into != None: - # Attention pas fini --> on attend une liste de ASSD avec ordre - elif self.item.waitAssd() and self.item.isListSansOrdreNiDoublon(): - listeAAfficher = self.item.getSdAvantDuBonType() - if len(listeAAfficher) == 0: - from InterfaceQT4.monWidgetVide import MonWidgetVide - widget = MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande) - else : - from InterfaceQT4.monWidgetPlusieursInto import MonWidgetPlusieursInto - widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt,maCommande) - elif self.item.waitAssd() and not self.item.waitUserAssdOrAssdMultipleEnCreation() : - listeAAfficher = self.item.getSdAvantDuBonType() - # a changer selon UserASSD ou UserASSDMultiple - mctype=maDefinition.type[0] - enable_salome_selection = self.editor.salome and \ - (('grma' in repr(mctype)) or ('grno' in repr(mctype)) or ('SalomeEntry' in repr(mctype)) or \ - (hasattr(mctype, "enable_salome_selection") and mctype.enable_salome_selection)) - if enable_salome_selection: - from InterfaceQT4.monWidgetPlusieursBase import MonWidgetPlusieursBase - widget=MonWidgetPlusieursBase(self,maDefinition,monNom,monObjet,parentQt,maCommande) - elif len(listeAAfficher) == 0: - from InterfaceQT4.monWidgetVide import MonWidgetVide - widget = MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande) - elif self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : - from InterfaceQT4.monWidgetPlusieursASSDIntoOrdonne import MonWidgetPlusieursASSDIntoOrdonne - widget=MonWidgetPlusieursASSDIntoOrdonne(self,maDefinition,monNom,monObjet,parentQt,maCommande) - else : - from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlieASSD - widget=MonWidgetPlusieursPlieASSD(self,maDefinition,monNom,monObjet,parentQt,maCommande) - elif self.item.waitTuple() : - if self.item.object.definition.fenetreIhm == 'Tableau' : - from InterfaceQT4.monWidgetTableau import MonWidgetTableau - widget=MonWidgetTableau(self,maDefinition,monNom,monObjet,parentQt,maCommande) - else : - num=self.item.object.definition.type[0].ntuple - nomDeLaClasse = 'MonWidgetPlusieursTuple'+str(num) - nomDuFichier = 'InterfaceQT4.monWidgetPlusieursTupleN' - try: - _temp = __import__(nomDuFichier, globals(), locals(), [nomDeLaClasse], 0) - MonWidgetPlusieursTuple = getattr(_temp,nomDeLaClasse) - except : - print ("Pas de Tuple de longueur : ", num) - print ("Prevenir la maintenance ") - widget=MonWidgetPlusieursTuple(self,maDefinition,monNom,monObjet,parentQt,maCommande) - - elif self.item.hasInto(): - if self.item.isListSansOrdreNiDoublon(): - - if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : - from InterfaceQT4.monWidgetPlusieursInto import MonWidgetPlusieursInto - widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt,maCommande) - else : - from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie - widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande) - else : - if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : - from InterfaceQT4.monWidgetPlusieursIntoOrdonne import MonWidgetPlusieursIntoOrdonne - widget=MonWidgetPlusieursIntoOrdonne(self,maDefinition,monNom,monObjet,parentQt,maCommande) - else : - from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie - widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande) - else : - if self.item.waitUserAssdOrAssdMultipleEnCreation() : - from InterfaceQT4.monWidgetPlusieursCreeUserAssd import MonWidgetPlusieursCreeUserAssd - widget=MonWidgetPlusieursCreeUserAssd(self,maDefinition,monNom,monObjet,parentQt,maCommande) - elif self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : - from InterfaceQT4.monWidgetPlusieursBase import MonWidgetPlusieursBase - widget=MonWidgetPlusieursBase(self,maDefinition,monNom,monObjet,parentQt,maCommande) + if maDefinition.intoSug != [] and maDefinition.intoSug != None: + if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : + from InterfaceQT4.monWidgetIntoSug import MonWidgetIntoSug + widget=MonWidgetIntoSug(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie + widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande) + #if maDefinition.into != [] and maDefinition.into != None: + # Attention pas fini --> on attend une liste de ASSD avec ordre + elif self.item.waitAssd() and self.item.isListSansOrdreNiDoublon(): + listeAAfficher = self.item.getSdAvantDuBonType() + if len(listeAAfficher) == 0: + from InterfaceQT4.monWidgetVide import MonWidgetVide + widget = MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + from InterfaceQT4.monWidgetPlusieursInto import MonWidgetPlusieursInto + widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif self.item.waitAssd() and not self.item.waitUserAssdOrAssdMultipleEnCreation() : + listeAAfficher = self.item.getSdAvantDuBonType() + # a changer selon UserASSD ou UserASSDMultiple + mctype=maDefinition.type[0] + enable_salome_selection = self.editor.salome and \ + (('grma' in repr(mctype)) or ('grno' in repr(mctype)) or ('SalomeEntry' in repr(mctype)) or \ + (hasattr(mctype, "enable_salome_selection") and mctype.enable_salome_selection)) + if enable_salome_selection: + from InterfaceQT4.monWidgetPlusieursBase import MonWidgetPlusieursBase + widget=MonWidgetPlusieursBase(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif len(listeAAfficher) == 0: + from InterfaceQT4.monWidgetVide import MonWidgetVide + widget = MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : + from InterfaceQT4.monWidgetPlusieursASSDIntoOrdonne import MonWidgetPlusieursASSDIntoOrdonne + widget=MonWidgetPlusieursASSDIntoOrdonne(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlieASSD + widget=MonWidgetPlusieursPlieASSD(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif self.item.waitTuple() : + if self.item.object.definition.fenetreIhm == 'Tableau' : + from InterfaceQT4.monWidgetTableau import MonWidgetTableau + widget=MonWidgetTableau(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + num=self.item.object.definition.type[0].ntuple + nomDeLaClasse = 'MonWidgetPlusieursTuple'+str(num) + nomDuFichier = 'InterfaceQT4.monWidgetPlusieursTupleN' + try: + _temp = __import__(nomDuFichier, globals(), locals(), [nomDeLaClasse], 0) + MonWidgetPlusieursTuple = getattr(_temp,nomDeLaClasse) + except : + print ("Pas de Tuple de longueur : ", num) + print ("Prevenir la maintenance ") + widget=MonWidgetPlusieursTuple(self,maDefinition,monNom,monObjet,parentQt,maCommande) + + elif self.item.hasInto(): + if self.item.isListSansOrdreNiDoublon(): + + if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : + from InterfaceQT4.monWidgetPlusieursInto import MonWidgetPlusieursInto + widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie + widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : + from InterfaceQT4.monWidgetPlusieursIntoOrdonne import MonWidgetPlusieursIntoOrdonne + widget=MonWidgetPlusieursIntoOrdonne(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie + widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande) else : - from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie - widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande) + if self.item.waitUserAssdOrAssdMultipleEnCreation() : + from InterfaceQT4.monWidgetPlusieursCreeUserAssd import MonWidgetPlusieursCreeUserAssd + widget=MonWidgetPlusieursCreeUserAssd(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : + from InterfaceQT4.monWidgetPlusieursBase import MonWidgetPlusieursBase + widget=MonWidgetPlusieursBase(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie + widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande) self.widget=widget return widget - - + + class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): - itemNode=Node - - def init(self) : - self.expandable = 0 - - - #----------------------------------------------- - # - # Methodes liees aux informations sur le Panel - # ou au mot-clef simple - # - #----------------------------------------------- - # isList - # hasInto - # getMinMax - # getMultiplicite - # getIntervalle - # getListeValeurs - # getListePossible - - def isList(self): - """ - Cette methode indique si le mot cle simple attend une liste (valeur de retour 1) - ou s'il n'en attend pas (valeur de retour 0) - - Deux cas principaux peuvent se presenter : avec validateurs ou bien sans. - Dans le cas sans validateur, l'information est donnee par l'attribut max - de la definition du mot cle. - Dans le cas avec validateur, il faut combiner l'information precedente avec - celle issue de l'appel de la methode isList sur le validateur.On utilisera - l'operateur ET pour effectuer cette combinaison (AndVal). - """ - is_a_list=0 - min,max = self.getMinMax() - assert (min <= max) - if max > 1 : - is_a_list=1 - # Dans le cas avec validateurs, pour que le mot cle soit considere - # comme acceptant une liste, il faut que max soit superieur a 1 - # ET que la methode isList du validateur retourne 1. Dans les autres cas - # on retournera 0 (n'attend pas de liste) - if self.definition.validators : - is_a_list= self.definition.validators.isList() * is_a_list - return is_a_list - - def isListSansOrdreNiDoublon(self): - if self.definition.homo=="SansOrdreNiDoublon" : return 1 - return 0 - - - def hasInto(self): - """ - Cette methode indique si le mot cle simple propose un choix (valeur de retour 1) - ou s'il n'en propose pas (valeur de retour 0) - - Deux cas principaux peuvent se presenter : avec validateurs ou bien sans. - Dans le cas sans validateur, l'information est donnee par l'attribut into - de la definition du mot cle. - Dans le cas avec validateurs, pour que le mot cle soit considere - comme proposant un choix, il faut que into soit present OU - que la methode hasInto du validateur retourne 1. Dans les autres cas - on retournera 0 (ne propose pas de choix) - """ - has_an_into=0 - if self.definition.into: - has_an_into=1 - elif self.definition.validators : - has_an_into= self.definition.validators.hasInto() - return has_an_into - - def hasIntoSug(self): - if self.definition.intoSug: return 1 - return 0 - - - def getMinMax(self): - """ Retourne les valeurs min et max de la definition de object """ - return self.object.getMinMax() - - def getMultiplicite(self): - """ A preciser. - Retourne la multiplicite des valeurs affectees a l'objet - represente par l'item. Pour le moment retourne invariablement 1. - """ - return 1 - - def getIntervalle(self): - """ - Retourne le domaine de valeur attendu par l'objet represente - par l'item. - """ - return self.object.getintervalle() - - def getListeValeurs(self) : - """ Retourne la liste des valeurs de object """ - valeurs=self.object.getListeValeurs() - try : - if "R" in self.object.definition.type: - clef=self.object.getNomConcept() - if clef in self.appliEficas.dict_reels: - if type(valeurs) == tuple: - valeurs_reelles=[] - for val in valeurs : - if val in self.appliEficas.dict_reels[clef]: - valeurs_reelles.append(self.appliEficas.dict_reels[clef][val]) + itemNode=Node + + def init(self) : + self.expandable = 0 + + + #----------------------------------------------- + # + # Methodes liees aux informations sur le Panel + # ou au mot-clef simple + # + #----------------------------------------------- + # isList + # hasInto + # getMinMax + # getMultiplicite + # getIntervalle + # getListeValeurs + # getListePossible + + def isList(self): + """ + Cette methode indique si le mot cle simple attend une liste (valeur de retour 1) + ou s'il n'en attend pas (valeur de retour 0) + + Deux cas principaux peuvent se presenter : avec validateurs ou bien sans. + Dans le cas sans validateur, l'information est donnee par l'attribut max + de la definition du mot cle. + Dans le cas avec validateur, il faut combiner l'information precedente avec + celle issue de l'appel de la methode isList sur le validateur.On utilisera + l'operateur ET pour effectuer cette combinaison (AndVal). + """ + is_a_list=0 + min,max = self.getMinMax() + assert (min <= max) + if max > 1 : + is_a_list=1 + # Dans le cas avec validateurs, pour que le mot cle soit considere + # comme acceptant une liste, il faut que max soit superieur a 1 + # ET que la methode isList du validateur retourne 1. Dans les autres cas + # on retournera 0 (n'attend pas de liste) + if self.definition.validators : + is_a_list= self.definition.validators.isList() * is_a_list + return is_a_list + + def isListSansOrdreNiDoublon(self): + if self.definition.homo=="SansOrdreNiDoublon" : return 1 + return 0 + + + def hasInto(self): + """ + Cette methode indique si le mot cle simple propose un choix (valeur de retour 1) + ou s'il n'en propose pas (valeur de retour 0) + + Deux cas principaux peuvent se presenter : avec validateurs ou bien sans. + Dans le cas sans validateur, l'information est donnee par l'attribut into + de la definition du mot cle. + Dans le cas avec validateurs, pour que le mot cle soit considere + comme proposant un choix, il faut que into soit present OU + que la methode hasInto du validateur retourne 1. Dans les autres cas + on retournera 0 (ne propose pas de choix) + """ + has_an_into=0 + if self.definition.into: + has_an_into=1 + elif self.definition.validators : + has_an_into= self.definition.validators.hasInto() + return has_an_into + + def hasIntoSug(self): + if self.definition.intoSug: return 1 + return 0 + + + def getMinMax(self): + """ Retourne les valeurs min et max de la definition de object """ + return self.object.getMinMax() + + def getMultiplicite(self): + """ A preciser. + Retourne la multiplicite des valeurs affectees a l'objet + represente par l'item. Pour le moment retourne invariablement 1. + """ + return 1 + + def getIntervalle(self): + """ + Retourne le domaine de valeur attendu par l'objet represente + par l'item. + """ + return self.object.getintervalle() + + def getListeValeurs(self) : + """ Retourne la liste des valeurs de object """ + valeurs=self.object.getListeValeurs() + try : + if "R" in self.object.definition.type: + clef=self.object.getNomConcept() + if clef in self.appliEficas.dict_reels: + if type(valeurs) == tuple: + valeurs_reelles=[] + for val in valeurs : + if val in self.appliEficas.dict_reels[clef]: + valeurs_reelles.append(self.appliEficas.dict_reels[clef][val]) + else : + valeurs_reelles.append(val) else : - valeurs_reelles.append(val) - else : - if valeurs in self.appliEficas.dict_reels[clef]: - valeurs_reelles=self.appliEficas.dict_reels[clef][valeurs] - valeurs=valeurs_reelles - except : - pass - return valeurs - - def getListePossible(self,listeActuelle=[]): - if hasattr(self.definition.validators,'into'): - valeurspossibles = self.definition.validators.into - else: - valeurspossibles = self.get_definition().into - - if listeActuelle==[] : return valeurspossibles - - #On ne garde que les items valides - listevalideitem=[] - if type(valeurspossibles) in (list,tuple) : - pass - else : - valeurspossibles=(valeurspossibles,) - for item in valeurspossibles: - encorevalide=self.valideItem(item) - if encorevalide : - listevalideitem.append(item) - - #on ne garde que les choix possibles qui passent le test de valideListePartielle - listevalideliste=[] - for item in listevalideitem: - encorevalide=self.valideListePartielle(item,listeActuelle) - if encorevalide : - listevalideliste.append(item) - #print listevalideliste - return listevalideliste - - def getListePossibleAvecSug(self,listeActuelle=[]): - if hasattr(self.definition,'intoSug'): - valeurspossibles = self.definition.intoSug - else: - return listeActuelle - - if listeActuelle==[] : return valeurspossibles - valeurspossibles = valeurspossibles+listeActuelle - - #On ne garde que les items valides - listevalideitem=[] - if type(valeurspossibles) in (list,tuple) : - pass - else : - valeurspossibles=(valeurspossibles,) - for item in valeurspossibles: - encorevalide=self.valideItem(item) - if encorevalide : - listevalideitem.append(item) - - #on ne garde que les choix possibles qui passent le test de valideListePartielle - listevalideliste=[] - for item in listevalideitem: - encorevalide=self.valideListePartielle(item,listeActuelle) - if encorevalide : - listevalideliste.append(item) - return listevalideliste - - def getListeParamPossible(self): - liste_param=[] - l1,l2=self.jdc.getParametresFonctionsAvantEtape(self.getEtape()) - for param in self.object.jdc.params: - if param.nom not in l1 : continue - encorevalide=self.valideItem(param.valeur) - if encorevalide: - type_param=param.valeur.__class__.__name__ - for typ in self.definition.type: - if typ=='R': - liste_param.append(param) - if typ=='I' and type_param=='int': - liste_param.append(param) - if typ=='TXM' and type_param=='str': - liste_param.append(repr(param)) - if ('grma' in repr(typ)) and type_param=='str': - liste_param.append(param.nom) - return liste_param - - #-------------------------------------------------- - # - # Methodes liees a la validite des valeurs saisies - # - #--------------------------------------------------- - # valideItem - # valideListePartielle - # valideListeComplete - # infoErreurItem - # infoErreurListe - # isInIntervalle - # isValid - - def valideItem(self,item): - """ - La validation est realisee directement par l'objet - """ - return self.object.valideItem(item) - - def valideListePartielle(self,item,listecourante): - #On protege la liste en entree en la copiant - valeur=list(listecourante) - if item : valeur.append(item) - return self.object.validValeurPartielle(valeur) - - def valideListeComplete (self,valeur): - return self.object.validValeur(valeur) - - def infoErreurItem(self) : - commentaire="" - if self.definition.validators : - commentaire=self.definition.validators.infoErreurItem() - return commentaire - - def aide(self) : - commentaire="" - if self.definition.validators : - commentaire=self.definition.validators.aide() - return commentaire - - def infoErreurListe(self) : - commentaire="" - if self.definition.validators : - commentaire=self.definition.validators.infoErreurListe() - return commentaire - - def isInIntervalle(self,valeur): - """ - Retourne 1 si la valeur est dans l'intervalle permis par - l'objet represente par l'item. - """ - return self.valideItem(valeur) - - def isValid(self): - valide=self.object.isValid() - return valide - - #-------------------------------------------------- - # - # Autres ... - # - #--------------------------------------------------- - # getIconName - # getText - # setValeurCo - # getSdAvantDuBonType - - - def getIconName(self): - if self.appliEficas.maConfiguration.differencieSiDefaut and self.isValid(): - if self.object.definition.defaut != None : - if self.object.valeur == self.object.definition.defaut : return "ast-green-dark-ball" - if self.object.definition.max > 1 and list(self.object.valeur) == list(self.object.definition.defaut) : return "ast-green-dark-ball" - return "ast-green-ball" - elif self.isValid(): - return "ast-green-ball" - elif self.object.isOblig(): - return "ast-red-ball" - else: - return "ast-yel-ball" - - def getText(self): - """ - Classe SIMPTreeItem - Retourne le texte a afficher dans l'arbre representant la valeur de l'objet - pointe par self - """ - text= self.object.getText() - if text == None : text="" - return text - - - def setValeurCo(self,nomCo): - """ - Affecte au MCS pointe par self l'objet de type CO et de nom nom_co - """ - ret = self.object.setValeurCo(nomCo) - #print "setValeurCo",ret - return ret - - def getSdAvantDuBonType(self): - """ - Retourne la liste des noms des SD presentes avant l'etape qui contient - le MCS pointe par self et du type requis par ce MCS - """ - # A changer pour tenir compte des UserASSDMultiple - # ici on passe par parent pour avoir le bon type - #if self.waitUserAssdMultiple() : - # l=self.object.parent.getSdCreeParObjetAvecFiltre(self.object) - # return l - if self.waitUserAssdMultiple() : - l=self.object.getUserAssdPossible() - return l - a=self.object.etape.parent.getSdAvantDuBonType(self.object.etape,self.object.definition.type) - if self.waitUserAssd() : l=self.jdc.getSdCreeParObjet(self.object.definition.type) - else :l=[] - return a+l - - def getSdAvantDuBonTypePourTypeDeBase(self): - a=self.object.jdc.getSdAvantDuBonTypePourTypeDe_Base(self.object.etape,"LASSD") - return a - - def deleteValeurCo(self,valeur=None): - """ - Supprime la valeur du mot cle (de type CO) - il faut propager la destruction aux autres etapes - """ - if not valeur : valeur=self.object.valeur - # XXX faut il vraiment appeler delSdprod ??? - #self.object.etape.parent.delSdprod(valeur) - self.object.etape.parent.deleteConcept(valeur) - - #----------------------------------------------- - # - # Methodes liees au type de l objet attendu - # - #----------------------------------------------- - # waitCo - # waitGeom - # waitComplex - # waitReel - # waitAssd - # getType - - def waitCo(self): - """ - Methode booleenne qui retourne 1 si l'objet pointe par self - attend un objet de type ASSD qui n'existe pas encore (type CO()), - 0 sinon - """ - return self.object.waitCo() - - def waitFichier(self): - maDefinition=self.object.definition - try : - if ('Repertoire' in maDefinition.type[0]) or ('Fichier' in maDefinition.type[0]) : - return 1 - except : - return 0 - - def waitGeom(self): - """ - Methode booleenne qui retourne 1 si l'objet pointe par self - attend un objet GEOM, 0 sinon - """ - return self.object.waitGeom() - - def waitTxm(self): - return self.object.waitTxm() - - - def waitComplex(self): - """ Methode booleenne qui retourne 1 si l'objet pointe par self - attend un complexe, 0 sinon """ - if 'C' in self.object.definition.type: - return 1 - else: - return 0 - - def waitReel(self): - """ Methode booleenne qui retourne 1 si l'objet pointe par self - attend un reel, 0 sinon """ - if 'R' in self.object.definition.type: - return 1 - else: - return 0 - - def waitTuple(self) : - return self.object.waitTuple() - - def waitDate(self): - """ Methode booleenne qui retourne 1 si l'objet pointe par self - attend un reel, 0 sinon """ - if 'DateHHMMAAAA' in self.object.definition.type: - return 1 - else: - return 0 - - def waitHeure(self): - """ Methode booleenne qui retourne 1 si l'objet pointe par self - attend un reel, 0 sinon """ - if 'HeureHHMMSS' in self.object.definition.type: - return 1 - else: - return 0 - - - - def waitTuple(self): - """ Methode booleenne qui retourne 1 si l'objet pointe par self - attend un Tuple, 0 sinon """ - for ss_type in self.object.definition.type: - if repr(ss_type).find('Tuple') != -1 : - return 1 - return 0 - - def waitMatrice(self): - """ Methode booleenne qui retourne 1 si l'objet pointe par self - attend un Tuple, 0 sinon """ - for ss_type in self.object.definition.type: - if repr(ss_type).find('Matrice') != -1 : - return 1 - return 0 - - def waitAssd(self): - """Methode booleenne qui retourne 1 si l'objet pointe par self - attend un objet de type ASSD ou derive, 0 sinon """ - return self.object.waitAssd() - - def waitAssdOrTypeBase(self) : - boo=0 - if len(self.object.definition.type) > 1 : - if self.waitReel() : - boo = 1 - if 'I' in self.object.definition.type : - boo = 1 - return boo - - def waitSalome(self): - monType = self.object.definition.type[0] - if 'grma' in repr(monType) : return True - if 'grno' in repr(monType) : return True - try : - if issubclass(monType, SalomeEntry) : return True - except : - pass - return False - - def getType(self): - """ - Retourne le type de valeur attendu par l'objet represente par l'item. - """ - return self.object.getType() - - #----------------------------------------------------- - # - # Methodes liees a l evaluation de la valeur saisie - # - #----------------------------------------------------- - # evalValeur - # evalValeurItem - # isCO - # traiteReel - - def evalValeur(self,valeur): - """ Lance l'interpretation de 'valeur' (chaine de caracteres) comme valeur de self : - - retourne l'objet associe si on a pu interpreter (entier, reel, ASSD,...) - - retourne 'valeur' (chaine de caracteres) sinon - """ - newvaleur=self.evalVal(valeur) - return newvaleur,1 - - - def evalValeurItem(self,valeur): - """ Lance l'interpretation de 'valeur' qui doit ne pas etre un tuple - - va retourner la valeur de retour et la validite - selon le type de l objet attendu - - traite les reels et les parametres - """ - #print "evalValeurItem",valeur - if valeur==None or valeur == "" : - return None,0 - validite=1 - if self.waitReel(): - valeurinter = self.traiteReel(valeur) - if valeurinter != None : + if valeurs in self.appliEficas.dict_reels[clef]: + valeurs_reelles=self.appliEficas.dict_reels[clef][valeurs] + valeurs=valeurs_reelles + except : + pass + return valeurs + + def getListePossible(self,listeActuelle=[]): + if hasattr(self.definition.validators,'into'): + valeurspossibles = self.definition.validators.into + else: + valeurspossibles = self.get_definition().into + + if listeActuelle==[] : return valeurspossibles + + #On ne garde que les items valides + listevalideitem=[] + if type(valeurspossibles) in (list,tuple) : + pass + else : + valeurspossibles=(valeurspossibles,) + for item in valeurspossibles: + encorevalide=self.valideItem(item) + if encorevalide : + listevalideitem.append(item) + + #on ne garde que les choix possibles qui passent le test de valideListePartielle + listevalideliste=[] + for item in listevalideitem: + encorevalide=self.valideListePartielle(item,listeActuelle) + if encorevalide : + listevalideliste.append(item) + #print listevalideliste + return listevalideliste + + def getListePossibleAvecSug(self,listeActuelle=[]): + if hasattr(self.definition,'intoSug'): + valeurspossibles = self.definition.intoSug + else: + return listeActuelle + + if listeActuelle==[] : return valeurspossibles + valeurspossibles = valeurspossibles+listeActuelle + + #On ne garde que les items valides + listevalideitem=[] + if type(valeurspossibles) in (list,tuple) : + pass + else : + valeurspossibles=(valeurspossibles,) + for item in valeurspossibles: + encorevalide=self.valideItem(item) + if encorevalide : + listevalideitem.append(item) + + #on ne garde que les choix possibles qui passent le test de valideListePartielle + listevalideliste=[] + for item in listevalideitem: + encorevalide=self.valideListePartielle(item,listeActuelle) + if encorevalide : + listevalideliste.append(item) + return listevalideliste + + def getListeParamPossible(self): + liste_param=[] + l1,l2=self.jdc.getParametresFonctionsAvantEtape(self.getEtape()) + for param in self.object.jdc.params: + if param.nom not in l1 : continue + encorevalide=self.valideItem(param.valeur) + if encorevalide: + type_param=param.valeur.__class__.__name__ + for typ in self.definition.type: + if typ=='R': + liste_param.append(param) + if typ=='I' and type_param=='int': + liste_param.append(param) + if typ=='TXM' and type_param=='str': + liste_param.append(repr(param)) + if ('grma' in repr(typ)) and type_param=='str': + liste_param.append(param.nom) + return liste_param + + #-------------------------------------------------- + # + # Methodes liees a la validite des valeurs saisies + # + #--------------------------------------------------- + # valideItem + # valideListePartielle + # valideListeComplete + # infoErreurItem + # infoErreurListe + # isInIntervalle + # isValid + + def valideItem(self,item): + """ + La validation est realisee directement par l'objet + """ + return self.object.valideItem(item) + + def valideListePartielle(self,item,listecourante): + #On protege la liste en entree en la copiant + valeur=list(listecourante) + if item : valeur.append(item) + return self.object.validValeurPartielle(valeur) + + def valideListeComplete (self,valeur): + return self.object.validValeur(valeur) + + def infoErreurItem(self) : + commentaire="" + if self.definition.validators : + commentaire=self.definition.validators.infoErreurItem() + return commentaire + + def aide(self) : + commentaire="" + if self.definition.validators : + commentaire=self.definition.validators.aide() + return commentaire + + def infoErreurListe(self) : + commentaire="" + if self.definition.validators : + commentaire=self.definition.validators.infoErreurListe() + return commentaire + + def isInIntervalle(self,valeur): + """ + Retourne 1 si la valeur est dans l'intervalle permis par + l'objet represente par l'item. + """ + return self.valideItem(valeur) + + def isValid(self): + valide=self.object.isValid() + return valide + + #-------------------------------------------------- + # + # Autres ... + # + #--------------------------------------------------- + # getIconName + # getText + # setValeurCo + # getSdAvantDuBonType + + + def getIconName(self): + if self.appliEficas.maConfiguration.differencieSiDefaut and self.isValid(): + if self.object.definition.defaut != None : + if self.object.valeur == self.object.definition.defaut : return "ast-green-dark-ball" + if self.object.definition.max > 1 and list(self.object.valeur) == list(self.object.definition.defaut) : return "ast-green-dark-ball" + return "ast-green-ball" + elif self.isValid(): + return "ast-green-ball" + elif self.object.isOblig(): + return "ast-red-ball" + else: + return "ast-yel-ball" + + def getText(self): + """ + Classe SIMPTreeItem + Retourne le texte a afficher dans l'arbre representant la valeur de l'objet + pointe par self + """ + text= self.object.getText() + if text == None : text="" + return text + + + def setValeurCo(self,nomCo): + """ + Affecte au MCS pointe par self l'objet de type CO et de nom nom_co + """ + ret = self.object.setValeurCo(nomCo) + #print "setValeurCo",ret + return ret + + def getSdAvantDuBonType(self): + """ + Retourne la liste des noms des SD presentes avant l'etape qui contient + le MCS pointe par self et du type requis par ce MCS + """ + # A changer pour tenir compte des UserASSDMultiple + # ici on passe par parent pour avoir le bon type + #if self.waitUserAssdMultiple() : + # l=self.object.parent.getSdCreeParObjetAvecFiltre(self.object) + # return l + if self.waitUserAssdMultiple() : + l=self.object.getUserAssdPossible() + return l + a=self.object.etape.parent.getSdAvantDuBonType(self.object.etape,self.object.definition.type) + if self.waitUserAssd() : l=self.jdc.getSdCreeParObjet(self.object.definition.type) + else :l=[] + return a+l + + def getSdAvantDuBonTypePourTypeDeBase(self): + a=self.object.jdc.getSdAvantDuBonTypePourTypeDe_Base(self.object.etape,"LASSD") + return a + + def deleteValeurCo(self,valeur=None): + """ + Supprime la valeur du mot cle (de type CO) + il faut propager la destruction aux autres etapes + """ + if not valeur : valeur=self.object.valeur + # XXX faut il vraiment appeler delSdprod ??? + #self.object.etape.parent.delSdprod(valeur) + self.object.etape.parent.deleteConcept(valeur) + + #----------------------------------------------- + # + # Methodes liees au type de l objet attendu + # + #----------------------------------------------- + # waitCo + # waitGeom + # waitComplex + # waitReel + # waitAssd + # getType + + def waitCo(self): + """ + Methode booleenne qui retourne 1 si l'objet pointe par self + attend un objet de type ASSD qui n'existe pas encore (type CO()), + 0 sinon + """ + return self.object.waitCo() + + def waitFichier(self): + maDefinition=self.object.definition + try : + if ('Repertoire' in maDefinition.type[0]) or ('Fichier' in maDefinition.type[0]) : + return 1 + except : + return 0 + + def waitGeom(self): + """ + Methode booleenne qui retourne 1 si l'objet pointe par self + attend un objet GEOM, 0 sinon + """ + return self.object.waitGeom() + + def waitTxm(self): + return self.object.waitTxm() + + + def waitComplex(self): + """ Methode booleenne qui retourne 1 si l'objet pointe par self + attend un complexe, 0 sinon """ + if 'C' in self.object.definition.type: + return 1 + else: + return 0 + + def waitReel(self): + """ Methode booleenne qui retourne 1 si l'objet pointe par self + attend un reel, 0 sinon """ + if 'R' in self.object.definition.type: + return 1 + else: + return 0 + + def waitTuple(self) : + return self.object.waitTuple() + + def waitDate(self): + """ Methode booleenne qui retourne 1 si l'objet pointe par self + attend un reel, 0 sinon """ + if 'DateHHMMAAAA' in self.object.definition.type: + return 1 + else: + return 0 + + def waitHeure(self): + """ Methode booleenne qui retourne 1 si l'objet pointe par self + attend un reel, 0 sinon """ + if 'HeureHHMMSS' in self.object.definition.type: + return 1 + else: + return 0 + + + + def waitTuple(self): + """ Methode booleenne qui retourne 1 si l'objet pointe par self + attend un Tuple, 0 sinon """ + for ss_type in self.object.definition.type: + if repr(ss_type).find('Tuple') != -1 : + return 1 + return 0 + + def waitMatrice(self): + """ Methode booleenne qui retourne 1 si l'objet pointe par self + attend un Tuple, 0 sinon """ + for ss_type in self.object.definition.type: + if repr(ss_type).find('Matrice') != -1 : + return 1 + return 0 + + def waitAssd(self): + """Methode booleenne qui retourne 1 si l'objet pointe par self + attend un objet de type ASSD ou derive, 0 sinon """ + return self.object.waitAssd() + + def waitAssdOrTypeBase(self) : + boo=0 + if len(self.object.definition.type) > 1 : + if self.waitReel() : + boo = 1 + if 'I' in self.object.definition.type : + boo = 1 + return boo + + def waitSalome(self): + monType = self.object.definition.type[0] + if 'grma' in repr(monType) : return True + if 'grno' in repr(monType) : return True + try : + if issubclass(monType, SalomeEntry) : return True + except : + pass + return False + + def getType(self): + """ + Retourne le type de valeur attendu par l'objet represente par l'item. + """ + return self.object.getType() + + #----------------------------------------------------- + # + # Methodes liees a l evaluation de la valeur saisie + # + #----------------------------------------------------- + # evalValeur + # evalValeurItem + # isCO + # traiteReel + + def evalValeur(self,valeur): + """ Lance l'interpretation de 'valeur' (chaine de caracteres) comme valeur de self : + - retourne l'objet associe si on a pu interpreter (entier, reel, ASSD,...) + - retourne 'valeur' (chaine de caracteres) sinon + """ + newvaleur=self.evalVal(valeur) + return newvaleur,1 + + + def evalValeurItem(self,valeur): + """ Lance l'interpretation de 'valeur' qui doit ne pas etre un tuple + - va retourner la valeur de retour et la validite + selon le type de l objet attendu + - traite les reels et les parametres + """ + #print "evalValeurItem",valeur + if valeur==None or valeur == "" : + return None,0 + validite=1 + if self.waitReel(): + valeurinter = self.traiteReel(valeur) + if valeurinter != None : valeurretour,validite= self.object.evalValeur(valeurinter) - else: + else: valeurretour,validite= self.object.evalValeur(valeur) - elif self.waitGeom(): - valeurretour,validite = valeur,1 - else : - valeurretour,validite= self.object.evalValeur(valeur) - - if validite == 0: - if (type(valeur) == bytes or type(valeur) == str )and self.object.waitTxm(): - essai_valeur="'" + valeur + "'" - valeurretour,validite= self.object.evalValeur(essai_valeur) - - if hasattr(valeurretour,'__class__'): - #if valeurretour.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'): - if valeurretour.__class__.__name__ in ('PARAMETRE',): - validite=1 - - #if self.waitCo(): - # CCAR : il ne faut pas essayer de creer un concept - # il faut simplement en chercher un existant ce qui a du etre fait par self.object.evalValeur(valeur) - #try: - #valeurretour=Accas.CO(valeur) - #except: - #valeurretour=None - #validite=0 - # on est dans le cas ou on a evalue et ou on n'aurait pas du - if self.object.waitTxm() : - if type(valeurretour) != bytes: - valeurretour=str(valeur) - validite=1 - return valeurretour,validite - - def isCO(self,valeur=None): - """ - Indique si valeur est un concept produit de la macro - Cette methode n'a de sens que pour un MCSIMP d'une MACRO - Si valeur vaut None on teste la valeur du mot cle - """ - # Pour savoir si un concept est un nouveau concept de macro - # on regarde s'il est present dans l'attribut sdprods de l'etape - # ou si son nom de classe est CO. - # Il faut faire les 2 tests car une macro non valide peut etre - # dans un etat pas tres catholique avec des CO pas encore types - # et donc pas dans sdprods (resultat d'une exception dans typeSDProd) - if not valeur:valeur=self.object.valeur - if valeur in self.object.etape.sdprods:return 1 - #if type(valeur) is not types.InstanceType:return 0 - if type(valeur) is not object:return 0 - if valeur.__class__.__name__ == 'CO':return 1 - return 0 - - def isParam(self,valeur) : - for param in self.jdc.params: - if (repr(param) == valeur): - return 1 - return 0 - - def traiteReel(self,valeur): - """ - Cette fonction a pour but de rajouter le '.' en fin de chaine pour un reel - ou de detecter si on fait reference a un concept produit par DEFI_VALEUR - ou un EVAL ... - """ - valeur = valeur.strip() - liste_reels = self.getSdAvantDuBonType() - if valeur in liste_reels: - return valeur - if len(valeur) >= 3 : - if valeur[0:4] == 'EVAL' : - # on a trouve un EVAL --> on retourne directement la valeur - return valeur - if valeur.find('.') == -1 : - # aucun '.' n'a ete trouve dans valeur --> on en rajoute un a la fin - if (self.isParam(valeur)): - return valeur - else: - if valeur.find('e') != -1: - # Notation scientifique ? - try : - r=eval(valeur) - return valeur - except : - return None - else : - return valeur+'.' - else: - return valeur - + elif self.waitGeom(): + valeurretour,validite = valeur,1 + else : + valeurretour,validite= self.object.evalValeur(valeur) + + if validite == 0: + if (type(valeur) == bytes or type(valeur) == str )and self.object.waitTxm(): + essai_valeur="'" + valeur + "'" + valeurretour,validite= self.object.evalValeur(essai_valeur) + + if hasattr(valeurretour,'__class__'): + #if valeurretour.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'): + if valeurretour.__class__.__name__ in ('PARAMETRE',): + validite=1 + + #if self.waitCo(): + # CCAR : il ne faut pas essayer de creer un concept + # il faut simplement en chercher un existant ce qui a du etre fait par self.object.evalValeur(valeur) + #try: + #valeurretour=Accas.CO(valeur) + #except: + #valeurretour=None + #validite=0 + # on est dans le cas ou on a evalue et ou on n'aurait pas du + if self.object.waitTxm() : + if type(valeurretour) != bytes: + valeurretour=str(valeur) + validite=1 + return valeurretour,validite + + def isCO(self,valeur=None): + """ + Indique si valeur est un concept produit de la macro + Cette methode n'a de sens que pour un MCSIMP d'une MACRO + Si valeur vaut None on teste la valeur du mot cle + """ + # Pour savoir si un concept est un nouveau concept de macro + # on regarde s'il est present dans l'attribut sdprods de l'etape + # ou si son nom de classe est CO. + # Il faut faire les 2 tests car une macro non valide peut etre + # dans un etat pas tres catholique avec des CO pas encore types + # et donc pas dans sdprods (resultat d'une exception dans typeSDProd) + if not valeur:valeur=self.object.valeur + if valeur in self.object.etape.sdprods:return 1 + #if type(valeur) is not types.InstanceType:return 0 + if type(valeur) is not object:return 0 + if valeur.__class__.__name__ == 'CO':return 1 + return 0 + + def isParam(self,valeur) : + for param in self.jdc.params: + if (repr(param) == valeur): + return 1 + return 0 + + def traiteReel(self,valeur): + """ + Cette fonction a pour but de rajouter le '.' en fin de chaine pour un reel + ou de detecter si on fait reference a un concept produit par DEFI_VALEUR + ou un EVAL ... + """ + valeur = valeur.strip() + liste_reels = self.getSdAvantDuBonType() + if valeur in liste_reels: + return valeur + if len(valeur) >= 3 : + if valeur[0:4] == 'EVAL' : + # on a trouve un EVAL --> on retourne directement la valeur + return valeur + if valeur.find('.') == -1 : + # aucun '.' n'a ete trouve dans valeur --> on en rajoute un a la fin + if (self.isParam(valeur)): + return valeur + else: + if valeur.find('e') != -1: + # Notation scientifique ? + try : + r=eval(valeur) + return valeur + except : + return None + else : + return valeur+'.' + else: + return valeur + import Accas treeitem = SIMPTreeItem objet = Accas.MCSIMP - diff --git a/InterfaceQT4/configuration.py b/InterfaceQT4/configuration.py index 78d71596..08627bac 100644 --- a/InterfaceQT4/configuration.py +++ b/InterfaceQT4/configuration.py @@ -23,9 +23,9 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str - from builtins import range - from builtins import object + from builtins import str + from builtins import range + from builtins import object except : pass import os, sys, types, re @@ -36,221 +36,221 @@ from Extensions.i18n import tr class configBase(object): - #------------------------------- - def __init__(self,appliEficas,repIni): - #------------------------------- - - # Classe de base permettant de lire, afficher - # et sauvegarder les fichiers utilisateurs - # On a deux directories : la directory generale (Repertoire d install + Nom du code - # Par exemple : ~/Install_Eficas/EficasV1_14/Openturns_Wrapper - # et la directorie de l utilisateur - # HOME/.Eficas_Openturns - # Le fichier prefs.py va etre lu dans la directory generale - # puis surcharge eventuellement par celui contenu dans ${PREFS_CATA_$CODE} - # par celui de l utilisateur - # le fichier de catalogue va etre lu dans la directory de l utilisateur s il exite - # dans le fichier general sinon - - self.appliEficas = appliEficas - self.code = appliEficas.code - self.salome = appliEficas.salome - if self.salome : self.name="editeur_salome.ini" - else : self.name="editeur.ini" - self.rep_mat = None - self.repIni = repIni - - if self.code == None : self.code='' - if sys.platform[0:5]=="linux" : - self.rep_user = os.path.join(os.environ['HOME'],'.config/Eficas',self.code) - else : - self.rep_user = os.path.join('C:/','.config/Eficas',self.code) - - - self.setValeursParDefaut() - - if self.code != '' : - self.lectureFichierIniStandard() - self.lectureFichierIniIntegrateur() - self.lectureFichierIniUtilisateur() - - if self.boutonDsMenuBar: - self.closeAutreCommande = True - self.closeFrameRechercheCommande = True - - #Particularite des schemas MAP - if hasattr(self,'make_ssCode'): self.make_ssCode(self.ssCode) - - #if self.appliEficas: self.parent=appliEficas.top - #else: self.parent=None - - if not os.path.isdir(self.savedir) : + #------------------------------- + def __init__(self,appliEficas,repIni): + #------------------------------- + + # Classe de base permettant de lire, afficher + # et sauvegarder les fichiers utilisateurs + # On a deux directories : la directory generale (Repertoire d install + Nom du code + # Par exemple : ~/Install_Eficas/EficasV1_14/Openturns_Wrapper + # et la directorie de l utilisateur + # HOME/.Eficas_Openturns + # Le fichier prefs.py va etre lu dans la directory generale + # puis surcharge eventuellement par celui contenu dans ${PREFS_CATA_$CODE} + # par celui de l utilisateur + # le fichier de catalogue va etre lu dans la directory de l utilisateur s il exite + # dans le fichier general sinon + + self.appliEficas = appliEficas + self.code = appliEficas.code + self.salome = appliEficas.salome + if self.salome : self.name="editeur_salome.ini" + else : self.name="editeur.ini" + self.rep_mat = None + self.repIni = repIni + + if self.code == None : self.code='' + if sys.platform[0:5]=="linux" : + self.rep_user = os.path.join(os.environ['HOME'],'.config/Eficas',self.code) + else : + self.rep_user = os.path.join('C:/','.config/Eficas',self.code) + + + self.setValeursParDefaut() + + if self.code != '' : + self.lectureFichierIniStandard() + self.lectureFichierIniIntegrateur() + self.lectureFichierIniUtilisateur() + + if self.boutonDsMenuBar: + self.closeAutreCommande = True + self.closeFrameRechercheCommande = True + + #Particularite des schemas MAP + if hasattr(self,'make_ssCode'): self.make_ssCode(self.ssCode) + + #if self.appliEficas: self.parent=appliEficas.top + #else: self.parent=None + + if not os.path.isdir(self.savedir) : + if sys.platform[0:5]=="linux" : + self.savedir=os.environ['HOME'] + else: + self.savedir='C:/' + + + + def setValeursParDefaut(self): + #----------------------------- + + # Valeurs par defaut + if not os.path.isdir(self.rep_user) : os.makedirs(self.rep_user) + self.path_doc = os.path.abspath(os.path.join(self.repIni,'..','Doc')) + self.exec_acrobat = 'acroread' + nomDir="Eficas_"+self.code if sys.platform[0:5]=="linux" : - self.savedir=os.environ['HOME'] + self.savedir = os.path.abspath(os.path.join(os.environ['HOME'],nomDir)) else: - self.savedir='C:/' - - - - def setValeursParDefaut(self): - #----------------------------- - - # Valeurs par defaut - if not os.path.isdir(self.rep_user) : os.makedirs(self.rep_user) - self.path_doc = os.path.abspath(os.path.join(self.repIni,'..','Doc')) - self.exec_acrobat = 'acroread' - nomDir="Eficas_"+self.code - if sys.platform[0:5]=="linux" : - self.savedir = os.path.abspath(os.path.join(os.environ['HOME'],nomDir)) - else: - self.savedir = os.path.abspath('C:/') - self.modeNouvCommande='initial' - self.affiche="alpha" - self.closeAutreCommande = False - self.closeFrameRechercheCommande = False - self.closeFrameRechercheCommandeSurPageDesCommandes = False - self.closeEntete = False - self.closeArbre = False - self.demandeLangue=False - self.suiteTelemac=False - self.nombreDeBoutonParLigne=0 - self.translatorFichier=None - self.dicoImages= {} - self.dicoIcones= {} - self.afficheCommandesPliees = True - self.afficheFirstPlies = False - self.simpleClic = False - self.afficheOptionnelVide=False - self.afficheListesPliees=True - self.boutonDsMenuBar=False - self.ficIcones=None - self.repIcones=None - self.differencieSiDefaut=False - self.typeDeCata='Python' - self.closeParenthese=False - self.closeOptionnel=False - self.afficheFactOptionnel=False - self.enleverActionStructures=False - self.enleverPoubellePourCommande=False - self.enleverParametres=False - self.enleverSupprimer=False - self.ajoutExecution=False - self.utilParExtensions=[] - self.rendVisiblesLesCaches=False - self.pasDeMCOptionnels=False - - self.dumpXSD=False - self.withXSD=False - self.afficheIhm=True - - - - - #-------------------------------------- - def lectureFichierIniStandard(self): - #-------------------------------------- - - name='prefs_'+self.appliEficas.code - try : - prefsCode=__import__(name) - except : - self.catalogues=[] - print ('pas de fichier de prefs') - return - for k in dir(prefsCode): - if (k[0:1] != "__" and k[-1:-2] !='__'): - valeur=getattr(prefsCode,k) - setattr(self,k,valeur) - - - - #-------------------------------------- - def lectureFichierIniIntegrateur(self): - #-------------------------------------- - # Verifie l'existence du fichier "standard" - # appelle la lecture de ce fichier - clef="PREFS_CATA_"+self.code - try : - repIntegrateur=os.path.abspath(os.environ[clef]) - except : - return - - fic_ini_integrateur=os.path.join(repIntegrateur,self.name) - if not os.path.isfile(fic_ini_integrateur): return - txt = read_file(fic_ini_integrateur) - d=locals() - try: - exec(txt, d) - except : - try : - from PyQt5.QtWidgets import QMessageBox - QMessageBox.critical( None, tr("Import du fichier de Configuration"), - tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur))) - except : - print("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)) - return - self.labels_eficas.append('rep_aide') - for k in self.labels_eficas : - try : - setattr(self,k,d[k]) - except : - pass - #Glut pour les repertoires materiaux - #et pour la doc - for k in d : - if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"): - setattr(self,k,d[k]) - - - #-------------------------------------- - def lectureFichierIniUtilisateur(self): - #-------------------------------------- - # Surcharge les parametres standards par les parametres utilisateur s'ils existent - self.fic_ini_utilisateur = os.path.join(self.rep_user,self.name) - if not os.path.isfile(self.fic_ini_utilisateur): return - - txt = read_file(self.fic_ini_utilisateur) - d=locals() - try: - exec(txt, d) - except : - l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) - try : - from PyQt5.QtWidgets import QMessageBox - QMessageBox.critical( None, tr("Import du fichier de Configuration"), - tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur))) - except : - print ("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)) - for k in self.labels_user : - try : - setattr(self,k,d[k]) - except : - pass - for k in d : - if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"): - setattr(self,k,d[k]) - - #-------------------------------------- - def saveParams(self): - #-------------------------------------- - # sauvegarde - # les nouveaux parametres dans le fichier de configuration utilisateur - # - texte="" - for clef in self.labels_user : - if hasattr(self,clef): - valeur=getattr(self,clef) - texte= texte + clef+" = " + repr(valeur) +"\n" - #Glut pour les repertoires materiaux - #et pour la doc - for k in dir(self): - if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"): - valeur=getattr(self,k) - texte= texte + k+" = " + repr(valeur) +"\n" - - f=open(self.fic_ini_utilisateur,'w+') - f.write(texte) - f.close() + self.savedir = os.path.abspath('C:/') + self.modeNouvCommande='initial' + self.affiche="alpha" + self.closeAutreCommande = False + self.closeFrameRechercheCommande = False + self.closeFrameRechercheCommandeSurPageDesCommandes = False + self.closeEntete = False + self.closeArbre = False + self.demandeLangue=False + self.suiteTelemac=False + self.nombreDeBoutonParLigne=0 + self.translatorFichier=None + self.dicoImages= {} + self.dicoIcones= {} + self.afficheCommandesPliees = True + self.afficheFirstPlies = False + self.simpleClic = False + self.afficheOptionnelVide=False + self.afficheListesPliees=True + self.boutonDsMenuBar=False + self.ficIcones=None + self.repIcones=None + self.differencieSiDefaut=False + self.typeDeCata='Python' + self.closeParenthese=False + self.closeOptionnel=False + self.afficheFactOptionnel=False + self.enleverActionStructures=False + self.enleverPoubellePourCommande=False + self.enleverParametres=False + self.enleverSupprimer=False + self.ajoutExecution=False + self.utilParExtensions=[] + self.rendVisiblesLesCaches=False + self.pasDeMCOptionnels=False + + self.dumpXSD=False + self.withXSD=False + self.afficheIhm=True + + + + + #-------------------------------------- + def lectureFichierIniStandard(self): + #-------------------------------------- + + name='prefs_'+self.appliEficas.code + try : + prefsCode=__import__(name) + except : + self.catalogues=[] + print ('pas de fichier de prefs') + return + for k in dir(prefsCode): + if (k[0:1] != "__" and k[-1:-2] !='__'): + valeur=getattr(prefsCode,k) + setattr(self,k,valeur) + + + + #-------------------------------------- + def lectureFichierIniIntegrateur(self): + #-------------------------------------- + # Verifie l'existence du fichier "standard" + # appelle la lecture de ce fichier + clef="PREFS_CATA_"+self.code + try : + repIntegrateur=os.path.abspath(os.environ[clef]) + except : + return + + fic_ini_integrateur=os.path.join(repIntegrateur,self.name) + if not os.path.isfile(fic_ini_integrateur): return + txt = read_file(fic_ini_integrateur) + d=locals() + try: + exec(txt, d) + except : + try : + from PyQt5.QtWidgets import QMessageBox + QMessageBox.critical( None, tr("Import du fichier de Configuration"), + tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur))) + except : + print("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)) + return + self.labels_eficas.append('rep_aide') + for k in self.labels_eficas : + try : + setattr(self,k,d[k]) + except : + pass + #Glut pour les repertoires materiaux + #et pour la doc + for k in d : + if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"): + setattr(self,k,d[k]) + + + #-------------------------------------- + def lectureFichierIniUtilisateur(self): + #-------------------------------------- + # Surcharge les parametres standards par les parametres utilisateur s'ils existent + self.fic_ini_utilisateur = os.path.join(self.rep_user,self.name) + if not os.path.isfile(self.fic_ini_utilisateur): return + + txt = read_file(self.fic_ini_utilisateur) + d=locals() + try: + exec(txt, d) + except : + l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) + try : + from PyQt5.QtWidgets import QMessageBox + QMessageBox.critical( None, tr("Import du fichier de Configuration"), + tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur))) + except : + print ("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)) + for k in self.labels_user : + try : + setattr(self,k,d[k]) + except : + pass + for k in d : + if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"): + setattr(self,k,d[k]) + + #-------------------------------------- + def saveParams(self): + #-------------------------------------- + # sauvegarde + # les nouveaux parametres dans le fichier de configuration utilisateur + # + texte="" + for clef in self.labels_user : + if hasattr(self,clef): + valeur=getattr(self,clef) + texte= texte + clef+" = " + repr(valeur) +"\n" + #Glut pour les repertoires materiaux + #et pour la doc + for k in dir(self): + if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"): + valeur=getattr(self,k) + texte= texte + k+" = " + repr(valeur) +"\n" + + f=open(self.fic_ini_utilisateur,'w+') + f.write(texte) + f.close() # diff --git a/InterfaceQT4/editor.py b/InterfaceQT4/editor.py index e9ab3864..987b761a 100755 --- a/InterfaceQT4/editor.py +++ b/InterfaceQT4/editor.py @@ -20,8 +20,8 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str - from builtins import range + from builtins import str + from builtins import range except : pass import types,sys,os, re @@ -45,12 +45,12 @@ from InterfaceQT4 import browser from desBaseWidget import Ui_baseWidget from InterfaceQT4.monViewTexte import ViewText -from monWidgetCreeParam import MonWidgetCreeParam +from monWidgetCreeParam import MonWidgetCreeParam DictExtensions= {"MAP" : ".map", "TELEMAC" : '.cas'} debug = False - + from InterfaceQT4.editorSsIhm import JDCEditorSsIhm @@ -82,8 +82,8 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): JDCEditorSsIhm. __init__ (self,appliEficas,fichier, jdc,units,include) if self.jdc: - comploader.chargerComposants() - self.jdc_item=Objecttreeitem.makeObjecttreeitem( self, "nom", self.jdc ) + comploader.chargerComposants() + self.jdc_item=Objecttreeitem.makeObjecttreeitem( self, "nom", self.jdc ) # Particularites IHM : met la fenetre a jour @@ -102,7 +102,7 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): if self.maConfiguration.closeOptionnel : self.fermeOptionnel() if self.maConfiguration.boutonDsMenuBar : self.appliEficas.remplitIconesCommandes() - + self.formatFichierOut = self.appliEficas.formatFichierOut self.formatFichierIn = self.appliEficas.formatFichierIn @@ -120,11 +120,11 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): self.Commandes_Ordre_Catalogue =self.readercata.Commandes_Ordre_Catalogue if self.appliEficas.readercata.demandeCatalogue==True : - nomFichierTranslation='translatorFichier'+'_'+str(self.appliEficas.readercata.labelCode) - if hasattr(self.appliEficas.maConfiguration,nomFichierTranslation) : - translatorFichier=getattr(self.appliEficas.maConfiguration,nomFichierTranslation) - from Extensions import localisation - localisation.localise(None,self.appliEficas.langue,translatorFichier=translatorFichier) + nomFichierTranslation='translatorFichier'+'_'+str(self.appliEficas.readercata.labelCode) + if hasattr(self.appliEficas.maConfiguration,nomFichierTranslation) : + translatorFichier=getattr(self.appliEficas.maConfiguration,nomFichierTranslation) + from Extensions import localisation + localisation.localise(None,self.appliEficas.langue,translatorFichier=translatorFichier) if self.jdc_item and self.appliEficas.ssIhm==False : @@ -175,7 +175,7 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): # saveFileLegerAs # --------------------------------------------- -# Methodes Surchargees +# Methodes Surchargees # --------------------------------------------- #-----------------------------------------------------------------------# @@ -187,20 +187,20 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): #--------------------------------# def informe(self,titre,txt,critique=True): #--------------------------------# - if critique : - self.afficheInfos(tr(txt),Qt.red) - QMessageBox.critical( self, tr(titre), tr(txt)) - else : - QMessageBox.warning( self, tr(titre),tr(txt)) + if critique : + self.afficheInfos(tr(txt),Qt.red) + QMessageBox.critical( self, tr(titre), tr(txt)) + else : + QMessageBox.warning( self, tr(titre),tr(txt)) #--------------------------------# def ajoutCommentaire(self): #--------------------------------# if self.tree.selectedItems()==[] : - QMessageBox.warning( self, tr("Pas de noeud selectionne"),tr("Selectionnez un Noeud \nLe commentaire sera place apres le noeud selectionne")) - return + QMessageBox.warning( self, tr("Pas de noeud selectionne"),tr("Selectionnez un Noeud \nLe commentaire sera place apres le noeud selectionne")) + return noeudAvantCommentaire=self.tree.selectedItems()[0] - if noeudAvantCommentaire ==self.tree.racine : + if noeudAvantCommentaire ==self.tree.racine : self.tree.racine.appendChild("COMMENTAIRE",pos=0) return noeudAvantCommentaire.addComment(True) @@ -224,10 +224,10 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): self.monExe.closeWriteChannel() self.w.exec_() try: - commande="rm "+ nomFichier - os.system(commande) + commande="rm "+ nomFichier + os.system(commande) except : - pass + pass def readFromStdErr(self): a=self.monExe.readAllStandardError() @@ -237,7 +237,7 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): a=self.monExe.readAllStandardOutput() self.w.view.append(str(a.data())) - + #-----------------------# def gestionParam(self): #-----------------------# @@ -259,11 +259,11 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): #----------------------------------------------# if couleur=='red' : couleur = Qt.red if self.sb: - mapalette=self.sb.palette() - mapalette.setColor( QPalette.WindowText, couleur ) - self.sb.setPalette( mapalette ); - self.sb.showMessage(message,4000) - self.couleur=couleur + mapalette=self.sb.palette() + mapalette.setColor( QPalette.WindowText, couleur ) + self.sb.setPalette( mapalette ); + self.sb.showMessage(message,4000) + self.couleur=couleur #------------------------------# def afficheAlerte(self,titre,message): @@ -285,166 +285,166 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): #---------------------------------------# def chercheNoeudSelectionne(self,copie=1): #---------------------------------------# - """ - appele par Cut et Copy pour positionner self.node_selected - """ - self.node_selected=[] - if len(self.tree.selectedItems()) == 0 : return - self.node_selected=self.tree.selectedItems() + """ + appele par Cut et Copy pour positionner self.node_selected + """ + self.node_selected=[] + if len(self.tree.selectedItems()) == 0 : return + self.node_selected=self.tree.selectedItems() #---------------------# def handleSupprimer(self): #---------------------# - self.chercheNoeudSelectionne() - if len(self.node_selected) == 0 : return - self.QWParent.noeud_a_editer = [] - if self.node_selected[0]==self.tree.racine: return - if len(self.node_selected) == 1 : self.node_selected[0].delete() - else : self.node_selected[0].deleteMultiple(self.node_selected) + self.chercheNoeudSelectionne() + if len(self.node_selected) == 0 : return + self.QWParent.noeud_a_editer = [] + if self.node_selected[0]==self.tree.racine: return + if len(self.node_selected) == 1 : self.node_selected[0].delete() + else : self.node_selected[0].deleteMultiple(self.node_selected) #---------------------# def handleRechercher(self): #---------------------# - from .monRecherche import DRecherche - monRechercheDialg=DRecherche(parent=self,fl=0) - monRechercheDialg.show() + from .monRecherche import DRecherche + monRechercheDialg=DRecherche(parent=self,fl=0) + monRechercheDialg.show() #--------------------------------# def handleRechercherDsCatalogue(self): #-----------------------------# - from .monRechercheCatalogue import DRechercheCatalogue - monRechercheDialg=DRechercheCatalogue(self.QWParent,self) - monRechercheDialg.show() + from .monRechercheCatalogue import DRechercheCatalogue + monRechercheDialg=DRechercheCatalogue(self.QWParent,self) + monRechercheDialg.show() #---------------------# def handleDeplier(self): #---------------------# - if self.tree == None : return - #self.tree.collapseAll() - if self.deplier : - #print "je plie" - self.tree.expandItem(self.tree.topLevelItem(0)) - self.deplier = False - if self.fenetreCentraleAffichee != None : - if hasattr(self.fenetreCentraleAffichee.node,'plieToutEtReaffiche'): - self.fenetreCentraleAffichee.node.plieToutEtReaffiche() - else: - #print "je deplie" - self.tree.expandItem(self.tree.topLevelItem(0)) - self.deplier = True - if self.fenetreCentraleAffichee != None : - if hasattr(self.fenetreCentraleAffichee.node,'deplieToutEtReaffiche'): - self.fenetreCentraleAffichee.node.deplieToutEtReaffiche() + if self.tree == None : return + #self.tree.collapseAll() + if self.deplier : + #print "je plie" + self.tree.expandItem(self.tree.topLevelItem(0)) + self.deplier = False + if self.fenetreCentraleAffichee != None : + if hasattr(self.fenetreCentraleAffichee.node,'plieToutEtReaffiche'): + self.fenetreCentraleAffichee.node.plieToutEtReaffiche() + else: + #print "je deplie" + self.tree.expandItem(self.tree.topLevelItem(0)) + self.deplier = True + if self.fenetreCentraleAffichee != None : + if hasattr(self.fenetreCentraleAffichee.node,'deplieToutEtReaffiche'): + self.fenetreCentraleAffichee.node.deplieToutEtReaffiche() #---------------------# def handleEditCut(self): #---------------------# - """ - Stocke dans Eficas.noeud_a_editer le noeud a couper - """ - #print "handleEditCut" - self.chercheNoeudSelectionne() - self.QWParent.edit="couper" - self.QWParent.noeud_a_editer = self.node_selected + """ + Stocke dans Eficas.noeud_a_editer le noeud a couper + """ + #print "handleEditCut" + self.chercheNoeudSelectionne() + self.QWParent.edit="couper" + self.QWParent.noeud_a_editer = self.node_selected #-----------------------# def handleEditCopy(self): #-----------------------# - """ - Stocke dans Eficas.noeud_a_editer le noeud a copier - """ - self.chercheNoeudSelectionne() - if len(self.node_selected) == 0 : return - if len(self.node_selected) == 1 : self.node_selected[0].updateNodeLabelInBlue() - else : self.node_selected[0].updatePlusieursNodeLabelInBlue(self.node_selected) - self.QWParent.edit="copier" - self.QWParent.noeud_a_editer = self.node_selected + """ + Stocke dans Eficas.noeud_a_editer le noeud a copier + """ + self.chercheNoeudSelectionne() + if len(self.node_selected) == 0 : return + if len(self.node_selected) == 1 : self.node_selected[0].updateNodeLabelInBlue() + else : self.node_selected[0].updatePlusieursNodeLabelInBlue(self.node_selected) + self.QWParent.edit="copier" + self.QWParent.noeud_a_editer = self.node_selected #------------------------# def handleEditPaste(self): #------------------------# - """ - Lance la copie de l'objet place dans self.QWParent.noeud_a_editer - Ne permet que la copie d'objets de type Commande ou MCF - """ - self.chercheNoeudSelectionne() - if (not(hasattr(self.QWParent,'noeud_a_editer'))) or len(self.QWParent.noeud_a_editer)==0: - QMessageBox.information( self, - tr("Copie impossible"), - tr("Veuillez selectionner un objet a copier")) - return - if len(self.node_selected) != 1 : - QMessageBox.information( self, - tr("Copie impossible"), - tr("Veuillez selectionner un seul objet : la copie se fera apres le noeud selectionne")) - return - noeudOuColler=self.node_selected[0] - - if len(self.QWParent.noeud_a_editer)!=1: - #self.handleEditPasteMultiple() - QMessageBox.information( self, tr("Copie impossible"), tr("Aucun Objet n a ete copie ou coupe")) - return - - noeudACopier=self.QWParent.noeud_a_editer[0] - - if (self.QWParent.edit != "couper"): - #print (noeudOuColler.item.parent.getChild(noeudOuColler.item.nom)) - try: - if noeudOuColler == self.tree.racine : - child=noeudOuColler.doPastePremier(noeudACopier) - else : - child=noeudACopier.doPaste(noeudOuColler,'after') - - if child==None or child==0: - QMessageBox.critical( self,tr( "Copie refusee"),tr('Eficas n a pas reussi a copier l objet')) - self.message = '' - self.afficheInfos("Copie refusee",Qt.red) - if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor: - try : - nom=noeudACopier.item.sd.nom - child.item.nommeSd(nom) - except : - pass - return - self.initModif() - child.select() - except : - traceback.print_exc() - QMessageBox.critical( self,tr( "Copie refusee"),tr('Copie refusee pour ce type d objet')) - self.message = '' - self.afficheInfos("Copie refusee",Qt.red) - return - - # il faut declarer le JDCDisplay_courant modifie - # suppression eventuelle du noeud selectionne - # si possible on renomme l objet comme le noeud couper - - if (self.QWParent.edit == "couper"): - if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor: - QMessageBox.critical( self, tr("Deplacement refuse"),tr('Deplacement refuse entre 2 fichiers. Seule la copie est autorisee ')) - - #if 1: - try : - # indexNoeudACopier=noeudACopier.treeParent.children.index(noeudACopier) - indexNoeudACopier=self.getTreeIndex(noeudACopier) - noeudACopier.treeParent.item.deplaceEntite(indexNoeudACopier,indexNoeudOuColler,pos) - noeudACopier.treeParent.buildChildren() - - #else: - except: - pass - self.QWParent.noeud_a_editer=[] + """ + Lance la copie de l'objet place dans self.QWParent.noeud_a_editer + Ne permet que la copie d'objets de type Commande ou MCF + """ + self.chercheNoeudSelectionne() + if (not(hasattr(self.QWParent,'noeud_a_editer'))) or len(self.QWParent.noeud_a_editer)==0: + QMessageBox.information( self, + tr("Copie impossible"), + tr("Veuillez selectionner un objet a copier")) + return + if len(self.node_selected) != 1 : + QMessageBox.information( self, + tr("Copie impossible"), + tr("Veuillez selectionner un seul objet : la copie se fera apres le noeud selectionne")) + return + noeudOuColler=self.node_selected[0] - # on rend la copie a nouveau possible en liberant le flag edit - self.QWParent.edit="copier" - noeudACopier.select() + if len(self.QWParent.noeud_a_editer)!=1: + #self.handleEditPasteMultiple() + QMessageBox.information( self, tr("Copie impossible"), tr("Aucun Objet n a ete copie ou coupe")) + return + + noeudACopier=self.QWParent.noeud_a_editer[0] + + if (self.QWParent.edit != "couper"): + #print (noeudOuColler.item.parent.getChild(noeudOuColler.item.nom)) + try: + if noeudOuColler == self.tree.racine : + child=noeudOuColler.doPastePremier(noeudACopier) + else : + child=noeudACopier.doPaste(noeudOuColler,'after') + + if child==None or child==0: + QMessageBox.critical( self,tr( "Copie refusee"),tr('Eficas n a pas reussi a copier l objet')) + self.message = '' + self.afficheInfos("Copie refusee",Qt.red) + if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor: + try : + nom=noeudACopier.item.sd.nom + child.item.nommeSd(nom) + except : + pass + return + self.initModif() + child.select() + except : + traceback.print_exc() + QMessageBox.critical( self,tr( "Copie refusee"),tr('Copie refusee pour ce type d objet')) + self.message = '' + self.afficheInfos("Copie refusee",Qt.red) + return + + # il faut declarer le JDCDisplay_courant modifie + # suppression eventuelle du noeud selectionne + # si possible on renomme l objet comme le noeud couper + + if (self.QWParent.edit == "couper"): + if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor: + QMessageBox.critical( self, tr("Deplacement refuse"),tr('Deplacement refuse entre 2 fichiers. Seule la copie est autorisee ')) + + #if 1: + try : + # indexNoeudACopier=noeudACopier.treeParent.children.index(noeudACopier) + indexNoeudACopier=self.getTreeIndex(noeudACopier) + noeudACopier.treeParent.item.deplaceEntite(indexNoeudACopier,indexNoeudOuColler,pos) + noeudACopier.treeParent.buildChildren() + + #else: + except: + pass + self.QWParent.noeud_a_editer=[] + + # on rend la copie a nouveau possible en liberant le flag edit + self.QWParent.edit="copier" + noeudACopier.select() #----------------------------------# def handleDeplaceMultiple(self): #----------------------------------# - pass + pass #----------------------------------# def handleEditPasteMultiple(self): @@ -452,270 +452,270 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): # On ne garde que les niveaux "Etape" # On insere dans l'ordre du JDC - listeNoeudsACouper=[] - listeIndex=[] - listeChild=[] - listeItem=[] - from InterfaceQT4 import compojdc - noeudOuColler=self.node_selected[0] - if not (isinstance(noeudOuColler.treeParent, compojdc.Node)): - QMessageBox.information( self, - tr("Copie impossible a cet endroit",), - tr("Veuillez selectionner une commande, un parametre, un commentaire ou une macro")) - return - indexNoeudOuColler=noeudOuColler.treeParent.children.index(noeudOuColler) - - for noeud in self.QWParent.noeud_a_editer : - if not (isinstance(noeud.treeParent, compojdc.Node)): continue - indexInTree=noeud.treeParent.children.index(noeud) - indice = 0 + listeNoeudsACouper=[] + listeIndex=[] + listeChild=[] + listeItem=[] + from InterfaceQT4 import compojdc + noeudOuColler=self.node_selected[0] + if not (isinstance(noeudOuColler.treeParent, compojdc.Node)): + QMessageBox.information( self, + tr("Copie impossible a cet endroit",), + tr("Veuillez selectionner une commande, un parametre, un commentaire ou une macro")) + return + indexNoeudOuColler=noeudOuColler.treeParent.children.index(noeudOuColler) + + for noeud in self.QWParent.noeud_a_editer : + if not (isinstance(noeud.treeParent, compojdc.Node)): continue + indexInTree=noeud.treeParent.children.index(noeud) + indice = 0 + for index in listeIndex: + if index < indexInTree : indice = indice +1 + listeIndex.insert(indice, indexInTree) + listeNoeudsACouper.insert(indice, noeud) + + noeudJdc=noeudOuColler.treeParent + dejaCrees=0 + # on les cree a l'envers parcequ'on ajoute a NoeudOuColler + listeIndex.reverse() + for index in listeIndex: + indexTravail=index + if indexNoeudOuColler < index: + indexTravail=indexTravail+dejaCrees + noeudOuColler=noeudJdc.children[indexNoeudOuColler] + noeud=noeudJdc.children[indexTravail] + child=noeud.doPaste(noeudOuColler) + listeChild.append(child) + dejaCrees=dejaCrees+1 + + self.QWParent.noeud_a_editer = [] + for i in range(len(listeIndex)): + noeud=noeudJdc.children[indexNoeudOuColler+1+i] + self.QWParent.noeud_a_editer.append(noeud) + + listeASupprimer=[] + if self.QWParent.edit !="couper" : return + for index in listeIndex: - if index < indexInTree : indice = indice +1 - listeIndex.insert(indice, indexInTree) - listeNoeudsACouper.insert(indice, noeud) - - noeudJdc=noeudOuColler.treeParent - dejaCrees=0 - # on les cree a l'envers parcequ'on ajoute a NoeudOuColler - listeIndex.reverse() - for index in listeIndex: - indexTravail=index - if indexNoeudOuColler < index: - indexTravail=indexTravail+dejaCrees - noeudOuColler=noeudJdc.children[indexNoeudOuColler] - noeud=noeudJdc.children[indexTravail] - child=noeud.doPaste(noeudOuColler) - listeChild.append(child) - dejaCrees=dejaCrees+1 - - self.QWParent.noeud_a_editer = [] - for i in range(len(listeIndex)): - noeud=noeudJdc.children[indexNoeudOuColler+1+i] - self.QWParent.noeud_a_editer.append(noeud) - - listeASupprimer=[] - if self.QWParent.edit !="couper" : return - - for index in listeIndex: - indexTravail=index - if indexNoeudOuColler < index: - indexTravail=indexTravail+(len(listeIndex)) - noeud=noeudJdc.children[indexTravail] - - listeItem.append(noeud.item) - listeASupprimer.append(noeud) - - for i in range(len(listeChild)): - self.tree.item.suppItem(listeItem[i]) - listeChild[i].item.update(listeItem[i]) - - self.QWParent.noeud_a_editer = [] + indexTravail=index + if indexNoeudOuColler < index: + indexTravail=indexTravail+(len(listeIndex)) + noeud=noeudJdc.children[indexTravail] + + listeItem.append(noeud.item) + listeASupprimer.append(noeud) + + for i in range(len(listeChild)): + self.tree.item.suppItem(listeItem[i]) + listeChild[i].item.update(listeItem[i]) + + self.QWParent.noeud_a_editer = [] #----------------------------------# def handleAjoutEtape(self,nomEtape): #----------------------------------# - self.chercheNoeudSelectionne() - if len(self.node_selected) == 0 or self.node_selected[0] == self.tree.racine : - nodeOuAjouter=self.tree.racine - nouveau=nodeOuAjouter.appendChild(nomEtape,pos='first') - else : - nodeOuAjouter=self.node_selected[0] - if nodeOuAjouter != self.tree.racine : - while nodeOuAjouter.treeParent != self.tree.racine: - nodeOuAjouter=nodeOuAjouter.treeParent - nouveau=nodeOuAjouter.appendBrother(nomEtape) - try : - self.node_selected[0].setSelected(False) - except : pass - nouveau.setSelected(True) - nouveau.affichePanneau() + self.chercheNoeudSelectionne() + if len(self.node_selected) == 0 or self.node_selected[0] == self.tree.racine : + nodeOuAjouter=self.tree.racine + nouveau=nodeOuAjouter.appendChild(nomEtape,pos='first') + else : + nodeOuAjouter=self.node_selected[0] + if nodeOuAjouter != self.tree.racine : + while nodeOuAjouter.treeParent != self.tree.racine: + nodeOuAjouter=nodeOuAjouter.treeParent + nouveau=nodeOuAjouter.appendBrother(nomEtape) + try : + self.node_selected[0].setSelected(False) + except : pass + nouveau.setSelected(True) + nouveau.affichePanneau() #---------------------------# def getFileVariable(self) : #---------------------------# - titre = tr("Choix d'un fichier XML") - texte = tr("Le fichier contient une commande MODEL\n") - texte = texte+tr('Donnez le nom du fichier XML qui contient la description des variables') - QMessageBox.information( self, titre,tr(texte)) + titre = tr("Choix d'un fichier XML") + texte = tr("Le fichier contient une commande MODEL\n") + texte = texte+tr('Donnez le nom du fichier XML qui contient la description des variables') + QMessageBox.information( self, titre,tr(texte)) - fichier = QFileDialog.getOpenFileName(self.appliEficas, - tr('Ouvrir Fichier'), - self.appliEficas.maConfiguration.savedir, - tr('Wrapper Files (*.xml);;''All Files (*)')) - return fichier + fichier = QFileDialog.getOpenFileName(self.appliEficas, + tr('Ouvrir Fichier'), + self.appliEficas.maConfiguration.savedir, + tr('Wrapper Files (*.xml);;''All Files (*)')) + return fichier #------------# def run(self): #------------# - fonction="run"+self.code - if fonction in JDCEditor.__dict__: JDCEditor.__dict__[fonction](self,) + fonction="run"+self.code + if fonction in JDCEditor.__dict__: JDCEditor.__dict__[fonction](self,) #------------# def saveRun(self): #------------# - fonction="saveRun"+self.code - if fonction in JDCEditor.__dict__: JDCEditor.__dict__[fonction](self,) + fonction="saveRun"+self.code + if fonction in JDCEditor.__dict__: JDCEditor.__dict__[fonction](self,) # --------------------------------------------- -# Methodes Non Crees dans ssIHM +# Methodes Non Crees dans ssIHM # --------------------------------------------- #---------------# def runVP(self): #---------------# - texte=self.getTextJDC("MAPVp",pourRun=1) - print (texte) + texte=self.getTextJDC("MAPVp",pourRun=1) + print (texte) #---------------# def runMAP(self): #---------------# - if not(self.jdc.isValid()): - QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution MAP")) - return - if len(self.jdc.etapes) != 1 : - QMessageBox.critical( self, tr("Execution impossible "),tr("le JDC doit contenir un et un seul composant")) - return - if self.modified or self.fichier==None : - self.fichierMapInput = self.__generateTempFilename(prefix = "map_run", suffix = ".map") - texte=self.getTextJDC("MAP") - self.writeFile( self.fichierMapInput, txt = texte) - else : - self.fichierMapInput=self.fichier - composant=self.jdc.etapes[0].nom.lower()[0:-5] - - - # :TRICKY: to determine if a component requires SALOME, loads the component from Eficas catalog - # then instantiate corresponding class and call getUseSalome() method - try: - from mapengine.spec import factory - mapComponent = factory.new(composant)[0] - - command = "map" - if mapComponent.getUseSalome(): - command += " -r sappli" - textePython=(command + " run -n "+composant +" -i "+self.fichierMapInput) - - #textePython="ls -l" - self._viewTextExecute( textePython,"map_run",".sh") - #try: - # commande="rm "+self.fichierMapInput - # os.system(commande) - #except : - # pass - except Exception as e: - print((traceback.print_exc())) + if not(self.jdc.isValid()): + QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution MAP")) + return + if len(self.jdc.etapes) != 1 : + QMessageBox.critical( self, tr("Execution impossible "),tr("le JDC doit contenir un et un seul composant")) + return + if self.modified or self.fichier==None : + self.fichierMapInput = self.__generateTempFilename(prefix = "map_run", suffix = ".map") + texte=self.getTextJDC("MAP") + self.writeFile( self.fichierMapInput, txt = texte) + else : + self.fichierMapInput=self.fichier + composant=self.jdc.etapes[0].nom.lower()[0:-5] + + + # :TRICKY: to determine if a component requires SALOME, loads the component from Eficas catalog + # then instantiate corresponding class and call getUseSalome() method + try: + from mapengine.spec import factory + mapComponent = factory.new(composant)[0] + + command = "map" + if mapComponent.getUseSalome(): + command += " -r sappli" + textePython=(command + " run -n "+composant +" -i "+self.fichierMapInput) + + #textePython="ls -l" + self._viewTextExecute( textePython,"map_run",".sh") + #try: + # commande="rm "+self.fichierMapInput + # os.system(commande) + #except : + # pass + except Exception as e: + print((traceback.print_exc())) #-------------------# def runZCRACKS(self): #-------------------# - if not(self.jdc.isValid()): - QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution ")) - return - if self.modified or self.fichier==None : - #if 1: - self.fichierZcracksInput = self.__generateTempFilename(prefix = "zcracks_run", suffix = ".z7p") - texte=self.getTextJDC("ZCRACKS",pourRun=1) - self.writeFile( self.fichierZcracksInput, txt = texte) - else : - self.fichierZcracksInput=self.fichier - try : - #commande ="Zrun -zp " - commande="more " - textePython=(commande + self.fichierZcracksInput) - self._viewTextExecute( textePython,"run_zcracks",".sh") - except Exception as e: - print((traceback.print_exc())) + if not(self.jdc.isValid()): + QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution ")) + return + if self.modified or self.fichier==None : + #if 1: + self.fichierZcracksInput = self.__generateTempFilename(prefix = "zcracks_run", suffix = ".z7p") + texte=self.getTextJDC("ZCRACKS",pourRun=1) + self.writeFile( self.fichierZcracksInput, txt = texte) + else : + self.fichierZcracksInput=self.fichier + try : + #commande ="Zrun -zp " + commande="more " + textePython=(commande + self.fichierZcracksInput) + self._viewTextExecute( textePython,"run_zcracks",".sh") + except Exception as e: + print((traceback.print_exc())) #-------------------# def runCARMELCND(self): #-------------------# - #if not(self.jdc.isValid()): - # QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution ")) - # return - if self.modified or self.fichier==None : - QMessageBox.critical( self, tr( "Execution impossible "),tr("Sauvegarder SVP avant l'execution ")) - return - if not hasattr(self,'generator'): texte=self.getTextJDC(self.formatFichierOut) - from PrepareRunCarmel import prepareRunCarmel - fichierGenerique=os.path.basename(self.fichier).split(".")[0] - repMed=os.path.dirname(self.fichier) - repExeCarmel=self.generator.get_repExeCarmel() - textePython=prepareRunCarmel(repExeCarmel,repMed,fichierGenerique) - nomFichier = self.__generateTempFilename("carmel_run", suffix = ".sh") - f=open(nomFichier,'w') - f.write(textePython) - f.close() - commande="xterm -e sh "+nomFichier +"\n" - os.system(commande) + #if not(self.jdc.isValid()): + # QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution ")) + # return + if self.modified or self.fichier==None : + QMessageBox.critical( self, tr( "Execution impossible "),tr("Sauvegarder SVP avant l'execution ")) + return + if not hasattr(self,'generator'): texte=self.getTextJDC(self.formatFichierOut) + from PrepareRunCarmel import prepareRunCarmel + fichierGenerique=os.path.basename(self.fichier).split(".")[0] + repMed=os.path.dirname(self.fichier) + repExeCarmel=self.generator.get_repExeCarmel() + textePython=prepareRunCarmel(repExeCarmel,repMed,fichierGenerique) + nomFichier = self.__generateTempFilename("carmel_run", suffix = ".sh") + f=open(nomFichier,'w') + f.write(textePython) + f.close() + commande="xterm -e sh "+nomFichier +"\n" + os.system(commande) #-------------------# def runCarmelCS(self): #-------------------# - try : - commande="runSession pilotyacsCS.py" - os.system(commande) - except Exception as e: - print((traceback.print_exc())) + try : + commande="runSession pilotyacsCS.py" + os.system(commande) + except Exception as e: + print((traceback.print_exc())) #-----------------------------------------------------# def determineNomFichier(self,path,extension): #-----------------------------------------------------# - if self.appliEficas.code in DictExtensions: - chaine1=DictExtensions[self.appliEficas.code]+" (*."+DictExtensions[self.appliEficas.code]+");;" - extensions= tr(chaine1+ "All Files (*)") - else : - extensions= tr("JDC (*.comm);;" "All Files (*)") - - if self.appliEficas.code == "MAP" : - extensions = extensions + ";; Run (*.input);;" - - fn = QFileDialog.getSaveFileName( self, - tr("sauvegarde"), path, - extensions,None, - QFileDialog.DontConfirmOverwrite) - if fn == None : return (0, None) - fn=fn[0] - if fn=='': return (0, None) - - ext = QFileInfo(fn).suffix() - if ext == '': fn+=extension - - if QFileInfo(fn).exists(): - msgBox = QMessageBox(self) - msgBox.setWindowTitle(tr("Sauvegarde du Fichier")) - msgBox.setText(tr("Le fichier")+ " "+str(fn)+ " " +tr("existe deja")) - msgBox.addButton(tr("&Ecraser"),0) - msgBox.addButton(tr("&Abandonner"),1) - abort=msgBox.exec_() - if abort == 1 : return (0, "") - return (1,fn) + if self.appliEficas.code in DictExtensions: + chaine1=DictExtensions[self.appliEficas.code]+" (*."+DictExtensions[self.appliEficas.code]+");;" + extensions= tr(chaine1+ "All Files (*)") + else : + extensions= tr("JDC (*.comm);;" "All Files (*)") + + if self.appliEficas.code == "MAP" : + extensions = extensions + ";; Run (*.input);;" + + fn = QFileDialog.getSaveFileName( self, + tr("sauvegarde"), path, + extensions,None, + QFileDialog.DontConfirmOverwrite) + if fn == None : return (0, None) + fn=fn[0] + if fn=='': return (0, None) + + ext = QFileInfo(fn).suffix() + if ext == '': fn+=extension + + if QFileInfo(fn).exists(): + msgBox = QMessageBox(self) + msgBox.setWindowTitle(tr("Sauvegarde du Fichier")) + msgBox.setText(tr("Le fichier")+ " "+str(fn)+ " " +tr("existe deja")) + msgBox.addButton(tr("&Ecraser"),0) + msgBox.addButton(tr("&Abandonner"),1) + abort=msgBox.exec_() + if abort == 1 : return (0, "") + return (1,fn) #-----------------# def saveRunMAP(self): #-----------------# extension=".input" if not(self.jdc.isValid()): - QMessageBox.critical( self, tr( "Sauvegarde de l'input impossible "), - tr("Un JdC valide est necessaire pour creer un .input") - ) - return + QMessageBox.critical( self, tr( "Sauvegarde de l'input impossible "), + tr("Un JdC valide est necessaire pour creer un .input") + ) + return try : - composant=self.jdc.etapes[0].nom.lower()[0:-5] + composant=self.jdc.etapes[0].nom.lower()[0:-5] except : - QMessageBox.critical( self, tr( "Sauvegarde de l'input impossible "), - tr("Choix du composant obligatoire") - ) - return + QMessageBox.critical( self, tr( "Sauvegarde de l'input impossible "), + tr("Choix du composant obligatoire") + ) + return if hasattr(self.maConfiguration, "savedir"): path=self.maConfiguration.savedir else : path='C:/' monNomFichier="" if self.fichier is not None and self.fichier != "" : - maBase=str(QFileInfo(self.fichier).baseName())+".input" - monPath=str(QFileInfo(self.fichier).absolutePath()) - monNomFichier=os.path.join(monPath,maBase) + maBase=str(QFileInfo(self.fichier).baseName())+".input" + monPath=str(QFileInfo(self.fichier).absolutePath()) + monNomFichier=os.path.join(monPath,maBase) elif hasattr(self,'monNomFichierInput'): monNomFichier=self.monNomFichierInput @@ -726,10 +726,10 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): for c in monDialog.children(): if isinstance(c,QDialogButtonBox): - for b in c.children(): - if isinstance(b,QPushButton): - avant=b.text() - if avant=="&Open": b.setText("Save") + for b in c.children(): + if isinstance(b,QPushButton): + avant=b.text() + if avant=="&Open": b.setText("Save") mesFiltres= "input Map (*.input);;All Files (*)" monDialog.setNameFilters(mesFiltres) if monNomFichier!="" : monDialog.selectFile(monNomFichier) @@ -764,13 +764,13 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): #-----------------------------------------# try : #if 1: - from ajoutGroupe import handleAjoutGroupFiltre - #print listeGroup - handleAjoutGroupFiltre(self,listeGroup) - #print "apres handleAjoutGroupFiltre" + from ajoutGroupe import handleAjoutGroupFiltre + #print listeGroup + handleAjoutGroupFiltre(self,listeGroup) + #print "apres handleAjoutGroupFiltre" except : #else : - pass + pass #-----------------------------------------------------------------# @@ -781,15 +781,15 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): #saveas=True # Pour forcer le nom self.generator=self.maConfiguration.mesGenerators.plugins[self.formatFichierOut]() if self.fichierComplet is None or saveas: - if path is None: path=self.maConfiguration.savedir - bOK, fn=self.determineNomFichier(path,extension) - if bOK == 0 : return (0, None) - if fn == None : return (0, None) - if fn== '' : return (0, None) + if path is None: path=self.maConfiguration.savedir + bOK, fn=self.determineNomFichier(path,extension) + if bOK == 0 : return (0, None) + if fn == None : return (0, None) + if fn== '' : return (0, None) - ulfile = os.path.abspath(fn) - self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] - fn = QDir.toNativeSeparators(fn) + ulfile = os.path.abspath(fn) + self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] + fn = QDir.toNativeSeparators(fn) self.fichierComplet = os.path.splitext(fn)[0]+extension @@ -819,43 +819,43 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): return (0, None) # do nothing if text wasn't changed if self.appliEficas.code in DictExtensions : - extension=DictExtensions[self.appliEficas.code] + extension=DictExtensions[self.appliEficas.code] else : - extension='.comm' + extension='.comm' newName = None fn = self.fichier if self.fichier is None or saveas: - if path is None: path=self.maConfiguration.savedir - bOK, fn=self.determineNomFichier(path,extension) - if bOK == 0 : return (0, None) - if fn == None : return (0, None) - if fn== '' : return (0, None) + if path is None: path=self.maConfiguration.savedir + bOK, fn=self.determineNomFichier(path,extension) + if bOK == 0 : return (0, None) + if fn == None : return (0, None) + if fn== '' : return (0, None) - ulfile = os.path.abspath(fn) - self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] - fn = QDir.toNativeSeparators(fn) - newName = fn + ulfile = os.path.abspath(fn) + self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] + fn = QDir.toNativeSeparators(fn) + newName = fn if not (self.writeFile(fn,formatLigne=formatLigne)): return (0, None) self.fichier = fn self.modified = False if self.fileInfo is None or saveas: - self.fileInfo = QFileInfo(self.fichier) - self.fileInfo.setCaching(0) + self.fileInfo = QFileInfo(self.fichier) + self.fileInfo.setCaching(0) self.lastModified = self.fileInfo.lastModified() if newName is not None: - self.appliEficas.addToRecentList(newName) - self.tree.racine.item.getObject().nom=os.path.basename(newName) - self.tree.racine.updateNodeLabel() + self.appliEficas.addToRecentList(newName) + self.tree.racine.item.getObject().nom=os.path.basename(newName) + self.tree.racine.updateNodeLabel() + - if self.jdc.cata.modeleMetier:self.jdc.toXml(self.fichier) if self.jdc.cata.modeleMetier and self.jdc.isValid(): if self.generator != self.XMLgenerator : - self.XMLgenerator.gener(self.jdc) - self.XMLgenerator.writeDefault(fn) + self.XMLgenerator.gener(self.jdc) + self.XMLgenerator.writeDefault(fn) if self.jdc.isValid() != 0 and hasattr(self.generator, "writeDefault"): #if hasattr(self.generator, "writeDefault"): @@ -869,14 +869,14 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): msgBox.addButton(tr("&Annuler"),2) res=msgBox.exec_() if res == 0 : - self.generator.writeDefault(fn) - return (1, self.fichier) + self.generator.writeDefault(fn) + return (1, self.fichier) if res == 2 : return (0, None) if self.appliEficas.salome : self.appliEficas.close() else : sys.exit(1) if self.salome : - self.appliEficas.addJdcInSalome( self.fichier) + self.appliEficas.addJdcInSalome( self.fichier) self.modified = 0 nouveauTitre=self.titre+" "+str(os.path.basename(self.fichier)) self.appliEficas.setWindowTitle(nouveauTitre) @@ -902,8 +902,8 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): the name of the saved file """ if fileName != None : - self.fichier = fileName - return self.saveFile() + self.fichier = fileName + return self.saveFile() return self.saveFile(path,1,"beautifie") @@ -957,10 +957,10 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): CONTEXT.setCurrentStep(etape) etape.buildIncludeEtape(texte) if not (etape.text_included_converted) : - QMessageBox.information( self, - tr("Impossible d importer le texte"), - etape.text_included_error) - + QMessageBox.information( self, + tr("Impossible d importer le texte"), + etape.text_included_error) + self.tree.racine.buildChildren() #-----------------------------------# @@ -969,16 +969,16 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): # ajoute une etape de JdC a partir d un texte monItem=itemApres etape=monItem.item.object - + CONTEXT.setCurrentStep(etape) try : - ok=etape.buildIncludeEtape(texte) + ok=etape.buildIncludeEtape(texte) except : - ok=0 + ok=0 if not ok : - QMessageBox.information( self, - tr("Import texte"), - tr("Impossible d importer le texte")) + QMessageBox.information( self, + tr("Import texte"), + tr("Impossible d importer le texte")) self.tree.racine.buildChildren() return ok @@ -988,13 +988,13 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): # ajoute une etape de JdC a partir d un texte CONTEXT.setCurrentStep(etape) try : - ok=etape.buildIncludeEtape(texte,doitEtreValide=0) + ok=etape.buildIncludeEtape(texte,doitEtreValide=0) except : - ok=0 + ok=0 if not ok : - QMessageBox.information( self, - tr("Import texte"), - tr("Impossible d importer le texte")) + QMessageBox.information( self, + tr("Import texte"), + tr("Impossible d importer le texte")) self.tree.racine.buildChildren() return ok @@ -1009,197 +1009,197 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): #----------------------------------------- def initSplitterSizes(self, nbWidget=3): #----------------------------------------- - #print ("je passe ds initSplitterSizes", nbWidget) + #print ("je passe ds initSplitterSizes", nbWidget) - if self.code in [ 'Adao', 'ADAO','MAP' ] : self.splitterSizes3=[1,1550,300] - #elif self.code in [ 'MAP'] : self.splitterSizes3=[700,300] - else : self.splitterSizes3=[150,1000,300] + if self.code in [ 'Adao', 'ADAO','MAP' ] : self.splitterSizes3=[1,1550,300] + #elif self.code in [ 'MAP'] : self.splitterSizes3=[700,300] + else : self.splitterSizes3=[150,1000,300] - if self.code in [ 'Adao', 'ADAO','MAP' ] : self.splitterSizes2=[5,1500] - else : self.splitterSizes2=[300,1000] + if self.code in [ 'Adao', 'ADAO','MAP' ] : self.splitterSizes2=[5,1500] + else : self.splitterSizes2=[300,1000] #----------------------------------------- def restoreSplitterSizes(self,nbWidget=3): #---------------------------------------- - - #traceback.print_stack() - #print ("je passe ds restoreSplitterSizes") - if not(hasattr(self,'splitter')) : return - if nbWidget==2 : newSizes=self.splitterSizes2 - if nbWidget==3 : newSizes=self.splitterSizes3 - #self.inhibeSplitter = 1 - #print (newSizes) - self.splitter.setSizes(newSizes) - #self.inhibeSplitter = 0 - QApplication.processEvents() - # seule la fentetre du milieu est necessaire - self.splitter.widget(1).resizeEvent=self.saveSplitterSizes - + + #traceback.print_stack() + #print ("je passe ds restoreSplitterSizes") + if not(hasattr(self,'splitter')) : return + if nbWidget==2 : newSizes=self.splitterSizes2 + if nbWidget==3 : newSizes=self.splitterSizes3 + #self.inhibeSplitter = 1 + #print (newSizes) + self.splitter.setSizes(newSizes) + #self.inhibeSplitter = 0 + QApplication.processEvents() + # seule la fentetre du milieu est necessaire + self.splitter.widget(1).resizeEvent=self.saveSplitterSizes + #----------------------------------------- def saveSplitterSizes(self,event): #----------------------------------------- - #print ("je passe ds saveSplitterSizes") - if self.inhibeSplitter : return - if self.widgetOptionnel == None : self.splitterSizes2 = self.splitter.sizes()[0:2] - else : self.splitterSizes3 = self.splitter.sizes()[0:3] + #print ("je passe ds saveSplitterSizes") + if self.inhibeSplitter : return + if self.widgetOptionnel == None : self.splitterSizes2 = self.splitter.sizes()[0:2] + else : self.splitterSizes3 = self.splitter.sizes()[0:3] #------------------------ def fermeOptionnel(self): #------------------------ - if self.widgetOptionnel == None : return + if self.widgetOptionnel == None : return - self.inhibeSplitter=1 - self.widgetOptionnel.setParent(None) - self.widgetOptionnel.close() - self.widgetOptionnel.deleteLater() - self.widgetOptionnel=None - self.inhibeSplitter=0 - self.restoreSplitterSizes(2) + self.inhibeSplitter=1 + self.widgetOptionnel.setParent(None) + self.widgetOptionnel.close() + self.widgetOptionnel.deleteLater() + self.widgetOptionnel=None + self.inhibeSplitter=0 + self.restoreSplitterSizes(2) #------------------------ def ajoutOptionnel(self): #------------------------ - #if len(self.splitterSizes) == 2 : self.splitterSizes.append(self.oldSizeWidgetOptionnel) - #else : self.splitterSizes[2] = self.oldSizeWidgetOptionnel # ceinture pour les close bizarres - #self.splitterSizes[1] = self.splitterSizes[1] - self.splitterSizes[2] - - self.restoreSplitterSizes(3) + #if len(self.splitterSizes) == 2 : self.splitterSizes.append(self.oldSizeWidgetOptionnel) + #else : self.splitterSizes[2] = self.oldSizeWidgetOptionnel # ceinture pour les close bizarres + #self.splitterSizes[1] = self.splitterSizes[1] - self.splitterSizes[2] + + self.restoreSplitterSizes(3) #------------------------ def fermeArbre(self): #------------------------ - #print (self.widgetTree) - self.oldWidgetTree=self.widgetTree - self.widgetTree.hide() - #self.widgetTree=None + #print (self.widgetTree) + self.oldWidgetTree=self.widgetTree + self.widgetTree.hide() + #self.widgetTree=None #------------------------ def ouvreArbre(self): #------------------------ - #print ('je passe la') - #print (self.widgetTree) - #self.widgetTree=self.oldWidgetTree - self.widgetTree.show() - #self.restoreSplitterSizes(3) + #print ('je passe la') + #print (self.widgetTree) + #self.widgetTree=self.oldWidgetTree + self.widgetTree.show() + #self.restoreSplitterSizes(3) #----------------------- def getEtapeCourante(self) : #----------------------- - if len(self.tree.selectedItems()) != 1 : return None - etape=self.tree.selectedItems()[0].item.object.getEtape() - return etape + if len(self.tree.selectedItems()) != 1 : return None + etape=self.tree.selectedItems()[0].item.object.getEtape() + return etape #----------------------------- def getTreeIndex(self,noeud): #---------------------------- - indexNoeud=-1 - if noeud in noeud.treeParent.children : - indexNoeud=noeud.treeParent.children.index(noeud) - else : - if hasattr(noeud,'vraiParent') : - noeudVrai = noeud - noeudVraiParent = noeud.vraiParent - while noeudVraiParent != noeud.treeParent and hasattr(noeudVraiParent,'vraiParent') : - noeudVrai = noeudVraiParent - noeudVraiParent = noeudVraiParent.vraiParent - pass - if noeudVraiParent == noeud.treeParent : - indexNoeud=noeud.treeParent.children.index(noeudVrai) - pass - pass - pass - return indexNoeud + indexNoeud=-1 + if noeud in noeud.treeParent.children : + indexNoeud=noeud.treeParent.children.index(noeud) + else : + if hasattr(noeud,'vraiParent') : + noeudVrai = noeud + noeudVraiParent = noeud.vraiParent + while noeudVraiParent != noeud.treeParent and hasattr(noeudVraiParent,'vraiParent') : + noeudVrai = noeudVraiParent + noeudVraiParent = noeudVraiParent.vraiParent + pass + if noeudVraiParent == noeud.treeParent : + indexNoeud=noeud.treeParent.children.index(noeudVrai) + pass + pass + pass + return indexNoeud #-------------------# Pour execution avec output et error dans le bash def runPSEN(self): #-------------------# - - #if self.modified or self.fichier==None : self.saveFile() - self.saveFile() - - #lancement avec le .bat - path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','PSEN_Eficas','PSEN')) - WrapperFilePath = os.path.join(path1, 'PSSEWrapper.py') - import subprocess - p = subprocess.Popen(['python',WrapperFilePath]) - (out,err)=p.communicate() - print (out) - print (err) + + #if self.modified or self.fichier==None : self.saveFile() + self.saveFile() + + #lancement avec le .bat + path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','PSEN_Eficas','PSEN')) + WrapperFilePath = os.path.join(path1, 'PSSEWrapper.py') + import subprocess + p = subprocess.Popen(['python',WrapperFilePath]) + (out,err)=p.communicate() + print (out) + print (err) #-------------------# Pour execution avec output et error dans le bash def runPSEN_N1(self): #-------------------# - - - self.saveFile() - path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs')) - sys.path.append(path1) - - if not(self.jdc.isValid()): - QMessageBox.information( self, tr( "Unvalid JDC"),tr("incorrect keywords will be ignored")) - if 'dicoImbrique' in generator.plugins: - self.generator=generator.plugins['dicoImbrique']() - jdc_formate=self.generator.gener(self.jdc) - dico=self.generator.Dico - - ###to delete - #fileDico = r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py' - fileDico = os.path.join(path1, 'dicoN1.py') #r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py' - f = open( str(fileDico), 'w') - f.write("Dico =" + str(dico) ) - f.close() - ### - - - print ('in runPSEN_N1', dico) - print (dico) - from Run import run - run(dico) - #res,txt_exception=run(dico) - #if res : QMessageBox.information( self, tr("fin de script run"), txt_exception) - #else : QMessageBox.critical( self, tr("Erreur fatale script run"), txt_exception) - + + + self.saveFile() + path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs')) + sys.path.append(path1) + + if not(self.jdc.isValid()): + QMessageBox.information( self, tr( "Unvalid JDC"),tr("incorrect keywords will be ignored")) + if 'dicoImbrique' in generator.plugins: + self.generator=generator.plugins['dicoImbrique']() + jdc_formate=self.generator.gener(self.jdc) + dico=self.generator.Dico + + ###to delete + #fileDico = r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py' + fileDico = os.path.join(path1, 'dicoN1.py') #r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py' + f = open( str(fileDico), 'w') + f.write("Dico =" + str(dico) ) + f.close() + ### + + + print ('in runPSEN_N1', dico) + print (dico) + from Run import run + run(dico) + #res,txt_exception=run(dico) + #if res : QMessageBox.information( self, tr("fin de script run"), txt_exception) + #else : QMessageBox.critical( self, tr("Erreur fatale script run"), txt_exception) + #-------------------# Pour execution avec output et error dans le bash def process_N1(self): #-------------------# - path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs')) - sys.path.append(path1) + path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs')) + sys.path.append(path1) - if 'dicoImbrique' in generator.plugins: - self.generator=generator.plugins['dicoImbrique']() - jdc_formate=self.generator.gener(self.jdc) - dico=self.getDico() #generator.Dico + if 'dicoImbrique' in generator.plugins: + self.generator=generator.plugins['dicoImbrique']() + jdc_formate=self.generator.gener(self.jdc) + dico=self.getDico() #generator.Dico - for k in dico['CONTINGENCY_PROCESSING']: - #print (k) - if k[0:19] == 'Component_List_For_' or k[0:21] =='Contingency_List_For_' : - newK=k.replace('__',' ') - l="'"+str(newK)+"'" - dico['CONTINGENCY_PROCESSING'][l]=dico['CONTINGENCY_PROCESSING'][k] - del dico['CONTINGENCY_PROCESSING'][k] + for k in dico['CONTINGENCY_PROCESSING']: + #print (k) + if k[0:19] == 'Component_List_For_' or k[0:21] =='Contingency_List_For_' : + newK=k.replace('__',' ') + l="'"+str(newK)+"'" + dico['CONTINGENCY_PROCESSING'][l]=dico['CONTINGENCY_PROCESSING'][k] + del dico['CONTINGENCY_PROCESSING'][k] - ###to delete - fileDico = os.path.join(path1, 'dicoN1_process.py') - f = open( str(fileDico), 'w') - f.write("Dico =" + str(dico) ) - f.close() - ### - return dico + ###to delete + fileDico = os.path.join(path1, 'dicoN1_process.py') + f = open( str(fileDico), 'w') + f.write("Dico =" + str(dico) ) + f.close() + ### + return dico #return self.getDico() #-------------------# Pour execution avec output et error dans le bash def process_VP(self): #-------------------# - if 'dicoImbrique' in generator.plugins: - self.generator=generator.plugins['dicoImbrique']() - jdc_formate=self.generator.gener(self.jdc) - dico=self.getDico() #generator.Dico - return dico + if 'dicoImbrique' in generator.plugins: + self.generator=generator.plugins['dicoImbrique']() + jdc_formate=self.generator.gener(self.jdc) + dico=self.getDico() #generator.Dico + return dico if __name__ == "__main__": print ('in main') diff --git a/InterfaceQT4/editorSsIhm.py b/InterfaceQT4/editorSsIhm.py index d6fa7298..553d4dc2 100755 --- a/InterfaceQT4/editorSsIhm.py +++ b/InterfaceQT4/editorSsIhm.py @@ -20,8 +20,8 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str - from builtins import range + from builtins import str + from builtins import range except : pass import types,sys,os, re @@ -64,7 +64,7 @@ class JDCEditorSsIhm : if fichier != None : self.extensionFichier = os.path.splitext(fichier)[1] else : self.extensionFichier = None self.jdc = jdc - self.first = True + self.first = True self.jdc_item = None self.dicoNouveauxMC = {} self.dicoNouveauxFact = {} @@ -80,15 +80,15 @@ class JDCEditorSsIhm : if not hasattr ( self.appliEficas, 'readercata') or self.appliEficas.readercata.demandeCatalogue==True or self.appliEficas.multi==True: - if self.maConfiguration.typeDeCata == 'XML' : - from InterfaceQT4 import readercataXML as readercata - else : - from InterfaceQT4 import readercata - self.readercata = readercata.ReaderCata( self, self.appliEficas ) - self.appliEficas.readercata=self.readercata - self.appliEficas.code=self.code + if self.maConfiguration.typeDeCata == 'XML' : + from InterfaceQT4 import readercataXML as readercata + else : + from InterfaceQT4 import readercata + self.readercata = readercata.ReaderCata( self, self.appliEficas ) + self.appliEficas.readercata=self.readercata + self.appliEficas.code=self.code else : - self.readercata=self.appliEficas.readercata + self.readercata=self.appliEficas.readercata if self.readercata.fichierCata == None : return #Sortie Salome self.titre=self.readercata.titre @@ -103,30 +103,30 @@ class JDCEditorSsIhm : try: - self.maConfiguration.generator_module - _module = __import__(self.maConfiguration.generator_module) - info = _module.entryPoint() - generator.plugins.addEntryPoint(info) + self.maConfiguration.generator_module + _module = __import__(self.maConfiguration.generator_module) + info = _module.entryPoint() + generator.plugins.addEntryPoint(info) except: - pass + pass try: - self.maConfiguration.convert_module - #print self.maConfiguration.convert_module - _module = __import__(self.maConfiguration.convert_module) - info = _module.entryPoint() - convert.plugins.addEntryPoint(info) + self.maConfiguration.convert_module + #print self.maConfiguration.convert_module + _module = __import__(self.maConfiguration.convert_module) + info = _module.entryPoint() + convert.plugins.addEntryPoint(info) except : - pass + pass self.maConfiguration.mesGenerators = generator self.maConfiguration.mesconvertisseurs = convert try : self.XMLgenerator=generator.plugins['xml']() except : self.XMLgenerator=None - + if self.formatFichierOut in generator.plugins.keys(): - self.generator = generator.plugins[self.formatFichierOut]() + self.generator = generator.plugins[self.formatFichierOut]() self.fileInfo = None @@ -141,21 +141,21 @@ class JDCEditorSsIhm : self.nouveau=0 if self.fichier is not None: # fichier jdc fourni if jdc==None : - #print ('PNPN : chgt try en if') - try : - #if 1 : - self.jdc = self.readFile(self.fichier) - except : - print ("mauvaise lecture du fichier") - if self.salome : - try : self.appliEficas.addJdcInSalome( self.fichier) - except : print ("mauvais enregistrement dans Salome") + #print ('PNPN : chgt try en if') + try : + #if 1 : + self.jdc = self.readFile(self.fichier) + except : + print ("mauvaise lecture du fichier") + if self.salome : + try : self.appliEficas.addJdcInSalome( self.fichier) + except : print ("mauvais enregistrement dans Salome") else : - self.jdc=jdc + self.jdc=jdc if self.jdc is not None and units is not None: - self.jdc.recorded_units=units - self.jdc.old_recorded_units=units + self.jdc.recorded_units=units + self.jdc.old_recorded_units=units else: if not self.jdc: # nouveau jdc @@ -168,10 +168,10 @@ class JDCEditorSsIhm : self.jdc.lang = self.appliEficas.langue self.jdc.aReafficher=False txt_exception = None - if not jdc: + if not jdc: if self.extensionFichier == '.xml' : - if self.appliEficas.maConfiguration.withXSD: self.jdc.analyseXML() - else : print ('run MDM with -x option (MDM for XML)'); exit() + if self.appliEficas.maConfiguration.withXSD: self.jdc.analyseXML() + else : print ('run MDM with -x option (MDM for XML)'); exit() else : self.jdc.analyse() txt_exception = self.jdc.cr.getMessException() if txt_exception : @@ -199,14 +199,14 @@ class JDCEditorSsIhm : formatIn=self.appliEficas.formatFichierIn if self.extensionFichier == '.xml' and self.appliEficas.maConfiguration.withXSD: formatIn='xml' if formatIn in convert.plugins: - # Le convertisseur existe on l'utilise - p=convert.plugins[formatIn]() - p.readfile(fn) + # Le convertisseur existe on l'utilise + p=convert.plugins[formatIn]() + p.readfile(fn) - if p.text=="" : self.nouveau=1 - #print ('PNPN --> CIST a faire') + if p.text=="" : self.nouveau=1 + #print ('PNPN --> CIST a faire') - if formatIn != 'xml': + if formatIn != 'xml': pareil,texteNew=self.verifieChecksum(p.text) if not pareil : self.informe(("fichier modifie"),("Attention! fichier change hors EFICAS"),False) p.text=texteNew @@ -215,7 +215,7 @@ class JDCEditorSsIhm : p.text=texteNew text=p.convert('exec',self.appliEficas) if not p.cr.estvide(): self.afficheInfos("Erreur a la conversion",'red') - else: + else: text=p.text else : self.afficheInfos("Type de fichier non reconnu",'red') @@ -264,15 +264,15 @@ class JDCEditorSsIhm : jdc.lang = self.appliEficas.langue if units is not None: - jdc.recorded_units=units - jdc.old_recorded_units=units - # chgt le 15/10/19 + jdc.recorded_units=units + jdc.old_recorded_units=units + # chgt le 15/10/19 # Attention positionne contexte ? # est ce qu on ne doit pas changer le format en Accas si on vient d accas ? jdc.editor=self return jdc - #--------------------------------# + #--------------------------------# def _newJDCInclude( self ,units = None): #--------------------------------# """ @@ -302,8 +302,8 @@ class JDCEditorSsIhm : J.editor=self J.analyse() if units is not None: - J.recorded_units=units - J.old_recorded_units=units + J.recorded_units=units + J.old_recorded_units=units return J @@ -339,26 +339,26 @@ class JDCEditorSsIhm : #-----------------------# def generDico(self): #-----------------------# - if 'dico' in generator.plugins: - self.generator=generator.plugins['dico']() - #print (self.generator) - jdc_formate=self.generator.gener(self.jdc) - #print (jdc_formate) - dico=self.generator.Dico - #print (dico) - return dico + if 'dico' in generator.plugins: + self.generator=generator.plugins['dico']() + #print (self.generator) + jdc_formate=self.generator.gener(self.jdc) + #print (jdc_formate) + dico=self.generator.Dico + #print (dico) + return dico #-----------------------# def viewJdcSource(self): #-----------------------# if self.fichier == None : return if os.path.isfile(self.fichier): - f=open(self.fichier,'r') - texteSource=f.read() - f.close() - self._viewText(texteSource, "JDC_SOURCE") + f=open(self.fichier,'r') + texteSource=f.read() + f.close() + self._viewText(texteSource, "JDC_SOURCE") else : - self._viewText("file doesn't exist", "JDC_SOURCE") + self._viewText("file doesn't exist", "JDC_SOURCE") #-----------------------# @@ -378,7 +378,7 @@ class JDCEditorSsIhm : def viewJdcRegles(self): #-----------------------# # on ajoute les regles - texte_global, test_global = self.jdc.verifRegles() + texte_global, test_global = self.jdc.verifRegles() self._viewText(texte_global, "JDC_REGLES") #-----------------------# @@ -391,16 +391,16 @@ class JDCEditorSsIhm : #---------------------# def getFileName(self): #---------------------# - return self.fichier + return self.fichier #-------------------# def initModif(self): #-------------------# - """ - Met l'attribut modified a 'o' : utilise par Eficas pour savoir - si un JDC doit etre sauvegarde avant destruction ou non - """ - self.modified = True + """ + Met l'attribut modified a 'o' : utilise par Eficas pour savoir + si un JDC doit etre sauvegarde avant destruction ou non + """ + self.modified = True #--------------------------------------------------# @@ -419,8 +419,8 @@ class JDCEditorSsIhm : txt = self.getTextJDC(self.formatFichierOut,formatLigne=formatLigne) eol = '\n' if len(txt) >= len(eol): - if txt[-len(eol):] != eol: - txt += eol + if txt[-len(eol):] != eol: + txt += eol else: txt += eol txt=self.ajoutVersionCataDsJDC(txt) @@ -437,34 +437,34 @@ class JDCEditorSsIhm : print('Sauvegarde du Fichier', 'Le fichier'+str(fn) + 'n a pas pu etre sauvegarde :' , str(why)) self.afficheInfos('Le fichier'+str(fn) + 'n a pas pu etre sauvegarde ' , 'red') return 0 - + #-----------------------------------------------------------# def getTextJDC(self,format = None,pourRun=0,formatLigne="beautifie"): #-----------------------------------------------------------# - if self.code == "MAP" and not(format in generator.plugins): format = "MAP" - if format == None : format = self.formatFichierOut - if format in generator.plugins: - - # Le generateur existe on l'utilise - self.generator=generator.plugins[format]() - try : - jdc_formate=self.generator.gener(self.jdc,format=formatLigne,config=self.appliEficas.maConfiguration,appliEficas=self.appliEficas) - if pourRun : jdc_formate=self.generator.textePourRun - if self.code == 'TELEMAC' : jdc_formate=self.generator.texteDico - except ValueError as e: - self.informe( "Erreur a la generation",str(e),'red') - return - - if not self.generator.cr.estvide(): - self.informe("Erreur a la generation","EFICAS ne sait pas convertir ce JDC",'red') + if self.code == "MAP" and not(format in generator.plugins): format = "MAP" + if format == None : format = self.formatFichierOut + if format in generator.plugins: + + # Le generateur existe on l'utilise + self.generator=generator.plugins[format]() + try : + jdc_formate=self.generator.gener(self.jdc,format=formatLigne,config=self.appliEficas.maConfiguration,appliEficas=self.appliEficas) + if pourRun : jdc_formate=self.generator.textePourRun + if self.code == 'TELEMAC' : jdc_formate=self.generator.texteDico + except ValueError as e: + self.informe( "Erreur a la generation",str(e),'red') + return + + if not self.generator.cr.estvide(): + self.informe("Erreur a la generation","EFICAS ne sait pas convertir ce JDC",'red') + return "" + else: + return jdc_formate + else: + # Il n'existe pas c'est une erreur + self.informe("Format inconnu", self.format + " non reconnu" ) return "" - else: - return jdc_formate - else: - # Il n'existe pas c'est une erreur - self.informe("Format inconnu", self.format + " non reconnu" ) - return "" #------------------------------# def verifieChecksum(self,text): @@ -477,48 +477,48 @@ class JDCEditorSsIhm : checkAvant=text[indexDeb:indexFin+13] textJDC=text[0:indexDeb]+text[indexFin+13:-1] if self.code != 'PSEN' and self.code != 'PSEN_N1': - checksum=self.getChecksum(textJDC) - pareil=(checkAvant==checksum) + checksum=self.getChecksum(textJDC) + pareil=(checkAvant==checksum) else : - pareil=1 + pareil=1 return pareil, textJDC #---------------------------# def getChecksum(self,texte): #---------------------------# try : - import haslib - newtexte=texte.replace('"','\\"') - hash_checksum = hashlib.md5() - hash_checksum.update(newtexte.encode('utf-8')) - checksum = hash_checksum.hexdigest() - ligne = ligne="#CHECKSUM:"+checksum+":FIN CHECKSUM" - except : - try : - newtexte=texte.replace('"','\\"') - commande='echo "'+newtexte+'"|md5sum' - a=os.popen(commande) - checksum=a.read() - a.close() - except : - checksum='Fichier trop long \n' - ligne="#CHECKSUM:"+checksum[0:-1]+":FIN CHECKSUM" - return ligne + import haslib + newtexte=texte.replace('"','\\"') + hash_checksum = hashlib.md5() + hash_checksum.update(newtexte.encode('utf-8')) + checksum = hash_checksum.hexdigest() + ligne = ligne="#CHECKSUM:"+checksum+":FIN CHECKSUM" + except : + try : + newtexte=texte.replace('"','\\"') + commande='echo "'+newtexte+'"|md5sum' + a=os.popen(commande) + checksum=a.read() + a.close() + except : + checksum='Fichier trop long \n' + ligne="#CHECKSUM:"+checksum[0:-1]+":FIN CHECKSUM" + return ligne #----------------------# def getDico(self): #---------------------# - if 'dicoImbrique' in generator.plugins: - self.generator=generator.plugins['dicoImbrique']() - #print (self.generator) - jdc_formate=self.generator.gener(self.jdc) - dico=self.generator.Dico - return dico - else : - self.afficheInfos(tr("Format %s non reconnu" , 'Dictionnaire Imbrique' ),'red') - return "" - - #-----------------------------------------# + if 'dicoImbrique' in generator.plugins: + self.generator=generator.plugins['dicoImbrique']() + #print (self.generator) + jdc_formate=self.generator.gener(self.jdc) + dico=self.generator.Dico + return dico + else : + self.afficheInfos(tr("Format %s non reconnu" , 'Dictionnaire Imbrique' ),'red') + return "" + + #-----------------------------------------# def chercheGroupes(self): #-----------------------------------------# listeMA,listeNO=self.getTextJDC("GroupMA") @@ -530,18 +530,18 @@ class JDCEditorSsIhm : dicoCourant={} format = self.appliEficas.formatFichierOut if format in generator.plugins: - # Le generateur existe on l'utilise - self.generator=generator.plugins[format]() - jdc_formate=self.generator.gener(self.jdc,format='beautifie',config=self.appliEficas.maConfiguration) - dicoCourant=self.generator.dico + # Le generateur existe on l'utilise + self.generator=generator.plugins[format]() + jdc_formate=self.generator.gener(self.jdc,format='beautifie',config=self.appliEficas.maConfiguration) + dicoCourant=self.generator.dico return dicoCourant #-----------------------------------------------------------------# def saveFileLegerAs(self, fileName = None) : #-----------------------------------------------------------------# if fileName != None : - self.fichier = fileName - return self.saveFileLeger(fileName) + self.fichier = fileName + return self.saveFileLeger(fileName) return self.saveFileLeger() #-----------------------------------------------------------------# @@ -561,24 +561,24 @@ class JDCEditorSsIhm : #--------------------------------# def ajoutCommentaire(self): #--------------------------------# - print ('pas programme sans Ihm') - print ('prevenir la maintenance du besoin') + print ('pas programme sans Ihm') + print ('prevenir la maintenance du besoin') #--------------------------------------# def informe(self,titre,txt,critique=True): #--------------------------------------# # methode differenre avec et sans ihm - if critique : print ('!!!!!!!!!!!!!!!!!!!!!!!!!!!') - print (titre) - print (txt) - if critique : print ('!!!!!!!!!!!!!!!!!!!!!!!!!!!') + if critique : print ('!!!!!!!!!!!!!!!!!!!!!!!!!!!') + print (titre) + print (txt) + if critique : print ('!!!!!!!!!!!!!!!!!!!!!!!!!!!') #--------------------------------------# def afficheInfos(self,txt,couleur=None): #--------------------------------------# # methode differenre avec et sans ihm - print (txt) + print (txt) #-----------------------------------------------------------------------# def _viewText(self, txt, caption = "FILE_VIEWER",largeur=1200,hauteur=600): @@ -605,9 +605,9 @@ class JDCEditorSsIhm : if not (self.writeFile(fichier,formatLigne=formatLigne)): return (0, None) if self.jdc.cata.modeleMetier and self.jdc.isValid(): if self.generator != self.XMLgenerator : - self.XMLgenerator.gener(self.jdc) - self.XMLgenerator.writeDefault(fichier) - return(1,self.fichier) + self.XMLgenerator.gener(self.jdc) + self.XMLgenerator.writeDefault(fichier) + return(1,self.fichier) if self.jdc.isValid() and hasattr(self.generator, "writeDefault"): self.generator.writeDefault(fichier) elif self.code=="TELEMAC" and hasattr(self.generator, "writeDefault"): @@ -641,13 +641,13 @@ class JDCEditorSsIhm : etape=monItem.item.object CONTEXT.set_current_step(etape) try : - ok=etape.build_includeEtape(texte) + ok=etape.build_includeEtape(texte) except : - ok=0 + ok=0 if not ok : - QMessageBox.information( self, - tr("Import texte"), - tr("Impossible d importer le texte")) + QMessageBox.information( self, + tr("Import texte"), + tr("Impossible d importer le texte")) self.tree.racine.build_children() return ok @@ -665,7 +665,7 @@ class JDCEditorSsIhm : # dans le JDC ouChercher=etape for mot in listeAvant : - ouChercher=ouChercher.getChild(mot,restreint="oui") + ouChercher=ouChercher.getChild(mot,restreint="oui") monMC=ouChercher.getChild(MCFils,restreint="oui") if monMC != None : ouChercher.suppentite(monMC) ouChercher.state='changed' @@ -680,7 +680,7 @@ class JDCEditorSsIhm : ouChercher=etape if debug : print (ouChercher) for mot in listeAvant : - ouChercher=ouChercher.getChild(mot,restreint="oui") + ouChercher=ouChercher.getChild(mot,restreint="oui") monMC=ouChercher.getChild(MCFils,restreint="oui") if monMC == None : monMC = ouChercher.addEntite(MCFils) monMC.valeur=valeurs @@ -699,7 +699,7 @@ class JDCEditorSsIhm : ouChercher=etape if debug : print (ouChercher) for mot in listeAvant : - ouChercher=ouChercher.getChild(mot,restreint="oui") + ouChercher=ouChercher.getChild(mot,restreint="oui") # Attention si +sieursMCFACT ouChercher=ouChercher[0] if debug : print (ouChercher) @@ -717,7 +717,7 @@ class JDCEditorSsIhm : # dans le JDC ouChercher=etape for mot in listeAvant : - ouChercher=ouChercher.getChild(mot,restreint="oui") + ouChercher=ouChercher.getChild(mot,restreint="oui") monMC=etape.getChild(ouChercher,restreint="oui") if monMC== None : monMC= ouChercher.addEntite(MCFils) monMC.isvalid() @@ -728,14 +728,14 @@ class JDCEditorSsIhm : # pour VP monObj=etape for mot in listeAvant : - monObj=monObj.getChild(mot,restreint="oui") - if monObj==None : return False + monObj=monObj.getChild(mot,restreint="oui") + if monObj==None : return False if monObj == None : return False if monObj.valeur != valeur : - # PNPN le setValeur fait des bugs --> pourquoi - #monObj.setValeur(valeur) - monObj.valeur=valeur - monObj.isValid() + # PNPN le setValeur fait des bugs --> pourquoi + #monObj.setValeur(valeur) + monObj.valeur=valeur + monObj.isValid() return True #-------------------------------------------------# @@ -750,9 +750,9 @@ class JDCEditorSsIhm : if debug : print ('etape trouvee', ouChercher) if ouChercher==None : return None for mot in listeAvant : - ouChercher=ouChercher.getChild(mot,restreint="oui") - if debug : print (mot, ouChercher) - if ouChercher==None : return None + ouChercher=ouChercher.getChild(mot,restreint="oui") + if debug : print (mot, ouChercher) + if ouChercher==None : return None monMC=ouChercher.getChild(MCFils,restreint="oui") if debug : print ('monMC', monMC) if monMC== None : return None @@ -767,9 +767,9 @@ class JDCEditorSsIhm : ouChercher=etape debug=0 for mot in listeAvant : - ouChercher=ouChercher.getChild(mot,restreint="oui") - if debug : print (mot, ouChercher) - if ouChercher==None : return None + ouChercher=ouChercher.getChild(mot,restreint="oui") + if debug : print (mot, ouChercher) + if ouChercher==None : return None monMC=ouChercher.getChild(MCFils,restreint="oui") if debug : print ('monMC', monMC) return monMC @@ -784,9 +784,9 @@ class JDCEditorSsIhm : if e.nom == nomEtape : ouChercher=e; break if ouChercher==None : return None for mot in listeAvant : - ouChercher=ouChercher.getChild(mot,restreint="oui") - #print (mot, ouChercher) - if ouChercher==None : return None + ouChercher=ouChercher.getChild(mot,restreint="oui") + #print (mot, ouChercher) + if ouChercher==None : return None monMC=ouChercher.getChild(MCFils,restreint="oui") monMC.set_valeur(valeur) monMC.isvalid() @@ -797,14 +797,14 @@ class JDCEditorSsIhm : # dans le JDC ouChercher=etape if isinstance (etape, str): - ouChercher=None - for e in self.jdc.etapes: - if e.nom == etape : ouChercher=e; break + ouChercher=None + for e in self.jdc.etapes: + if e.nom == etape : ouChercher=e; break if ouChercher==None : return for mot in listeAvant : - ouChercher=ouChercher.getChild(mot,restreint="oui") - if ouChercher==None : return + ouChercher=ouChercher.getChild(mot,restreint="oui") + if ouChercher==None : return monMC=ouChercher.getChild(MCFils,restreint="oui") if monMC== None : monMC= ouChercher.addEntite(MCFils) @@ -823,20 +823,20 @@ class JDCEditorSsIhm : for mot in listeAvant : try : - ouChercher=ouChercher.getChild(mot,restreint="oui") + ouChercher=ouChercher.getChild(mot,restreint="oui") # Le mot clef n est pas la except : return 0 try : - monMC=ouChercher.getChild(MCFils,restreint="oui") + monMC=ouChercher.getChild(MCFils,restreint="oui") # Le mot clef n est pas la except : return 0 if monMC == None : return 0 if hasattr(monMC.definition,'into') : - if type(monMC.definition.into) ==types.FunctionType : maListeDeValeur=monMC.definition.into() - else : maListeDeValeur=monMC.definition.into + if type(monMC.definition.into) ==types.FunctionType : maListeDeValeur=monMC.definition.into() + else : maListeDeValeur=monMC.definition.into else : - return 0 + return 0 monMC.state='changed' return 1 @@ -865,9 +865,9 @@ class JDCEditorSsIhm : ouChercher=definitionEtape if len(listeMC) > 1 : - for mc in listeMC[0:-1]: - mcfact=ouChercher.entites[mc] - ouChercher=mcfact + for mc in listeMC[0:-1]: + mcfact=ouChercher.entites[mc] + ouChercher=mcfact mcAccas=ouChercher.entites[listeMC[-1]] mcAccas.defaut=valeurs @@ -908,8 +908,8 @@ class JDCEditorSsIhm : # dans le MDD #print 'in deleteDefinitionMC', etape,listeAvant,nomDuMC if isinstance (etape, str): - for e in self.jdc.etapes: - if e.nom == etape : etape=e; break + for e in self.jdc.etapes: + if e.nom == etape : etape=e; break if etape == None : return #definitionEtape=getattr(self.jdc.cata[0],etape) definitionEtape=getattr(self.jdc.cata,etape) @@ -985,8 +985,8 @@ class JDCEditorSsIhm : self.changeIntoDefMC(etape,listeMC,into) if isinstance (etape, str): - for e in self.jdc.etapes: - if e.nom == etape : etape=e; break + for e in self.jdc.etapes: + if e.nom == etape : etape=e; break if etape == None : return ouChercher = etape @@ -1019,11 +1019,11 @@ class JDCEditorSsIhm : indexDeb=text.find("#VERSION_CATALOGUE:") indexFin=text.find(":FIN VERSION_CATALOGUE") if indexDeb < 0 : - self.versionCataDuJDC="sans" - textJDC=text + self.versionCataDuJDC="sans" + textJDC=text else : - self.versionCataDuJDC=text[indexDeb+19:indexFin] - textJDC=text[0:indexDeb]+text[indexFin+23:-1] + self.versionCataDuJDC=text[indexDeb+19:indexFin] + textJDC=text[0:indexDeb]+text[indexFin+23:-1] self.versionCata="sans" if hasattr(self.readercata.cata,'VERSION_CATALOGUE'): self.versionCata=self.readercata.cata.VERSION_CATALOGUE @@ -1080,39 +1080,39 @@ class JDCEditorSsIhm : #---------------------------# def _newJDCCND(self): #---------------------------# - extensions=tr('Fichiers Med (*.med);;''Tous les Fichiers (*)') - - #if self.salome == 0 : - QMessageBox.information( self, - tr("Fichier Med"), - tr("Veuillez selectionner un fichier Med")) - QSfichier = QFileDialog.getOpenFileName(self.appliEficas, - caption='Fichier Med', - filter=extensions) - QSfichier=QSfichier[0] - self.fichierMED=QSfichier - from acquiertGroupes import getGroupes - erreur,self.listeGroupes,self.nomMaillage,self.dicoCoord=getGroupes(self.fichierMED) - if erreur != "" : print ("a traiter") - texteComm="COMMENTAIRE(u'Cree - fichier : "+self.fichierMED +" - Nom Maillage : "+self.nomMaillage+"');\nPARAMETRES()\n" - texteSources="" - texteCond="" - texteNoCond="" - texteVcut="" - texteZs="" - for groupe in self.listeGroupes : - if groupe[0:8]=='CURRENT_': - texteSources +=groupe[8:]+"=SOURCE(" - texteSources +="VecteurDirecteur=(1.0,2.0,3.0,),);\n" - if groupe[0:5]=='COND_': texteCond +=groupe[5:]+"=CONDUCTEUR();\n" - if groupe[0:7]=='NOCOND_': texteNoCond +=groupe[7:]+"=NOCOND();\n" - if groupe[0:5]=='VCUT_': texteVcut +='V_'+groupe[5:]+"=VCUT();\n" - if groupe[0:3]=='ZS_': texteZs +=groupe[3:]+"=ZS();\n" - texte=texteComm+texteSources+texteCond+texteNoCond+texteVcut+texteZs - self.newTexteCND=texte - self.modified=1 - return texte + extensions=tr('Fichiers Med (*.med);;''Tous les Fichiers (*)') + + #if self.salome == 0 : + QMessageBox.information( self, + tr("Fichier Med"), + tr("Veuillez selectionner un fichier Med")) + QSfichier = QFileDialog.getOpenFileName(self.appliEficas, + caption='Fichier Med', + filter=extensions) + QSfichier=QSfichier[0] + self.fichierMED=QSfichier + from acquiertGroupes import getGroupes + erreur,self.listeGroupes,self.nomMaillage,self.dicoCoord=getGroupes(self.fichierMED) + if erreur != "" : print ("a traiter") + texteComm="COMMENTAIRE(u'Cree - fichier : "+self.fichierMED +" - Nom Maillage : "+self.nomMaillage+"');\nPARAMETRES()\n" + texteSources="" + texteCond="" + texteNoCond="" + texteVcut="" + texteZs="" + for groupe in self.listeGroupes : + if groupe[0:8]=='CURRENT_': + texteSources +=groupe[8:]+"=SOURCE(" + texteSources +="VecteurDirecteur=(1.0,2.0,3.0,),);\n" + if groupe[0:5]=='COND_': texteCond +=groupe[5:]+"=CONDUCTEUR();\n" + if groupe[0:7]=='NOCOND_': texteNoCond +=groupe[7:]+"=NOCOND();\n" + if groupe[0:5]=='VCUT_': texteVcut +='V_'+groupe[5:]+"=VCUT();\n" + if groupe[0:3]=='ZS_': texteZs +=groupe[3:]+"=ZS();\n" + texte=texteComm+texteSources+texteCond+texteNoCond+texteVcut+texteZs + self.newTexteCND=texte + self.modified=1 + return texte if __name__ == "__main__": - print ('a faire') + print ('a faire') diff --git a/InterfaceQT4/eficas_goWeb.py b/InterfaceQT4/eficas_goWeb.py index a17ace72..9246381c 100755 --- a/InterfaceQT4/eficas_goWeb.py +++ b/InterfaceQT4/eficas_goWeb.py @@ -23,7 +23,7 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str + from builtins import str except : pass @@ -44,10 +44,10 @@ def lanceEficas(code=None, multi=False, langue='en', labelCode=None): Lance l'appli EFICAS avec Ihm """ try : - from PyQt5.QtWidgets import QApplication + from PyQt5.QtWidgets import QApplication except : - print('Please, set qt environment') - return + print('Please, set qt environment') + return from Editeur import session options = session.parse(sys.argv) @@ -61,6 +61,3 @@ def lanceEficas(code=None, multi=False, langue='en', labelCode=None): res=app.exec_() sys.exit(res) - - - diff --git a/InterfaceQT4/feuille.py b/InterfaceQT4/feuille.py index 41dc13fa..7937b219 100644 --- a/InterfaceQT4/feuille.py +++ b/InterfaceQT4/feuille.py @@ -20,9 +20,9 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : - pass + pass import types,os import traceback @@ -37,93 +37,93 @@ from .gereIcones import FacultatifOuOptionnel from .qtSaisie import SaisieValeur nomMax=230 -# empirique les metrics ne fonctionnent pas +# empirique les metrics ne fonctionnent pas # ---------------------------------------------------------------------- # class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel): # --------------------------------------------------------------------- # - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - #print ("Feuille", monSimpDef,nom,objSimp) - QWidget.__init__(self,None) - self.node=node - self.node.fenetre=self - - # on se positionne pour les icones - #os.chdir(os.path.abspath(os.path.join(os.path.dirname(__file__)))) - self.setupUi(self) - self.prendLeFocus=0 - - maPolice= QFont("Times", 10) - self.setFont(maPolice) - self.setFocusPolicy(Qt.StrongFocus) - - self.parentQt=parentQt - self.editor=self.node.editor - self.appliEficas=self.editor.appliEficas - self.repIcon=self.appliEficas.repIcon - self.monSimpDef=monSimpDef - self.nom=nom - self.objSimp=objSimp - self.node.fenetre=self - self.maCommande=commande - - self.aRedimensionner=0 - self.setSuggestion() - self.setValeurs() - self.setNom() - self.setValide() - self.setIconePoubelle() - self.setIconesFichier() - self.setIconesSalome() - self.setIconesGenerales() - self.setCommentaire() - self.setZoneInfo() - - - def setNom(self): - self.debutToolTip="" - nomTraduit=tr(self.objSimp.nom) - #metrix= QFontMetrics(self.label.font()) - #maxLongueur = self.label.width() - 2 - #print ('______________________') - #print (nomTraduit) - #print (self.label.font().pixelSize()) - #longueur2 = metrix.boundingRect(nomTraduit).width() - longueur=QFontMetrics(self.label.font()).width(nomTraduit) - if longueur >= nomMax : - nouveauNom=self.formate(nomTraduit) - self.label.setText(nouveauNom) - else : - self.label.setText(nomTraduit) - #clidedText = metrics.elidedText(text, Qt.ElideRight, label.width()); - #if (clippedText != nomTraduit): self.label.setToolTip(nomTraduit) - #self.label.setText(clippedText) - - #def agrandit(self): - # inutile pour certains widgets - # if self.height() < 40 : - # self.setMinimumHeight(50) - # self.resize(self.width(),200) - - #def mousePressEvent(self, event): - #print 'mousePressEvent' - #import inspect - #print (inspect.getmro(self.__class__)) - #self.__class__.mousePressEvent(self, event) - - - - def setValeurs(self): - # print "passe dans setValeurs pour ", self.objSimp.nom - # print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + #print ("Feuille", monSimpDef,nom,objSimp) + QWidget.__init__(self,None) + self.node=node + self.node.fenetre=self + + # on se positionne pour les icones + #os.chdir(os.path.abspath(os.path.join(os.path.dirname(__file__)))) + self.setupUi(self) + self.prendLeFocus=0 + + maPolice= QFont("Times", 10) + self.setFont(maPolice) + self.setFocusPolicy(Qt.StrongFocus) + + self.parentQt=parentQt + self.editor=self.node.editor + self.appliEficas=self.editor.appliEficas + self.repIcon=self.appliEficas.repIcon + self.monSimpDef=monSimpDef + self.nom=nom + self.objSimp=objSimp + self.node.fenetre=self + self.maCommande=commande + + self.aRedimensionner=0 + self.setSuggestion() + self.setValeurs() + self.setNom() + self.setValide() + self.setIconePoubelle() + self.setIconesFichier() + self.setIconesSalome() + self.setIconesGenerales() + self.setCommentaire() + self.setZoneInfo() + + + def setNom(self): + self.debutToolTip="" + nomTraduit=tr(self.objSimp.nom) + #metrix= QFontMetrics(self.label.font()) + #maxLongueur = self.label.width() - 2 + #print ('______________________') + #print (nomTraduit) + #print (self.label.font().pixelSize()) + #longueur2 = metrix.boundingRect(nomTraduit).width() + longueur=QFontMetrics(self.label.font()).width(nomTraduit) + if longueur >= nomMax : + nouveauNom=self.formate(nomTraduit) + self.label.setText(nouveauNom) + else : + self.label.setText(nomTraduit) + #clidedText = metrics.elidedText(text, Qt.ElideRight, label.width()); + #if (clippedText != nomTraduit): self.label.setToolTip(nomTraduit) + #self.label.setText(clippedText) + + #def agrandit(self): + # inutile pour certains widgets + # if self.height() < 40 : + # self.setMinimumHeight(50) + # self.resize(self.width(),200) + + #def mousePressEvent(self, event): + #print 'mousePressEvent' + #import inspect + #print (inspect.getmro(self.__class__)) + #self.__class__.mousePressEvent(self, event) + + + + def setValeurs(self): + # print "passe dans setValeurs pour ", self.objSimp.nom + # print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" pass - def finCommentaire(self): - return "" + def finCommentaire(self): + return "" - - def finCommentaireListe(self): + + def finCommentaireListe(self): commentaire="" mc = self.node.item.get_definition() d_aides = { 'TXM' : 'chaines de caracteres', @@ -132,152 +132,149 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel): 'C' : 'complexes'} type = mc.type[0] if not type in d_aides : - if mc.min == mc.max: - commentaire=tr("Entrez ")+str(mc.min)+tr(" valeurs ")+'\n' - else : - if mc.max != "**" : - commentaire=tr("entre ")+str(mc.min)+tr(" et ")+str(mc.max)+tr(" valeurs ")+'\n' - else : - commentaire="" + if mc.min == mc.max: + commentaire=tr("Entrez ")+str(mc.min)+tr(" valeurs ")+'\n' + else : + if mc.max != "**" : + commentaire=tr("entre ")+str(mc.min)+tr(" et ")+str(mc.max)+tr(" valeurs ")+'\n' + else : + commentaire="" else : - if mc.min == mc.max: - commentaire=tr("Entrez ")+str(mc.min)+" "+tr(d_aides[type])+'\n' - elif mc.max == float('inf') : - commentaire=tr("Entrez une liste de ") + tr(d_aides[type])+'\n' - else : - commentaire=tr("Entrez entre ")+"\n"+str(mc.min)+(" et ")+str(mc.max) +" " +tr(d_aides[type])+'\n' + if mc.min == mc.max: + commentaire=tr("Entrez ")+str(mc.min)+" "+tr(d_aides[type])+'\n' + elif mc.max == float('inf') : + commentaire=tr("Entrez une liste de ") + tr(d_aides[type])+'\n' + else : + commentaire=tr("Entrez entre ")+"\n"+str(mc.min)+(" et ")+str(mc.max) +" " +tr(d_aides[type])+'\n' aideval=self.node.item.aide() commentaire=commentaire + tr(aideval) return str(commentaire) - def setSuggestion(self): - if self.monSimpDef.getSug() != None and self.monSimpDef.getSug() != "": - suggere=str('

suggestion : ')+str(self.monSimpDef.getSug())+"

" - if hasattr(self,'lineEditVal'): self.lineEditVal.setToolTip(suggere) - - def setCommentaire(self): - c = self.debutToolTip - #if self.node.item.definition.validators : c+=self.node.item.definition.validators.aide() - self.aide=c - if self.objSimp.getFr() != None and self.objSimp.getFr() != "": - #c2 = '

'+c+self.objSimp.getFr().decode('latin-1','replace')+"

" - c2 = '

'+c+self.objSimp.getFr() - #c2 = '

'+c+self.objSimp.getFr()+"

" - self.label.setToolTip(c2) - #self.aide=self.objSimp.getFr().decode('latin-1','ignore')+" "+c - self.aide=self.objSimp.getFr()+" "+c - else : - c+=self.finCommentaire() - if c != "" and c != None : - self.aide=c - #c=str('

')+c+"

" - c=str('

')+c+"

" - self.label.setToolTip(c) - - if self.editor.maConfiguration.differencieSiDefaut : + def setSuggestion(self): + if self.monSimpDef.getSug() != None and self.monSimpDef.getSug() != "": + suggere=str('

suggestion : ')+str(self.monSimpDef.getSug())+"

" + if hasattr(self,'lineEditVal'): self.lineEditVal.setToolTip(suggere) + + def setCommentaire(self): + c = self.debutToolTip + #if self.node.item.definition.validators : c+=self.node.item.definition.validators.aide() + self.aide=c + if self.objSimp.getFr() != None and self.objSimp.getFr() != "": + #c2 = '

'+c+self.objSimp.getFr().decode('latin-1','replace')+"

" + c2 = '

'+c+self.objSimp.getFr() + #c2 = '

'+c+self.objSimp.getFr()+"

" + self.label.setToolTip(c2) + #self.aide=self.objSimp.getFr().decode('latin-1','ignore')+" "+c + self.aide=self.objSimp.getFr()+" "+c + else : + c+=self.finCommentaire() + if c != "" and c != None : + self.aide=c + #c=str('

')+c+"

" + c=str('

')+c+"

" + self.label.setToolTip(c) + + if self.editor.maConfiguration.differencieSiDefaut : self.label.setToolTip('defaut : ' + tr(str(self.node.item.object.definition.defaut))) - def showEvent(self, event): - if self.prendLeFocus==1 : - self.activateWindow() - "il faut deriver le showEvent pour" , self.nom - self.prendLeFocus=0 - QWidget.showEvent(self,event) - - def aideALaSaisie(self): - mc = self.node.item.get_definition() - mctype = mc.type[0] - d_aides = { 'TXM' : tr(u"chaine de caracteres"), - 'R' : tr("reel"), - 'I' : tr("entier"), - 'C' : tr("complexe"), - 'Matrice' : tr(u'Matrice'), - 'Fichier' : tr(u'fichier'), - 'FichierNoAbs' : tr(u'fichier existant'), - 'Repertoire' : tr(u'repertoire')} - - if mc.min == mc.max: commentaire=tr("Entrez ")+" "+str(mc.min)+" " - else : commentaire=tr("Entrez entre ")+str(mc.min)+tr(" et ")+str(mc.max) - - try : - if issubclass(mctype,object) : ctype = getattr(mctype, 'help_message', tr("Type de base inconnu")) - else : ctype = d_aides.get(mctype, tr("Type de base inconnu")) - except: - ctype = d_aides.get(mctype, tr("Type de base inconnu")) - if ctype == tr("Type de base inconnu") and "Tuple" in str(mctype): ctype=str(mctype) - - commentaire+=ctype - if mc.max!=1 : commentaire+="s" - return commentaire - - def setZoneInfo(self): - # info=str(self.nom)+' ' - # if self.monSimpDef.getFr() != None and self.monSimpDef.getFr() != "": info+=self.monSimpDef.getSug() +" " - # if self.monSimpDef.getSug() != None and self.monSimpDef.getSug() != "": info+="Valeur suggeree : "self.monSimpDef.getSug() - pass - - def reaffiche(self): - - if self.editor.jdc.aReafficher==True : - self.parentQt.reaffiche() - - #PN PN PN pas satisfaisant - #nodeAVoir=self.parentQt.node.chercheNoeudCorrespondant(self.objSimp) - #print nodeAVoir.fenetre - #print "nodeAVoir.fenetre.isVisible()", nodeAVoir.fenetre.isVisible() - #if nodeAVoir.fenetre.isVisible() : return - #self.editor.fenetreCentraleAffichee.rendVisibleNoeud(nodeAVoir) - #nodeAVoir.fenetre.setFocus() - # return # on est bien postionne - - if self.objSimp.isValid() and hasattr(self, 'AAfficher'): - nodeAVoir=self.parentQt.node.chercheNoeudCorrespondant(self.objSimp) - try : - index=self.editor.fenetreCentraleAffichee.listeAffichageWidget.index(nodeAVoir.fenetre.AAfficher) - if (index==len(self.editor.fenetreCentraleAffichee.listeAffichageWidget)-1) : - try : - nodeAVoir.fenetre.setValeursApresBouton() - except : - pass - else : - self.editor.fenetreCentraleAffichee.afficheSuivant(nodeAVoir.fenetre.AAfficher) - except : - pass - else : - if self.objSimp.isValid() and hasattr(self, 'AAfficher'): - try : - self.setValeursApresBouton() - except : - pass - self.editor.fenetreCentraleAffichee.afficheSuivant(self.AAfficher) - else : - if hasattr(self, 'AAfficher'): self.AAfficher.setFocus(7) - - def reaffichePourDeplier(self): - self.parentQt.reaffiche() - - def rendVisible(self): - pass - - #def enterEvent(self,event): - # print "je passe dans enterEvent", self.nom - # QWidget.enterEvent(self,event) - - def traiteClicSurLabel(self,texte): - #aide=self.aide.encode('latin-1', 'ignore').decode('latin-1')+"\n"+self.aideALaSaisie().encode('latin-1', 'ignore').decode('latin-1') - try : - aide=self.aide+"\n"+self.aideALaSaisie() - except : - aide=self.aideALaSaisie() - self.editor.afficheCommentaire(aide) - - def formate(self,t): - l=len(t)//2 - newText=t[0:l]+'-\n'+t[l:] - return newText - - - + def showEvent(self, event): + if self.prendLeFocus==1 : + self.activateWindow() + "il faut deriver le showEvent pour" , self.nom + self.prendLeFocus=0 + QWidget.showEvent(self,event) + + def aideALaSaisie(self): + mc = self.node.item.get_definition() + mctype = mc.type[0] + d_aides = { 'TXM' : tr(u"chaine de caracteres"), + 'R' : tr("reel"), + 'I' : tr("entier"), + 'C' : tr("complexe"), + 'Matrice' : tr(u'Matrice'), + 'Fichier' : tr(u'fichier'), + 'FichierNoAbs' : tr(u'fichier existant'), + 'Repertoire' : tr(u'repertoire')} + + if mc.min == mc.max: commentaire=tr("Entrez ")+" "+str(mc.min)+" " + else : commentaire=tr("Entrez entre ")+str(mc.min)+tr(" et ")+str(mc.max) + + try : + if issubclass(mctype,object) : ctype = getattr(mctype, 'help_message', tr("Type de base inconnu")) + else : ctype = d_aides.get(mctype, tr("Type de base inconnu")) + except: + ctype = d_aides.get(mctype, tr("Type de base inconnu")) + if ctype == tr("Type de base inconnu") and "Tuple" in str(mctype): ctype=str(mctype) + + commentaire+=ctype + if mc.max!=1 : commentaire+="s" + return commentaire + + def setZoneInfo(self): + # info=str(self.nom)+' ' + # if self.monSimpDef.getFr() != None and self.monSimpDef.getFr() != "": info+=self.monSimpDef.getSug() +" " + # if self.monSimpDef.getSug() != None and self.monSimpDef.getSug() != "": info+="Valeur suggeree : "self.monSimpDef.getSug() + pass + + def reaffiche(self): + + if self.editor.jdc.aReafficher==True : + self.parentQt.reaffiche() + + #PN PN PN pas satisfaisant + #nodeAVoir=self.parentQt.node.chercheNoeudCorrespondant(self.objSimp) + #print nodeAVoir.fenetre + #print "nodeAVoir.fenetre.isVisible()", nodeAVoir.fenetre.isVisible() + #if nodeAVoir.fenetre.isVisible() : return + #self.editor.fenetreCentraleAffichee.rendVisibleNoeud(nodeAVoir) + #nodeAVoir.fenetre.setFocus() + # return # on est bien postionne + + if self.objSimp.isValid() and hasattr(self, 'AAfficher'): + nodeAVoir=self.parentQt.node.chercheNoeudCorrespondant(self.objSimp) + try : + index=self.editor.fenetreCentraleAffichee.listeAffichageWidget.index(nodeAVoir.fenetre.AAfficher) + if (index==len(self.editor.fenetreCentraleAffichee.listeAffichageWidget)-1) : + try : + nodeAVoir.fenetre.setValeursApresBouton() + except : + pass + else : + self.editor.fenetreCentraleAffichee.afficheSuivant(nodeAVoir.fenetre.AAfficher) + except : + pass + else : + if self.objSimp.isValid() and hasattr(self, 'AAfficher'): + try : + self.setValeursApresBouton() + except : + pass + self.editor.fenetreCentraleAffichee.afficheSuivant(self.AAfficher) + else : + if hasattr(self, 'AAfficher'): self.AAfficher.setFocus(7) + + def reaffichePourDeplier(self): + self.parentQt.reaffiche() + + def rendVisible(self): + pass + + #def enterEvent(self,event): + # print "je passe dans enterEvent", self.nom + # QWidget.enterEvent(self,event) + + def traiteClicSurLabel(self,texte): + #aide=self.aide.encode('latin-1', 'ignore').decode('latin-1')+"\n"+self.aideALaSaisie().encode('latin-1', 'ignore').decode('latin-1') + try : + aide=self.aide+"\n"+self.aideALaSaisie() + except : + aide=self.aideALaSaisie() + self.editor.afficheCommentaire(aide) + + def formate(self,t): + l=len(t)//2 + newText=t[0:l]+'-\n'+t[l:] + return newText diff --git a/InterfaceQT4/gereIcones.py b/InterfaceQT4/gereIcones.py index 62f2d0c2..d28c498e 100644 --- a/InterfaceQT4/gereIcones.py +++ b/InterfaceQT4/gereIcones.py @@ -21,8 +21,8 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str - from builtins import object + from builtins import str + from builtins import object except : pass import types,os,re,sys @@ -40,327 +40,327 @@ listeSuffixe=('bmp','png','jpg' ,'txt','med') class FacultatifOuOptionnel(object): - def setReglesEtAide(self): - listeRegles=() - try : - listeRegles = self.node.item.getRegles() - except : - pass - if hasattr(self,"RBRegle"): - if listeRegles==() : self.RBRegle.close() + def setReglesEtAide(self): + listeRegles=() + try : + listeRegles = self.node.item.getRegles() + except : + pass + if hasattr(self,"RBRegle"): + if listeRegles==() : self.RBRegle.close() + else : + icon3=QIcon(self.repIcon+"/lettreRblanc30.png") + self.RBRegle.setIcon(icon3) + self.RBRegle.clicked.connect(self.viewRegles) + + cle_doc=None + if not hasattr(self,"RBInfo"):return + icon=QIcon(self.repIcon+"/point-interrogation30.png") + self.RBInfo.setIcon(icon) + + from .monWidgetCommande import MonWidgetCommande + if isinstance(self,MonWidgetCommande) and self.editor.code =="MAP": + self.cle_doc = self.chercheDocMAP() else : - icon3=QIcon(self.repIcon+"/lettreRblanc30.png") - self.RBRegle.setIcon(icon3) - self.RBRegle.clicked.connect(self.viewRegles) - - cle_doc=None - if not hasattr(self,"RBInfo"):return - icon=QIcon(self.repIcon+"/point-interrogation30.png") - self.RBInfo.setIcon(icon) - - from .monWidgetCommande import MonWidgetCommande - if isinstance(self,MonWidgetCommande) and self.editor.code =="MAP": - self.cle_doc = self.chercheDocMAP() - else : - self.cle_doc = self.node.item.getDocu() - if self.cle_doc == None : self.RBInfo.close() - else : self.RBInfo.clicked.connect (self.viewDoc) - - - def chercheDocMAP(self): - try : - clef=self.editor.maConfiguration.adresse+"/" - except : - return None - for k in self.editor.readercata.cata.JdC.dict_groupes: - if self.obj.nom in self.editor.readercata.cata.JdC.dict_groupes[k]: - clef+=k - break - clef+="/"+ self.obj.nom[0:-5].lower()+"/spec_"+self.obj.nom[0:-5].lower()+".html" - - return clef - - def viewDoc(self): - try : - if sys.platform[0:5]=="linux" : cmd="xdg-open "+self.cle_doc - else : cmd="start "+self.cle_doc - os.system(cmd) - except: - QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) - - def viewRegles(self): - self.node.appellebuildLBRegles() - - - def setIconePoubelle(self): - if not(hasattr(self,"RBPoubelle")):return - - if self.node.item.object.isOblig() and not( hasattr(self.node.item.object,'isDeletable') ): - icon=QIcon(self.repIcon+"/deleteRondVide.png") - self.RBPoubelle.setIcon(icon) - return - icon=QIcon(self.repIcon+"/deleteRond.png") - self.RBPoubelle.setIcon(icon) - self.RBPoubelle.clicked.connect(self.aDetruire) - - def setIconesSalome(self): - if not (hasattr(self,"RBSalome")): return - from Accas import SalomeEntry - mc = self.node.item.get_definition() - mctype = mc.type[0] - enable_salome_selection = self.editor.salome and \ - (('grma' in repr(mctype)) or ('grno' in repr(mctype)) or ('SalomeEntry' in repr(mctype)) or \ - (hasattr(mctype, "enable_salome_selection") and mctype.enable_salome_selection)) - - if enable_salome_selection: - icon=QIcon(self.repIcon+"/flecheSalome.png") - self.RBSalome.setIcon(icon) - self.RBSalome.pressed.connect(self.BSalomePressed) + self.cle_doc = self.node.item.getDocu() + if self.cle_doc == None : self.RBInfo.close() + else : self.RBInfo.clicked.connect (self.viewDoc) + + + def chercheDocMAP(self): + try : + clef=self.editor.maConfiguration.adresse+"/" + except : + return None + for k in self.editor.readercata.cata.JdC.dict_groupes: + if self.obj.nom in self.editor.readercata.cata.JdC.dict_groupes[k]: + clef+=k + break + clef+="/"+ self.obj.nom[0:-5].lower()+"/spec_"+self.obj.nom[0:-5].lower()+".html" + + return clef + + def viewDoc(self): + try : + if sys.platform[0:5]=="linux" : cmd="xdg-open "+self.cle_doc + else : cmd="start "+self.cle_doc + os.system(cmd) + except: + QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) + + def viewRegles(self): + self.node.appellebuildLBRegles() + + + def setIconePoubelle(self): + if not(hasattr(self,"RBPoubelle")):return + + if self.node.item.object.isOblig() and not( hasattr(self.node.item.object,'isDeletable') ): + icon=QIcon(self.repIcon+"/deleteRondVide.png") + self.RBPoubelle.setIcon(icon) + return + icon=QIcon(self.repIcon+"/deleteRond.png") + self.RBPoubelle.setIcon(icon) + self.RBPoubelle.clicked.connect(self.aDetruire) + + def setIconesSalome(self): + if not (hasattr(self,"RBSalome")): return + from Accas import SalomeEntry + mc = self.node.item.get_definition() + mctype = mc.type[0] + enable_salome_selection = self.editor.salome and \ + (('grma' in repr(mctype)) or ('grno' in repr(mctype)) or ('SalomeEntry' in repr(mctype)) or \ + (hasattr(mctype, "enable_salome_selection") and mctype.enable_salome_selection)) + + if enable_salome_selection: + icon=QIcon(self.repIcon+"/flecheSalome.png") + self.RBSalome.setIcon(icon) + self.RBSalome.pressed.connect(self.BSalomePressed) #PNPN --> Telemac A revoir surement # cela ou le catalogue grpma ou salomeEntry - if not(('grma' in repr(mctype)) or ('grno' in repr(mctype))) or not(self.editor.salome): - if hasattr(self,"RBSalomeVue") : self.RBSalomeVue.close() - else : - icon1=QIcon(self.repIcon+"/eye.png") - self.RBSalomeVue.setIcon(icon1) - self.RBSalomeVue.clicked.connect(self.BView2DPressed) - else: - self.RBSalome.close() - self.RBSalomeVue.close() - - - def setIconesFichier(self): - if not ( hasattr(self,"BFichier")): return - mc = self.node.item.get_definition() - mctype = mc.type[0] - if mctype == "FichierOuRepertoire": - self.BFichierOuRepertoire=self.BFichier - self.BFichierOuRepertoire.clicked.connect(self.BFichierOuRepertoirePressed) - self.BVisuFichier.close() - elif mctype == "Repertoire": - self.BRepertoire=self.BFichier - self.BRepertoire.clicked.connect(self.BRepertoirePressed) - self.BVisuFichier.close() - else : - self.BFichier.clicked.connect(self.BFichierPressed) - self.BVisuFichier.clicked.connect(self.BFichierVisu) - - - - def setIconesGenerales(self): - repIcon=self.node.editor.appliEficas.repIcon - if hasattr(self,"BVisuListe") : - fichier=os.path.join(repIcon, 'plusnode.png') - icon = QIcon(fichier) - self.BVisuListe.setIcon(icon) - if hasattr(self,"RBDeplie") : - fichier=os.path.join(repIcon, 'plusnode.png') - icon = QIcon(fichier) - self.RBDeplie.setIcon(icon) - if hasattr(self,"RBPlie") : - fichier=os.path.join(repIcon, 'minusnode.png') - icon = QIcon(fichier) - self.RBPlie.setIcon(icon) - if hasattr(self,"BVisuFichier") : - fichier=os.path.join(repIcon, 'visuFichier.png') - icon = QIcon(fichier) - self.BVisuFichier.setIcon(icon) - - - - def setRun(self): - if hasattr(self.editor.appliEficas, 'mesScripts') : - if self.editor.code in self.editor.appliEficas.mesScripts : - self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes - if self.obj.nom in self.dict_commandes_mesScripts : - self.ajoutScript() - icon=QIcon(self.repIcon+"/roue.png") - if hasattr(self,"RBRun"):self.RBRun.setIcon(icon) - return - if hasattr(self,"RBRun"): self.RBRun.close() - if hasattr(self,"CBScripts"): self.CBScripts.close() - - - def aDetruire(self): - self.node.delete() - - def setValide(self): - if not(hasattr (self,'RBValide')) : return - couleur=self.node.item.getIconName() - monIcone = QIcon(self.repIcon+"/" + couleur + ".png") - self.RBValide.setIcon(monIcone) - - # il faut chercher la bonne fenetre - def rendVisible(self): - #print "je passe par rendVisible de FacultatifOuOptionnel" - #print self - #print self.node.fenetre - #print "return pour etre sure" - return - #PNPN - newNode=self.node.treeParent.chercheNoeudCorrespondant(self.node.item.object) - #print newNode - self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(newNode.fenetre) - #newNode.fenetre.setFocus() - - - def ajoutScript(self): + if not(('grma' in repr(mctype)) or ('grno' in repr(mctype))) or not(self.editor.salome): + if hasattr(self,"RBSalomeVue") : self.RBSalomeVue.close() + else : + icon1=QIcon(self.repIcon+"/eye.png") + self.RBSalomeVue.setIcon(icon1) + self.RBSalomeVue.clicked.connect(self.BView2DPressed) + else: + self.RBSalome.close() + self.RBSalomeVue.close() + + + def setIconesFichier(self): + if not ( hasattr(self,"BFichier")): return + mc = self.node.item.get_definition() + mctype = mc.type[0] + if mctype == "FichierOuRepertoire": + self.BFichierOuRepertoire=self.BFichier + self.BFichierOuRepertoire.clicked.connect(self.BFichierOuRepertoirePressed) + self.BVisuFichier.close() + elif mctype == "Repertoire": + self.BRepertoire=self.BFichier + self.BRepertoire.clicked.connect(self.BRepertoirePressed) + self.BVisuFichier.close() + else : + self.BFichier.clicked.connect(self.BFichierPressed) + self.BVisuFichier.clicked.connect(self.BFichierVisu) + + + + def setIconesGenerales(self): + repIcon=self.node.editor.appliEficas.repIcon + if hasattr(self,"BVisuListe") : + fichier=os.path.join(repIcon, 'plusnode.png') + icon = QIcon(fichier) + self.BVisuListe.setIcon(icon) + if hasattr(self,"RBDeplie") : + fichier=os.path.join(repIcon, 'plusnode.png') + icon = QIcon(fichier) + self.RBDeplie.setIcon(icon) + if hasattr(self,"RBPlie") : + fichier=os.path.join(repIcon, 'minusnode.png') + icon = QIcon(fichier) + self.RBPlie.setIcon(icon) + if hasattr(self,"BVisuFichier") : + fichier=os.path.join(repIcon, 'visuFichier.png') + icon = QIcon(fichier) + self.BVisuFichier.setIcon(icon) + + + + def setRun(self): + if hasattr(self.editor.appliEficas, 'mesScripts') : + if self.editor.code in self.editor.appliEficas.mesScripts : + self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes + if self.obj.nom in self.dict_commandes_mesScripts : + self.ajoutScript() + icon=QIcon(self.repIcon+"/roue.png") + if hasattr(self,"RBRun"):self.RBRun.setIcon(icon) + return + if hasattr(self,"RBRun"): self.RBRun.close() + if hasattr(self,"CBScripts"): self.CBScripts.close() + + + def aDetruire(self): + self.node.delete() + + def setValide(self): + if not(hasattr (self,'RBValide')) : return + couleur=self.node.item.getIconName() + monIcone = QIcon(self.repIcon+"/" + couleur + ".png") + self.RBValide.setIcon(monIcone) + + # il faut chercher la bonne fenetre + def rendVisible(self): + #print "je passe par rendVisible de FacultatifOuOptionnel" + #print self + #print self.node.fenetre + #print "return pour etre sure" + return + #PNPN + newNode=self.node.treeParent.chercheNoeudCorrespondant(self.node.item.object) + #print newNode + self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(newNode.fenetre) + #newNode.fenetre.setFocus() + + + def ajoutScript(self): if not hasattr(self,'CBScripts') : return # Cas des Widgets Plies self.dictCommandes={} listeCommandes=self.dict_commandes_mesScripts[self.obj.nom] if type(listeCommandes) != tuple: listeCommandes=(listeCommandes,) i=0 for commande in listeCommandes : - conditionSalome=commande[3] - if (self.appliEficas.salome == 0 and conditionSalome == True): continue - self.CBScripts.addItem(commande[1]) - self.dictCommandes[commande[1]]=i - i=i+1 + conditionSalome=commande[3] + if (self.appliEficas.salome == 0 and conditionSalome == True): continue + self.CBScripts.addItem(commande[1]) + self.dictCommandes[commande[1]]=i + i=i+1 self.CBScripts.activated.connect(self.choixSaisi) - def choixSaisi(self): - fction=str(self.CBScripts.currentText()) - numero= self.dictCommandes[fction] - self.node.appelleFonction(numero,nodeTraite=self.node) - #self.reaffiche() + def choixSaisi(self): + fction=str(self.CBScripts.currentText()) + numero= self.dictCommandes[fction] + self.node.appelleFonction(numero,nodeTraite=self.node) + #self.reaffiche() class ContientIcones(object): - def BFichierVisu(self): - fichier=self.lineEditVal.text() - if fichier == None or str(fichier)=="" : return - from .monViewTexte import ViewText - try : - if sys.platform[0:5]=="linux" : - #cmd="xdg-open "+ str(fichier) - #changer pour marcher dans l'EDC - #cmd="gedit "+ str(fichier) - from os.path import splitext - fileName,extension = splitext(fichier) - if extension in self.parentQt.editor.appliEficas.maConfiguration.utilParExtensions: - cmd=self.parentQt.editor.appliEficas.maConfiguration.utilParExtensions[extension] + " " + str(fichier) - else: cmd="xdg-open "+ str(fichier) - os.system(cmd) - else : - os.startfile(str(fichier)) - except: - try : - fp=open(fichier) - txt=fp.read() - nomFichier=QFileInfo(fichier).baseName() - maVue=ViewText(self,entete=nomFichier) - maVue.setText(txt) - maVue.show() - fp.close() - except: - QMessageBox.warning( None, - tr("Visualisation Fichier "), - tr("Impossibilite d'afficher le Fichier"),) - - def BFichierPressed(self): - mctype = self.node.item.get_definition().type - if len(mctype) > 1: - filters = mctype[1] - elif hasattr(mctype[0], "filters"): - filters = mctype[0].filters - else: - filters = "" - if len(mctype) > 2 and mctype[2] == "Sauvegarde": - fichier = QFileDialog.getSaveFileName(self.appliEficas, - tr('Use File'), - self.appliEficas.maConfiguration.savedir, - filters) - else: - #print(filters) - fichier = QFileDialog.getOpenFileName(self.appliEficas, - tr('Ouvrir Fichier'), - self.appliEficas.maConfiguration.savedir, - filters) - - fichier=fichier[0] - if not(fichier == ""): - ulfile = os.path.abspath(fichier) - self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] - self.lineEditVal.setText(fichier) - self.editor.afficheCommentaire(tr("Fichier selectionne")) - self.LEvaleurPressed() - if (QFileInfo(fichier).suffix() in listeSuffixe ): - self.image=fichier - if (not hasattr(self,"BSelectInFile")): - try : - self.BSelectInFile = QPushButton(self) - self.BSelectInFile.setMinimumSize(QSize(140,40)) - self.BSelectInFile.setObjectName("BSelectInFile") - self.gridLayout.addWidget(self.BSelectInFile,1,1,1,1) - self.BSelectInFile.setText(tr("Selection")) - self.BSelectInFile.clicked.connect(self.BSelectInFilePressed) - except : - pass - else : - self.BSelectInFile.setVisible(1) - - elif hasattr(self, "BSelectInFile"): - self.BSelectInFile.setVisible(0) - - def BFichierOuRepertoirePressed(self): - self.fileName="" - self.file_dialog=QFileDialog() - self.file_dialog.setFileMode(QFileDialog.Directory); - self.file_dialog.setFileMode(QFileDialog.Directory|QFileDialog.ExistingFiles) - self.file_dialog.setOption(QFileDialog.DontUseNativeDialog,True); - self.file_dialog.setWindowTitle('Choose File or Directory') - self.explore(self.file_dialog) - self.file_dialog.exec_() - if self.fileName == "" : return - self.lineEditVal.setText(self.fileName) - self.LEvaleurPressed() - - - def explore(self,widget): - for c in widget.children() : - if isinstance(c, QTreeView) : - c.clicked.connect (self.changeBoutonOpen) - self.monTreeView=c - try : - if c.text() == "&Open" : self.monBoutonOpen=c - except : pass - self.explore(c) - - - def changeBoutonOpen(self): - self.monBoutonOpen.setEnabled(True) - self.monBoutonOpen.setText("Choose") - self.monBoutonOpen.clicked.connect(self.monBoutonOpenClicked) - index = self.monTreeView.currentIndex(); - self.fileName2 = self.monTreeView.model().data(index) - - def monBoutonOpenClicked(self): - try : - self.fileName=self.file_dialog.selectedFiles()[0] - except : - self.fileName=self.file_dialog.directory().absolutePath() - self.file_dialog.close() - self.file_dialog=None - - def BRepertoirePressed(self): - directory = QFileDialog.getExistingDirectory(self.appliEficas, - directory = self.appliEficas.maConfiguration.savedir, - options = QFileDialog.ShowDirsOnly) - - if not (directory == "") : - absdir = os.path.abspath(directory) - self.appliEficas.maConfiguration.savedir = os.path.dirname(absdir) - self.lineEditVal.setText(directory) - self.LEvaleurPressed() - - def BSelectInFilePressed(self): - from monSelectImage import MonSelectImage - MonSelectImage(file=self.image,parent=self).show() - - - - def BSalomePressed(self): + def BFichierVisu(self): + fichier=self.lineEditVal.text() + if fichier == None or str(fichier)=="" : return + from .monViewTexte import ViewText + try : + if sys.platform[0:5]=="linux" : + #cmd="xdg-open "+ str(fichier) + #changer pour marcher dans l'EDC + #cmd="gedit "+ str(fichier) + from os.path import splitext + fileName,extension = splitext(fichier) + if extension in self.parentQt.editor.appliEficas.maConfiguration.utilParExtensions: + cmd=self.parentQt.editor.appliEficas.maConfiguration.utilParExtensions[extension] + " " + str(fichier) + else: cmd="xdg-open "+ str(fichier) + os.system(cmd) + else : + os.startfile(str(fichier)) + except: + try : + fp=open(fichier) + txt=fp.read() + nomFichier=QFileInfo(fichier).baseName() + maVue=ViewText(self,entete=nomFichier) + maVue.setText(txt) + maVue.show() + fp.close() + except: + QMessageBox.warning( None, + tr("Visualisation Fichier "), + tr("Impossibilite d'afficher le Fichier"),) + + def BFichierPressed(self): + mctype = self.node.item.get_definition().type + if len(mctype) > 1: + filters = mctype[1] + elif hasattr(mctype[0], "filters"): + filters = mctype[0].filters + else: + filters = "" + if len(mctype) > 2 and mctype[2] == "Sauvegarde": + fichier = QFileDialog.getSaveFileName(self.appliEficas, + tr('Use File'), + self.appliEficas.maConfiguration.savedir, + filters) + else: + #print(filters) + fichier = QFileDialog.getOpenFileName(self.appliEficas, + tr('Ouvrir Fichier'), + self.appliEficas.maConfiguration.savedir, + filters) + + fichier=fichier[0] + if not(fichier == ""): + ulfile = os.path.abspath(fichier) + self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] + self.lineEditVal.setText(fichier) + self.editor.afficheCommentaire(tr("Fichier selectionne")) + self.LEvaleurPressed() + if (QFileInfo(fichier).suffix() in listeSuffixe ): + self.image=fichier + if (not hasattr(self,"BSelectInFile")): + try : + self.BSelectInFile = QPushButton(self) + self.BSelectInFile.setMinimumSize(QSize(140,40)) + self.BSelectInFile.setObjectName("BSelectInFile") + self.gridLayout.addWidget(self.BSelectInFile,1,1,1,1) + self.BSelectInFile.setText(tr("Selection")) + self.BSelectInFile.clicked.connect(self.BSelectInFilePressed) + except : + pass + else : + self.BSelectInFile.setVisible(1) + + elif hasattr(self, "BSelectInFile"): + self.BSelectInFile.setVisible(0) + + def BFichierOuRepertoirePressed(self): + self.fileName="" + self.file_dialog=QFileDialog() + self.file_dialog.setFileMode(QFileDialog.Directory); + self.file_dialog.setFileMode(QFileDialog.Directory|QFileDialog.ExistingFiles) + self.file_dialog.setOption(QFileDialog.DontUseNativeDialog,True); + self.file_dialog.setWindowTitle('Choose File or Directory') + self.explore(self.file_dialog) + self.file_dialog.exec_() + if self.fileName == "" : return + self.lineEditVal.setText(self.fileName) + self.LEvaleurPressed() + + + def explore(self,widget): + for c in widget.children() : + if isinstance(c, QTreeView) : + c.clicked.connect (self.changeBoutonOpen) + self.monTreeView=c + try : + if c.text() == "&Open" : self.monBoutonOpen=c + except : pass + self.explore(c) + + + def changeBoutonOpen(self): + self.monBoutonOpen.setEnabled(True) + self.monBoutonOpen.setText("Choose") + self.monBoutonOpen.clicked.connect(self.monBoutonOpenClicked) + index = self.monTreeView.currentIndex(); + self.fileName2 = self.monTreeView.model().data(index) + + def monBoutonOpenClicked(self): + try : + self.fileName=self.file_dialog.selectedFiles()[0] + except : + self.fileName=self.file_dialog.directory().absolutePath() + self.file_dialog.close() + self.file_dialog=None + + def BRepertoirePressed(self): + directory = QFileDialog.getExistingDirectory(self.appliEficas, + directory = self.appliEficas.maConfiguration.savedir, + options = QFileDialog.ShowDirsOnly) + + if not (directory == "") : + absdir = os.path.abspath(directory) + self.appliEficas.maConfiguration.savedir = os.path.dirname(absdir) + self.lineEditVal.setText(directory) + self.LEvaleurPressed() + + def BSelectInFilePressed(self): + from monSelectImage import MonSelectImage + MonSelectImage(file=self.image,parent=self).show() + + + + def BSalomePressed(self): self.editor.afficheCommentaire("") selection=[] commentaire="" @@ -374,34 +374,34 @@ class ContientIcones(object): if 'grma' in repr(kwType): kwType = "GROUP_MA" if kwType in ("GROUP_NO","GROUP_MA"): - selection, commentaire = self.appliEficas.selectGroupFromSalome(kwType,editor=self.editor) + selection, commentaire = self.appliEficas.selectGroupFromSalome(kwType,editor=self.editor) mc = self.node.item.get_definition() if (isinstance(mc.type,tuple) and len(mc.type) > 1 and "(*.med)" in mc.type[1] ): - selection, commentaire = self.appliEficas.selectMeshFile(editor=self.editor) - #print selection, commentaire - if commentaire != "" : - QMessageBox.warning( None, - tr("Export Med vers Fichier "), - tr("Impossibilite d exporter le Fichier"),) - return - else : - self.lineEditVal.setText(str(selection)) - return + selection, commentaire = self.appliEficas.selectMeshFile(editor=self.editor) + #print selection, commentaire + if commentaire != "" : + QMessageBox.warning( None, + tr("Export Med vers Fichier "), + tr("Impossibilite d exporter le Fichier"),) + return + else : + self.lineEditVal.setText(str(selection)) + return from Accas import SalomeEntry if inspect.isclass(kwType) and issubclass(kwType, SalomeEntry): - selection, commentaire = self.appliEficas.selectEntryFromSalome(kwType,editor=self.editor) + selection, commentaire = self.appliEficas.selectEntryFromSalome(kwType,editor=self.editor) if commentaire !="" : self.editor.afficheInfos(tr(str(commentaire))) if selection == [] : return min,max=self.node.item.getMinMax() - if max > 1 : - self.ajoutNValeur(selection) - return + if max > 1 : + self.ajoutNValeur(selection) + return monTexte="" for geomElt in selection: monTexte=geomElt+"," @@ -409,21 +409,20 @@ class ContientIcones(object): self.lineEditVal.setText(str(monTexte)) self.LEvaleurPressed() - def BView2DPressed(self): + def BView2DPressed(self): try : - # cas d un Simp de base - valeur=self.lineEditVal.text() + # cas d un Simp de base + valeur=self.lineEditVal.text() except : - valeur=self.textSelected + valeur=self.textSelected valeur = str(valeur) if valeur == str("") : return if valeur : - ok, msgError = self.appliEficas.displayShape(valeur) - if not ok: - self.editor.afficheInfos(msgError,Qt.red) + ok, msgError = self.appliEficas.displayShape(valeur) + if not ok: + self.editor.afficheInfos(msgError,Qt.red) - def BParametresPressed(self): + def BParametresPressed(self): liste=self.node.item.getListeParamPossible() from monListeParamPanel import MonListeParamPanel MonListeParamPanel(liste=liste,parent=self).show() - diff --git a/InterfaceQT4/gereListe.py b/InterfaceQT4/gereListe.py index 1f405c1f..86d77580 100644 --- a/InterfaceQT4/gereListe.py +++ b/InterfaceQT4/gereListe.py @@ -21,8 +21,8 @@ from __future__ import absolute_import try : - from builtins import str - from builtins import object + from builtins import str + from builtins import object except : pass import types,os @@ -40,302 +40,302 @@ from InterfaceQT4.monViewTexte import ViewText # ---------------------- # class LECustom(QLineEdit): # ---------------------- # - def __init__(self,parent,parentQt,i): - """ - Constructor - """ - QLineEdit.__init__(self,parent) - - self.parentQt=parentQt - self.num=i - self.dansUnTuple=False - self.numDsLaListe=-1 - self.parentTuple=None - self.valeur=None - self.aEuLeFocus=True - - def focusInEvent(self,event): - #print ("dans focusInEvent de LECustom") - self.parentQt.aEuLeFocus=True - self.aEuLeFocus=True - self.parentQt.lineEditEnCours=self - self.parentQt.numLineEditEnCours=self.num - self.parentQt.textSelected=self.text() - self.setStyleSheet("border: 2px solid gray") - QLineEdit.focusInEvent(self,event) - - def focusOutEvent(self,event): - #print ('focusOutEvent', self.aEuLeFocus) - 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)") - if self.aEuLeFocus: - self.aEuLeFocus=False - self.litValeur() - if self.dansUnTuple : self.parentTuple.getValeur() - QLineEdit.focusOutEvent(self,event) - - - def litValeur(self): - #print ("dans litValeur de LECustom") - self.aEuLeFocus=False - val=str(self.text()) - if str(val)=="" or val==None : + def __init__(self,parent,parentQt,i): + """ + Constructor + """ + QLineEdit.__init__(self,parent) + + self.parentQt=parentQt + self.num=i + self.dansUnTuple=False + self.numDsLaListe=-1 + self.parentTuple=None self.valeur=None - return - try : - valeur=eval(val,{}) - except : + self.aEuLeFocus=True + + def focusInEvent(self,event): + #print ("dans focusInEvent de LECustom") + self.parentQt.aEuLeFocus=True + self.aEuLeFocus=True + self.parentQt.lineEditEnCours=self + self.parentQt.numLineEditEnCours=self.num + self.parentQt.textSelected=self.text() + self.setStyleSheet("border: 2px solid gray") + QLineEdit.focusInEvent(self,event) + + def focusOutEvent(self,event): + #print ('focusOutEvent', self.aEuLeFocus) + 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)") + if self.aEuLeFocus: + self.aEuLeFocus=False + self.litValeur() + if self.dansUnTuple : self.parentTuple.getValeur() + QLineEdit.focusOutEvent(self,event) + + + def litValeur(self): + #print ("dans litValeur de LECustom") + self.aEuLeFocus=False + val=str(self.text()) + if str(val)=="" or val==None : + self.valeur=None + return try : - d=self.parentQt.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape) - valeur=eval(val,d) + valeur=eval(val,{}) except : - valeur=val - self.valeur=valeur - #print ('self.valeur', self.valeur) + try : + d=self.parentQt.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape) + valeur=eval(val,d) + except : + valeur=val + self.valeur=valeur + #print ('self.valeur', self.valeur) - def clean(self): - self.setText("") + def clean(self): + self.setText("") - def getValeur(self): - #return self.text() - self.litValeur() - return self.valeur + def getValeur(self): + #return self.text() + self.litValeur() + return self.valeur - def setValeur(self,valeur): - self.setText(valeur) + 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) - #print (dir(self)) + def __init__(self,parent): + # index sera mis a jour par TupleCustom + parentQt=parent.parent().parent().parent() + LECustom. __init__(self,parent,parentQt,0) + #print (dir(self)) # ---------------------------- # class MonLabelListeClic(QLabel): # ---------------------------- # - def __init__(self,parent): - QLabel.__init__(self,parent) - self.parent=parent + def __init__(self,parent): + QLabel.__init__(self,parent) + self.parent=parent - def event(self,event) : - if event.type() == QEvent.MouseButtonRelease: - self.texte=self.text() - self.parent.traiteClicSurLabelListe(self.texte) - return QLabel.event(self,event) + def event(self,event) : + if event.type() == QEvent.MouseButtonRelease: + self.texte=self.text() + self.parent.traiteClicSurLabelListe(self.texte) + return QLabel.event(self,event) # ------------- # class GereListe(object): # ------------- # - def __init__(self): - self.connecterSignaux() - - def connecterSignaux(self): - if hasattr(self,'RBHaut'): - self.RBHaut.clicked.connect(self.hautPushed) - self.RBBas.clicked.connect(self.basPushed) - self.RBMoins.clicked.connect(self.moinsPushed) - self.RBPlus.clicked.connect(self.plusPushed) - self.RBVoisListe.clicked.connect(self.voisListePushed) - if hasattr(self,'PBAlpha'): - self.PBCata.clicked.connect(self.cataPushed) - self.PBAlpha.clicked.connect(self.alphaPushed) - self.PBFind.clicked.connect(self.findPushed) - self.LEFiltre.returnPressed.connect(self.LEFiltreReturnPressed) - if hasattr(self, 'PBValideFeuille'): - self.PBValideFeuille.clicked.connect(self.changeValeur) - - def filtreListe(self): - l=[] - if self.filtre != "" : - for i in self.listeAAfficher : - if i.find(self.filtre) == 0 :l.append(i) - self.listeAAfficher=l - if self.alpha : self.listeAAfficher.sort() - - def LEFiltreReturnPressed(self): - self.filtre= self.LEFiltre.text() - self.prepareListeResultatFiltre() - - def findPushed(self): - self.filtre= self.LEFiltre.text() - self.prepareListeResultatFiltre() - - def alphaPushed(self): - #print "alphaPushed" ,self.alpha - if self.alpha == 1 : return - self.alpha=1 - self.prepareListeResultat() - - def cataPushed(self): - if self.alpha == 0 : return - self.alpha=0 - self.prepareListeResultat() - - def hautPushed(self): - #print ('hautPushed') - if self.numLineEditEnCours == 0 : return - if self.numLineEditEnCours == 1 : return - else : numEchange=self.numLineEditEnCours-1 - self.echange(self.numLineEditEnCours,numEchange) - self.lineEditEnCours.setFocus(True) - self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) - - - def basPushed(self): - #print ('hautPushed') - if self.numLineEditEnCours == 0 : return - if self.numLineEditEnCours == self.indexDernierLabel : return - else : numEchange=self.numLineEditEnCours+1 - self.echange(self.numLineEditEnCours,numEchange) - self.lineEditEnCours.setFocus(True) - self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) - - def echange(self,num1,num2): - # on donne le focus au a celui ou on a bouge - # par convention le 2 - #print ('echange') - nomLineEdit=self.nomLine+str(num1) - #print (nomLineEdit) - courant=getattr(self,nomLineEdit) - valeurAGarder=courant.text() - nomLineEdit2=self.nomLine+str(num2) - #print (nomLineEdit2) - courant2=getattr(self,nomLineEdit2) - courant.setText(courant2.text()) - courant2.setText(valeurAGarder) - # pour monWidgetCreeUserAssd - self.num1=num1 - self.num2=num2 - self.changeValeur(changeDePlace=False) - self.numLineEditEnCours=num2 - self.lineEditEnCours=courant2 - self.lineEditEnCours.setFocus(True) - - def moinsPushed(self): - # on supprime le dernier - #print ('moinsPushed') - if self.numLineEditEnCours == 0 : return - if self.indexDernierLabel == 0 : return - if self.numLineEditEnCours==self.indexDernierLabel : - nomLineEdit=self.nomLine+str(self.indexDernierLabel) + def __init__(self): + self.connecterSignaux() + + def connecterSignaux(self): + if hasattr(self,'RBHaut'): + self.RBHaut.clicked.connect(self.hautPushed) + self.RBBas.clicked.connect(self.basPushed) + self.RBMoins.clicked.connect(self.moinsPushed) + self.RBPlus.clicked.connect(self.plusPushed) + self.RBVoisListe.clicked.connect(self.voisListePushed) + if hasattr(self,'PBAlpha'): + self.PBCata.clicked.connect(self.cataPushed) + self.PBAlpha.clicked.connect(self.alphaPushed) + self.PBFind.clicked.connect(self.findPushed) + self.LEFiltre.returnPressed.connect(self.LEFiltreReturnPressed) + if hasattr(self, 'PBValideFeuille'): + self.PBValideFeuille.clicked.connect(self.changeValeur) + + def filtreListe(self): + l=[] + if self.filtre != "" : + for i in self.listeAAfficher : + if i.find(self.filtre) == 0 :l.append(i) + self.listeAAfficher=l + if self.alpha : self.listeAAfficher.sort() + + def LEFiltreReturnPressed(self): + self.filtre= self.LEFiltre.text() + self.prepareListeResultatFiltre() + + def findPushed(self): + self.filtre= self.LEFiltre.text() + self.prepareListeResultatFiltre() + + def alphaPushed(self): + #print "alphaPushed" ,self.alpha + if self.alpha == 1 : return + self.alpha=1 + self.prepareListeResultat() + + def cataPushed(self): + if self.alpha == 0 : return + self.alpha=0 + self.prepareListeResultat() + + def hautPushed(self): + #print ('hautPushed') + if self.numLineEditEnCours == 0 : return + if self.numLineEditEnCours == 1 : return + else : numEchange=self.numLineEditEnCours-1 + self.echange(self.numLineEditEnCours,numEchange) + self.lineEditEnCours.setFocus(True) + self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) + + + def basPushed(self): + #print ('hautPushed') + if self.numLineEditEnCours == 0 : return + if self.numLineEditEnCours == self.indexDernierLabel : return + else : numEchange=self.numLineEditEnCours+1 + self.echange(self.numLineEditEnCours,numEchange) + self.lineEditEnCours.setFocus(True) + self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) + + def echange(self,num1,num2): + # on donne le focus au a celui ou on a bouge + # par convention le 2 + #print ('echange') + nomLineEdit=self.nomLine+str(num1) + #print (nomLineEdit) courant=getattr(self,nomLineEdit) + valeurAGarder=courant.text() + nomLineEdit2=self.nomLine+str(num2) + #print (nomLineEdit2) + courant2=getattr(self,nomLineEdit2) + courant.setText(courant2.text()) + courant2.setText(valeurAGarder) + # pour monWidgetCreeUserAssd + self.num1=num1 + self.num2=num2 + self.changeValeur(changeDePlace=False) + self.numLineEditEnCours=num2 + self.lineEditEnCours=courant2 + self.lineEditEnCours.setFocus(True) + + def moinsPushed(self): + # on supprime le dernier + #print ('moinsPushed') + if self.numLineEditEnCours == 0 : return + if self.indexDernierLabel == 0 : return + if self.numLineEditEnCours==self.indexDernierLabel : + nomLineEdit=self.nomLine+str(self.indexDernierLabel) + courant=getattr(self,nomLineEdit) + 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.getValeur() + nomLineEdit=self.nomLine+str(i) + courant=getattr(self,nomLineEdit) + if valeurARemonter != None : courant.setValeur(valeurARemonter) + else : courant.clean() + nomLineEdit=self.nomLine+str(self.indexDernierLabel) + courant=getattr(self,nomLineEdit) + courant.clean() + self.changeValeur(changeDePlace=False,oblige=True) + self.setValide() + + def plusPushed(self): + #print ('plusPushed gereliste') + if self.indexDernierLabel == self.monSimpDef.max: + if len(self.listeValeursCourantes) < self.monSimpDef.max : self.chercheLigneVide() + else : self.editor.afficheInfos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red) + return + self.ajoutLineEdit() + self.descendLesLignes() + self.chercheLigneVide() + QTimer.singleShot(1, self.rendVisibleLigne) + + def chercheLigneVide(self): + #print ('chercheLigneVide') + for i in range(self.indexDernierLabel) : + nomLineEdit=self.nomLine+str(i+1) + courant=getattr(self,nomLineEdit) + valeur=courant.getValeur() + if valeur=="" or valeur == None : + courant.setFocus(True) + self.estVisible=courant + + def descendLesLignes(self): + #print ('descendLesLignes') + if self.numLineEditEnCours==self.indexDernierLabel : return + nomLineEdit=self.nomLine+str(self.numLineEditEnCours+1) + courant=getattr(self,nomLineEdit) + valeurADescendre=courant.getValeur() 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.getValeur() - nomLineEdit=self.nomLine+str(i) - courant=getattr(self,nomLineEdit) - if valeurARemonter != None : courant.setValeur(valeurARemonter) - else : courant.clean() - nomLineEdit=self.nomLine+str(self.indexDernierLabel) - courant=getattr(self,nomLineEdit) - courant.clean() - self.changeValeur(changeDePlace=False,oblige=True) - self.setValide() - - def plusPushed(self): - #print ('plusPushed gereliste') - if self.indexDernierLabel == self.monSimpDef.max: - if len(self.listeValeursCourantes) < self.monSimpDef.max : self.chercheLigneVide() - else : self.editor.afficheInfos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red) - return - self.ajoutLineEdit() - self.descendLesLignes() - self.chercheLigneVide() - QTimer.singleShot(1, self.rendVisibleLigne) - - def chercheLigneVide(self): - #print ('chercheLigneVide') - for i in range(self.indexDernierLabel) : - nomLineEdit=self.nomLine+str(i+1) - courant=getattr(self,nomLineEdit) - valeur=courant.getValeur() - if valeur=="" or valeur == None : - courant.setFocus(True) - self.estVisible=courant - - def descendLesLignes(self): - #print ('descendLesLignes') - if self.numLineEditEnCours==self.indexDernierLabel : return - nomLineEdit=self.nomLine+str(self.numLineEditEnCours+1) - courant=getattr(self,nomLineEdit) - 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.getValeur() - courant.setValeur(valeurADescendre) - valeurADescendre=valeurAGarder - self.changeValeur(changeDePlace=False) - if hasattr (self, 'lineEditEnCours') :self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) - - def voisListePushed(self): - texteValeurs="" - for v in self.node.item.getListeValeurs(): - texteValeurs+=str(v)+", " - entete="Valeurs pour "+self.nom - f=ViewText(self,self.editor,entete,texteValeurs[0:-2]) - f.show() - - - def selectInFile(self): - init=str( self.editor.maConfiguration.savedir) - fn = QFileDialog.getOpenFileName(self.node.appliEficas, - tr("Fichier de donnees"), - init, - tr('Tous les Fichiers (*)',)) - fn=fn[0] - if fn == None : return - if fn == "" : return - ulfile = os.path.abspath(fn) - self.editor.maConfiguration.savedir=os.path.split(ulfile)[0] - - from .monSelectVal import MonSelectVal - MonSelectVal(file=fn,parent=self).show() - - def noircirResultatFiltre(self): - filtre=str(self.LEFiltre.text()) - for cb in self.listeCbRouge: - palette = QPalette(Qt.red) - palette.setColor(QPalette.WindowText,Qt.black) - cb.setPalette(palette) - t=cb.text() - cb.setText(t) - self.LEFiltre.setText("") - self.listeCbRouge = [] + for i in range (self.numLineEditEnCours+1, self.indexDernierLabel): + aDescendre=i+1 + nomLineEdit=self.nomLine+str(aDescendre) + courant=getattr(self,nomLineEdit) + valeurAGarder=courant.getValeur() + courant.setValeur(valeurADescendre) + valeurADescendre=valeurAGarder + self.changeValeur(changeDePlace=False) + if hasattr (self, 'lineEditEnCours') :self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) + + def voisListePushed(self): + texteValeurs="" + for v in self.node.item.getListeValeurs(): + texteValeurs+=str(v)+", " + entete="Valeurs pour "+self.nom + f=ViewText(self,self.editor,entete,texteValeurs[0:-2]) + f.show() + + + def selectInFile(self): + init=str( self.editor.maConfiguration.savedir) + fn = QFileDialog.getOpenFileName(self.node.appliEficas, + tr("Fichier de donnees"), + init, + tr('Tous les Fichiers (*)',)) + fn=fn[0] + if fn == None : return + if fn == "" : return + ulfile = os.path.abspath(fn) + self.editor.maConfiguration.savedir=os.path.split(ulfile)[0] + + from .monSelectVal import MonSelectVal + MonSelectVal(file=fn,parent=self).show() + + def noircirResultatFiltre(self): + filtre=str(self.LEFiltre.text()) + for cb in self.listeCbRouge: + palette = QPalette(Qt.red) + palette.setColor(QPalette.WindowText,Qt.black) + cb.setPalette(palette) + t=cb.text() + cb.setText(t) + self.LEFiltre.setText("") + self.listeCbRouge = [] # ----------- # class GerePlie(object): # ----------- # - def gereIconePlier(self): - if not(hasattr(self,'BFermeListe')) : return - self.editor.listeDesListesOuvertes.add(self.node.item) - repIcon=self.node.editor.appliEficas.repIcon - if not (self.editor.afficheListesPliees): - fichier=os.path.join(repIcon, 'empty.png') + def gereIconePlier(self): + if not(hasattr(self,'BFermeListe')) : return + self.editor.listeDesListesOuvertes.add(self.node.item) + repIcon=self.node.editor.appliEficas.repIcon + if not (self.editor.afficheListesPliees): + fichier=os.path.join(repIcon, 'empty.png') + icon = QIcon(fichier) + self.BFermeListe.setIcon(icon) + return + fichier=os.path.join(repIcon, 'minusnode.png') icon = QIcon(fichier) self.BFermeListe.setIcon(icon) - return - fichier=os.path.join(repIcon, 'minusnode.png') - icon = QIcon(fichier) - self.BFermeListe.setIcon(icon) - self.BFermeListe.clicked.connect( self.selectWidgetPlie) - - def selectWidgetPlie(self): - self.editor.listeDesListesOuvertes.remove(self.node.item) - self.reaffichePourDeplier() + self.BFermeListe.clicked.connect( self.selectWidgetPlie) + + def selectWidgetPlie(self): + self.editor.listeDesListesOuvertes.remove(self.node.item) + self.reaffichePourDeplier() diff --git a/InterfaceQT4/gereRegles.py b/InterfaceQT4/gereRegles.py index e84486b9..8579a578 100644 --- a/InterfaceQT4/gereRegles.py +++ b/InterfaceQT4/gereRegles.py @@ -20,7 +20,7 @@ from __future__ import absolute_import try : - from builtins import object + from builtins import object except : pass from PyQt5.QtCore import Qt @@ -29,45 +29,42 @@ from Extensions.i18n import tr class GereRegles(object) : - def appellebuildLBRegles(self): - from .browser import JDCTree - if isinstance(self,JDCTree): - self.appellebuildLBReglesForJdC() - else : - self.appellebuildLBReglesForCommand() - self.buildLBRegles(self.listeRegles,self.listeNomsEtapes) - self.afficheRegles() - - def appellebuildLBReglesForCommand(self): - self.listeRegles = self.item.getRegles() - self.listeNomsEtapes = self.item.getMcPresents() + def appellebuildLBRegles(self): + from .browser import JDCTree + if isinstance(self,JDCTree): + self.appellebuildLBReglesForJdC() + else : + self.appellebuildLBReglesForCommand() + self.buildLBRegles(self.listeRegles,self.listeNomsEtapes) + self.afficheRegles() - def appellebuildLBReglesForJdC(self): - self.listeRegles=self.item.getRegles() - self.listeNomsEtapes = self.item.getLNomsEtapes() + def appellebuildLBReglesForCommand(self): + self.listeRegles = self.item.getRegles() + self.listeNomsEtapes = self.item.getMcPresents() + def appellebuildLBReglesForJdC(self): + self.listeRegles=self.item.getRegles() + self.listeNomsEtapes = self.item.getLNomsEtapes() - def buildLBRegles(self,listeRegles,listeNomsEtapes): - self.liste=[] - if len(listeRegles) > 0: - for regle in listeRegles : - texteRegle=regle.getText() - texteMauvais,test = regle.verif(listeNomsEtapes) - for ligne in texteRegle.split("\n") : - if ligne == "" : continue - if ligne[0]=="\t" : ligne=" "+ligne[1:] - if test : - self.liste.append((ligne,Qt.black)) - else : - self.liste.append((ligne,Qt.red)) - self.liste.append(("",Qt.red)) - if self.liste==[] : self.liste.append(("pas de regle de construction pour ce jeu de commandes",Qt.black)) - - def afficheRegles(self): - titre="Regles pour "+self.item.nom - w = ViewRegles( self.editor,self.liste,titre ) - w.exec_() - + def buildLBRegles(self,listeRegles,listeNomsEtapes): + self.liste=[] + if len(listeRegles) > 0: + for regle in listeRegles : + texteRegle=regle.getText() + texteMauvais,test = regle.verif(listeNomsEtapes) + for ligne in texteRegle.split("\n") : + if ligne == "" : continue + if ligne[0]=="\t" : ligne=" "+ligne[1:] + if test : + self.liste.append((ligne,Qt.black)) + else : + self.liste.append((ligne,Qt.red)) + self.liste.append(("",Qt.red)) + if self.liste==[] : self.liste.append(("pas de regle de construction pour ce jeu de commandes",Qt.black)) + def afficheRegles(self): + titre="Regles pour "+self.item.nom + w = ViewRegles( self.editor,self.liste,titre ) + w.exec_() diff --git a/InterfaceQT4/gereTraduction.py b/InterfaceQT4/gereTraduction.py index 9bca1b37..146a19ee 100644 --- a/InterfaceQT4/gereTraduction.py +++ b/InterfaceQT4/gereTraduction.py @@ -18,7 +18,7 @@ # from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from PyQt5.QtWidgets import QFileDialog, QApplication @@ -28,20 +28,20 @@ from Extensions.i18n import tr def traduction(directPath,editor,version): - if version == "V9V10" : - from Traducteur import traduitV9V10 - suffixe="v10.comm" + if version == "V9V10" : + from Traducteur import traduitV9V10 + suffixe="v10.comm" if version == "V10V11" : - from Traducteur import traduitV10V11 - suffixe="v11.comm" + from Traducteur import traduitV10V11 + suffixe="v11.comm" if version == "V11V12" : - from Traducteur import traduitV11V12 - suffixe="v12.comm" + from Traducteur import traduitV11V12 + suffixe="v12.comm" - fn = QFileDialog.getOpenFileName( - editor.appliEficas, + fn = QFileDialog.getOpenFileName( + editor.appliEficas, tr('Traduire Fichier'), - directPath , + directPath , tr('Fichiers JDC (*.comm);;''Tous les Fichiers (*)')) @@ -70,13 +70,13 @@ def traduction(directPath,editor,version): texte= f.read() f.close() else : - texte = Entete - commande="diff "+FichieraTraduire+" "+FichierTraduit+" >/dev/null" - try : - if os.system(commande) == 0 : - texte = texte + tr("Pas de difference entre le fichier origine et le fichier traduit") - except : - pass + texte = Entete + commande="diff "+FichieraTraduire+" "+FichierTraduit+" >/dev/null" + try : + if os.system(commande) == 0 : + texte = texte + tr("Pas de difference entre le fichier origine et le fichier traduit") + except : + pass from .monVisu import DVisu titre = "conversion de "+ FichieraTraduire @@ -84,4 +84,3 @@ def traduction(directPath,editor,version): monVisuDialg.setWindowTitle(titre) monVisuDialg.TB.setText(texte) monVisuDialg.show() - diff --git a/InterfaceQT4/groupe.py b/InterfaceQT4/groupe.py index 5a541edb..73c31ac2 100644 --- a/InterfaceQT4/groupe.py +++ b/InterfaceQT4/groupe.py @@ -27,69 +27,69 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr from .gereIcones import FacultatifOuOptionnel -import Accas +import Accas import traceback - + # Import des panels class Groupe(QWidget,FacultatifOuOptionnel): - """ - """ - def __init__(self,node,editor,parentQt,definition,obj,niveau,commande=None): - #print ("groupe : ",self.node.item.nom," ",self.node.fenetre) - QWidget.__init__(self,None) - self.node=node - self.node.fenetre=self - self.setupUi(self) - self.editor=editor - self.obj=obj - self.niveau=niveau - self.definition=definition - self.parentQt=parentQt - self.maCommande=commande - self.listeFocus=[] - self.appliEficas=self.editor.appliEficas - self.repIcon=self.appliEficas.repIcon - self.jdc=self.node.item.getJdc() - self.setIconePoubelle() - self.setIconesGenerales() - self.setRun() - self.setValide() - self.setReglesEtAide() - self.afficheMots() - self.listeMCAAjouter=[] - self.dictMCVenantDesBlocs={} - if hasattr(self,'RBDeplie') : self.RBDeplie.clicked.connect(self.setDeplie) - if hasattr(self,'RBPlie') : self.RBPlie.clicked.connect( self.setPlie) - - self.setAcceptDrops(True) - #if hasattr (self, 'commandesLayout'): - # print (' j ajoute un spacer dans ', self.node.item.nom) - # spacerItem = QSpacerItem(20, 5, QSizePolicy.Minimum, QSizePolicy.Expanding) - # self.commandesLayout.addItem(spacerItem) - - def donneFocus(self): - for fenetre in self.listeFocus: - if fenetre==None : return - if fenetre.node.item.isValid() == 0 : - fenetre.prendLeFocus=1 - fenetre.hide() - fenetre.show() - - - def afficheMots(self): - #print ("ds afficheMots ",self.node.item.nom,self.node.plie) - for node in self.node.children: - # non return mais continue car il faut tenir compte des blocs - if node.appartientAUnNoeudPlie==True : continue - widget=node.getPanelGroupe(self,self.maCommande) - #print ("widget pour ", node.item.nom, widget) - self.listeFocus.append(node.fenetre) - #print "fin pour " , self.node.item.nom - - - def calculOptionnel(self): + """ + """ + def __init__(self,node,editor,parentQt,definition,obj,niveau,commande=None): + #print ("groupe : ",self.node.item.nom," ",self.node.fenetre) + QWidget.__init__(self,None) + self.node=node + self.node.fenetre=self + self.setupUi(self) + self.editor=editor + self.obj=obj + self.niveau=niveau + self.definition=definition + self.parentQt=parentQt + self.maCommande=commande + self.listeFocus=[] + self.appliEficas=self.editor.appliEficas + self.repIcon=self.appliEficas.repIcon + self.jdc=self.node.item.getJdc() + self.setIconePoubelle() + self.setIconesGenerales() + self.setRun() + self.setValide() + self.setReglesEtAide() + self.afficheMots() + self.listeMCAAjouter=[] + self.dictMCVenantDesBlocs={} + if hasattr(self,'RBDeplie') : self.RBDeplie.clicked.connect(self.setDeplie) + if hasattr(self,'RBPlie') : self.RBPlie.clicked.connect( self.setPlie) + + self.setAcceptDrops(True) + #if hasattr (self, 'commandesLayout'): + # print (' j ajoute un spacer dans ', self.node.item.nom) + # spacerItem = QSpacerItem(20, 5, QSizePolicy.Minimum, QSizePolicy.Expanding) + # self.commandesLayout.addItem(spacerItem) + + def donneFocus(self): + for fenetre in self.listeFocus: + if fenetre==None : return + if fenetre.node.item.isValid() == 0 : + fenetre.prendLeFocus=1 + fenetre.hide() + fenetre.show() + + + def afficheMots(self): + #print ("ds afficheMots ",self.node.item.nom,self.node.plie) + for node in self.node.children: + # non return mais continue car il faut tenir compte des blocs + if node.appartientAUnNoeudPlie==True : continue + widget=node.getPanelGroupe(self,self.maCommande) + #print ("widget pour ", node.item.nom, widget) + self.listeFocus.append(node.fenetre) + #print "fin pour " , self.node.item.nom + + + def calculOptionnel(self): self.listeMc=[] self.listeMcRegle=[] self.dictToolTipMc={} @@ -98,114 +98,113 @@ class Groupe(QWidget,FacultatifOuOptionnel): # n ont pas toutes ces methodes try : #if 1 : - self.listeMc = self.obj.getListeMcOrdonnee(genea,self.jdc.cata_ordonne_dico) - listeNomsPresents=self.obj.dictMcPresents() - for regle in self.obj.getRegles(): - (monToolTip,regleOk)=regle.verif(listeNomsPresents) - if regleOk : continue - for mc in regle.mcs : - self.listeMcRegle.append(mc) - self.dictToolTipMc[mc]=monToolTip + self.listeMc = self.obj.getListeMcOrdonnee(genea,self.jdc.cata_ordonne_dico) + listeNomsPresents=self.obj.dictMcPresents() + for regle in self.obj.getRegles(): + (monToolTip,regleOk)=regle.verif(listeNomsPresents) + if regleOk : continue + for mc in regle.mcs : + self.listeMcRegle.append(mc) + self.dictToolTipMc[mc]=monToolTip except : - #print ('in except') - #print (self) - return - - def afficheOptionnel(self): + #print ('in except') + #print (self) + return + + def afficheOptionnel(self): if self.editor.maConfiguration.closeOptionnel : return liste,liste_rouge=self.ajouteMCOptionnelDesBlocs() self.monOptionnel=self.editor.widgetOptionnel self.monOptionnel.afficheOptionnel(liste,liste_rouge,self) - - - def ajouteMCOptionnelDesBlocs(self): - self.dictMCVenantDesBlocs={} - i=0 - self.calculOptionnel() - liste=self.listeMc - liste_rouge=self.listeMcRegle - for MC in self.listeMc : self.dictMCVenantDesBlocs[MC]=self - # ce cas est le cas machine tournant sr le plie - try : - while i < self.commandesLayout.count(): - from .monWidgetBloc import MonWidgetBloc - widget=self.commandesLayout.itemAt(i).widget() - i=i+1 - if not(isinstance(widget,MonWidgetBloc)) : continue - widget.calculOptionnel() - listeW,listeW_rouge=widget.ajouteMCOptionnelDesBlocs() - for MC in widget.dictMCVenantDesBlocs: - if MC in self.dictMCVenantDesBlocs: print ("Pb Sur les MC" ) - else : self.dictMCVenantDesBlocs[MC]=widget.dictMCVenantDesBlocs[MC] - liste=liste+listeW - liste_rouge=liste_rouge+listeW_rouge - except : - pass - return (liste,liste_rouge) - - - def reaffiche(self,nodeAVoir=None): - #print "dans reaffiche de groupe.py", nodeAVoir - self.parentQt.reaffiche(nodeAVoir) - - def recalculeListeMC(self,listeMC): - #print "pas si peu utile" - #on ajoute et on enleve - listeNode=[] - for name in listeMC : - nodeAEnlever=self.node.appendChild(name) - if nodeAEnlever.item.isMCList(): - nodeAEnlever=nodeAEnlever.children[-1] - listeNode.append(nodeAEnlever) - self.afficheOptionnel() - self.monOptionnel.affiche(self.listeMc) - if len(listeNode) == 0 : return - if len(listeNode) == 1 : - listeNode[0].delete() - self.editor.afficheInfos("") - return - for noeud in listeNode: - noeud.treeParent.item.suppItem(noeud.item) - noeud.treeParent.buildChildren() - self.editor.afficheInfos("") - - def ajoutMC(self,texteListeNom): - listeNom=texteListeNom.split("+")[1:] - firstNode=None - for nom in listeNom: - if nom not in self.dictMCVenantDesBlocs: - #print "bizarre, bizarre" - self.editor.initModif() - nouveau=self.node.appendChild(nom) - else : - self.editor.initModif() - widget=self.dictMCVenantDesBlocs[nom] - nouveau=widget.node.appendChild(nom) - if firstNode==None : firstNode=nouveau - if nouveau == None or nouveau == 0 : - self.editor.afficheInfos(tr('insertion impossible a cet endroit pour '+nom),Qt.red) - try : - self.reaffiche(firstNode) - if firstNode!=None and firstNode !=0 and firstNode.item!=None : firstNode.select() - except : - pass - - - def setPlie(self): - self.node.setPlie() - self.reaffiche(self.node) - - def setDeplie(self): - #print ('je passe ds setDeplie de groupe', self.obj.nom) - self.node.firstDeplie = False - self.node.setDeplie() - self.reaffiche(self.node) - - - def traiteClicSurLabel(self,texte): - if self.editor.code != "CARMELCND" : self.afficheOptionnel() - - - def propageChange(self,leType,donneLefocus): - self.parentQt.propageChange(leType,donneLefocus) + + def ajouteMCOptionnelDesBlocs(self): + self.dictMCVenantDesBlocs={} + i=0 + self.calculOptionnel() + liste=self.listeMc + liste_rouge=self.listeMcRegle + for MC in self.listeMc : self.dictMCVenantDesBlocs[MC]=self + # ce cas est le cas machine tournant sr le plie + try : + while i < self.commandesLayout.count(): + from .monWidgetBloc import MonWidgetBloc + widget=self.commandesLayout.itemAt(i).widget() + i=i+1 + if not(isinstance(widget,MonWidgetBloc)) : continue + widget.calculOptionnel() + listeW,listeW_rouge=widget.ajouteMCOptionnelDesBlocs() + for MC in widget.dictMCVenantDesBlocs: + if MC in self.dictMCVenantDesBlocs: print ("Pb Sur les MC" ) + else : self.dictMCVenantDesBlocs[MC]=widget.dictMCVenantDesBlocs[MC] + liste=liste+listeW + liste_rouge=liste_rouge+listeW_rouge + except : + pass + return (liste,liste_rouge) + + + def reaffiche(self,nodeAVoir=None): + #print "dans reaffiche de groupe.py", nodeAVoir + self.parentQt.reaffiche(nodeAVoir) + + def recalculeListeMC(self,listeMC): + #print "pas si peu utile" + #on ajoute et on enleve + listeNode=[] + for name in listeMC : + nodeAEnlever=self.node.appendChild(name) + if nodeAEnlever.item.isMCList(): + nodeAEnlever=nodeAEnlever.children[-1] + listeNode.append(nodeAEnlever) + self.afficheOptionnel() + self.monOptionnel.affiche(self.listeMc) + if len(listeNode) == 0 : return + if len(listeNode) == 1 : + listeNode[0].delete() + self.editor.afficheInfos("") + return + for noeud in listeNode: + noeud.treeParent.item.suppItem(noeud.item) + noeud.treeParent.buildChildren() + self.editor.afficheInfos("") + + def ajoutMC(self,texteListeNom): + listeNom=texteListeNom.split("+")[1:] + firstNode=None + for nom in listeNom: + if nom not in self.dictMCVenantDesBlocs: + #print "bizarre, bizarre" + self.editor.initModif() + nouveau=self.node.appendChild(nom) + else : + self.editor.initModif() + widget=self.dictMCVenantDesBlocs[nom] + nouveau=widget.node.appendChild(nom) + if firstNode==None : firstNode=nouveau + if nouveau == None or nouveau == 0 : + self.editor.afficheInfos(tr('insertion impossible a cet endroit pour '+nom),Qt.red) + try : + self.reaffiche(firstNode) + if firstNode!=None and firstNode !=0 and firstNode.item!=None : firstNode.select() + except : + pass + + + def setPlie(self): + self.node.setPlie() + self.reaffiche(self.node) + + def setDeplie(self): + #print ('je passe ds setDeplie de groupe', self.obj.nom) + self.node.firstDeplie = False + self.node.setDeplie() + self.reaffiche(self.node) + + + def traiteClicSurLabel(self,texte): + if self.editor.code != "CARMELCND" : self.afficheOptionnel() + + + def propageChange(self,leType,donneLefocus): + self.parentQt.propageChange(leType,donneLefocus) diff --git a/InterfaceQT4/monBoutonValide.py b/InterfaceQT4/monBoutonValide.py index 78864707..2add2cb3 100644 --- a/InterfaceQT4/monBoutonValide.py +++ b/InterfaceQT4/monBoutonValide.py @@ -29,46 +29,44 @@ from Extensions.i18n import tr class MonBoutonValide(QToolButton) : - def __init__(self,parent): + def __init__(self,parent): QToolButton.__init__(self,parent) - while( not(hasattr(parent,'node'))): - parent= parent.parent() + while( not(hasattr(parent,'node'))): + parent= parent.parent() self.parent=parent - def mouseDoubleClickEvent(self, event): + def mouseDoubleClickEvent(self, event): #print "dans mouseDoubleClickEvent" strAide=self.parent.node.item.object.getFr() if hasattr(self.parent.node.item.object.definition, 'defaut') : - strAide+='\ndefaut : \n'+str(self.parent.node.item.object.definition.defaut) + strAide+='\ndefaut : \n'+str(self.parent.node.item.object.definition.defaut) strRapport=str(self.parent.node.item.object.report()) self.parent.editor._viewText(strAide+"\n"+strRapport, "JDC_RAPPORT") - def mousePressEvent(self, event): - #print "dans mousePressEvent" - if self.parent.node.item.object.isValid() : - myToolTip=tr("objet valide") - if self.parent.editor.maConfiguration.differencieSiDefaut : - if hasattr(self.parent.node.item.object.definition, 'defaut') : - if self.parent.node.item.object.valeur != self.parent.node.item.object.definition.defaut : - myToolTip+='\ndefaut : \n'+str(self.parent.node.item.object.definition.defaut) - - QToolTip.showText(event.globalPos(),myToolTip ) - else : - t="" - texte=self.parent.node.item.object.report().report() - deb=1 - for l in texte.split('\n')[2:-2]: - if re.match('^[\t !]*$',l) : continue - if re.match('^ *Fin Mot-cl',l) : continue - if re.match('^ *D?but Mot-cl',l) : continue - if re.match('^ *Mot-cl',l) : continue - l=l.replace('!','') - if deb : - deb=0 - t=l - else : - t=t+'\n'+l - myToolTip=tr(t) - QToolTip.showText(event.globalPos(),myToolTip ) - + def mousePressEvent(self, event): + #print "dans mousePressEvent" + if self.parent.node.item.object.isValid() : + myToolTip=tr("objet valide") + if self.parent.editor.maConfiguration.differencieSiDefaut : + if hasattr(self.parent.node.item.object.definition, 'defaut') : + if self.parent.node.item.object.valeur != self.parent.node.item.object.definition.defaut : + myToolTip+='\ndefaut : \n'+str(self.parent.node.item.object.definition.defaut) + QToolTip.showText(event.globalPos(),myToolTip ) + else : + t="" + texte=self.parent.node.item.object.report().report() + deb=1 + for l in texte.split('\n')[2:-2]: + if re.match('^[\t !]*$',l) : continue + if re.match('^ *Fin Mot-cl',l) : continue + if re.match('^ *D?but Mot-cl',l) : continue + if re.match('^ *Mot-cl',l) : continue + l=l.replace('!','') + if deb : + deb=0 + t=l + else : + t=t+'\n'+l + myToolTip=tr(t) + QToolTip.showText(event.globalPos(),myToolTip ) diff --git a/InterfaceQT4/monChoixCata.py b/InterfaceQT4/monChoixCata.py index 8ecd647d..b63b088d 100644 --- a/InterfaceQT4/monChoixCata.py +++ b/InterfaceQT4/monChoixCata.py @@ -28,23 +28,22 @@ from Extensions.i18n import tr # Import des panels class MonChoixCata(Ui_DChoixCata,QDialog): - """ - """ - def __init__(self, QWparent, listeCata, title = None): - QDialog.__init__(self, QWparent) - self.setModal(True) - self.setupUi(self) - self.CBChoixCata.addItems(listeCata) - self.TLNb.setText(tr("%d versions du catalogue sont disponibles", len(listeCata))) - if title is not None: - self.setWindowTitle(tr(title)) - self.buttonOk.clicked.connect(self.cataChoisi) - self.buttonCancel.clicked.connect(self.sortSansChoix) + """ + """ + def __init__(self, QWparent, listeCata, title = None): + QDialog.__init__(self, QWparent) + self.setModal(True) + self.setupUi(self) + self.CBChoixCata.addItems(listeCata) + self.TLNb.setText(tr("%d versions du catalogue sont disponibles", len(listeCata))) + if title is not None: + self.setWindowTitle(tr(title)) + self.buttonOk.clicked.connect(self.cataChoisi) + self.buttonCancel.clicked.connect(self.sortSansChoix) - def sortSansChoix(self): - QDialog.reject(self) - - def cataChoisi(self): - QDialog.accept(self) + def sortSansChoix(self): + QDialog.reject(self) + def cataChoisi(self): + QDialog.accept(self) diff --git a/InterfaceQT4/monChoixCode.py b/InterfaceQT4/monChoixCode.py index a5a2ddcc..113180b3 100644 --- a/InterfaceQT4/monChoixCode.py +++ b/InterfaceQT4/monChoixCode.py @@ -22,7 +22,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import os,sys,re @@ -31,83 +31,83 @@ from PyQt5.QtWidgets import QDialog, QRadioButton, QGroupBox, QButtonGroup from PyQt5.QtGui import QPalette from PyQt5.QtCore import QProcess, QFileInfo, Qt, QSize - + # Import des panels class MonChoixCode(Ui_ChoixCode,QDialog): - """ - Classe definissant le panel associe aux mots-cles qui demandent - a l'utilisateur de choisir une seule valeur parmi une liste de valeurs - discretes - """ - def __init__(self, appliEficas=None): - QDialog.__init__(self,parent=appliEficas,flags=Qt.Window) - self.setModal(True) - self.setupUi(self) - self.appliEficas=appliEficas - self.verifieInstall() - self.code=None - self.buttonBox.accepted.disconnect(self.accept) - self.buttonBox.accepted.connect(self.choisitCode) - # self.pB_OK.clicked.connect(self.choisitCode) - #self.pB_cancel.clicked.connect(self.sortie) + """ + Classe definissant le panel associe aux mots-cles qui demandent + a l'utilisateur de choisir une seule valeur parmi une liste de valeurs + discretes + """ + def __init__(self, appliEficas=None): + QDialog.__init__(self,parent=appliEficas,flags=Qt.Window) + self.setModal(True) + self.setupUi(self) + self.appliEficas=appliEficas + self.verifieInstall() + self.code=None + self.buttonBox.accepted.disconnect(self.accept) + self.buttonBox.accepted.connect(self.choisitCode) + # self.pB_OK.clicked.connect(self.choisitCode) + #self.pB_cancel.clicked.connect(self.sortie) - def sortie(self): - QDialog.reject(self) + def sortie(self): + QDialog.reject(self) - def verifieInstall(self): - self.groupCodes=QButtonGroup(self.groupBox) - vars=list(os.environ.items()) - listeCode=('Adao','Carmel3D','CarmelCND','CF','MAP','MT','PSEN','PSEN_N1','Telemac','ZCracks',) - for code in listeCode: - dirCode=os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code)) - try : - l=os.listdir(dirCode) - bouton=QRadioButton(self.groupBox) - bouton.setText(code) - self.groupCodes.addButton(bouton) - self.vlBouton.addWidget(bouton) - except : - clef="PREFS_CATA_"+code - try : + def verifieInstall(self): + self.groupCodes=QButtonGroup(self.groupBox) + vars=list(os.environ.items()) + listeCode=('Adao','Carmel3D','CarmelCND','CF','MAP','MT','PSEN','PSEN_N1','Telemac','ZCracks',) + for code in listeCode: + dirCode=os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code)) + try : + l=os.listdir(dirCode) + bouton=QRadioButton(self.groupBox) + bouton.setText(code) + self.groupCodes.addButton(bouton) + self.vlBouton.addWidget(bouton) + except : + clef="PREFS_CATA_"+code + try : + repIntegrateur=os.path.abspath(os.environ[clef]) + l=os.listdir(repIntegrateur) + bouton=QRadioButton(self.groupBox) + bouton.setText(code) + bouton.show() + self.groupCodes.addButton(bouton) + except : + pass + listeCodesIntegrateur=[] + for k,v in vars: + if re.search('^PREFS_CATA_',k) != None and k[11:] not in listeCode: + listeCodesIntegrateur.append(k[11:]) + for code in listeCodesIntegrateur: + try : + clef="PREFS_CATA_"+code repIntegrateur=os.path.abspath(os.environ[clef]) l=os.listdir(repIntegrateur) - bouton=QRadioButton(self.groupBox) + bouton=QRadioButton(self) bouton.setText(code) bouton.show() self.groupCodes.addButton(bouton) - except : + except : pass - listeCodesIntegrateur=[] - for k,v in vars: - if re.search('^PREFS_CATA_',k) != None and k[11:] not in listeCode: - listeCodesIntegrateur.append(k[11:]) - for code in listeCodesIntegrateur: - try : - clef="PREFS_CATA_"+code - repIntegrateur=os.path.abspath(os.environ[clef]) - l=os.listdir(repIntegrateur) - bouton=QRadioButton(self) - bouton.setText(code) - bouton.show() - self.groupCodes.addButton(bouton) - except : - pass - self.appliEficas.listeCode=self.appliEficas.listeCode+listeCodesIntegrateur + self.appliEficas.listeCode=self.appliEficas.listeCode+listeCodesIntegrateur - def choisitCode(self): - bouton=self.groupCodes.checkedButton() - if bouton==None : return - code=str(bouton.text()) - codeUpper=code.upper() - self.appliEficas.code=codeUpper - try : - dirCode=os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code)) - l=os.listdir(dirCode) - sys.path.insert(0,dirCode) - except : - clef="PREFS_CATA_"+code - repIntegrateur=os.path.abspath(os.environ[clef]) - l=os.listdir(repIntegrateur) - sys.path.insert(0,repIntegrateur) - self.close() + def choisitCode(self): + bouton=self.groupCodes.checkedButton() + if bouton==None : return + code=str(bouton.text()) + codeUpper=code.upper() + self.appliEficas.code=codeUpper + try : + dirCode=os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code)) + l=os.listdir(dirCode) + sys.path.insert(0,dirCode) + except : + clef="PREFS_CATA_"+code + repIntegrateur=os.path.abspath(os.environ[clef]) + l=os.listdir(repIntegrateur) + sys.path.insert(0,repIntegrateur) + self.close() diff --git a/InterfaceQT4/monChoixCommande.py b/InterfaceQT4/monChoixCommande.py index d7d2d896..367b3523 100644 --- a/InterfaceQT4/monChoixCommande.py +++ b/InterfaceQT4/monChoixCommande.py @@ -21,7 +21,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from desChoixCommandes import Ui_ChoixCommandes @@ -32,327 +32,327 @@ from PyQt5.QtCore import QSize, QRect from Extensions.i18n import tr import os - + # Import des panels class MonChoixCommande(Ui_ChoixCommandes,QWidget): - """ - """ - def __init__(self,node, jdc_item, editor): - QWidget.__init__(self,parent=None) - self.setupUi(self) - - self.repIcon=os.path.join( os.path.dirname(os.path.abspath(__file__)),'..','Editeur','icons') - iconeFile=os.path.join(self.repIcon,'lettreRblanc30.png') - icon = QIcon(iconeFile) - self.RBRegle.setIcon(icon) - self.RBRegle.setIconSize(QSize(21, 31)) - - self.item = jdc_item - self.node = node - self.editor = editor - self.simpleClic=self.editor.maConfiguration.simpleClic - self.jdc = self.item.object.getJdcRoot() - debutTitre=self.editor.titre - self.listeWidget=[] - self.dicoCmd={} - if self.editor.fichier != None : - nouveauTitre=debutTitre+" "+os.path.basename(self.editor.fichier) - else : - nouveauTitre=debutTitre - self.editor.appliEficas.setWindowTitle(nouveauTitre) - - - self.RBalpha.clicked.connect(self.afficheAlpha) - self.RBGroupe.clicked.connect(self.afficheGroupe) - self.RBOrdre.clicked.connect(self.afficheOrdre) - self.RBClear.clicked.connect(self.clearFiltre) - self.RBCasse.toggled.connect(self.ajouteRadioButtons) - self.LEFiltre.returnPressed.connect(self.ajouteRadioButtons) - self.LEFiltre.textChanged.connect(self.ajouteRadioButtons) - - if self.node.tree.item.getRegles() == () : - self.RBRegle.close() - self.labelRegle.close() - else : - self.RBRegle.clicked.connect(self.afficheRegle) - - if self.editor.readercata.Ordre_Des_Commandes == None : self.RBOrdre.close() - - - #self.editor.labelCommentaire.setText("") - if self.editor.widgetOptionnel!= None : - self.editor.fermeOptionnel() - self.editor.widgetOptionnel=None - self.name=None - - self.boolAlpha=0 - self.boolGroupe=0 - self.boolOrdre=0 - if self.editor.maConfiguration.affiche=="alpha" : - self.boolAlpha==1; - self.RBalpha.setChecked(True); - self.afficheAlpha() - elif self.editor.maConfiguration.affiche=="groupe" : - self.boolGroupe==1; - self.RBGroupe.setChecked(True); - self.afficheGroupe() - elif self.editor.maConfiguration.affiche=="ordre" : - self.boolOrdre==1; - self.RBOrdre.setChecked(True); - self.afficheOrdre() - if self.editor.maConfiguration.closeFrameRechercheCommandeSurPageDesCommandes == True : self.frameAffichage.close() - - if self.editor.widgetTree != None : self.editor.restoreSplitterSizes(2) - else: self.editor.restoreSplitterSizes(3) - - def afficheRegle(self): - self.node.tree.appellebuildLBRegles() - - def afficheAlpha(self): - self.boolAlpha=1 - self.boolGroupe=0 - self.boolOrdre=0 - self.ajouteRadioButtons() - - def afficheGroupe(self): - self.boolAlpha=0 - self.boolGroupe=1 - self.boolOrdre=0 - self.ajouteRadioButtons() - - def afficheOrdre(self): - self.boolAlpha=0 - self.boolGroupe=0 - self.boolOrdre=1 - self.ajouteRadioButtons() - - def insereNoeudApresClick(self,event): - #print self.editor.Classement_Commandes_Ds_Arbre - #if self.editor.Classement_Commandes_Ds_Arbre!= () : self.chercheOu() - #print ('dans insereNoeudApresClick') - nodeCourrant=self.node.tree.currentItem() - if nodeCourrant==None: nodeCourrant=self.node.tree.racine - if self.name != None : - plier=self.editor.maConfiguration.afficheCommandesPliees - if nodeCourrant==self.node : nouveau=self.node.appendChild(self.name,'first',plier) - else : nouveau=nodeCourrant.appendBrother(self.name,plier=plier) - else : - nouveau = 0 - 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 : - #if self.editor.affichePlie==True: nouveau.plieToutEtReaffiche() - if self.editor.maConfiguration.afficheCommandesPliees ==True: nouveau.plieToutEtReaffiche() - else : nouveau.deplieToutEtReaffiche() - nouveau.fenetre.donnePremier() - #nouveau.deplieToutEtReaffiche() - else : - self.node.setSelected(False) - nouveau.setSelected(True) - self.node.tree.setCurrentItem(nouveau) - if event != None : event.accept() - - - - def creeListeCommande(self,filtre): - listeGroupes,dictGroupes=self.jdc.getGroups() - sensibleALaCasse=self.RBCasse.isChecked() - if "CACHE" in dictGroupes: aExclure=list(dictGroupes["CACHE"]) - else: aExclure=[] - listeACreer=[] - listeEtapesDejaPresentes=[] - if self.editor.maConfiguration.rendVisiblesLesCaches : - for e in self.jdc.etapes: - listeEtapesDejaPresentes.append(e.nom) - for c in aExclure : - if c not in listeEtapesDejaPresentes : aExclure.remove(c) - for e in self.jdc.etapes: - print (e.nom) - print (e.definition.repetable) - if e.definition.repetable == 'n' : aExclure.append(e.nom) - print (aExclure) - for l in self.jdc.getListeCmd(): - print (l) - if l not in aExclure : - if sensibleALaCasse and (filtre != None and not filtre in l) : continue - if (not sensibleALaCasse) and filtre != None and (not filtre in l) and (not filtre.upper() in l) : continue - listeACreer.append(l) - return listeACreer - - def ajouteRadioButtons(self): - if self.editor.maConfiguration.nombreDeBoutonParLigne != 0 : - self.ajoutePushButtons() - return - filtre=str(self.LEFiltre.text()) - if filtre==str("") : filtre=None - if hasattr(self,'buttonGroup') : - for b in self.buttonGroup.buttons(): - self.buttonGroup.removeButton(b) - b.setParent(None) - b.close() - else : - self.buttonGroup = QButtonGroup() - for w in self.listeWidget : - w.setParent(None) - w.close() - self.listeWidget=[] - if self.boolAlpha==1 : - liste=self.creeListeCommande(filtre) - for cmd in liste : - self.dicoCmd[tr(cmd)]=cmd - rbcmd=(QRadioButton(tr(cmd))) - self.buttonGroup.addButton(rbcmd) - self.commandesLayout.addWidget(rbcmd) - #if self.simpleClic : rbcmd.mouseReleaseEvent=self.insereNoeudApresClick - #else : rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick - #self.buttonGroup.buttonClicked.connect(self.rbClique) - if not(self.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick - if self.simpleClic : - self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) - else : - self.buttonGroup.buttonClicked.connect(self.rbClique) - elif self.boolGroupe==1 : - listeGroupes,dictGroupes=self.jdc.getGroups() - for grp in listeGroupes: - if grp == "CACHE" : continue - label=QLabel(self) - text=tr('

Groupe : '+tr(grp)+'

') - label.setText(text) - self.listeWidget.append(label) - aAjouter=1 - sensibleALaCasse=self.RBCasse.isChecked() - for cmd in dictGroupes[grp]: - if sensibleALaCasse and (filtre != None and not filtre in cmd) : continue - if (not sensibleALaCasse) and filtre != None and (not filtre in cmd) and (not filtre.upper() in cmd) : continue - if aAjouter == 1 : - self.commandesLayout.addWidget(label) - aAjouter=0 - self.dicoCmd[tr(cmd)]=cmd - rbcmd=(QRadioButton(tr(cmd))) - self.buttonGroup.addButton(rbcmd) - self.commandesLayout.addWidget(rbcmd) - if not(self.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick - if self.simpleClic : - self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) - else : - self.buttonGroup.buttonClicked.connect(self.rbClique) - label2=QLabel(self) - label2.setText(" ") - self.listeWidget.append(label2) - self.commandesLayout.addWidget(label2) - elif self.boolOrdre==1 : - listeFiltre=self.creeListeCommande(filtre) - liste=[] - if self.editor.readercata.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre - else : Ordre_Des_Commandes=self.editor.readercata.Ordre_Des_Commandes - for cmd in Ordre_Des_Commandes : - if cmd in listeFiltre : - liste.append(cmd) - for cmd in liste : - self.dicoCmd[tr(cmd)]=cmd - rbcmd=(QRadioButton(tr(cmd))) - self.buttonGroup.addButton(rbcmd) - self.commandesLayout.addWidget(rbcmd) - if not(self.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick - if self.simpleClic : - self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) - else : - self.buttonGroup.buttonClicked.connect(self.rbClique) - - - - def ajoutePushButtons(self): - if hasattr(self,'buttonGroup') : - for b in self.buttonGroup.buttons(): - self.buttonGroup.removeButton(b) - b.setParent(None) - b.close() - else : - self.buttonGroup = QButtonGroup() - self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) - for w in self.listeWidget : - w.setParent(None) - w.close() - self.listeWidget=[] - - if not hasattr(self,'maGrilleBouton') : - #self.commandesLayout.close() - self.maGrilleBouton=QGridLayout() - self.maGrilleBouton.setSpacing(20) - self.verticalLayout.addLayout(self.maGrilleBouton) - col=-1 - ligne = 0 - - if self.boolAlpha==1 : - liste=self.creeListeCommande(None) - elif self.boolOrdre: - liste=self.creeListeCommande(None) - listeFiltre=self.creeListeCommande(None) - liste=[] - if self.editor.readercata.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre - else : Ordre_Des_Commandes=self.editor.readercata.Ordre_Des_Commandes - for cmd in Ordre_Des_Commandes : - if cmd in listeFiltre : - liste.append(cmd) - for cmd in liste : - col=col+1 - if col == self.editor.maConfiguration.nombreDeBoutonParLigne : - col=0 - ligne=ligne+1 - self.dicoCmd[tr(cmd)]=cmd - rbcmd=QPushButton(tr(cmd)) - rbcmd.setGeometry(QRect(40, 20, 211, 71)) - rbcmd.setMaximumSize(QSize(250, 81)) - rbcmd.setStyleSheet("background-color : rgb(66, 165, 238);\n" + """ + """ + def __init__(self,node, jdc_item, editor): + QWidget.__init__(self,parent=None) + self.setupUi(self) + + self.repIcon=os.path.join( os.path.dirname(os.path.abspath(__file__)),'..','Editeur','icons') + iconeFile=os.path.join(self.repIcon,'lettreRblanc30.png') + icon = QIcon(iconeFile) + self.RBRegle.setIcon(icon) + self.RBRegle.setIconSize(QSize(21, 31)) + + self.item = jdc_item + self.node = node + self.editor = editor + self.simpleClic=self.editor.maConfiguration.simpleClic + self.jdc = self.item.object.getJdcRoot() + debutTitre=self.editor.titre + self.listeWidget=[] + self.dicoCmd={} + if self.editor.fichier != None : + nouveauTitre=debutTitre+" "+os.path.basename(self.editor.fichier) + else : + nouveauTitre=debutTitre + self.editor.appliEficas.setWindowTitle(nouveauTitre) + + + self.RBalpha.clicked.connect(self.afficheAlpha) + self.RBGroupe.clicked.connect(self.afficheGroupe) + self.RBOrdre.clicked.connect(self.afficheOrdre) + self.RBClear.clicked.connect(self.clearFiltre) + self.RBCasse.toggled.connect(self.ajouteRadioButtons) + self.LEFiltre.returnPressed.connect(self.ajouteRadioButtons) + self.LEFiltre.textChanged.connect(self.ajouteRadioButtons) + + if self.node.tree.item.getRegles() == () : + self.RBRegle.close() + self.labelRegle.close() + else : + self.RBRegle.clicked.connect(self.afficheRegle) + + if self.editor.readercata.Ordre_Des_Commandes == None : self.RBOrdre.close() + + + #self.editor.labelCommentaire.setText("") + if self.editor.widgetOptionnel!= None : + self.editor.fermeOptionnel() + self.editor.widgetOptionnel=None + self.name=None + + self.boolAlpha=0 + self.boolGroupe=0 + self.boolOrdre=0 + if self.editor.maConfiguration.affiche=="alpha" : + self.boolAlpha==1; + self.RBalpha.setChecked(True); + self.afficheAlpha() + elif self.editor.maConfiguration.affiche=="groupe" : + self.boolGroupe==1; + self.RBGroupe.setChecked(True); + self.afficheGroupe() + elif self.editor.maConfiguration.affiche=="ordre" : + self.boolOrdre==1; + self.RBOrdre.setChecked(True); + self.afficheOrdre() + if self.editor.maConfiguration.closeFrameRechercheCommandeSurPageDesCommandes == True : self.frameAffichage.close() + + if self.editor.widgetTree != None : self.editor.restoreSplitterSizes(2) + else: self.editor.restoreSplitterSizes(3) + + def afficheRegle(self): + self.node.tree.appellebuildLBRegles() + + def afficheAlpha(self): + self.boolAlpha=1 + self.boolGroupe=0 + self.boolOrdre=0 + self.ajouteRadioButtons() + + def afficheGroupe(self): + self.boolAlpha=0 + self.boolGroupe=1 + self.boolOrdre=0 + self.ajouteRadioButtons() + + def afficheOrdre(self): + self.boolAlpha=0 + self.boolGroupe=0 + self.boolOrdre=1 + self.ajouteRadioButtons() + + def insereNoeudApresClick(self,event): + #print self.editor.Classement_Commandes_Ds_Arbre + #if self.editor.Classement_Commandes_Ds_Arbre!= () : self.chercheOu() + #print ('dans insereNoeudApresClick') + nodeCourrant=self.node.tree.currentItem() + if nodeCourrant==None: nodeCourrant=self.node.tree.racine + if self.name != None : + plier=self.editor.maConfiguration.afficheCommandesPliees + if nodeCourrant==self.node : nouveau=self.node.appendChild(self.name,'first',plier) + else : nouveau=nodeCourrant.appendBrother(self.name,plier=plier) + else : + nouveau = 0 + 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 : + #if self.editor.affichePlie==True: nouveau.plieToutEtReaffiche() + if self.editor.maConfiguration.afficheCommandesPliees ==True: nouveau.plieToutEtReaffiche() + else : nouveau.deplieToutEtReaffiche() + nouveau.fenetre.donnePremier() + #nouveau.deplieToutEtReaffiche() + else : + self.node.setSelected(False) + nouveau.setSelected(True) + self.node.tree.setCurrentItem(nouveau) + if event != None : event.accept() + + + + def creeListeCommande(self,filtre): + listeGroupes,dictGroupes=self.jdc.getGroups() + sensibleALaCasse=self.RBCasse.isChecked() + if "CACHE" in dictGroupes: aExclure=list(dictGroupes["CACHE"]) + else: aExclure=[] + listeACreer=[] + listeEtapesDejaPresentes=[] + if self.editor.maConfiguration.rendVisiblesLesCaches : + for e in self.jdc.etapes: + listeEtapesDejaPresentes.append(e.nom) + for c in aExclure : + if c not in listeEtapesDejaPresentes : aExclure.remove(c) + for e in self.jdc.etapes: + print (e.nom) + print (e.definition.repetable) + if e.definition.repetable == 'n' : aExclure.append(e.nom) + print (aExclure) + for l in self.jdc.getListeCmd(): + print (l) + if l not in aExclure : + if sensibleALaCasse and (filtre != None and not filtre in l) : continue + if (not sensibleALaCasse) and filtre != None and (not filtre in l) and (not filtre.upper() in l) : continue + listeACreer.append(l) + return listeACreer + + def ajouteRadioButtons(self): + if self.editor.maConfiguration.nombreDeBoutonParLigne != 0 : + self.ajoutePushButtons() + return + filtre=str(self.LEFiltre.text()) + if filtre==str("") : filtre=None + if hasattr(self,'buttonGroup') : + for b in self.buttonGroup.buttons(): + self.buttonGroup.removeButton(b) + b.setParent(None) + b.close() + else : + self.buttonGroup = QButtonGroup() + for w in self.listeWidget : + w.setParent(None) + w.close() + self.listeWidget=[] + if self.boolAlpha==1 : + liste=self.creeListeCommande(filtre) + for cmd in liste : + self.dicoCmd[tr(cmd)]=cmd + rbcmd=(QRadioButton(tr(cmd))) + self.buttonGroup.addButton(rbcmd) + self.commandesLayout.addWidget(rbcmd) + #if self.simpleClic : rbcmd.mouseReleaseEvent=self.insereNoeudApresClick + #else : rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick + #self.buttonGroup.buttonClicked.connect(self.rbClique) + if not(self.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick + if self.simpleClic : + self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) + else : + self.buttonGroup.buttonClicked.connect(self.rbClique) + elif self.boolGroupe==1 : + listeGroupes,dictGroupes=self.jdc.getGroups() + for grp in listeGroupes: + if grp == "CACHE" : continue + label=QLabel(self) + text=tr('

Groupe : '+tr(grp)+'

') + label.setText(text) + self.listeWidget.append(label) + aAjouter=1 + sensibleALaCasse=self.RBCasse.isChecked() + for cmd in dictGroupes[grp]: + if sensibleALaCasse and (filtre != None and not filtre in cmd) : continue + if (not sensibleALaCasse) and filtre != None and (not filtre in cmd) and (not filtre.upper() in cmd) : continue + if aAjouter == 1 : + self.commandesLayout.addWidget(label) + aAjouter=0 + self.dicoCmd[tr(cmd)]=cmd + rbcmd=(QRadioButton(tr(cmd))) + self.buttonGroup.addButton(rbcmd) + self.commandesLayout.addWidget(rbcmd) + if not(self.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick + if self.simpleClic : + self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) + else : + self.buttonGroup.buttonClicked.connect(self.rbClique) + label2=QLabel(self) + label2.setText(" ") + self.listeWidget.append(label2) + self.commandesLayout.addWidget(label2) + elif self.boolOrdre==1 : + listeFiltre=self.creeListeCommande(filtre) + liste=[] + if self.editor.readercata.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre + else : Ordre_Des_Commandes=self.editor.readercata.Ordre_Des_Commandes + for cmd in Ordre_Des_Commandes : + if cmd in listeFiltre : + liste.append(cmd) + for cmd in liste : + self.dicoCmd[tr(cmd)]=cmd + rbcmd=(QRadioButton(tr(cmd))) + self.buttonGroup.addButton(rbcmd) + self.commandesLayout.addWidget(rbcmd) + if not(self.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick + if self.simpleClic : + self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) + else : + self.buttonGroup.buttonClicked.connect(self.rbClique) + + + + def ajoutePushButtons(self): + if hasattr(self,'buttonGroup') : + for b in self.buttonGroup.buttons(): + self.buttonGroup.removeButton(b) + b.setParent(None) + b.close() + else : + self.buttonGroup = QButtonGroup() + self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) + for w in self.listeWidget : + w.setParent(None) + w.close() + self.listeWidget=[] + + if not hasattr(self,'maGrilleBouton') : + #self.commandesLayout.close() + self.maGrilleBouton=QGridLayout() + self.maGrilleBouton.setSpacing(20) + self.verticalLayout.addLayout(self.maGrilleBouton) + col=-1 + ligne = 0 + + if self.boolAlpha==1 : + liste=self.creeListeCommande(None) + elif self.boolOrdre: + liste=self.creeListeCommande(None) + listeFiltre=self.creeListeCommande(None) + liste=[] + if self.editor.readercata.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre + else : Ordre_Des_Commandes=self.editor.readercata.Ordre_Des_Commandes + for cmd in Ordre_Des_Commandes : + if cmd in listeFiltre : + liste.append(cmd) + for cmd in liste : + col=col+1 + if col == self.editor.maConfiguration.nombreDeBoutonParLigne : + col=0 + ligne=ligne+1 + self.dicoCmd[tr(cmd)]=cmd + rbcmd=QPushButton(tr(cmd)) + rbcmd.setGeometry(QRect(40, 20, 211, 71)) + rbcmd.setMaximumSize(QSize(250, 81)) + rbcmd.setStyleSheet("background-color : rgb(66, 165, 238);\n" "/*border-style : outset;*/\n" "border-radius : 20px;\n" "border-width : 30 px;\n" "border-color : beige;\n" "text-align : center") - #print ('self.editor.maConfiguration.dicoImages', self.editor.maConfiguration.dicoImages) - if cmd in self.editor.maConfiguration.dicoImages : - fichier=self.editor.maConfiguration.dicoImages[cmd] - icon = QIcon() - icon.addPixmap(QPixmap(fichier), QIcon.Normal, QIcon.Off) - rbcmd.setIcon(icon) - rbcmd.setIconSize(QSize(48, 48)) - - self.buttonGroup.addButton(rbcmd) - self.maGrilleBouton.addWidget(rbcmd,ligne,col) - - def clearFiltre(self): - self.LEFiltre.setText("") - self.ajouteRadioButtons() - - def rbCliqueEtInsere(self,id): - self.rbClique(id) - self.insereNoeudApresClick(None) - - def rbClique(self,id): - - try : - self.name=self.dicoCmd[id.text()] - except : + #print ('self.editor.maConfiguration.dicoImages', self.editor.maConfiguration.dicoImages) + if cmd in self.editor.maConfiguration.dicoImages : + fichier=self.editor.maConfiguration.dicoImages[cmd] + icon = QIcon() + icon.addPixmap(QPixmap(fichier), QIcon.Normal, QIcon.Off) + rbcmd.setIcon(icon) + rbcmd.setIconSize(QSize(48, 48)) + + self.buttonGroup.addButton(rbcmd) + self.maGrilleBouton.addWidget(rbcmd,ligne,col) + + def clearFiltre(self): + self.LEFiltre.setText("") + self.ajouteRadioButtons() + + def rbCliqueEtInsere(self,id): + self.rbClique(id) + self.insereNoeudApresClick(None) + + def rbClique(self,id): + try : - self.name=self.dicoCmd[str(id.text())] + self.name=self.dicoCmd[id.text()] except : - print ('pb d accent : contacter la maintenance') + try : + self.name=self.dicoCmd[str(id.text())] + except : + print ('pb d accent : contacter la maintenance') - definitionEtape=getattr(self.jdc.cata,self.name) - #commentaire=getattr(definitionEtape,self.jdc.lang) - try : - commentaire=getattr(definitionEtape,self.jdc.lang) - except : + definitionEtape=getattr(self.jdc.cata,self.name) + #commentaire=getattr(definitionEtape,self.jdc.lang) try : - commentaire=getattr(definitionEtape,"ang") + commentaire=getattr(definitionEtape,self.jdc.lang) except : - commentaire="" - self.editor.afficheCommentaire(commentaire) + try : + commentaire=getattr(definitionEtape,"ang") + except : + commentaire="" + self.editor.afficheCommentaire(commentaire) - def setValide(self): - #PNPN a priori pas d icone mais peut-etre a faire - pass + def setValide(self): + #PNPN a priori pas d icone mais peut-etre a faire + pass diff --git a/InterfaceQT4/monChoixLangue.py b/InterfaceQT4/monChoixLangue.py index decc00be..f7211aca 100644 --- a/InterfaceQT4/monChoixLangue.py +++ b/InterfaceQT4/monChoixLangue.py @@ -28,31 +28,30 @@ from PyQt5.QtWidgets import QDialog, QRadioButton, QGroupBox, QButtonGroup from PyQt5.QtGui import QPalette from PyQt5.QtCore import QProcess, QFileInfo, Qt, QSize - + # Import des panels class MonChoixLangue(Ui_ChoixLangue,QDialog): - """ - Classe definissant le panel associe aux mots-cles qui demandent - a l'utilisateur de choisir une seule valeur parmi une liste de valeurs - discretes - """ - def __init__(self, appliEficas=None): - QDialog.__init__(self,appliEficas) - self.setModal(True) - self.setupUi(self) - self.appliEficas=appliEficas - self.installLangue() - self.code=None - self.pB_OK.clicked.connect(self.choisitLangue) - - - def installLangue(self): - if self.appliEficas.langue == 'fr' : self.rbFrancais.setChecked(True) - else : self.rbEnglish.setChecked(True) - - def choisitLangue(self): - if self.rbFrancais.isChecked() : self.appliEficas.langue='fr' - else : self.appliEficas.langue ='ang' - self.close() - + """ + Classe definissant le panel associe aux mots-cles qui demandent + a l'utilisateur de choisir une seule valeur parmi une liste de valeurs + discretes + """ + def __init__(self, appliEficas=None): + QDialog.__init__(self,appliEficas) + self.setModal(True) + self.setupUi(self) + self.appliEficas=appliEficas + self.installLangue() + self.code=None + self.pB_OK.clicked.connect(self.choisitLangue) + + + def installLangue(self): + if self.appliEficas.langue == 'fr' : self.rbFrancais.setChecked(True) + else : self.rbEnglish.setChecked(True) + + def choisitLangue(self): + if self.rbFrancais.isChecked() : self.appliEficas.langue='fr' + else : self.appliEficas.langue ='ang' + self.close() diff --git a/InterfaceQT4/monFonctionPanel.py b/InterfaceQT4/monFonctionPanel.py index 93dd4102..dd9ca650 100644 --- a/InterfaceQT4/monFonctionPanel.py +++ b/InterfaceQT4/monFonctionPanel.py @@ -20,8 +20,8 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str - from builtins import range + from builtins import str + from builtins import range except : pass import types,os @@ -40,28 +40,28 @@ class MonFonctionPanel(MonPlusieursBasePanel): # Classe definissant le panel associee aux mots-cles qui demandent # a l'utilisateur de choisir une seule valeur parmi une liste de valeurs # discretes - def __init__(self,node, parent = None,name = None,fl = 0): + def __init__(self,node, parent = None,name = None,fl = 0): #print "MonFonctionPanel" self.node=node self.setNbValeurs() MonPlusieursBasePanel.__init__(self,node,parent,name,fl) - def setNbValeurs(self): + def setNbValeurs(self): self.nbValeurs = 1 if self.node.item.waitTuple()== 1 : - for a in self.node.item.definition.type : - try : - self.nbValeurs = a.ntuple - break - except : - pass + for a in self.node.item.definition.type : + try : + self.nbValeurs = a.ntuple + break + except : + pass genea=self.node.item.getGenealogie() self.nbValeursASaisir=self.nbValeurs if "VALE" in genea: self.nbValeurs=2 if "VALE_C" in genea: self.nbValeurs=3 - def decoupeListeValeurs(self,liste): + def decoupeListeValeurs(self,liste): #decoupe la liste des valeurs en n ( les x puis les y) l_valeurs=[] if ((len(liste)% self.nbValeursASaisir != 0 and (len(liste)% self.nbValeurs))): @@ -70,114 +70,114 @@ class MonFonctionPanel(MonPlusieursBasePanel): i=0 while ( i < len(liste) ) : try : - t=tuple(liste[i:i+self.nbValeurs]) - i=i+self.nbValeurs + t=tuple(liste[i:i+self.nbValeurs]) + i=i+self.nbValeurs except: - t=tuple(liste[i:len(liste)]) + t=tuple(liste[i:len(liste)]) l_valeurs.append(t) return l_valeurs - def buildLBValeurs(self,listeValeurs=None): + def buildLBValeurs(self,listeValeurs=None): self.LBValeurs.clear() if listeValeurs== None : - listeValeurs=self.node.item.getListeValeurs() + listeValeurs=self.node.item.getListeValeurs() if self.node.item.waitTuple()== 1 : - listeATraiter=listeValeurs - for valeur in listeATraiter: - str_valeur=str(valeur) - self.LBValeurs.addItem(str_valeur) - else : - for valeur in self.decoupeListeValeurs(listeValeurs): - if type(valeur) == tuple: - TupleEnTexte="(" - for val in valeur : - TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", " - TupleEnTexte = TupleEnTexte[0:-2] +")" - self.LBValeurs.addItem(TupleEnTexte) - else : - self.LBValeurs.addItem(str(valeur)) - - - def ajout1Valeur(self,liste=[]): + listeATraiter=listeValeurs + for valeur in listeATraiter: + str_valeur=str(valeur) + self.LBValeurs.addItem(str_valeur) + else : + for valeur in self.decoupeListeValeurs(listeValeurs): + if type(valeur) == tuple: + TupleEnTexte="(" + for val in valeur : + TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", " + TupleEnTexte = TupleEnTexte[0:-2] +")" + self.LBValeurs.addItem(TupleEnTexte) + else : + self.LBValeurs.addItem(str(valeur)) + + + def ajout1Valeur(self,liste=[]): # Pour etre appele a partir du Panel Importer (donc plusieurs fois par AjouterNValeur) validite=1 if liste == [] : - if self.node.item.waitTuple()== 1 : - liste=SaisieValeur.TraiteLEValeurTuple(self) - if liste == [''] : return - else : - liste,validite=SaisieValeur.TraiteLEValeur(self) - if validite == 0 : return + if self.node.item.waitTuple()== 1 : + liste=SaisieValeur.TraiteLEValeurTuple(self) + if liste == [''] : return + else : + liste,validite=SaisieValeur.TraiteLEValeur(self) + if validite == 0 : return if liste ==[] : return if (self.node.item.waitTuple()== 1 and len(liste) != self.nbValeurs): - commentaire = str(liste) - commentaire += tr(" n est pas un tuple de ") - commentaire += str(self.nbValeursASaisir) + commentaire = str(liste) + commentaire += tr(" n est pas un tuple de ") + commentaire += str(self.nbValeursASaisir) commentaire += tr(" valeurs") - self.LEValeur.setText(str(liste)) + self.LEValeur.setText(str(liste)) self.editor.afficheInfos(commentaire,Qt.red) return if self.node.item.waitTuple()== 1 : - liste2=tuple(liste) - liste=liste2 + liste2=tuple(liste) + liste=liste2 index=self.LBValeurs.currentRow() if ((self.LBValeurs.isItemSelected(self.LBValeurs.item(index )) == 0) and (index > 0 )): - index=0 + index=0 else : - index=self.LBValeurs.currentRow() + 1 + index=self.LBValeurs.currentRow() + 1 indexListe=index*self.nbValeurs if index == 0 : indexListe=len(self.listeValeursCourantes) listeVal=[] for valeur in self.listeValeursCourantes : - listeVal.append(valeur) + listeVal.append(valeur) if self.node.item.waitTuple()== 1 : - indexListe = index - validite,comm,comm2,listeRetour=self.politique.ajoutTuple(liste,index,listeVal) + indexListe = index + validite,comm,comm2,listeRetour=self.politique.ajoutTuple(liste,index,listeVal) else : - validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,index,listeVal) + validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,index,listeVal) self.Commentaire.setText(tr(comm2)) if not validite : - self.editor.afficheInfos(comm,Qt.red) + self.editor.afficheInfos(comm,Qt.red) else: - self.LEValeur.setText("") - l1=self.listeValeursCourantes[:indexListe] - l3=self.listeValeursCourantes[indexListe:] - if self.node.item.waitTuple()== 1 : - listeATraiter=listeRetour - else : - listeATraiter=self.decoupeListeValeurs(listeRetour) - for valeur in listeATraiter : - if type(valeur) == tuple: - TupleEnTexte="(" - for val in valeur : - TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", " - str_valeur = TupleEnTexte[0:-2] +")" - else : - str_valeur=str(valeur) - self.LBValeurs.insertItem(index,str_valeur) - item=self.LBValeurs.item(index) - item.setSelected(1) - self.LBValeurs.setCurrentItem(item) - index=index+1 - self.listeValeursCourantes=l1+listeRetour+l3 - self.buildLBValeurs(self.listeValeursCourantes) - - - def ajoutNValeur(self,liste) : + self.LEValeur.setText("") + l1=self.listeValeursCourantes[:indexListe] + l3=self.listeValeursCourantes[indexListe:] + if self.node.item.waitTuple()== 1 : + listeATraiter=listeRetour + else : + listeATraiter=self.decoupeListeValeurs(listeRetour) + for valeur in listeATraiter : + if type(valeur) == tuple: + TupleEnTexte="(" + for val in valeur : + TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", " + str_valeur = TupleEnTexte[0:-2] +")" + else : + str_valeur=str(valeur) + self.LBValeurs.insertItem(index,str_valeur) + item=self.LBValeurs.item(index) + item.setSelected(1) + self.LBValeurs.setCurrentItem(item) + index=index+1 + self.listeValeursCourantes=l1+listeRetour+l3 + self.buildLBValeurs(self.listeValeursCourantes) + + + def ajoutNValeur(self,liste) : if len(liste)%self.nbValeurs != 0 : - texte="Nombre de valeur incorrecte" - #self.Commentaire.setText(texte) - self.editor.afficheInfos(texte,Qt.red) - return + texte="Nombre de valeur incorrecte" + #self.Commentaire.setText(texte) + self.editor.afficheInfos(texte,Qt.red) + return listeDecoupee=self.decoupeListeValeurs(liste) for vals in listeDecoupee : self.ajout1Valeur(vals) - - def sup1Valeur(self): + + def sup1Valeur(self): index=self.LBValeurs.currentRow() if index == None : return removed_item = self.LBValeurs.takeItem(index) @@ -189,14 +189,12 @@ class MonFonctionPanel(MonPlusieursBasePanel): indexAOter=index*self.nbValeurs + i indexInterdit.append(indexAOter) if self.node.item.waitTuple()== 1 : - indexInterdit=[index] + indexInterdit=[index] i=0 for valeur in self.listeValeursCourantes : - if not (i in indexInterdit) : + if not (i in indexInterdit) : listeVal.append(valeur) i = i+1 self.listeValeursCourantes=listeVal listeValeurs=self.listeValeursCourantes - - diff --git a/InterfaceQT4/monGroupeOptionnel.py b/InterfaceQT4/monGroupeOptionnel.py index 7b17edba..3bc3f942 100644 --- a/InterfaceQT4/monGroupeOptionnel.py +++ b/InterfaceQT4/monGroupeOptionnel.py @@ -28,161 +28,160 @@ from Extensions.i18n import tr from desGroupeOptionnel import Ui_groupeOptionnel from desPBOptionnelMT import Ui_customPB - + # Import des panels class MonRBButtonCustom(QCheckBox): - def __init__(self,texte,monOptionnel,parent=None,couleur=None): - QCheckBox.__init__(self,tr(texte),parent) - self.mousePressed=True - self.monOptionnel=monOptionnel - self.setToolTip(tr("clicker: affichage aide, double-click: ajout")) - if couleur != None : - mapalette=self.palette() - mapalette.setColor( QPalette.WindowText, couleur ) - mapalette.setColor( QPalette.Base, Qt.green ) - self.setPalette( mapalette ); - self.setText(tr(texte)) - try : - monToolTip=monOptionnel.parentMC.dictToolTipMc[texte] - self.setToolTip(monToolTip) - except : - pass - - - def mouseDoubleClickEvent(self, event): - #print "dans mouseDoubleClickEvent", self - if self not in self.monOptionnel.dicoCb: - event.accept() - return - listeCheckedMC="+"+self.monOptionnel.dicoCb[self] - self.monOptionnel.parentMC.ajoutMC(listeCheckedMC) - event.accept() - - - def mousePressEvent(self, event): - if not( event.button() != Qt.RightButton) : - event.accept() - return - if self.monOptionnel.cbPressed != None : - self.monOptionnel.cbPressed.setChecked(False) - self.monOptionnel.cbPressed=self - if self.mousePressed == False : - self.mousePressed=True - else : - self.mousePressed=False - self.ajoutAideMC() - QCheckBox.mousePressEvent(self, event) - event.accept() - - def ajoutAideMC(self): - try : - maDefinition = self.monOptionnel.parentMC.definition.entites[self.texte] - maLangue = self.monOptionnel.parentMC.jdc.lang - if hasattr(maDefinition,maLangue): - self.monAide = getattr(maDefinition,self.monOptionnel.parentMC.jdc.lang) - else : - self.monAide = "" - except : - self.monAide = "" - self.monOptionnel.parentMC.editor.afficheCommentaire(self.monAide) - + def __init__(self,texte,monOptionnel,parent=None,couleur=None): + QCheckBox.__init__(self,tr(texte),parent) + self.mousePressed=True + self.monOptionnel=monOptionnel + self.setToolTip(tr("clicker: affichage aide, double-click: ajout")) + if couleur != None : + mapalette=self.palette() + mapalette.setColor( QPalette.WindowText, couleur ) + mapalette.setColor( QPalette.Base, Qt.green ) + self.setPalette( mapalette ); + self.setText(tr(texte)) + try : + monToolTip=monOptionnel.parentMC.dictToolTipMc[texte] + self.setToolTip(monToolTip) + except : + pass + + + def mouseDoubleClickEvent(self, event): + #print "dans mouseDoubleClickEvent", self + if self not in self.monOptionnel.dicoCb: + event.accept() + return + listeCheckedMC="+"+self.monOptionnel.dicoCb[self] + self.monOptionnel.parentMC.ajoutMC(listeCheckedMC) + event.accept() + + + def mousePressEvent(self, event): + if not( event.button() != Qt.RightButton) : + event.accept() + return + if self.monOptionnel.cbPressed != None : + self.monOptionnel.cbPressed.setChecked(False) + self.monOptionnel.cbPressed=self + if self.mousePressed == False : + self.mousePressed=True + else : + self.mousePressed=False + self.ajoutAideMC() + QCheckBox.mousePressEvent(self, event) + event.accept() + + def ajoutAideMC(self): + try : + maDefinition = self.monOptionnel.parentMC.definition.entites[self.texte] + maLangue = self.monOptionnel.parentMC.jdc.lang + if hasattr(maDefinition,maLangue): + self.monAide = getattr(maDefinition,self.monOptionnel.parentMC.jdc.lang) + else : + self.monAide = "" + except : + self.monAide = "" + self.monOptionnel.parentMC.editor.afficheCommentaire(self.monAide) + class MonPBButtonCustom(QWidget,Ui_customPB): - def __init__(self,texte,monOptionnel,parent=None,couleur=None): - QWidget.__init__(self) - self.setupUi(self) - if couleur != None : - self.monPb.setText(texte) - self.monPb.setStyleSheet('QPushButton {background-color: #A3C1DA; color: red;}') - #mapalette=self.monPb.palette() - #mapalette.setColor( QPalette.ButtonText, Qt.red ) - #self.monPb.setPalette( mapalette ) - self.monPb.update() - #self.update() - try : - monToolTip=monOptionnel.parentMC.dictToolTipMc[texte] - self.monPb.setToolTip(monToolTip) - except : - pass - self.monPb.setText(texte) - self.monPb.clicked.connect(self.ajoutMC) - - self.texte=texte - self.monOptionnel=monOptionnel - self.definitAideMC() - self.setToolTip(self.monAide) - - def ajoutMC (self) : - listeCheckedMC="+"+self.monOptionnel.dicoCb[self] - self.monOptionnel.parentMC.ajoutMC(listeCheckedMC) - - def definitAideMC(self): - try : - maDefinition = self.monOptionnel.parentMC.definition.entites[self.texte] - maLangue = self.monOptionnel.parentMC.jdc.lang - if hasattr(maDefinition,maLangue): - self.monAide = getattr(maDefinition,self.monOptionnel.parentMC.jdc.lang) - except : - self.monAide = "" - -class MonGroupeOptionnel (QWidget,Ui_groupeOptionnel): - """ - """ - def __init__(self,liste,liste_rouge,parentQt,parentMC): - #print ("dans init de monWidgetOptionnel ", parentQt, liste,parentMC) - QWidget.__init__(self,None) - self.setupUi(self) - self.listeChecked=[] - self.dicoCb={} - self.mousePressed=False - self.cbPressed=None - self.cb=None - self.parentQt=parentQt - self.parentMC=parentMC - - - if liste != [] : - self.affiche(liste,liste_rouge) - self.afficheTitre() - elif self.parentQt.parentQt.maConfiguration.afficheOptionnelVide != False : - self.afficheTitre() - self.MCOptionnelLayout.insertWidget(0,QLabel(tr('Pas de MC Optionnel'))) - else : - self.frameLabelMC.close() - #print "dans fin de monWidgetOptionnel ", parentQt - - - def afficheTitre(self): - labeltext,fonte,couleur = self.parentMC.node.item.getLabelText() - #print (labeltext) - l=tr(labeltext) - li=[] - while len(l) > 25: - li.append(l[0:24]) - l=l[24:] - li.append(l) - texte="" - for l in li : texte+=l+"\n" - texte=texte[0:-1] - self.MCLabel.setText(texte) - - def affiche(self,liste,liste_rouge): - #print ("dans Optionnel ____ affiche", liste,liste_rouge) - self.dicoCb={} - liste.reverse() - for mot in liste : - #if mot in liste_rouge : print ('je dois afficher en rouge' , mot) - couleur=None - if mot in liste_rouge : couleur=Qt.red - if self.parentQt.parentQt.maConfiguration.simpleClic == False : - cb = MonRBButtonCustom(mot,self,couleur=couleur) - cb.clicked.connect(cb.ajoutAideMC) - else : - cb = MonPBButtonCustom(mot,self,couleur=couleur) - - self.MCOptionnelLayout.insertWidget(0,cb) - self.dicoCb[cb]=mot - self.scrollAreaCommandesOptionnelles.horizontalScrollBar().setSliderPosition(0) + def __init__(self,texte,monOptionnel,parent=None,couleur=None): + QWidget.__init__(self) + self.setupUi(self) + if couleur != None : + self.monPb.setText(texte) + self.monPb.setStyleSheet('QPushButton {background-color: #A3C1DA; color: red;}') + #mapalette=self.monPb.palette() + #mapalette.setColor( QPalette.ButtonText, Qt.red ) + #self.monPb.setPalette( mapalette ) + self.monPb.update() + #self.update() + try : + monToolTip=monOptionnel.parentMC.dictToolTipMc[texte] + self.monPb.setToolTip(monToolTip) + except : + pass + self.monPb.setText(texte) + self.monPb.clicked.connect(self.ajoutMC) + + self.texte=texte + self.monOptionnel=monOptionnel + self.definitAideMC() + self.setToolTip(self.monAide) + + def ajoutMC (self) : + listeCheckedMC="+"+self.monOptionnel.dicoCb[self] + self.monOptionnel.parentMC.ajoutMC(listeCheckedMC) + + def definitAideMC(self): + try : + maDefinition = self.monOptionnel.parentMC.definition.entites[self.texte] + maLangue = self.monOptionnel.parentMC.jdc.lang + if hasattr(maDefinition,maLangue): + self.monAide = getattr(maDefinition,self.monOptionnel.parentMC.jdc.lang) + except : + self.monAide = "" +class MonGroupeOptionnel (QWidget,Ui_groupeOptionnel): + """ + """ + def __init__(self,liste,liste_rouge,parentQt,parentMC): + #print ("dans init de monWidgetOptionnel ", parentQt, liste,parentMC) + QWidget.__init__(self,None) + self.setupUi(self) + self.listeChecked=[] + self.dicoCb={} + self.mousePressed=False + self.cbPressed=None + self.cb=None + self.parentQt=parentQt + self.parentMC=parentMC + + + if liste != [] : + self.affiche(liste,liste_rouge) + self.afficheTitre() + elif self.parentQt.parentQt.maConfiguration.afficheOptionnelVide != False : + self.afficheTitre() + self.MCOptionnelLayout.insertWidget(0,QLabel(tr('Pas de MC Optionnel'))) + else : + self.frameLabelMC.close() + #print "dans fin de monWidgetOptionnel ", parentQt + + + def afficheTitre(self): + labeltext,fonte,couleur = self.parentMC.node.item.getLabelText() + #print (labeltext) + l=tr(labeltext) + li=[] + while len(l) > 25: + li.append(l[0:24]) + l=l[24:] + li.append(l) + texte="" + for l in li : texte+=l+"\n" + texte=texte[0:-1] + self.MCLabel.setText(texte) + + def affiche(self,liste,liste_rouge): + #print ("dans Optionnel ____ affiche", liste,liste_rouge) + self.dicoCb={} + liste.reverse() + for mot in liste : + #if mot in liste_rouge : print ('je dois afficher en rouge' , mot) + couleur=None + if mot in liste_rouge : couleur=Qt.red + if self.parentQt.parentQt.maConfiguration.simpleClic == False : + cb = MonRBButtonCustom(mot,self,couleur=couleur) + cb.clicked.connect(cb.ajoutAideMC) + else : + cb = MonPBButtonCustom(mot,self,couleur=couleur) + + self.MCOptionnelLayout.insertWidget(0,cb) + self.dicoCb[cb]=mot + self.scrollAreaCommandesOptionnelles.horizontalScrollBar().setSliderPosition(0) diff --git a/InterfaceQT4/monLabelClic.py b/InterfaceQT4/monLabelClic.py index af472949..a5e393cb 100644 --- a/InterfaceQT4/monLabelClic.py +++ b/InterfaceQT4/monLabelClic.py @@ -33,20 +33,19 @@ from Extensions.i18n import tr class MonLabelClic(QLabel) : - def __init__(self,parent): + def __init__(self,parent): QLabel.__init__(self,parent) - # Pas propre mais impossible de faire fonctionner isinstance sur Groupe, MonWidgetCommande + # Pas propre mais impossible de faire fonctionner isinstance sur Groupe, MonWidgetCommande # PNPNPN ? a ameliorer if isinstance (parent,QFrame): parent=parent.parent() while not( hasattr(parent,'traiteClicSurLabel')) : - try : parent=parent.parent() - except : print ("pb avec MonLabelClic"); break + try : parent=parent.parent() + except : print ("pb avec MonLabelClic"); break self.parent=parent - def event(self,event) : - if event.type() == QEvent.MouseButtonRelease: + def event(self,event) : + if event.type() == QEvent.MouseButtonRelease: self.texte=self.text() self.parent.traiteClicSurLabel(self.texte) - return QLabel.event(self,event) - + return QLabel.event(self,event) diff --git a/InterfaceQT4/monLayoutBouton.py b/InterfaceQT4/monLayoutBouton.py index 49a431a4..aa68f39c 100644 --- a/InterfaceQT4/monLayoutBouton.py +++ b/InterfaceQT4/monLayoutBouton.py @@ -21,7 +21,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from PyQt5.QtWidgets import QButtonGroup, QToolButton @@ -34,34 +34,32 @@ class MonLayoutBouton : #---------------------- # ------------------------------- - def __init__(self,appliEficas): + def __init__(self,appliEficas): # ------------------------------- - self.appliEficas = appliEficas - self.buttonGroup = QButtonGroup() - - for etape in self.appliEficas.readercata.cata.JdC.commandes : - nomEtape = etape.nom - toolButton = QToolButton(self.appliEficas.toolBarCommande) - icon = QIcon() - if nomEtape in self.appliEficas.maConfiguration.dicoIcones: - fichier = self.appliEficas.maConfiguration.dicoIcones[nomEtape] - icon.addPixmap(QPixmap(fichier), QIcon.Normal, QIcon.Off) - toolButton.setIcon(icon) - else : - try : label = nomEtape[0:3] - except : label = nomEtape - toolButton.setText(label) + self.appliEficas = appliEficas + self.buttonGroup = QButtonGroup() - action = self.appliEficas.toolBarCommande.addWidget(toolButton) - action.setVisible(True) - toolButton.setObjectName(nomEtape) - toolButton.setToolTip(tr(nomEtape)) - self.buttonGroup.addButton(toolButton) + for etape in self.appliEficas.readercata.cata.JdC.commandes : + nomEtape = etape.nom + toolButton = QToolButton(self.appliEficas.toolBarCommande) + icon = QIcon() + if nomEtape in self.appliEficas.maConfiguration.dicoIcones: + fichier = self.appliEficas.maConfiguration.dicoIcones[nomEtape] + icon.addPixmap(QPixmap(fichier), QIcon.Normal, QIcon.Off) + toolButton.setIcon(icon) + else : + try : label = nomEtape[0:3] + except : label = nomEtape + toolButton.setText(label) - self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) - - def rbCliqueEtInsere(self,id): - self.appliEficas.handleAjoutEtape(id.objectName()) + action = self.appliEficas.toolBarCommande.addWidget(toolButton) + action.setVisible(True) + toolButton.setObjectName(nomEtape) + toolButton.setToolTip(tr(nomEtape)) + self.buttonGroup.addButton(toolButton) + self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) + def rbCliqueEtInsere(self,id): + self.appliEficas.handleAjoutEtape(id.objectName()) diff --git a/InterfaceQT4/monRecherche.py b/InterfaceQT4/monRecherche.py index 059456cc..e0f29b11 100644 --- a/InterfaceQT4/monRecherche.py +++ b/InterfaceQT4/monRecherche.py @@ -29,36 +29,35 @@ from PyQt5.QtCore import Qt # Import des panels class DRecherche(Ui_desRecherche ,QDialog): - """ - """ - def __init__(self,parent = None , name = None,fl = 0): - QDialog.__init__(self,parent) - self.parentQT=parent - self.tree=self.parentQT.tree - self.setupUi(self) - self.PBSuivant.setDefault(True) - self.PBSuivant.setAutoDefault(False) - self.PBSuivant.clicked.connect( self.suivantClicked) - self.LERecherche.returnPressed.connect(self.recherche) - self.surLigne=0 - self.listeTrouvee=() - self.nodeSurligne=None + """ + """ + def __init__(self,parent = None , name = None,fl = 0): + QDialog.__init__(self,parent) + self.parentQT=parent + self.tree=self.parentQT.tree + self.setupUi(self) + self.PBSuivant.setDefault(True) + self.PBSuivant.setAutoDefault(False) + self.PBSuivant.clicked.connect( self.suivantClicked) + self.LERecherche.returnPressed.connect(self.recherche) + self.surLigne=0 + self.listeTrouvee=() + self.nodeSurligne=None - def suivantClicked(self): - #if self.motAChercher!=self.LERecherche.text(): self.recherche() - if self.listeTrouvee=={} : return - if self.surLigne > len(self.listeTrouvee) -1 : return - if self.nodeSurligne!=None : self.nodeSurligne.updateNodeTexteInBlack() - #self.listeTrouvee[self.surLigne].updateNodeTexteInBlue() - #self.nodeSurligne=self.listeTrouvee[self.surLigne] - self.listeTrouvee[self.surLigne].select() - self.listeTrouvee[self.surLigne].affichePanneau() - self.surLigne=self.surLigne+1 - self.PBSuivant.setFocus() - if self.surLigne == len(self.listeTrouvee): self.surLigne=0 - - def recherche(self): - self.motAChercher=self.LERecherche.text() - self.listeTrouvee=self.tree.findItems(self.motAChercher,Qt.MatchContains|Qt.MatchRecursive,1) - self.surLigne=0 + def suivantClicked(self): + #if self.motAChercher!=self.LERecherche.text(): self.recherche() + if self.listeTrouvee=={} : return + if self.surLigne > len(self.listeTrouvee) -1 : return + if self.nodeSurligne!=None : self.nodeSurligne.updateNodeTexteInBlack() + #self.listeTrouvee[self.surLigne].updateNodeTexteInBlue() + #self.nodeSurligne=self.listeTrouvee[self.surLigne] + self.listeTrouvee[self.surLigne].select() + self.listeTrouvee[self.surLigne].affichePanneau() + self.surLigne=self.surLigne+1 + self.PBSuivant.setFocus() + if self.surLigne == len(self.listeTrouvee): self.surLigne=0 + def recherche(self): + self.motAChercher=self.LERecherche.text() + self.listeTrouvee=self.tree.findItems(self.motAChercher,Qt.MatchContains|Qt.MatchRecursive,1) + self.surLigne=0 diff --git a/InterfaceQT4/monRechercheCatalogue.py b/InterfaceQT4/monRechercheCatalogue.py index 589964a3..259cad4b 100644 --- a/InterfaceQT4/monRechercheCatalogue.py +++ b/InterfaceQT4/monRechercheCatalogue.py @@ -22,7 +22,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from desRechercheCatalogue import Ui_desRechercheCatalogue @@ -34,54 +34,53 @@ from Extensions.i18n import tr # Import des panels class DRechercheCatalogue (Ui_desRechercheCatalogue ,QDialog): - """ - """ - def __init__(self,parent,editor ): - QDialog.__init__(self,parent) - #self.setModal(True) - self.setupUi(self) - self.editor=editor - self.CBRecherche.setEditable(True) - self.CBRecherche.lineEdit().returnPressed.connect(self.rechercheCB) - self.CBRecherche.currentIndexChanged.connect(self.rechercheCB) - self.CBRecherche.currentTextChanged.connect(self.rechercheCB) + """ + """ + def __init__(self,parent,editor ): + QDialog.__init__(self,parent) + #self.setModal(True) + self.setupUi(self) + self.editor=editor + self.CBRecherche.setEditable(True) + self.CBRecherche.lineEdit().returnPressed.connect(self.rechercheCB) + self.CBRecherche.currentIndexChanged.connect(self.rechercheCB) + self.CBRecherche.currentTextChanged.connect(self.rechercheCB) - self.initRecherche() + self.initRecherche() - def initRecherche(self): - listeChoix=list(self.editor.readercata.dicoInverse.keys()) - self.CBRecherche.addItem("") - for choix in listeChoix: - self.CBRecherche.addItem(choix) - monCompleteur=QCompleter(listeChoix,self) - monCompleteur.setCompletionMode(QCompleter.PopupCompletion) - self.CBRecherche.setCompleter(monCompleteur) + def initRecherche(self): + listeChoix=list(self.editor.readercata.dicoInverse.keys()) + self.CBRecherche.addItem("") + for choix in listeChoix: + self.CBRecherche.addItem(choix) + monCompleteur=QCompleter(listeChoix,self) + monCompleteur.setCompletionMode(QCompleter.PopupCompletion) + self.CBRecherche.setCompleter(monCompleteur) - def rechercheCB(self): - motAChercher=self.CBRecherche.lineEdit().text() - self.recherche(motAChercher) + def rechercheCB(self): + motAChercher=self.CBRecherche.lineEdit().text() + self.recherche(motAChercher) - def recherche(self,motAChercher): - if str(motAChercher)=="" or str(motAChercher) == None : return - if str(motAChercher) not in self.editor.readercata.dicoInverse:return - try : - #if 1 : - genea= self.editor.readercata.dicoInverse[str(motAChercher)] - listeGenea=[] - for t in genea : listeGenea.append(t[0]) - listeGenea.reverse() - texte='' - i=0 - for mc in listeGenea : - ligne = i*' '+str(mc) + ' / '+tr(str(mc))+'\n' - i=i+1 - texte += ligne - self.teGenea.setText(texte) - self.teDoc.setText(getattr(genea[0][1],self.editor.appliEficas.langue)) - - - except : - pass + def recherche(self,motAChercher): + if str(motAChercher)=="" or str(motAChercher) == None : return + if str(motAChercher) not in self.editor.readercata.dicoInverse:return + try : + #if 1 : + genea= self.editor.readercata.dicoInverse[str(motAChercher)] + listeGenea=[] + for t in genea : listeGenea.append(t[0]) + listeGenea.reverse() + texte='' + i=0 + for mc in listeGenea : + ligne = i*' '+str(mc) + ' / '+tr(str(mc))+'\n' + i=i+1 + texte += ligne + self.teGenea.setText(texte) + self.teDoc.setText(getattr(genea[0][1],self.editor.appliEficas.langue)) + + except : + pass diff --git a/InterfaceQT4/monSelectVal.py b/InterfaceQT4/monSelectVal.py index 415f5948..dc8498f8 100644 --- a/InterfaceQT4/monSelectVal.py +++ b/InterfaceQT4/monSelectVal.py @@ -22,7 +22,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from desSelectVal import Ui_DSelVal @@ -33,17 +33,17 @@ from PyQt5.QtCore import QTimer, Qt from PyQt5.QtGui import QPalette class DSelVal(Ui_DSelVal,QDialog): - def __init__(self,parent ,modal ) : - QDialog.__init__(self,parent) - self.setupUi(self) + def __init__(self,parent ,modal ) : + QDialog.__init__(self,parent) + self.setupUi(self) class MonSelectVal(DSelVal): - """ - Classe definissant le panel associe aux mots-cles qui demandent - a l'utilisateur de choisir une seule valeur parmi une liste de valeurs - discretes - """ - def __init__(self,file,parent,name = None,fl = 0): + """ + Classe definissant le panel associe aux mots-cles qui demandent + a l'utilisateur de choisir une seule valeur parmi une liste de valeurs + discretes + """ + def __init__(self,file,parent,name = None,fl = 0): #print "MonSelectVal" self.parent=parent DSelVal.__init__(self,parent,0) @@ -55,7 +55,7 @@ class MonSelectVal(DSelVal): self.initVal() self.connecterSignaux() - def connecterSignaux(self) : + def connecterSignaux(self) : self.Bespace.clicked.connect(self.selectEsp) self.BpointVirgule.clicked.connect(self.selectPoint) self.Bvirgule.clicked.connect(self.selectVir) @@ -63,7 +63,7 @@ class MonSelectVal(DSelVal): self.BImportTout.clicked.connect(self.BImportToutPressed) self.parent.editor.sb.messageChanged.connect(self.messageAChanger) - def connecterSignauxQT4(self) : + def connecterSignauxQT4(self) : self.connect(self.Bespace,SIGNAL("clicked()"),self.selectEsp) self.connect(self.BpointVirgule,SIGNAL("clicked()"),self.selectPoint) self.connect(self.Bvirgule,SIGNAL("clicked()"),self.selectVir) @@ -71,66 +71,65 @@ class MonSelectVal(DSelVal): self.connect(self.BImportTout,SIGNAL("clicked()"),self.BImportToutPressed) self.connect(self.parent.editor.sb,SIGNAL("messageChanged(QString)"),self.messageAChanger) - def messageAChanger(self): - message=self.parent.editor.sb.currentMessage() - mapalette=self.sb.palette() - mapalette.setColor( QPalette.Text,Qt.red ) - self.sb.setPalette( mapalette ) - self.sb.setText(message) - QTimer.singleShot(3000, self.efface) - - def efface(self): - self.sb.setText("") - - def readVal(self): + def messageAChanger(self): + message=self.parent.editor.sb.currentMessage() + mapalette=self.sb.palette() + mapalette.setColor( QPalette.Text,Qt.red ) + self.sb.setPalette( mapalette ) + self.sb.setText(message) + QTimer.singleShot(3000, self.efface) + + def efface(self): + self.sb.setText("") + + def readVal(self): if self.file == "" : return try : - f = open(self.file, "r") - self.texte = f.read() - f.close() + f = open(self.file, "r") + self.texte = f.read() + f.close() except : - QMessageBox.warning( self,tr( "Fichier Indisponible"),tr( "Lecture impossible")) - self.texte="" - return + QMessageBox.warning( self,tr( "Fichier Indisponible"),tr( "Lecture impossible")) + self.texte="" + return - def initVal(self): + def initVal(self): self.TBtext.clear() self.TBtext.setText(self.texte) - def selectEsp(self): + def selectEsp(self): self.separateur=" " - - def selectVir(self): + + def selectVir(self): self.separateur="," - - def selectPoint(self): + + def selectPoint(self): self.separateur=";" - - def BImportSelPressed(self): + + def BImportSelPressed(self): texte = self.TBtext.textCursor().selectedText() textTraite=texte.replace(u'\u2029',"\n") self.textTraite=str(textTraite) self.traitement() - - def BImportToutPressed(self): + + def BImportToutPressed(self): self.textTraite=self.texte self.traitement() - def traitement(self): + def traitement(self): if self.textTraite == "" : return if self.textTraite[-1]=="\n" : self.textTraite=self.textTraite[0:-1] self.textTraite=self.textTraite.replace("\n",self.separateur) liste1=self.textTraite.split(self.separateur) liste=[] for val in liste1 : - if val != '' and val != ' ' and val != self.separateur : - val=str(val) - try : - #if 1 : - val2=eval(val,{}) - liste.append(val2) - except : - pass - self.parent.ajoutNValeur(liste) - + if val != '' and val != ' ' and val != self.separateur : + val=str(val) + try : + #if 1 : + val2=eval(val,{}) + liste.append(val2) + except : + pass + self.parent.ajoutNValeur(liste) diff --git a/InterfaceQT4/monViewRegles.py b/InterfaceQT4/monViewRegles.py index c096c8f5..8fa30745 100644 --- a/InterfaceQT4/monViewRegles.py +++ b/InterfaceQT4/monViewRegles.py @@ -41,14 +41,11 @@ class ViewRegles(Ui_viewRegles,QDialog): if entete != None : self.setWindowTitle (entete) for ligne in liste : - texte=ligne[0] - couleur=ligne[1] - if couleur==Qt.black : - self.LBRegles.addItem(texte) - else : - monItem=QListWidgetItem(texte) - monItem.setForeground(Qt.red) - self.LBRegles.addItem(monItem) - - - + texte=ligne[0] + couleur=ligne[1] + if couleur==Qt.black : + self.LBRegles.addItem(texte) + else : + monItem=QListWidgetItem(texte) + monItem.setForeground(Qt.red) + self.LBRegles.addItem(monItem) diff --git a/InterfaceQT4/monViewTexte.py b/InterfaceQT4/monViewTexte.py index c57813ab..2262d26c 100644 --- a/InterfaceQT4/monViewTexte.py +++ b/InterfaceQT4/monViewTexte.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -50,16 +50,16 @@ class ViewText(Ui_dView,QDialog): if entete != None : self.setWindowTitle (entete) if entete != None : self.setText (texte) - - def setText(self, txt ): + + def setText(self, txt ): self.view.setText(txt) - + def saveFile(self): #recuperation du nom du fichier if self.editor != None : - dir=self.editor.appliEficas.maConfiguration.savedir + dir=self.editor.appliEficas.maConfiguration.savedir else: - dir='/tmp' + dir='/tmp' fn = QFileDialog.getSaveFileName(None, tr("Sauvegarder le fichier"), dir) @@ -69,15 +69,13 @@ class ViewText(Ui_dView,QDialog): ulfile = os.path.abspath(fn) if self.editor != None : - self.editor.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] + self.editor.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] try: - f = open(fn, 'w') - f.write(str(self.view.toPlainText())) - f.close() - return 1 + f = open(fn, 'w') + f.write(str(self.view.toPlainText())) + f.close() + return 1 except IOError as why: - QMessageBox.critical(self, tr("Sauvegarder le fichier"), - tr('Le fichier')+str(fn) + tr('n a pas pu etre sauvegarde : ') + str(why)) - return - - + QMessageBox.critical(self, tr("Sauvegarder le fichier"), + tr('Le fichier')+str(fn) + tr('n a pas pu etre sauvegarde : ') + str(why)) + return diff --git a/InterfaceQT4/monVisu.py b/InterfaceQT4/monVisu.py index 68257209..2771838f 100644 --- a/InterfaceQT4/monVisu.py +++ b/InterfaceQT4/monVisu.py @@ -28,15 +28,15 @@ from PyQt5.QtWidgets import QDialog # Import des panels class DVisu(Ui_DVisu, QDialog): - """ - """ - def __init__(self,parent = None , name = None,fl = 0): - QDialog.__init__(self,parent) - self.setModal(True) - self.setupUi(self) + """ + """ + def __init__(self,parent = None , name = None,fl = 0): + QDialog.__init__(self,parent) + self.setModal(True) + self.setupUi(self) - def on_buttonCancel_clicked(self): - QDialog.reject(self) + def on_buttonCancel_clicked(self): + QDialog.reject(self) - def on_buttonOk_clicked(self): - QDialog.accept(self) + def on_buttonOk_clicked(self): + QDialog.accept(self) diff --git a/InterfaceQT4/monWidget4a6RadioButton.py b/InterfaceQT4/monWidget4a6RadioButton.py index 3025049b..4055c3a0 100644 --- a/InterfaceQT4/monWidget4a6RadioButton.py +++ b/InterfaceQT4/monWidget4a6RadioButton.py @@ -24,29 +24,28 @@ import types,os # Modules Eficas from Extensions.i18n import tr -from .monWidgetRadioButton import MonWidgetRadioButtonCommun -from desWidget4a6RadioButton import Ui_Widget4a6RadioButton +from .monWidgetRadioButton import MonWidgetRadioButtonCommun +from desWidget4a6RadioButton import Ui_Widget4a6RadioButton class MonWidget4a6RadioButton (Ui_Widget4a6RadioButton,MonWidgetRadioButtonCommun): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): #print "dans le init de MonWidget4a6RadioButton",self if type(monSimpDef.into) ==types.FunctionType : self.maListeDeValeur=monSimpDef.into() else : self.maListeDeValeur=monSimpDef.into MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - def setMaxI(self): + def setMaxI(self): self.maxI=6 class MonWidget4a6RadioButtonSD (Ui_Widget4a6RadioButton,MonWidgetRadioButtonCommun): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): #print "dans le init de MonWidget4a6RadioButton",self self.maListeDeValeur=node.item.getSdAvantDuBonType() MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - def setMaxI(self): + def setMaxI(self): self.maxI=6 - diff --git a/InterfaceQT4/monWidget4a6RadioButtonSD.py b/InterfaceQT4/monWidget4a6RadioButtonSD.py index 86f198ed..9cea1a41 100644 --- a/InterfaceQT4/monWidget4a6RadioButtonSD.py +++ b/InterfaceQT4/monWidget4a6RadioButtonSD.py @@ -24,17 +24,16 @@ import types,os # Modules Eficas from Extensions.i18n import tr -from .monWidgetRadioButton import MonWidgetRadioButtonCommun -from desWidget4a6RadioButton import Ui_Widget4a6RadioButton +from .monWidgetRadioButton import MonWidgetRadioButtonCommun +from desWidget4a6RadioButton import Ui_Widget4a6RadioButton class MonWidget4a6RadioButtonSD (Ui_Widget4a6RadioButton,MonWidgetRadioButtonCommun): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): #print "dans le init de MonWidget4a6RadioButton",self self.maListeDeValeur=node.item.getSdAvantDuBonType() MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - def setMaxI(self): + def setMaxI(self): self.maxI=6 - diff --git a/InterfaceQT4/monWidgetBloc.py b/InterfaceQT4/monWidgetBloc.py index 1f656d4f..bb359528 100644 --- a/InterfaceQT4/monWidgetBloc.py +++ b/InterfaceQT4/monWidgetBloc.py @@ -26,14 +26,14 @@ from Extensions.i18n import tr # Import des panels class MonWidgetBloc(Ui_WidgetBloc,Groupe): - """ - """ - def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): - #print ("bloc : ",node.item.nom) - Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) - #if self.editor.maConfiguration.afficheCommandesPliees ==True: self.node.plieToutEtReaffiche() - self.parentQt.commandesLayout.insertWidget(-1,self,1) + """ + """ + def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): + #print ("bloc : ",node.item.nom) + Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) + #if self.editor.maConfiguration.afficheCommandesPliees ==True: self.node.plieToutEtReaffiche() + self.parentQt.commandesLayout.insertWidget(-1,self,1) - def afficheOptionnel(self): - return + def afficheOptionnel(self): + return diff --git a/InterfaceQT4/monWidgetCB.py b/InterfaceQT4/monWidgetCB.py index 3e12bb6b..d464661f 100644 --- a/InterfaceQT4/monWidgetCB.py +++ b/InterfaceQT4/monWidgetCB.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -29,7 +29,7 @@ import types,os from Extensions.i18n import tr from InterfaceQT4.feuille import Feuille -from desWidgetCB import Ui_WidgetCB +from desWidgetCB import Ui_WidgetCB from InterfaceQT4.politiquesValidation import PolitiqueUnique from InterfaceQT4.qtSaisie import SaisieValeur @@ -39,7 +39,7 @@ from PyQt5.QtCore import Qt, QEvent class MonWidgetCBCommun (Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) self.determineChoix() @@ -51,51 +51,51 @@ class MonWidgetCBCommun (Feuille): self.AAfficher=self.CBChoix - def setValeursApresBouton(self): - if self.objSimp.getValeur()==None : - self.CBChoix.setCurrentIndex(-1) - self.CBChoix.lineEdit().setText(tr("Select")) - return - valeur=self.objSimp.getValeur() - if not(type(valeur) == str) : valeur=str(valeur) - self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur)) - - def determineChoix(self): - listeChoix=[] - if self.maListeDeValeur == None : self.maListeDeValeur=[] - for choix in self.maListeDeValeur: - if not(type(choix) == str) : choix=str(choix) - listeChoix.append(choix) - self.CBChoix.addItem(choix) - self.CBChoix.setEditable(True) - monCompleteur=QCompleter(listeChoix,self) - monCompleteur.setCompletionMode(QCompleter.PopupCompletion) - self.CBChoix.setCompleter(monCompleteur) - - def choixSaisi(self): - self.CBChoix.lineEdit().setStyleSheet(("\n" + def setValeursApresBouton(self): + if self.objSimp.getValeur()==None : + self.CBChoix.setCurrentIndex(-1) + self.CBChoix.lineEdit().setText(tr("Select")) + return + valeur=self.objSimp.getValeur() + if not(type(valeur) == str) : valeur=str(valeur) + self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur)) + + def determineChoix(self): + listeChoix=[] + if self.maListeDeValeur == None : self.maListeDeValeur=[] + for choix in self.maListeDeValeur: + if not(type(choix) == str) : choix=str(choix) + listeChoix.append(choix) + self.CBChoix.addItem(choix) + self.CBChoix.setEditable(True) + monCompleteur=QCompleter(listeChoix,self) + monCompleteur.setCompletionMode(QCompleter.PopupCompletion) + self.CBChoix.setCompleter(monCompleteur) + + def choixSaisi(self): + self.CBChoix.lineEdit().setStyleSheet(("\n" "QLineEdit {\n" " font : italic ;\n" " background: rgb(235,235,235);\n" " }")) - valeur=str(self.CBChoix.currentText()) - SaisieValeur.LEvaleurPressed(self,valeur) - self.reaffiche() + valeur=str(self.CBChoix.currentText()) + SaisieValeur.LEvaleurPressed(self,valeur) + self.reaffiche() - def wheelEvent(self, event): - # Sinon poum sur les fenetres trop longues - # lorsque la widget attrape le wheelevent - event.ignore() + def wheelEvent(self, event): + # Sinon poum sur les fenetres trop longues + # lorsque la widget attrape le wheelevent + event.ignore() class MonWidgetCB (Ui_WidgetCB, MonWidgetCBCommun): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - self.maListeDeValeur = monSimpDef.into - MonWidgetCBCommun. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + self.maListeDeValeur = monSimpDef.into + MonWidgetCBCommun. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) class MonWidgetCBSD (Ui_WidgetCB,MonWidgetCBCommun): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - self.maListeDeValeur = node.item.getSdAvantDuBonType() - MonWidgetCBCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + self.maListeDeValeur = node.item.getSdAvantDuBonType() + MonWidgetCBCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) diff --git a/InterfaceQT4/monWidgetCBIntoSug.py b/InterfaceQT4/monWidgetCBIntoSug.py index 8075451d..d8bcf98a 100644 --- a/InterfaceQT4/monWidgetCBIntoSug.py +++ b/InterfaceQT4/monWidgetCBIntoSug.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -39,21 +39,19 @@ from PyQt5.QtCore import Qt from monWidgetCB import MonWidgetCBCommun from monWidgetIntoSug import GereAjoutDsPossible - -class MonWidgetCBIntoSug (MonWidgetCBCommun, Ui_WidgetCBIntoSug,GereAjoutDsPossible): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - self.maListeDeValeur=monSimpDef.into - if node.item.hasIntoSug() : self.maListeDeValeur = node.item.getListePossibleAvecSug([]) - if hasattr(node.item,'suggestion') : self.maListeDeValeur += node.item.suggestion - MonWidgetCBCommun. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible) - - def ajouteValeurPossible(self,valeur): - self.CBChoix.addItem(valeur) - # on ne sait pas si on a deja ajouté une valeur - try : self.node.item.suggestion.append(valeur) - except : self.node.item.suggestion = (valeur,) - self.lineEditVal.setText('') - self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur)); - +class MonWidgetCBIntoSug (MonWidgetCBCommun, Ui_WidgetCBIntoSug,GereAjoutDsPossible): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + self.maListeDeValeur=monSimpDef.into + if node.item.hasIntoSug() : self.maListeDeValeur = node.item.getListePossibleAvecSug([]) + if hasattr(node.item,'suggestion') : self.maListeDeValeur += node.item.suggestion + MonWidgetCBCommun. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) + self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible) + + def ajouteValeurPossible(self,valeur): + self.CBChoix.addItem(valeur) + # on ne sait pas si on a deja ajouté une valeur + try : self.node.item.suggestion.append(valeur) + except : self.node.item.suggestion = (valeur,) + self.lineEditVal.setText('') + self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur)); diff --git a/InterfaceQT4/monWidgetCBSD.py b/InterfaceQT4/monWidgetCBSD.py index 929e7426..c460851d 100644 --- a/InterfaceQT4/monWidgetCBSD.py +++ b/InterfaceQT4/monWidgetCBSD.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -29,7 +29,7 @@ import types,os from Extensions.i18n import tr from .feuille import Feuille -from desWidgetCB import Ui_WidgetCB +from desWidgetCB import Ui_WidgetCB from .politiquesValidation import PolitiqueUnique from .qtSaisie import SaisieValeur @@ -39,7 +39,7 @@ from PyQt5.QtWidgets import QComboBox, QCompleter class MonWidgetCB (Ui_WidgetCB,Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) self.determineChoix() @@ -51,27 +51,27 @@ class MonWidgetCB (Ui_WidgetCB,Feuille): #print self.objSimp.isOblig() - def setValeursApresBouton(self): - if self.objSimp.getValeur()==None : - self.CBChoix.setCurrentIndex(-1) - return - valeur=self.objSimp.getValeur() - if not(type(valeur) == str) : valeur=str(valeur) - self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur)) - - def determineChoix(self): - self.CBChoix.currentIndexChanged.connect(self.choixSaisi) + def setValeursApresBouton(self): + if self.objSimp.getValeur()==None : + self.CBChoix.setCurrentIndex(-1) + return + valeur=self.objSimp.getValeur() + if not(type(valeur) == str) : valeur=str(valeur) + self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur)) - for choix in self.monSimpDef.into: - if not(type(choix) == str) : choix=str(choix) - self.CBChoix.currentIndexChanged.connect(self.choixSaisi) - self.CBChoix.addItem(choix) - self.CBChoix.setEditable(True) - monCompleteur=QCompleter(listeChoix,self) - monCompleteur.setCompletionMode(QCompleter.PopupCompletion) - self.CBChoix.setCompleter(monCompleteur) + def determineChoix(self): + self.CBChoix.currentIndexChanged.connect(self.choixSaisi) + + for choix in self.monSimpDef.into: + if not(type(choix) == str) : choix=str(choix) + self.CBChoix.currentIndexChanged.connect(self.choixSaisi) + self.CBChoix.addItem(choix) + self.CBChoix.setEditable(True) + monCompleteur=QCompleter(listeChoix,self) + monCompleteur.setCompletionMode(QCompleter.PopupCompletion) + self.CBChoix.setCompleter(monCompleteur) - def choixSaisi(self): - valeur=str(self.CBChoix.currentText()) - SaisieValeur.LEvaleurPressed(self,valeur) - self.reaffiche() + def choixSaisi(self): + valeur=str(self.CBChoix.currentText()) + SaisieValeur.LEvaleurPressed(self,valeur) + self.reaffiche() diff --git a/InterfaceQT4/monWidgetCommande.py b/InterfaceQT4/monWidgetCommande.py index 99faa628..a9c0b16f 100644 --- a/InterfaceQT4/monWidgetCommande.py +++ b/InterfaceQT4/monWidgetCommande.py @@ -20,7 +20,7 @@ # Modules Eficas from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types @@ -37,274 +37,272 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr -import Accas +import Accas import os - + # Import des panels class MonWidgetCommande(Ui_WidgetCommande,Groupe): - """ - """ - def __init__(self,node,editor,etape): - - self.listeAffichageWidget=[] - self.inhibe=0 - self.ensure=0 - editor.inhibeSplitter=1 - Groupe.__init__(self,node,editor,None,etape.definition,etape,1,self) - spacerItem = QSpacerItem(21, 500, QSizePolicy.Expanding, QSizePolicy.Expanding) - self.verticalLayoutCommande.addItem(spacerItem) - editor.inhibeSplitter=0 - - # Gestion du nom de L OPER si il est nomme - if not(hasattr(etape.definition,'sd_prod')) or (etape.definition.sd_prod==None): self.LENom.close() - elif (hasattr(etape.definition,'sd_prod') and type(etape.definition.sd_prod)== types.FunctionType):self.LENom.close() - elif (hasattr(etape, 'sdnom')) and etape.sdnom != "sansnom" and etape.sdnom != None: - self.LENom.setText(etape.sdnom) - else : - self.LENom.setText("") - if hasattr(self,'LENom'): self.LENom.returnPressed.connect(self.nomChange) - self.racine=self.node.tree.racine - if self.node.item.getIconName() == "ast-red-square" : self.LENom.setDisabled(True) - - # Gestion de la doc de l objet - if node.item.getFr() != "" : - self.labelDoc.setText(node.item.getFr()) - nouvelleSize=self.frameAffichage.height()+60 - self.frameAffichage.setMinimumHeight(nouvelleSize) - self.frameAffichage.resize(self.frameAffichage.width(),nouvelleSize) - else : self.labelDoc.close() - - - # Gestion du nom de l etape - maPolice= QFont("Times", 10,) - self.setFont(maPolice) - self.labelNomCommande.setText(tr(self.obj.nom)) - - - # Gestion du Frame d affichage des autres commandes - if self.editor.maConfiguration.closeAutreCommande == True : self.closeAutreCommande() - else : - self.bCatalogue.clicked.connect(self.afficheCatalogue) - self.bAvant.clicked.connect(self.afficheAvant) - self.bApres.clicked.connect(self.afficheApres) - - if self.editor.maConfiguration.closeFrameRechercheCommande==True : - self.frameAffichage.close() - self.closeAutreCommande() - - - self.setAcceptDrops(True) - self.etablitOrdre() - - if self.editor.maConfiguration.enleverPoubellePourCommande : - self.RBPoubelle.close() # JDC Fige - - if self.editor.maConfiguration.pasDeMCOptionnels : - return # Pas de MC Optionnels pour Carmel - - from .monWidgetOptionnel import MonWidgetOptionnel - if self.editor.widgetOptionnel!= None : - self.monOptionnel=self.editor.widgetOptionnel - else : - self.editor.inhibeSplitter=1 - self.monOptionnel=MonWidgetOptionnel(self.editor) - self.editor.widgetOptionnel=self.monOptionnel - self.editor.splitter.addWidget(self.monOptionnel) - self.editor.ajoutOptionnel() - self.editor.inhibeSplitter=0 - self.monOptionnel=self.editor.widgetOptionnel - self.afficheOptionnel() - - #print "fin init de widget Commande" - - - def closeAutreCommande(self): - self.bCatalogue.close() - self.bAvant.close() - self.bApres.close() - - def donnePremier(self): - #print "dans donnePremier" - QApplication.processEvents() - if self.listeAffichageWidget != [] : - self.listeAffichageWidget[0].setFocus(7) - QApplication.processEvents() - #print self.focusWidget() - - - def focusNextPrevChild(self, next): - # on s assure que ce n est pas un chgt de fenetre - #print "je passe dans focusNextPrevChild" - if self.editor.fenetreCentraleAffichee != self : return True - f = self.focusWidget() - if f not in self.listeAffichageWidget : - i=0 - while not hasattr (f,'AAfficher') : - if f==None :i=-1; break - f = f.parentWidget() - if hasattr(f,'AAfficher') : f=f.AAfficher - if i != -1 : i=self.listeAffichageWidget.index(f) - else :i=self.listeAffichageWidget.index(f) - if (i==len(self.listeAffichageWidget) -1) and next and not self.inhibe: - try : - self.listeAffichageWidget[1].setFocus(7) - w=self.focusWidget() - self.inhibe=1 - w.focusPreviousChild() - self.inhibe=0 - return True - except : - pass - #print self.listeAffichageWidget - #print "souci ds focusNextPrevChild" - if i==0 and next==False and not self.inhibe: - if hasattr(self.editor.fenetreCentraleAffichee,'scrollArea'): - self.editor.fenetreCentraleAffichee.scrollArea.ensureWidgetVisible(self.listeAffichageWidget[-1]) - self.listeAffichageWidget[-2].setFocus(7) - self.inhibe=1 - w=self.focusWidget() - w.focusNextChild() - self.inhibe=0 - return True - if i==0 and next==True and not self.inhibe: - self.listeAffichageWidget[0].setFocus(7) - self.inhibe=1 - w=self.focusWidget() - w.focusNextChild() - self.inhibe=0 - return True - if i>0 and next==False and not self.inhibe: - if isinstance(self.listeAffichageWidget[i-1],QRadioButton): - self.listeAffichageWidget[i-1].setFocus(7) - return True - return QWidget.focusNextPrevChild(self, next) - - def etablitOrdre(self): - i=0 - while(i +1 < len(self.listeAffichageWidget)): - self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1]) - i=i+1 - # si on boucle on perd l'ordre - - def afficheSuivant(self,f): - #print ('ds afficheSuivant') - try : - i=self.listeAffichageWidget.index(f) - next=i+1 - except : - next=1 - if (next==len(self.listeAffichageWidget) ): next =0 - #self.f=next - #QTimer.singleShot(1, self.rendVisible) - try : - self.listeAffichageWidget[next].setFocus(7) - except : - pass - - def nomChange(self): - nom = str(self.LENom.text()) - nom = nom.strip() - if nom == '' : return # si pas de nom, on ressort sans rien faire - test,mess = self.node.item.nommeSd(nom) - self.editor.afficheCommentaire(mess) - - #Notation scientifique - if test : - from .politiquesValidation import Validation - validation=Validation(self.node,self.editor) - validation.ajoutDsDictReelEtape() - - def afficheOptionnel(self): - # N a pas de parentQt. doit donc etre redefini - if self.editor.maConfiguration.closeOptionnel : self.editor.fermeOptionnel() - liste,liste_rouge=self.ajouteMCOptionnelDesBlocs() - #print "dans afficheOptionnel", self.monOptionnel - # dans le cas ou l insertion n a pas eu leiu (souci d ordre par exemple) - #if self.monOptionnel == None : return - self.monOptionnel.parentCommande=self - self.monOptionnel.titre(self.obj.nom) - self.monGroupe=self.monOptionnel.afficheOptionnel(liste,liste_rouge,self) - - - def focusInEvent(self,event): - #print "je mets a jour dans focusInEvent de monWidget Commande " - self.afficheOptionnel() - - - def reaffiche(self,nodeAVoir=None): - # Attention delicat. les appels de fonctions ne semblent pas pouvoir etre supprimes! - self.avantH=self.editor.fenetreCentraleAffichee.scrollAreaCommandes.horizontalScrollBar().sliderPosition() - self.avantV=self.editor.fenetreCentraleAffichee.scrollAreaCommandes.verticalScrollBar().sliderPosition() - self.inhibeExpand=True - self.node.affichePanneau() - #QTimer.singleShot(1, self.recentre) - if nodeAVoir != None and nodeAVoir!=0: - self.f=nodeAVoir.fenetre - if self.f==None : - newNode=nodeAVoir.treeParent.chercheNoeudCorrespondant(nodeAVoir.item.object) - self.f = newNode.fenetre - if self.f != None and self.f.isVisible() : self.inhibeExpand=False; return - if self.f != None : self.rendVisible() + """ + """ + def __init__(self,node,editor,etape): + + self.listeAffichageWidget=[] + self.inhibe=0 + self.ensure=0 + editor.inhibeSplitter=1 + Groupe.__init__(self,node,editor,None,etape.definition,etape,1,self) + spacerItem = QSpacerItem(21, 500, QSizePolicy.Expanding, QSizePolicy.Expanding) + self.verticalLayoutCommande.addItem(spacerItem) + editor.inhibeSplitter=0 + + # Gestion du nom de L OPER si il est nomme + if not(hasattr(etape.definition,'sd_prod')) or (etape.definition.sd_prod==None): self.LENom.close() + elif (hasattr(etape.definition,'sd_prod') and type(etape.definition.sd_prod)== types.FunctionType):self.LENom.close() + elif (hasattr(etape, 'sdnom')) and etape.sdnom != "sansnom" and etape.sdnom != None: + self.LENom.setText(etape.sdnom) + else : + self.LENom.setText("") + if hasattr(self,'LENom'): self.LENom.returnPressed.connect(self.nomChange) + self.racine=self.node.tree.racine + if self.node.item.getIconName() == "ast-red-square" : self.LENom.setDisabled(True) + + # Gestion de la doc de l objet + if node.item.getFr() != "" : + self.labelDoc.setText(node.item.getFr()) + nouvelleSize=self.frameAffichage.height()+60 + self.frameAffichage.setMinimumHeight(nouvelleSize) + self.frameAffichage.resize(self.frameAffichage.width(),nouvelleSize) + else : self.labelDoc.close() + + + # Gestion du nom de l etape + maPolice= QFont("Times", 10,) + self.setFont(maPolice) + self.labelNomCommande.setText(tr(self.obj.nom)) + + + # Gestion du Frame d affichage des autres commandes + if self.editor.maConfiguration.closeAutreCommande == True : self.closeAutreCommande() + else : + self.bCatalogue.clicked.connect(self.afficheCatalogue) + self.bAvant.clicked.connect(self.afficheAvant) + self.bApres.clicked.connect(self.afficheApres) + + if self.editor.maConfiguration.closeFrameRechercheCommande==True : + self.frameAffichage.close() + self.closeAutreCommande() + + + self.setAcceptDrops(True) + self.etablitOrdre() + + if self.editor.maConfiguration.enleverPoubellePourCommande : + self.RBPoubelle.close() # JDC Fige + + if self.editor.maConfiguration.pasDeMCOptionnels : + return # Pas de MC Optionnels pour Carmel + + from .monWidgetOptionnel import MonWidgetOptionnel + if self.editor.widgetOptionnel!= None : + self.monOptionnel=self.editor.widgetOptionnel + else : + self.editor.inhibeSplitter=1 + self.monOptionnel=MonWidgetOptionnel(self.editor) + self.editor.widgetOptionnel=self.monOptionnel + self.editor.splitter.addWidget(self.monOptionnel) + self.editor.ajoutOptionnel() + self.editor.inhibeSplitter=0 + self.monOptionnel=self.editor.widgetOptionnel + self.afficheOptionnel() + + #print "fin init de widget Commande" + + + def closeAutreCommande(self): + self.bCatalogue.close() + self.bAvant.close() + self.bApres.close() + + def donnePremier(self): + #print "dans donnePremier" + QApplication.processEvents() + if self.listeAffichageWidget != [] : + self.listeAffichageWidget[0].setFocus(7) + QApplication.processEvents() + #print self.focusWidget() + + + def focusNextPrevChild(self, next): + # on s assure que ce n est pas un chgt de fenetre + #print "je passe dans focusNextPrevChild" + if self.editor.fenetreCentraleAffichee != self : return True + f = self.focusWidget() + if f not in self.listeAffichageWidget : + i=0 + while not hasattr (f,'AAfficher') : + if f==None :i=-1; break + f = f.parentWidget() + if hasattr(f,'AAfficher') : f=f.AAfficher + if i != -1 : i=self.listeAffichageWidget.index(f) + else :i=self.listeAffichageWidget.index(f) + if (i==len(self.listeAffichageWidget) -1) and next and not self.inhibe: + try : + self.listeAffichageWidget[1].setFocus(7) + w=self.focusWidget() + self.inhibe=1 + w.focusPreviousChild() + self.inhibe=0 + return True + except : + pass + #print self.listeAffichageWidget + #print "souci ds focusNextPrevChild" + if i==0 and next==False and not self.inhibe: + if hasattr(self.editor.fenetreCentraleAffichee,'scrollArea'): + self.editor.fenetreCentraleAffichee.scrollArea.ensureWidgetVisible(self.listeAffichageWidget[-1]) + self.listeAffichageWidget[-2].setFocus(7) + self.inhibe=1 + w=self.focusWidget() + w.focusNextChild() + self.inhibe=0 + return True + if i==0 and next==True and not self.inhibe: + self.listeAffichageWidget[0].setFocus(7) + self.inhibe=1 + w=self.focusWidget() + w.focusNextChild() + self.inhibe=0 + return True + if i>0 and next==False and not self.inhibe: + if isinstance(self.listeAffichageWidget[i-1],QRadioButton): + self.listeAffichageWidget[i-1].setFocus(7) + return True + return QWidget.focusNextPrevChild(self, next) + + def etablitOrdre(self): + i=0 + while(i +1 < len(self.listeAffichageWidget)): + self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1]) + i=i+1 + # si on boucle on perd l'ordre + + def afficheSuivant(self,f): + #print ('ds afficheSuivant') + try : + i=self.listeAffichageWidget.index(f) + next=i+1 + except : + next=1 + if (next==len(self.listeAffichageWidget) ): next =0 + #self.f=next + #QTimer.singleShot(1, self.rendVisible) + try : + self.listeAffichageWidget[next].setFocus(7) + except : + pass + + def nomChange(self): + nom = str(self.LENom.text()) + nom = nom.strip() + if nom == '' : return # si pas de nom, on ressort sans rien faire + test,mess = self.node.item.nommeSd(nom) + self.editor.afficheCommentaire(mess) + + #Notation scientifique + if test : + from .politiquesValidation import Validation + validation=Validation(self.node,self.editor) + validation.ajoutDsDictReelEtape() + + def afficheOptionnel(self): + # N a pas de parentQt. doit donc etre redefini + if self.editor.maConfiguration.closeOptionnel : self.editor.fermeOptionnel() + liste,liste_rouge=self.ajouteMCOptionnelDesBlocs() + #print "dans afficheOptionnel", self.monOptionnel + # dans le cas ou l insertion n a pas eu leiu (souci d ordre par exemple) + #if self.monOptionnel == None : return + self.monOptionnel.parentCommande=self + self.monOptionnel.titre(self.obj.nom) + self.monGroupe=self.monOptionnel.afficheOptionnel(liste,liste_rouge,self) + + + def focusInEvent(self,event): + #print "je mets a jour dans focusInEvent de monWidget Commande " + self.afficheOptionnel() + + + def reaffiche(self,nodeAVoir=None): + # Attention delicat. les appels de fonctions ne semblent pas pouvoir etre supprimes! + self.avantH=self.editor.fenetreCentraleAffichee.scrollAreaCommandes.horizontalScrollBar().sliderPosition() + self.avantV=self.editor.fenetreCentraleAffichee.scrollAreaCommandes.verticalScrollBar().sliderPosition() + self.inhibeExpand=True + self.node.affichePanneau() + #QTimer.singleShot(1, self.recentre) + if nodeAVoir != None and nodeAVoir!=0: + self.f=nodeAVoir.fenetre + if self.f==None : + newNode=nodeAVoir.treeParent.chercheNoeudCorrespondant(nodeAVoir.item.object) + self.f = newNode.fenetre + if self.f != None and self.f.isVisible() : self.inhibeExpand=False; return + if self.f != None : self.rendVisible() + else : self.recentre() else : self.recentre() - else : self.recentre() - self.inhibeExpand=False - - - - def recentre(self): - QApplication.processEvents() - s=self.editor.fenetreCentraleAffichee.scrollAreaCommandes - s.horizontalScrollBar().setSliderPosition(self.avantH) - s.verticalScrollBar().setSliderPosition(self.avantV) - - def rendVisible(self): - QApplication.processEvents() - self.f.setFocus(7) - self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(self.f) - - def afficheCatalogue(self): - if self.editor.widgetOptionnel != None : self.monOptionnel.hide() - self.racine.affichePanneau() - if self.node : self.node.select() - else : self.racine.select() - - def afficheApres(self): - self.node.selectApres() - - def afficheAvant(self): - self.node.selectAvant() - - def setValide(self): - if not(hasattr (self,'RBValide')) : return - icon = QIcon() - if self.node.item.object.isValid() : icon=QIcon(self.repIcon+"/ast-green-ball.png") - else : icon=QIcon(self.repIcon+"/ast-red-ball.png") - nomIcone = self.node.item.getIconName() - if nomIcone == "ast-yellow-square" : icon=QIcon(self.repIcon+"/ast-yel-ball.png") - if nomIcone == "ast-red-square" : self.LENom.setDisabled(True) - - self.LENom.setDisabled(False) - self.RBValide.setIcon(icon) - - - def propageChange(self,typeChange,donneLeFocus): - aReecrire=self.propageChangeEnfant(self.node.item.object,typeChange) - if aReecrire : self.node.affichePanneau() - if hasattr(donneLeFocus.node.fenetre, 'selectionneDernier') : - QApplication.processEvents() - self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(donneLeFocus.node.fenetre) - donneLeFocus.node.fenetre.selectionneDernier() - - def propageChangeEnfant(self,mc, typeChange): - for enfant in mc.mcListe: - if enfant.nature == 'MCSIMP' : - if enfant.waitUserAssd(): - if enfant.definition.type[0] == typeChange: return True - else : - if enfant.nature == 'MCList' : enfant=enfant[0] - if self.propageChangeEnfant(enfant, typeChange) : return True - return False - - + self.inhibeExpand=False + + + + def recentre(self): + QApplication.processEvents() + s=self.editor.fenetreCentraleAffichee.scrollAreaCommandes + s.horizontalScrollBar().setSliderPosition(self.avantH) + s.verticalScrollBar().setSliderPosition(self.avantV) + + def rendVisible(self): + QApplication.processEvents() + self.f.setFocus(7) + self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(self.f) + + def afficheCatalogue(self): + if self.editor.widgetOptionnel != None : self.monOptionnel.hide() + self.racine.affichePanneau() + if self.node : self.node.select() + else : self.racine.select() + + def afficheApres(self): + self.node.selectApres() + + def afficheAvant(self): + self.node.selectAvant() + + def setValide(self): + if not(hasattr (self,'RBValide')) : return + icon = QIcon() + if self.node.item.object.isValid() : icon=QIcon(self.repIcon+"/ast-green-ball.png") + else : icon=QIcon(self.repIcon+"/ast-red-ball.png") + nomIcone = self.node.item.getIconName() + if nomIcone == "ast-yellow-square" : icon=QIcon(self.repIcon+"/ast-yel-ball.png") + if nomIcone == "ast-red-square" : self.LENom.setDisabled(True) + + self.LENom.setDisabled(False) + self.RBValide.setIcon(icon) + + + def propageChange(self,typeChange,donneLeFocus): + aReecrire=self.propageChangeEnfant(self.node.item.object,typeChange) + if aReecrire : self.node.affichePanneau() + if hasattr(donneLeFocus.node.fenetre, 'selectionneDernier') : + QApplication.processEvents() + self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(donneLeFocus.node.fenetre) + donneLeFocus.node.fenetre.selectionneDernier() + + def propageChangeEnfant(self,mc, typeChange): + for enfant in mc.mcListe: + if enfant.nature == 'MCSIMP' : + if enfant.waitUserAssd(): + if enfant.definition.type[0] == typeChange: return True + else : + if enfant.nature == 'MCList' : enfant=enfant[0] + if self.propageChangeEnfant(enfant, typeChange) : return True + return False diff --git a/InterfaceQT4/monWidgetCommandeDeplie1Niveau.py b/InterfaceQT4/monWidgetCommandeDeplie1Niveau.py index c03a17c1..da99150c 100644 --- a/InterfaceQT4/monWidgetCommandeDeplie1Niveau.py +++ b/InterfaceQT4/monWidgetCommandeDeplie1Niveau.py @@ -20,7 +20,7 @@ # Modules Eficas from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types, os import traceback @@ -34,117 +34,117 @@ class MonWidgetCommandeDeplie1Niveau(MonWidgetCommande): # il faut donc surcharger un certain nb de fonction ici pour eux - def __init__(self,node,editor,etape): - #print ("debut de ---------------------- init de MonWidgetCommandeDeplie1Niveau ",node.item.nom) - MonWidgetCommande.__init__(self,node,editor,etape) - self.node.plieToutEtReaffiche=self.plieToutEtReaffiche - spacerItem = QSpacerItem(21, 600, QSizePolicy.Expanding, QSizePolicy.Expanding) - self.verticalLayoutCommande.addItem(spacerItem) - - def afficheMots(self): - # Attention - # Attention --> cette methode surcharge les methodes des Nodes Fils - # Attention - #print ("debut de ---------------------- ds afficheMots de MonWidgetCommandeDeplie1Niveau ",self.node.item.nom) - #traceback.print_stack() - repIcon=self.editor.appliEficas.repIcon - fichier=os.path.join(repIcon, 'deleteRondVide.png') - icon = QIcon(fichier) - for node in self.node.children: - - node.plie=True - node.setPlieChildren() - if node.appartientAUnNoeudPlie==True : continue - - node.plieToutEtReaffiche = self.plieToutEtReaffiche - node.deplieToutEtReaffiche = self.deplieToutEtReaffiche - node.affichePanneau = self.affichePanneau - node.getPanel = self.getPanel - - widget=node.getPanelGroupe(self,self.maCommande) - self.listeFocus.append(node.fenetre) - - try : - node.fenetre.RBDeplie.setCheckable(False) - node.fenetre.RBDeplie.setEnabled(False) - node.fenetre.RBDeplie.setIcon(icon) - except : pass - - if node.item.object.isMCList() : - node.setDeplie = self.setDepliePourMCList - - for c in node.children : - c.setDeplie = self.setDepliePourNode - c.plieToutEtReaffiche = self.plieToutEtReaffiche - c.deplieToutEtReaffiche = self.deplieToutEtReaffiche - c.getPanel = self.getPanel - c.affichePanneau = self.affichePanneau - try : - c.fenetre.RBDeplie.setCheckable(False) - c.fenetre.RBDeplie.setEnabled(False) - c.fenetre.RBDeplie.setIcon(icon) - except : - pass - else : - node.setDeplie=self.setDepliePourNode - - #print ("fin ------------------------ afficheMots de MonWidgetCommandeDeplie1Niveau ",self.node.item.nom) - - def afficheSuivant(self,aAfficher): - fenetre=self.node.tree.itemCourant.fenetre - fenetre.afficheSuivant(aAfficher) - - def setDepliePourNode(self): - noeudCourant=self.node.tree.itemCourant - noeudCourant.setDeplieChildren() - if self.editor.fenetreCentraleAffichee == noeudCourant.fenetre : return - noeudCourant.afficheCeNiveau() - pass + def __init__(self,node,editor,etape): + #print ("debut de ---------------------- init de MonWidgetCommandeDeplie1Niveau ",node.item.nom) + MonWidgetCommande.__init__(self,node,editor,etape) + self.node.plieToutEtReaffiche=self.plieToutEtReaffiche + spacerItem = QSpacerItem(21, 600, QSizePolicy.Expanding, QSizePolicy.Expanding) + self.verticalLayoutCommande.addItem(spacerItem) + + def afficheMots(self): + # Attention + # Attention --> cette methode surcharge les methodes des Nodes Fils + # Attention + #print ("debut de ---------------------- ds afficheMots de MonWidgetCommandeDeplie1Niveau ",self.node.item.nom) + #traceback.print_stack() + repIcon=self.editor.appliEficas.repIcon + fichier=os.path.join(repIcon, 'deleteRondVide.png') + icon = QIcon(fichier) + for node in self.node.children: + + node.plie=True + node.setPlieChildren() + if node.appartientAUnNoeudPlie==True : continue + + node.plieToutEtReaffiche = self.plieToutEtReaffiche + node.deplieToutEtReaffiche = self.deplieToutEtReaffiche + node.affichePanneau = self.affichePanneau + node.getPanel = self.getPanel + + widget=node.getPanelGroupe(self,self.maCommande) + self.listeFocus.append(node.fenetre) + + try : + node.fenetre.RBDeplie.setCheckable(False) + node.fenetre.RBDeplie.setEnabled(False) + node.fenetre.RBDeplie.setIcon(icon) + except : pass + + if node.item.object.isMCList() : + node.setDeplie = self.setDepliePourMCList + + for c in node.children : + c.setDeplie = self.setDepliePourNode + c.plieToutEtReaffiche = self.plieToutEtReaffiche + c.deplieToutEtReaffiche = self.deplieToutEtReaffiche + c.getPanel = self.getPanel + c.affichePanneau = self.affichePanneau + try : + c.fenetre.RBDeplie.setCheckable(False) + c.fenetre.RBDeplie.setEnabled(False) + c.fenetre.RBDeplie.setIcon(icon) + except : + pass + else : + node.setDeplie=self.setDepliePourNode + + #print ("fin ------------------------ afficheMots de MonWidgetCommandeDeplie1Niveau ",self.node.item.nom) + + def afficheSuivant(self,aAfficher): + fenetre=self.node.tree.itemCourant.fenetre + fenetre.afficheSuivant(aAfficher) + + def setDepliePourNode(self): + noeudCourant=self.node.tree.itemCourant + noeudCourant.setDeplieChildren() + if self.editor.fenetreCentraleAffichee == noeudCourant.fenetre : return + noeudCourant.afficheCeNiveau() + pass # -------------------------------------------- Methodes qui surchargent les noeuds fils - def setDepliePourMCList(self): - #print ('je surcharge setDeplie pour MCList') - pass + def setDepliePourMCList(self): + #print ('je surcharge setDeplie pour MCList') + pass - def setPlieChildren(self): - #print ('je surcharge setPlieChildren') - pass + def setPlieChildren(self): + #print ('je surcharge setPlieChildren') + pass - def setDeplieChildren(self): - #print ('je surcharge setDeplieChildren') - pass + def setDeplieChildren(self): + #print ('je surcharge setDeplieChildren') + pass - def plieToutEtReaffiche(self): - #print ('je surcharge plieToutEtReaffiche', self.node.item.nom) - pass + def plieToutEtReaffiche(self): + #print ('je surcharge plieToutEtReaffiche', self.node.item.nom) + pass - def deplieToutEtReaffiche(self): - #print ('je surcharge deplieToutEtReaffiche', self.node.tree.itemCourant.item.getLabelText()) - pass + def deplieToutEtReaffiche(self): + #print ('je surcharge deplieToutEtReaffiche', self.node.tree.itemCourant.item.getLabelText()) + pass - def plieToutEtReafficheSaufItem(self): - #print ('je surcharge plieToutEtReaffiche', self.node.tree.itemCourant.item.getLabelText()) - pass + def plieToutEtReafficheSaufItem(self): + #print ('je surcharge plieToutEtReaffiche', self.node.tree.itemCourant.item.getLabelText()) + pass - def affichePanneau(self): - #print ('je surcharge affichePanneau', self.node.tree.itemCourant.item.getLabelText()) - node=self.node.tree.itemCourant - while ( not (hasattr(node,'fenetreIhm')) or node.treeParent.fenetreIhm != 'deplie1Niveau') : + def affichePanneau(self): + #print ('je surcharge affichePanneau', self.node.tree.itemCourant.item.getLabelText()) + node=self.node.tree.itemCourant + while ( not (hasattr(node,'fenetreIhm')) or node.treeParent.fenetreIhm != 'deplie1Niveau') : node=node.treeParent - self.node.tree.setCurrentItem(node) - - item=node.item - if item.getLabelText()[0] == self.editor.fenetreCentraleAffichee.labelNomCommande.text(): - return - node.setDeplieChildren() - node.afficheCeNiveau() - self.editor.fenetreCentraleAffichee.labelNomCommande.setText(item.getLabelText()[0]) - self.editor.fenetreCentraleAffichee.labelDoc.setText(item.getFr()) + self.node.tree.setCurrentItem(node) + item=node.item + if item.getLabelText()[0] == self.editor.fenetreCentraleAffichee.labelNomCommande.text(): + return + node.setDeplieChildren() + node.afficheCeNiveau() + self.editor.fenetreCentraleAffichee.labelNomCommande.setText(item.getLabelText()[0]) + self.editor.fenetreCentraleAffichee.labelDoc.setText(item.getFr()) - def getPanel (self): - #print ('surcharge ds getPanel') - pass + + def getPanel (self): + #print ('surcharge ds getPanel') + pass diff --git a/InterfaceQT4/monWidgetCommentaire.py b/InterfaceQT4/monWidgetCommentaire.py index 8ff4e317..2ac6f90b 100644 --- a/InterfaceQT4/monWidgetCommentaire.py +++ b/InterfaceQT4/monWidgetCommentaire.py @@ -21,7 +21,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from PyQt5.QtWidgets import QWidget @@ -30,68 +30,67 @@ from PyQt5.QtCore import Qt from desWidgetCommentaire import Ui_WidgetCommentaire from .gereIcones import FacultatifOuOptionnel from Extensions.i18n import tr -import Accas +import Accas import os - + # Import des panels class MonWidgetCommentaire(QWidget,Ui_WidgetCommentaire,FacultatifOuOptionnel): - """ - """ - def __init__(self,node,editor,commentaire): - QWidget.__init__(self,None) - self.node=node - self.node.fenetre=self - self.setupUi(self) - self.editor=editor - self.appliEficas=self.editor.appliEficas - self.repIcon=self.appliEficas.repIcon - self.setIconePoubelle() - self.remplitTexte() - self.monOptionnel=None - - self.commentaireTE.textChanged.connect(self.TexteCommentaireEntre) - if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close() - else : self.bCatalogue.clicked.connect(self.afficheCatalogue) - if self.editor.code in ['Adao','MAP','ADAO'] : - self.bAvant.close() - self.bApres.close() - else : - self.bAvant.clicked.connect(self.afficheAvant) - self.bApres.clicked.connect(self.afficheApres) - self.editor.fermeOptionnel() - - - def afficheApres(self): - self.node.selectApres() - - def afficheAvant(self): - self.node.selectAvant() - - - def afficheCatalogue(self): - self.node.tree.racine.affichePanneau() - if self.node : self.node.select() - else : self.node.tree.racine.select() - - def remplitTexte(self): - texte=self.node.item.getValeur() - self.commentaireTE.setText(texte) - if self.editor.code == "CARMELCND" and texte[0:16]=="Cree - fichier :" : - self.commentaireTE.setReadOnly(True) - self.commentaireTE.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.commentaireTE.setToolTip(tr("Valeur non modifiable")) - else : - self.commentaireTE.setReadOnly(False) - - def donnePremier(self): - self.commentaireTE.setFocus(7) - - - def TexteCommentaireEntre(self): - texte=str(self.commentaireTE.toPlainText()) - self.editor.initModif() - self.node.item.setValeur(texte) - self.node.updateNodeTexte() + """ + """ + def __init__(self,node,editor,commentaire): + QWidget.__init__(self,None) + self.node=node + self.node.fenetre=self + self.setupUi(self) + self.editor=editor + self.appliEficas=self.editor.appliEficas + self.repIcon=self.appliEficas.repIcon + self.setIconePoubelle() + self.remplitTexte() + self.monOptionnel=None + + self.commentaireTE.textChanged.connect(self.TexteCommentaireEntre) + if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close() + else : self.bCatalogue.clicked.connect(self.afficheCatalogue) + if self.editor.code in ['Adao','MAP','ADAO'] : + self.bAvant.close() + self.bApres.close() + else : + self.bAvant.clicked.connect(self.afficheAvant) + self.bApres.clicked.connect(self.afficheApres) + self.editor.fermeOptionnel() + + + def afficheApres(self): + self.node.selectApres() + + def afficheAvant(self): + self.node.selectAvant() + + + def afficheCatalogue(self): + self.node.tree.racine.affichePanneau() + if self.node : self.node.select() + else : self.node.tree.racine.select() + + def remplitTexte(self): + texte=self.node.item.getValeur() + self.commentaireTE.setText(texte) + if self.editor.code == "CARMELCND" and texte[0:16]=="Cree - fichier :" : + self.commentaireTE.setReadOnly(True) + self.commentaireTE.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.commentaireTE.setToolTip(tr("Valeur non modifiable")) + else : + self.commentaireTE.setReadOnly(False) + + def donnePremier(self): + self.commentaireTE.setFocus(7) + + def TexteCommentaireEntre(self): + texte=str(self.commentaireTE.toPlainText()) + self.editor.initModif() + self.node.item.setValeur(texte) + self.node.updateNodeTexte() diff --git a/InterfaceQT4/monWidgetCreeParam.py b/InterfaceQT4/monWidgetCreeParam.py index d53025c1..1e903793 100644 --- a/InterfaceQT4/monWidgetCreeParam.py +++ b/InterfaceQT4/monWidgetCreeParam.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import object + from builtins import object except : pass import types,os,re @@ -35,46 +35,46 @@ from desWidgetCreeParam import Ui_desWidgetCreeParam class MonWidgetCreeParam(Ui_desWidgetCreeParam,QDialog): - """ - """ - def __init__(self,editor, name = None,fl = 0): - self.editor=editor - self.editor.afficheInfos("") - QDialog.__init__(self,editor) - self.setupUi(self) - self.connecterSignaux() - self.dejaExistant=0 - self.listeTousParam=self.editor.jdc.params - self.dictListe={} - self.initToutesVal() - - def connecterSignauxQT4(self) : + """ + """ + def __init__(self,editor, name = None,fl = 0): + self.editor=editor + self.editor.afficheInfos("") + QDialog.__init__(self,editor) + self.setupUi(self) + self.connecterSignaux() + self.dejaExistant=0 + self.listeTousParam=self.editor.jdc.params + self.dictListe={} + self.initToutesVal() + + def connecterSignauxQT4(self) : self.connect(self.lineEditVal,SIGNAL("returnPressed()"),self.lineEditValReturnPressed) self.connect(self.lineEditNom,SIGNAL("returnPressed()"),self.lineEditNomReturnPressed) - def connecterSignaux(self) : + def connecterSignaux(self) : self.lineEditVal.returnPressed.connect(self.lineEditValReturnPressed) self.lineEditNom.returnPressed.connect(self.lineEditNomReturnPressed) self.LBParam.itemDoubleClicked.connect(self.paramClicked) - def paramClicked(self,item): - if self.editor.nodeEnCours == None : + def paramClicked(self,item): + if self.editor.nodeEnCours == None : QMessageBox.warning( self, tr("Pas de Mot-Clef"),tr("Attention! selectionnez un mot-clef")) return param= self.dictListe[item.text()] self.editor.nodeEnCours.lineEditVal.setText(param) self.editor.nodeEnCours.LEvaleurPressed() - - def creeParametre(self): + + def creeParametre(self): nom=str(self.lineEditNom.text()) val=str(self.lineEditVal.text()) if val == "" or None : return if nom == "" or None : return - if len(self.editor.tree.selectedItems()) == 0 : - itemAvant=self.editor.tree.racine - else : - itemAvant=self.editor.tree.selectedItems()[0] + if len(self.editor.tree.selectedItems()) == 0 : + itemAvant=self.editor.tree.racine + else : + itemAvant=self.editor.tree.selectedItems()[0] param=itemAvant.addParameters(True) param.item.setNom(nom) #PN self.val permet d entrer du texte @@ -89,62 +89,62 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam,QDialog): - def lineEditValReturnPressed(self): + def lineEditValReturnPressed(self): qtVal=self.lineEditVal.text() valString=str(self.lineEditVal.text()) self.val="" contexte={} exec("from math import *", contexte) jdc=self.editor.jdc - if jdc == None : - self.editor.afficheInfos(tr(u"La Creation de parametre n est possible que dans un jeu de donnees"),Qt.red) - return + if jdc == None : + self.editor.afficheInfos(tr(u"La Creation de parametre n est possible que dans un jeu de donnees"),Qt.red) + return for p in jdc.params : - try: - tp=p.nom+'='+str(repr(p.valeur)) - exec(tp, contexte) - except : - pass + try: + tp=p.nom+'='+str(repr(p.valeur)) + exec(tp, contexte) + except : + pass monTexte="monParam="+valString try : - exec(monTexte, contexte) - self.val=valString + exec(monTexte, contexte) + self.val=valString except : - try : - monTexte="monParam='"+valString+"'" - self.val="'"+valString+"'" - except : - self.editor.afficheInfos(tr("Valeur incorrecte"),Qt.red) + try : + monTexte="monParam='"+valString+"'" + self.val="'"+valString+"'" + except : + self.editor.afficheInfos(tr("Valeur incorrecte"),Qt.red) if self.lineEditNom.text()!="" and self.dejaExistant==False : self.creeParametre() - def lineEditNomReturnPressed(self): + def lineEditNomReturnPressed(self): qtNom=self.lineEditNom.text() nom=str(qtNom) if not pattern_name.match(nom) : - self.lineEditNom.setText("") - commentaire=nom + tr(" n est pas un identifiant correct\n ") - self.editor.afficheInfos(commentaire,Qt.red) + self.lineEditNom.setText("") + commentaire=nom + tr(" n est pas un identifiant correct\n ") + self.editor.afficheInfos(commentaire,Qt.red) for p in self.editor.jdc.params : - if p.nom==nom : - commentaire=nom + tr(" existe deja\n ") - self.editor.afficheInfos(commentaire,Qt.red) - return + if p.nom==nom : + commentaire=nom + tr(" existe deja\n ") + self.editor.afficheInfos(commentaire,Qt.red) + return if self.lineEditVal.text()!="" : self.creeParametre() self.lineEditVal.setFocus(Qt.OtherFocusReason) - def initToutesVal(self): + def initToutesVal(self): self.LBParam.clear() for param in self.listeTousParam : self.LBParam.addItem((repr(param))) self.dictListe[repr(param)] = param.nom - - - - def valideParam(self): + + + + def valideParam(self): if self.LBParam.selectedItems()== None : return lParam=[] for indice in range(len(self.LBParam.selectedItems())): @@ -153,9 +153,8 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam,QDialog): lParam.append(param) try : - self.panel.ajoutNValeur(lParam) + self.panel.ajoutNValeur(lParam) except : - for p in lParam : - self.panel.ajout1Valeur(p) + for p in lParam : + self.panel.ajout1Valeur(p) self.close() - diff --git a/InterfaceQT4/monWidgetCreeUserAssd.py b/InterfaceQT4/monWidgetCreeUserAssd.py index 3e2ab8f6..b26fe3be 100644 --- a/InterfaceQT4/monWidgetCreeUserAssd.py +++ b/InterfaceQT4/monWidgetCreeUserAssd.py @@ -30,33 +30,30 @@ from copy import copy,deepcopy from PyQt5.QtCore import Qt - -class MonWidgetCreeUserAssd ( MonWidgetSimpTxt): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - MonWidgetSimpTxt. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - #self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible) - def LEvaleurPressed(self): - try : - if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return - except : pass - valeurEntree = str(self.lineEditVal.text()) - if valeurEntree == self.oldValeurTexte : return - if self.oldValeurTexte == "" : enCreation = True - else : enCreation = False - if enCreation : validite,commentaire=self.objSimp.creeUserASSDetSetValeur(valeurEntree) - else : validite,commentaire=self.objSimp.renommeSdCree(valeurEntree) - if not enCreation : self.node.updateNodeTexte() - #PNPNPN -- signal update sur les fils ou ? - if commentaire != "" : - if validite : - self.editor.afficheCommentaire(commentaire) - self.oldValeurTexte = self.lineEditVal.text() - else : - self.editor.afficheInfos(commentaire,Qt.red) - self.lineEditVal.setText("") - self.oldValeurTexte="" - self.parentQt.propageChange(self.objSimp.definition.type[0],self) - - +class MonWidgetCreeUserAssd ( MonWidgetSimpTxt): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + MonWidgetSimpTxt. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) + #self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible) + def LEvaleurPressed(self): + try : + if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return + except : pass + valeurEntree = str(self.lineEditVal.text()) + if valeurEntree == self.oldValeurTexte : return + if self.oldValeurTexte == "" : enCreation = True + else : enCreation = False + if enCreation : validite,commentaire=self.objSimp.creeUserASSDetSetValeur(valeurEntree) + else : validite,commentaire=self.objSimp.renommeSdCree(valeurEntree) + if not enCreation : self.node.updateNodeTexte() + #PNPNPN -- signal update sur les fils ou ? + if commentaire != "" : + if validite : + self.editor.afficheCommentaire(commentaire) + self.oldValeurTexte = self.lineEditVal.text() + else : + self.editor.afficheInfos(commentaire,Qt.red) + self.lineEditVal.setText("") + self.oldValeurTexte="" + self.parentQt.propageChange(self.objSimp.definition.type[0],self) diff --git a/InterfaceQT4/monWidgetDate.py b/InterfaceQT4/monWidgetDate.py index dd5964dd..689be078 100644 --- a/InterfaceQT4/monWidgetDate.py +++ b/InterfaceQT4/monWidgetDate.py @@ -25,27 +25,26 @@ import types,os from Extensions.i18n import tr from .feuille import Feuille -from .monWidgetSimpTuple import MonWidgetSimpTuple -from desWidgetDate import Ui_WidgetDate +from .monWidgetSimpTuple import MonWidgetSimpTuple +from desWidgetDate import Ui_WidgetDate class MonWidgetDate (Ui_WidgetDate,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=3 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) if self.objSimp.isImmuable() : - self.lineEditVal1.setDisabled(True) - self.lineEditVal2.setDisabled(True) - self.lineEditVal3.setDisabled(True) - self.lineEditVal1.setStyleSheet(QString.fromUtf8("background:rgb(244,244,244);\n" "border:0px;\n")) - self.lineEditVal2.setStyleSheet(QString.fromUtf8("background:rgb(244,244,244);\n" "border:0px;\n")) - self.lineEditVal3.setStyleSheet(QString.fromUtf8("background:rgb(244,244,244);\n" "border:0px;\n")) - self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) - self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) - self.lineEditVal3.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal1.setDisabled(True) + self.lineEditVal2.setDisabled(True) + self.lineEditVal3.setDisabled(True) + self.lineEditVal1.setStyleSheet(QString.fromUtf8("background:rgb(244,244,244);\n" "border:0px;\n")) + self.lineEditVal2.setStyleSheet(QString.fromUtf8("background:rgb(244,244,244);\n" "border:0px;\n")) + self.lineEditVal3.setStyleSheet(QString.fromUtf8("background:rgb(244,244,244);\n" "border:0px;\n")) + self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal3.setToolTip(tr("Valeur non modifiable")) else : - self.maCommande.listeAffichageWidget.append(self.lineEditVal1) + self.maCommande.listeAffichageWidget.append(self.lineEditVal1) #self.maCommande.listeAffichageWidget.append(self.lineEditVal2) #self.maCommande.listeAffichageWidget.append(self.lineEditVal3) - diff --git a/InterfaceQT4/monWidgetFact.py b/InterfaceQT4/monWidgetFact.py index c6758b39..7b2ad86a 100644 --- a/InterfaceQT4/monWidgetFact.py +++ b/InterfaceQT4/monWidgetFact.py @@ -32,46 +32,46 @@ from Extensions.i18n import tr # PN 18 mai 2020 : affiche systematique des optionnels class MonWidgetFactCommun(Groupe): - """ - """ - def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): - #print "fact : ",node.item.nom - Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) - labeltext,fonte,couleur = self.node.item.getLabelText() - self.GroupBox.setText(tr(labeltext)) - self.GroupBox.setTextInteractionFlags(Qt.TextSelectableByMouse) - self.parentQt.commandesLayout.insertWidget(-1,self) - self.doitAfficherOptionnel=True - min,max=obj.getMinMax() - if max < 2 and hasattr(self, 'RBPlus') : self.RBPlus.close() - if max > 1 and hasattr(self, 'RBPlus') : self.RBPlus.clicked.connect(self.ajouteMCParPB) + """ + """ + def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): + #print "fact : ",node.item.nom + Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) + labeltext,fonte,couleur = self.node.item.getLabelText() + self.GroupBox.setText(tr(labeltext)) + self.GroupBox.setTextInteractionFlags(Qt.TextSelectableByMouse) + self.parentQt.commandesLayout.insertWidget(-1,self) + self.doitAfficherOptionnel=True + min,max=obj.getMinMax() + if max < 2 and hasattr(self, 'RBPlus') : self.RBPlus.close() + if max > 1 and hasattr(self, 'RBPlus') : self.RBPlus.clicked.connect(self.ajouteMCParPB) - def enterEvent(self,event): - #print "enterEvent ", self.node.item.getLabelText()[0] - self.doitAfficherOptionnel=True - QWidget.enterEvent(self,event) - QTimer.singleShot(500, self.delayAffiche) + def enterEvent(self,event): + #print "enterEvent ", self.node.item.getLabelText()[0] + self.doitAfficherOptionnel=True + QWidget.enterEvent(self,event) + QTimer.singleShot(500, self.delayAffiche) - def leaveEvent(self,event): - #print "leaveEvent", self.node.item.getLabelText()[0] - #self.doitAfficherOptionnel=False - QWidget.leaveEvent(self,event) + def leaveEvent(self,event): + #print "leaveEvent", self.node.item.getLabelText()[0] + #self.doitAfficherOptionnel=False + QWidget.leaveEvent(self,event) - def delayAffiche(self): - #print "delayAffiche, self.doitAfficherOptionnel = ", self.doitAfficherOptionnel - if self.doitAfficherOptionnel and self.editor.code != "CARMELCND" :self.afficheOptionnel() + def delayAffiche(self): + #print "delayAffiche, self.doitAfficherOptionnel = ", self.doitAfficherOptionnel + if self.doitAfficherOptionnel and self.editor.code != "CARMELCND" :self.afficheOptionnel() - def ajouteMCParPB(self): - texteListeNom="+"+self.obj.nom - parentOuAjouter=self.parentQt - from .monWidgetBloc import MonWidgetBloc - while (parentOuAjouter and isinstance(parentOuAjouter, MonWidgetBloc)) : - parentOuAjouter=parentOuAjouter.parentQt - parentOuAjouter.ajoutMC(texteListeNom) + def ajouteMCParPB(self): + texteListeNom="+"+self.obj.nom + parentOuAjouter=self.parentQt + from .monWidgetBloc import MonWidgetBloc + while (parentOuAjouter and isinstance(parentOuAjouter, MonWidgetBloc)) : + parentOuAjouter=parentOuAjouter.parentQt + parentOuAjouter.ajoutMC(texteListeNom) # def reaffiche(self, nodeAVoir=None): -# print ('ds reaffiche : ', self.obj.nom, self.node.firstDeplie) +# print ('ds reaffiche : ', self.obj.nom, self.node.firstDeplie) # if self.node.editor.maConfiguration.afficheFirstPlies and self.node.firstDeplie: # self.node.firstDeplie =False # self.node.setPlie() @@ -80,14 +80,14 @@ class MonWidgetFactCommun(Groupe): class MonWidgetFact(Ui_WidgetFact,MonWidgetFactCommun): - #def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1): - # MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn) - def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): - MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) + #def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1): + # MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn) + def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): + MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) class MonWidgetFactTableau(Ui_WidgetFact,MonWidgetFactCommun): - #def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1): - # MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn) - def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): - MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) - MonWidgetFactTableau.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) + #def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1): + # MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn) + def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): + MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) + MonWidgetFactTableau.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) diff --git a/InterfaceQT4/monWidgetFactPlie.py b/InterfaceQT4/monWidgetFactPlie.py index e479f312..ad383d72 100644 --- a/InterfaceQT4/monWidgetFactPlie.py +++ b/InterfaceQT4/monWidgetFactPlie.py @@ -26,16 +26,15 @@ from Extensions.i18n import tr # Import des panels class MonWidgetFactPlie(Ui_WidgetFactPlie,Groupe): - """ - """ - #def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=-1): - def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): - #print "fact plie : ",node.item.nom - node.fenetreAAfficher=self - Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) - self.groupBox.setText(self.node.item.getLabelText()[0]) - self.parentQt.commandesLayout.insertWidget(-1,self) - - def traiteClicSurLabel(self,texte): - return + """ + """ + #def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=-1): + def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): + #print "fact plie : ",node.item.nom + node.fenetreAAfficher=self + Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) + self.groupBox.setText(self.node.item.getLabelText()[0]) + self.parentQt.commandesLayout.insertWidget(-1,self) + def traiteClicSurLabel(self,texte): + return diff --git a/InterfaceQT4/monWidgetFormule.py b/InterfaceQT4/monWidgetFormule.py index f1add2f1..d76500e0 100644 --- a/InterfaceQT4/monWidgetFormule.py +++ b/InterfaceQT4/monWidgetFormule.py @@ -21,7 +21,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from desWidgetFormule import Ui_WidgetFormule @@ -33,58 +33,58 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr -import Accas +import Accas import os - + # Import des panels class MonWidgetFormule(QWidget,Ui_WidgetFormule,FacultatifOuOptionnel): - """ - """ - def __init__(self,node,editor,etape): - #print "MonWidgetFormule ", self - QWidget.__init__(self,None) - self.node=node - self.node.fenetre=self - self.editor=editor - self.appliEficas=self.editor.appliEficas - self.repIcon=self.appliEficas.repIcon - self.setupUi(self) - - - self.setIconePoubelle() - self.setIconesGenerales() - self.setValeurs() - self.setValide() - - - if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close() - else : self.bCatalogue.clicked.connect(self.afficheCatalogue) - if self.editor.code in ['Adao','MAP','ADAO'] : - self.bAvant.close() - self.bApres.close() - else : - self.bAvant.clicked.connect(self.afficheAvant) - self.bApres.clicked.connect(self.afficheApres) - self.LENom.returnPressed.connect(self.nomChange) - self.LENomFormule.returnPressed.connect(self.nomFormuleSaisi) - self.LENomsArgs.returnPressed.connect(self.argsSaisis) - self.LECorpsFormule.returnPressed.connect(self.FormuleSaisie) - - - - self.racine=self.node.tree.racine - self.monOptionnel=None - self.editor.fermeOptionnel() - #print "fin init de widget Commande" - - - def donnePremier(self): - self.listeAffichageWidget[0].setFocus(7) - - - def setValeurs(self): + """ + """ + def __init__(self,node,editor,etape): + #print "MonWidgetFormule ", self + QWidget.__init__(self,None) + self.node=node + self.node.fenetre=self + self.editor=editor + self.appliEficas=self.editor.appliEficas + self.repIcon=self.appliEficas.repIcon + self.setupUi(self) + + + self.setIconePoubelle() + self.setIconesGenerales() + self.setValeurs() + self.setValide() + + + if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close() + else : self.bCatalogue.clicked.connect(self.afficheCatalogue) + if self.editor.code in ['Adao','MAP','ADAO'] : + self.bAvant.close() + self.bApres.close() + else : + self.bAvant.clicked.connect(self.afficheAvant) + self.bApres.clicked.connect(self.afficheApres) + self.LENom.returnPressed.connect(self.nomChange) + self.LENomFormule.returnPressed.connect(self.nomFormuleSaisi) + self.LENomsArgs.returnPressed.connect(self.argsSaisis) + self.LECorpsFormule.returnPressed.connect(self.FormuleSaisie) + + + + self.racine=self.node.tree.racine + self.monOptionnel=None + self.editor.fermeOptionnel() + #print "fin init de widget Commande" + + + def donnePremier(self): + self.listeAffichageWidget[0].setFocus(7) + + + def setValeurs(self): self.LENomFormule.setText(self.node.item.getNom()) self.LECorpsFormule.setText(self.node.item.getCorps()) texte_args="" @@ -95,110 +95,109 @@ class MonWidgetFormule(QWidget,Ui_WidgetFormule,FacultatifOuOptionnel): self.LENomsArgs.setText(texte_args) - def nomChange(self): - nom = str(self.LENom.text()) - self.LENomFormule.setText(nom) - self.nomFormuleSaisi() - - - def afficheCatalogue(self): - if self.editor.widgetOptionnel != None : self.monOptionnel.hide() - self.racine.affichePanneau() - if self.node : self.node.select() - else : self.racine.select() - - def afficheApres(self): - self.node.selectApres() - - def afficheAvant(self): - self.node.selectAvant() - - def setValide(self): - if not(hasattr (self,'RBValide')) : return - icon = QIcon() - if self.node.item.object.isValid() : - icon=QIcon(self.repIcon+"/ast-green-ball.png") - else : - icon=QIcon(self.repIcon+"/ast-red-ball.png") - if self.node.item.getIconName() == "ast-yellow-square" : - icon=QIcon(self.repIcon+"/ast-yel-ball.png") - self.RBValide.setIcon(icon) - - - def nomFormuleSaisi(self): - nomFormule = str(self.LENomFormule.text()) - if nomFormule == '' : return - self.LENom.setText(nomFormule) - test,erreur = self.node.item.verifNom(nomFormule) - if test : - commentaire=nomFormule+tr(" est un nom valide pour une FORMULE") - self.editor.afficheInfos(commentaire) - else : - commentaire=nomFormule+tr(" n'est pas un nom valide pour une FORMULE") - self.editor.afficheInfos(commentaire,Qt.red) - return - if str(self.LENomsArgs.text()) != "" and str(self.LECorpsFormule.text())!= "" : self.BOkPressedFormule() - self.LENomsArgs.setFocus(7) - - def argsSaisis(self): - arguments = str(self.LENomsArgs.text()) - if arguments == '' : return - test,erreur = self.node.item.verifArguments(arguments) - if test: - commentaire=tr("Argument(s) valide(s) pour une FORMULE") - self.editor.afficheInfos(commentaire) - else: - commentaire=tr("Argument(s) invalide(s) pour une FORMULE") - self.editor.afficheInfos(commentaire,Qt.red) - if str(self.LECorpsFormule.text()) != "" and str(self.LENomFormule.text())!= "" : self.BOkPressedFormule() - self.LECorpsFormule.setFocus(7) - - def FormuleSaisie(self): - nomFormule = str(self.LENomFormule.text()) - arguments = str(self.LENomsArgs.text()) - expression = str(self.LECorpsFormule.text()) - if expression == '' : return - test,erreur = self.node.item.verifFormule_python((nomFormule,"REEL",arguments,expression)) - - if test: - commentaire=tr("Corps de FORMULE valide") - self.editor.afficheInfos(commentaire) - else: - commentaire=tr("Corps de FORMULE invalide") - self.editor.afficheInfos(commentaire,Qt.red) - if str(self.LENomsArgs.text()) != "" and str(self.LENomFormule.text())!= "" : self.BOkPressedFormule() - - def BOkPressedFormule(self): - #print dir(self) - #if self.parent.modified == 'n' : self.parent.initModif() - - nomFormule = str(self.LENomFormule.text()) - test,erreur = self.node.item.verifNom(nomFormule) - if not test : - self.editor.afficheInfos(erreur,Qt.red) - return - - arguments = str(self.LENomsArgs.text()) - test,erreur = self.node.item.verifArguments(arguments) - if not test : - self.editor.afficheInfos(erreur,Qt.red) - return - - expression = str(self.LECorpsFormule.text()) - test,erreur = self.node.item.verifFormule_python((nomFormule,"REEL",arguments,expression)) - if not test : - self.editor.afficheInfos(erreur,Qt.red) - return - - test=self.node.item.object.updateFormulePython(formule=(nomFormule,"REEL",arguments,expression)) - test,erreur = self.node.item.saveFormule(nomFormule,"REEL",arguments,expression) - if test : - self.node.onValid() - self.node.update_valid() - commentaire = "Formule saisie" - self.editor.afficheInfos(commentaire) - else: - commentaire ="Formule incorrecte : " + erreur - self.editor.afficheInfos(commentaire,Qt.red) - self.editor.initModif() - + def nomChange(self): + nom = str(self.LENom.text()) + self.LENomFormule.setText(nom) + self.nomFormuleSaisi() + + + def afficheCatalogue(self): + if self.editor.widgetOptionnel != None : self.monOptionnel.hide() + self.racine.affichePanneau() + if self.node : self.node.select() + else : self.racine.select() + + def afficheApres(self): + self.node.selectApres() + + def afficheAvant(self): + self.node.selectAvant() + + def setValide(self): + if not(hasattr (self,'RBValide')) : return + icon = QIcon() + if self.node.item.object.isValid() : + icon=QIcon(self.repIcon+"/ast-green-ball.png") + else : + icon=QIcon(self.repIcon+"/ast-red-ball.png") + if self.node.item.getIconName() == "ast-yellow-square" : + icon=QIcon(self.repIcon+"/ast-yel-ball.png") + self.RBValide.setIcon(icon) + + + def nomFormuleSaisi(self): + nomFormule = str(self.LENomFormule.text()) + if nomFormule == '' : return + self.LENom.setText(nomFormule) + test,erreur = self.node.item.verifNom(nomFormule) + if test : + commentaire=nomFormule+tr(" est un nom valide pour une FORMULE") + self.editor.afficheInfos(commentaire) + else : + commentaire=nomFormule+tr(" n'est pas un nom valide pour une FORMULE") + self.editor.afficheInfos(commentaire,Qt.red) + return + if str(self.LENomsArgs.text()) != "" and str(self.LECorpsFormule.text())!= "" : self.BOkPressedFormule() + self.LENomsArgs.setFocus(7) + + def argsSaisis(self): + arguments = str(self.LENomsArgs.text()) + if arguments == '' : return + test,erreur = self.node.item.verifArguments(arguments) + if test: + commentaire=tr("Argument(s) valide(s) pour une FORMULE") + self.editor.afficheInfos(commentaire) + else: + commentaire=tr("Argument(s) invalide(s) pour une FORMULE") + self.editor.afficheInfos(commentaire,Qt.red) + if str(self.LECorpsFormule.text()) != "" and str(self.LENomFormule.text())!= "" : self.BOkPressedFormule() + self.LECorpsFormule.setFocus(7) + + def FormuleSaisie(self): + nomFormule = str(self.LENomFormule.text()) + arguments = str(self.LENomsArgs.text()) + expression = str(self.LECorpsFormule.text()) + if expression == '' : return + test,erreur = self.node.item.verifFormule_python((nomFormule,"REEL",arguments,expression)) + + if test: + commentaire=tr("Corps de FORMULE valide") + self.editor.afficheInfos(commentaire) + else: + commentaire=tr("Corps de FORMULE invalide") + self.editor.afficheInfos(commentaire,Qt.red) + if str(self.LENomsArgs.text()) != "" and str(self.LENomFormule.text())!= "" : self.BOkPressedFormule() + + def BOkPressedFormule(self): + #print dir(self) + #if self.parent.modified == 'n' : self.parent.initModif() + + nomFormule = str(self.LENomFormule.text()) + test,erreur = self.node.item.verifNom(nomFormule) + if not test : + self.editor.afficheInfos(erreur,Qt.red) + return + + arguments = str(self.LENomsArgs.text()) + test,erreur = self.node.item.verifArguments(arguments) + if not test : + self.editor.afficheInfos(erreur,Qt.red) + return + + expression = str(self.LECorpsFormule.text()) + test,erreur = self.node.item.verifFormule_python((nomFormule,"REEL",arguments,expression)) + if not test : + self.editor.afficheInfos(erreur,Qt.red) + return + + test=self.node.item.object.updateFormulePython(formule=(nomFormule,"REEL",arguments,expression)) + test,erreur = self.node.item.saveFormule(nomFormule,"REEL",arguments,expression) + if test : + self.node.onValid() + self.node.update_valid() + commentaire = "Formule saisie" + self.editor.afficheInfos(commentaire) + else: + commentaire ="Formule incorrecte : " + erreur + self.editor.afficheInfos(commentaire,Qt.red) + self.editor.initModif() diff --git a/InterfaceQT4/monWidgetHeure.py b/InterfaceQT4/monWidgetHeure.py index 8587fb12..62811aa6 100644 --- a/InterfaceQT4/monWidgetHeure.py +++ b/InterfaceQT4/monWidgetHeure.py @@ -26,10 +26,10 @@ from Extensions.i18n import tr from .feuille import Feuille from .monWidgetSimpBase import MonWidgetSimpBase -from desWidgetHeure import Ui_WidgetHeure +from desWidgetHeure import Ui_WidgetHeure class MonWidgetHeure (Ui_WidgetHeure,MonWidgetSimpBase): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): MonWidgetSimpBase.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) diff --git a/InterfaceQT4/monWidgetInactif.py b/InterfaceQT4/monWidgetInactif.py index db3657af..33d25e1f 100644 --- a/InterfaceQT4/monWidgetInactif.py +++ b/InterfaceQT4/monWidgetInactif.py @@ -24,64 +24,62 @@ from PyQt5.QtWidgets import QWidget from Extensions.i18n import tr from desWidgetInactif import Ui_WidgetInactif -import Accas +import Accas import os - + # Import des panels class MonWidgetInactif(QWidget,Ui_WidgetInactif): - """ - """ - def __init__(self,node,editor): - QWidget.__init__(self,None) - self.node=node - self.editor=editor - self.setupUi(self) - from .monWidgetOptionnel import MonWidgetOptionnel - if self.editor.widgetOptionnel!= None : - self.monOptionnel=self.editor.widgetOptionnel - else : - self.monOptionnel=MonWidgetOptionnel(self) - self.editor.widgetOptionnel=self.monOptionnel - self.editor.splitter.addWidget(self.monOptionnel) - self.editor.restoreSplitterSizes() - self.afficheOptionnel() - self.bAvant.clicked.connect(self.afficheAvant) - self.bApres.clicked.connect(self.afficheApres) - self.bCatalogue.clicked.connect(self.afficheCatalogue) - self.labelNomCommande.setText(tr(self.node.item.nom)) - self.labelNomCommande.setEnabled(False) - - def traiteClicSurLabel(self): - pass - - def donnePremier(self): - pass + """ + """ + def __init__(self,node,editor): + QWidget.__init__(self,None) + self.node=node + self.editor=editor + self.setupUi(self) + from .monWidgetOptionnel import MonWidgetOptionnel + if self.editor.widgetOptionnel!= None : + self.monOptionnel=self.editor.widgetOptionnel + else : + self.monOptionnel=MonWidgetOptionnel(self) + self.editor.widgetOptionnel=self.monOptionnel + self.editor.splitter.addWidget(self.monOptionnel) + self.editor.restoreSplitterSizes() + self.afficheOptionnel() + self.bAvant.clicked.connect(self.afficheAvant) + self.bApres.clicked.connect(self.afficheApres) + self.bCatalogue.clicked.connect(self.afficheCatalogue) + self.labelNomCommande.setText(tr(self.node.item.nom)) + self.labelNomCommande.setEnabled(False) - def setValide(self): - pass + def traiteClicSurLabel(self): + pass - def afficheOptionnel(self): - # N a pas de parentQt. doit donc etre redefini - if self.editor.maConfiguration.closeOptionnel : return - liste=[] - #print "dans afficheOptionnel", self.monOptionnel - # dans le cas ou l insertion n a pas eu leiu (souci d ordre par exemple) - #if self.monOptionnel == None : return - self.monOptionnel.parentMC=self - self.monOptionnel.afficheOptionnelVide() + def donnePremier(self): + pass + def setValide(self): + pass - def afficheCatalogue(self): - if self.editor.widgetOptionnel != None : self.monOptionnel.hide() - self.node.tree.racine.affichePanneau() - self.node.tree.racine.select() + def afficheOptionnel(self): + # N a pas de parentQt. doit donc etre redefini + if self.editor.maConfiguration.closeOptionnel : return + liste=[] + #print "dans afficheOptionnel", self.monOptionnel + # dans le cas ou l insertion n a pas eu leiu (souci d ordre par exemple) + #if self.monOptionnel == None : return + self.monOptionnel.parentMC=self + self.monOptionnel.afficheOptionnelVide() - def afficheApres(self): - self.node.selectApres() - def afficheAvant(self): - self.node.selectAvant() + def afficheCatalogue(self): + if self.editor.widgetOptionnel != None : self.monOptionnel.hide() + self.node.tree.racine.affichePanneau() + self.node.tree.racine.select() + def afficheApres(self): + self.node.selectApres() + def afficheAvant(self): + self.node.selectAvant() diff --git a/InterfaceQT4/monWidgetInfo.py b/InterfaceQT4/monWidgetInfo.py index 0bfc2dd5..c48357f2 100644 --- a/InterfaceQT4/monWidgetInfo.py +++ b/InterfaceQT4/monWidgetInfo.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -29,13 +29,13 @@ import types,os from PyQt5.QtWidgets import QWidget from Extensions.i18n import tr -from desWidgetInformation import Ui_WidgetInformative +from desWidgetInformation import Ui_WidgetInformative class MonWidgetInfo (Ui_WidgetInformative,QWidget): # c est juste la taille des differents widgets de base qui change - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): QWidget.__init__(self,None) self.setupUi(self) valeur=node.item.getValeur() diff --git a/InterfaceQT4/monWidgetIntoSug.py b/InterfaceQT4/monWidgetIntoSug.py index 42c72358..4a08d57a 100644 --- a/InterfaceQT4/monWidgetIntoSug.py +++ b/InterfaceQT4/monWidgetIntoSug.py @@ -20,8 +20,8 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str - from builtins import range + from builtins import str + from builtins import range except : pass import types,os @@ -34,39 +34,38 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr -from desWidgetIntoSug import Ui_WidgetIntoSug -from monWidgetPlusieursInto import MonWidgetPlusieursInto +from desWidgetIntoSug import Ui_WidgetIntoSug +from monWidgetPlusieursInto import MonWidgetPlusieursInto class GereAjoutDsPossible: - def LEValeurAjouteDsPossible(self): - text=str(self.lineEditVal.text()) - if text == "" : return - # il faudrait essauer d en obtenir un reel, un tuple ou ... - # si cela est utilise pour autre chose que Telemac - # tout devrait etre fait ici - if not isinstance(text,str) : - self.lineEditVal.setText("") - return - if self.node.item.hasIntoSug() : - self.maListeDeValeur=list(self.node.item.getListePossibleAvecSug([])) - self.maListeDeValeur.insert(0,text) - else : - try : - self.monSimpDef.intoSug.insert(0,text) - except : - self.monSimpDef.intoSug=list(self.monSimpDef.intoSug) - self.monSimpDef.intoSug.insert(0,text) - # selon si on est une liste ou un combo - try : self.ajouteValeurPossible(text) - except : self.setValeurs() + def LEValeurAjouteDsPossible(self): + text=str(self.lineEditVal.text()) + if text == "" : return + # il faudrait essauer d en obtenir un reel, un tuple ou ... + # si cela est utilise pour autre chose que Telemac + # tout devrait etre fait ici + if not isinstance(text,str) : + self.lineEditVal.setText("") + return + if self.node.item.hasIntoSug() : + self.maListeDeValeur=list(self.node.item.getListePossibleAvecSug([])) + self.maListeDeValeur.insert(0,text) + else : + try : + self.monSimpDef.intoSug.insert(0,text) + except : + self.monSimpDef.intoSug=list(self.monSimpDef.intoSug) + self.monSimpDef.intoSug.insert(0,text) + # selon si on est une liste ou un combo + try : self.ajouteValeurPossible(text) + except : self.setValeurs() class MonWidgetIntoSug (Ui_WidgetIntoSug, MonWidgetPlusieursInto,GereAjoutDsPossible): # Attention Attention # cette wdget ne fonctionne actuellement que pour Telemac -# on attend du texte . on n essaye pas de transformer +# on attend du texte . on n essaye pas de transformer - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): MonWidgetPlusieursInto.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible) - diff --git a/InterfaceQT4/monWidgetMatrice.py b/InterfaceQT4/monWidgetMatrice.py index 9a9a1d83..bb3dc1e6 100644 --- a/InterfaceQT4/monWidgetMatrice.py +++ b/InterfaceQT4/monWidgetMatrice.py @@ -21,8 +21,8 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str - from builtins import range + from builtins import str + from builtins import range except : pass import types,os,sys @@ -32,7 +32,7 @@ from Extensions.i18n import tr from .feuille import Feuille -from desWidgetMatrice import Ui_desWidgetMatrice +from desWidgetMatrice import Ui_desWidgetMatrice from PyQt5.QtCore import QSize, Qt from PyQt5.QtWidgets import QTableWidgetItem, QTableWidget @@ -43,7 +43,7 @@ from PyQt5.QtWidgets import QMessageBox class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille): # c est juste la taille des differents widgets de base qui change - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.monType = self.node.item.object.definition.type[0] parentQt.commandesLayout.insertWidget(-1,self) @@ -54,210 +54,209 @@ class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille): self.initialValeur() - def connecterSignaux(self) : - self.TBMatrice.itemChanged.connect(self.itemChanged) - self.PBrefresh.clicked.connect( self.acceptVal) - self.TBMatrice.focusOutEvent=self.monFocusOutEvent - - - def monFocusOutEvent(self,event): - self.acceptVal() - QTableWidget.focusInEvent(self.TBMatrice,event) - - - def itemChanged(self): - monItem=self.TBMatrice.currentItem() - if monItem==None : return - texte=monItem.text() - if texte=="" : return - if self.monType.typElt == 'R' : - try : val=float(str(texte)); ok=True - except : ok=False - if ok == False : - self.editor.afficheInfos(tr("Entrer un float SVP"),Qt.red) - monItem.setText("") - return - if self.monType.valSup != None : - if val > self.monType.valSup : - self.editor.afficheInfos(tr("Entrer un float inferieur a ") + repr(self.monType.valSup),Qt.red) - monItem.setText("") - return - if self.monType.valMin != None : - if val < self.monType.valMin : - self.editor.afficheInfos(tr("Entrer un float superieur a ") + repr(self.monType.valMin),Qt.red) - monItem.setText("") - return - self.editor.afficheInfos("") - if self.monType.structure != None: MonWidgetMatrice.__dict__[self.monType.structure](*(self,)) - if self.monType.typElt == 'TXM' : - if self.monType.typEltInto != None and texte not in self.monType.typEltInto : - self.editor.afficheInfos(tr("Entrer une valeur qui est ") + str(self.monType.typEltInto),Qt.red) - monItem.setText("") - return - - - def creeColonnes(self): - if self.monType.methodeCalculTaille != None : - try: - MonWidgetMatrice.__dict__[self.monType.methodeCalculTaille](*(self,)) - except : - QMessageBox.critical( self, tr("Mauvaise execution "),tr( "impossible d executer la methode ") + monType.methodeCalculTaille ) - return - else : - self.nbLigs=self.monType.nbLigs - self.nbCols=self.monType.nbCols - self.TBMatrice.setColumnCount(self.nbLigs) - self.TBMatrice.setRowCount(self.nbCols) - if self.monType.listeHeaders != None : - self.TBMatrice.setVerticalHeaderLabels(self.monType.listeHeaders[0]) - self.TBMatrice.setHorizontalHeaderLabels(self.monType.listeHeaders[1]) - else : - self.TBMatrice.verticalHeader().hide() - self.TBMatrice.horizontalHeader().hide() - - - def initialValeur(self): - liste=self.node.item.getValeur() - if liste == None : return - dejaAffiche=0 - if (len(liste)) != self.nbLigs : - QMessageBox.critical( self,tr( "Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs)) - for i in range(self.nbLigs): - inter=liste[i] - if (len(inter)) != self.nbCols : - QMessageBox.critical( self, tr("Mauvaise dimension de matrice"), tr("le nombre de colonne n est pas egal a ") + str(self.nbCols)) - raise EficasException('dimension') - for j in range(self.nbCols): - self.TBMatrice.setItem(i,j,QTableWidgetItem(str(liste[i][j]))) - - def acceptVal(self): - liste=[] - for i in range(self.nbLigs): - listeCol=[] - for j in range(self.nbCols): - monItem=self.TBMatrice.item(i,j) - if monItem : texte=monItem.text() - else : texte = '' - if self.monType.typElt == 'R' : - try : val=float(str(texte)) - except : val=None - val=texte - listeCol.append(val) - liste.append(listeCol) - self.node.item.setValeur(liste) + def connecterSignaux(self) : + self.TBMatrice.itemChanged.connect(self.itemChanged) + self.PBrefresh.clicked.connect( self.acceptVal) + self.TBMatrice.focusOutEvent=self.monFocusOutEvent + + + def monFocusOutEvent(self,event): + self.acceptVal() + QTableWidget.focusInEvent(self.TBMatrice,event) + + + def itemChanged(self): + monItem=self.TBMatrice.currentItem() + if monItem==None : return + texte=monItem.text() + if texte=="" : return + if self.monType.typElt == 'R' : + try : val=float(str(texte)); ok=True + except : ok=False + if ok == False : + self.editor.afficheInfos(tr("Entrer un float SVP"),Qt.red) + monItem.setText("") + return + if self.monType.valSup != None : + if val > self.monType.valSup : + self.editor.afficheInfos(tr("Entrer un float inferieur a ") + repr(self.monType.valSup),Qt.red) + monItem.setText("") + return + if self.monType.valMin != None : + if val < self.monType.valMin : + self.editor.afficheInfos(tr("Entrer un float superieur a ") + repr(self.monType.valMin),Qt.red) + monItem.setText("") + return + self.editor.afficheInfos("") + if self.monType.structure != None: MonWidgetMatrice.__dict__[self.monType.structure](*(self,)) + if self.monType.typElt == 'TXM' : + if self.monType.typEltInto != None and texte not in self.monType.typEltInto : + self.editor.afficheInfos(tr("Entrer une valeur qui est ") + str(self.monType.typEltInto),Qt.red) + monItem.setText("") + return + + + def creeColonnes(self): + if self.monType.methodeCalculTaille != None : + try: + MonWidgetMatrice.__dict__[self.monType.methodeCalculTaille](*(self,)) + except : + QMessageBox.critical( self, tr("Mauvaise execution "),tr( "impossible d executer la methode ") + monType.methodeCalculTaille ) + return + else : + self.nbLigs=self.monType.nbLigs + self.nbCols=self.monType.nbCols + self.TBMatrice.setColumnCount(self.nbLigs) + self.TBMatrice.setRowCount(self.nbCols) + if self.monType.listeHeaders != None : + self.TBMatrice.setVerticalHeaderLabels(self.monType.listeHeaders[0]) + self.TBMatrice.setHorizontalHeaderLabels(self.monType.listeHeaders[1]) + else : + self.TBMatrice.verticalHeader().hide() + self.TBMatrice.horizontalHeader().hide() + + + def initialValeur(self): + liste=self.node.item.getValeur() + if liste == None : return + dejaAffiche=0 + if (len(liste)) != self.nbLigs : + QMessageBox.critical( self,tr( "Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs)) + for i in range(self.nbLigs): + inter=liste[i] + if (len(inter)) != self.nbCols : + QMessageBox.critical( self, tr("Mauvaise dimension de matrice"), tr("le nombre de colonne n est pas egal a ") + str(self.nbCols)) + raise EficasException('dimension') + for j in range(self.nbCols): + self.TBMatrice.setItem(i,j,QTableWidgetItem(str(liste[i][j]))) + + def acceptVal(self): + liste=[] + for i in range(self.nbLigs): + listeCol=[] + for j in range(self.nbCols): + monItem=self.TBMatrice.item(i,j) + if monItem : texte=monItem.text() + else : texte = '' + if self.monType.typElt == 'R' : + try : val=float(str(texte)) + except : val=None + val=texte + listeCol.append(val) + liste.append(listeCol) + self.node.item.setValeur(liste) class MonWidgetMatriceOT (MonWidgetMatrice): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): monWidgetMatrice.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - def connecterSignaux(self) : - self.TBMatrice.itemChanged.connect(self.itemChanged) - self.PBrefresh.clicked.connect( self.afficheEntete) - - - def afficheEntete(self): - self.objSimp.changeEnteteMatrice() - self.TBMatrice.clear() - if self.node.item.getValeur()== None: self.initialSsValeur() - else : - try : self.initialValeur() - except : self.initialSsValeur() - self.node.item.object.state='changed' - self.node.item.object.parent.state='changed' - self.setValide() - self.parentQt.setValide() - self.node.item.jdc.isValid() - - - def itemChanged(self): - monItem=self.TBMatrice.currentItem() - if monItem==None : return - texte=monItem.text() - if texte=="" : return - try : - val=float(str(texte)) - ok=True - except : - ok=False - if ok == False : - self.editor.afficheInfos(tr("Entrer un float SVP"),Qt.red) - monItem.setText("") - return - if self.monType.valSup != None : - if val > self.monType.valSup : - self.editor.afficheInfos(tr("Entrer un float inferieur a ") + repr(self.monType.valSup),Qt.red) + def connecterSignaux(self) : + self.TBMatrice.itemChanged.connect(self.itemChanged) + self.PBrefresh.clicked.connect( self.afficheEntete) + + + def afficheEntete(self): + self.objSimp.changeEnteteMatrice() + self.TBMatrice.clear() + if self.node.item.getValeur()== None: self.initialSsValeur() + else : + try : self.initialValeur() + except : self.initialSsValeur() + self.node.item.object.state='changed' + self.node.item.object.parent.state='changed' + self.setValide() + self.parentQt.setValide() + self.node.item.jdc.isValid() + + + def itemChanged(self): + monItem=self.TBMatrice.currentItem() + if monItem==None : return + texte=monItem.text() + if texte=="" : return + try : + val=float(str(texte)) + ok=True + except : + ok=False + if ok == False : + self.editor.afficheInfos(tr("Entrer un float SVP"),Qt.red) monItem.setText("") return - if self.monType.valMin != None : - if val < self.monType.valMin : - self.editor.afficheInfos(tr("Entrer un float superieur a ") + repr(self.monType.valMin),Qt.red) - monItem.setText("") + if self.monType.valSup != None : + if val > self.monType.valSup : + self.editor.afficheInfos(tr("Entrer un float inferieur a ") + repr(self.monType.valSup),Qt.red) + monItem.setText("") + return + if self.monType.valMin != None : + if val < self.monType.valMin : + self.editor.afficheInfos(tr("Entrer un float superieur a ") + repr(self.monType.valMin),Qt.red) + monItem.setText("") + return + self.editor.afficheInfos("") + if self.monType.structure != None: MonWidgetMatrice.__dict__[self.monType.structure](*(self,)) + self.acceptVal() + + + + def creeColonnes(self): + if self.monType.methodeCalculTaille != None : + try: + MonWidgetMatrice.__dict__[self.monType.methodeCalculTaille](*(self,)) + except : + QMessageBox.critical( self, tr("Mauvaise execution "),tr( "impossible d executer la methode ") + monType.methodeCalculTaille ) + return + else : + self.nbLigs=self.monType.nbLigs + self.nbCols=self.monType.nbCols + + + def nbDeVariables(self): + # uniquement pour OT + jdc=self.node.item.object.jdc + etape=self.node.item.object.etape + self.listeVariables=jdc.getVariables(etape) + if self.listeVariables == [] : + QMessageBox.critical( self, tr("Mauvaise Commande "),tr( "Aucune variable connue")) return - self.editor.afficheInfos("") - if self.monType.structure != None: MonWidgetMatrice.__dict__[self.monType.structure](*(self,)) - self.acceptVal() - - - - def creeColonnes(self): - if self.monType.methodeCalculTaille != None : - try: - MonWidgetMatrice.__dict__[self.monType.methodeCalculTaille](*(self,)) - except : - QMessageBox.critical( self, tr("Mauvaise execution "),tr( "impossible d executer la methode ") + monType.methodeCalculTaille ) - return - else : - self.nbLigs=self.monType.nbLigs - self.nbCols=self.monType.nbCols - - - def nbDeVariables(self): - # uniquement pour OT - jdc=self.node.item.object.jdc - etape=self.node.item.object.etape - self.listeVariables=jdc.getVariables(etape) - if self.listeVariables == [] : - QMessageBox.critical( self, tr("Mauvaise Commande "),tr( "Aucune variable connue")) - return - self.TBMatrice.setColumnCount(len(self.listeVariables)) - self.TBMatrice.setRowCount(len(self.listeVariables)) - self.nbLigs=len(self.listeVariables) - self.nbCols=len(self.listeVariables) - - - def initialSsValeur(self): - # uniquement pour OT - self.listeVariables=[] - for row in range(self.nbLigs): - for column in range(self.nbCols): - if row == column : - initialFloat=1 - else : - initialFloat=0 - self.TBMatrice.setItem(row,column,QTableWidgetItem(str(initialFloat))) - header =[] - for var in liste[0]: header .append(str(var)) - self.TBMatrice.setVerticalHeaderLabels(header) - self.TBMatrice.setHorizontalHeaderLabels(header) - - def initialValeur(self): - # uniquement pour OT - liste=self.node.item.getValeur() - dejaAffiche=0 - if (len(liste)) != self.nbLigs +1 : - QMessageBox.critical( self,tr( "Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs)) - raise EficasException('dimension') - for i in range(self.nbLigs): - inter=liste[i+1] - if (len(inter)) != self.nbCols : - QMessageBox.critical( self, tr("Mauvaise dimension de matrice"), tr("le nombre de colonne n est pas egal a ") + str(self.nbCols)) - raise EficasException('dimension') - for j in range(self.nbCols): - self.TBMatrice.setItem(i,j,QTableWidgetItem(str(liste[i][j]))) - header =[] - for var in liste[0]: header .append(str(var)) - self.TBMatrice.setVerticalHeaderLabels(header) - self.TBMatrice.setHorizontalHeaderLabels(header) - + self.TBMatrice.setColumnCount(len(self.listeVariables)) + self.TBMatrice.setRowCount(len(self.listeVariables)) + self.nbLigs=len(self.listeVariables) + self.nbCols=len(self.listeVariables) + + + def initialSsValeur(self): + # uniquement pour OT + self.listeVariables=[] + for row in range(self.nbLigs): + for column in range(self.nbCols): + if row == column : + initialFloat=1 + else : + initialFloat=0 + self.TBMatrice.setItem(row,column,QTableWidgetItem(str(initialFloat))) + header =[] + for var in liste[0]: header .append(str(var)) + self.TBMatrice.setVerticalHeaderLabels(header) + self.TBMatrice.setHorizontalHeaderLabels(header) + + def initialValeur(self): + # uniquement pour OT + liste=self.node.item.getValeur() + dejaAffiche=0 + if (len(liste)) != self.nbLigs +1 : + QMessageBox.critical( self,tr( "Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs)) + raise EficasException('dimension') + for i in range(self.nbLigs): + inter=liste[i+1] + if (len(inter)) != self.nbCols : + QMessageBox.critical( self, tr("Mauvaise dimension de matrice"), tr("le nombre de colonne n est pas egal a ") + str(self.nbCols)) + raise EficasException('dimension') + for j in range(self.nbCols): + self.TBMatrice.setItem(i,j,QTableWidgetItem(str(liste[i][j]))) + header =[] + for var in liste[0]: header .append(str(var)) + self.TBMatrice.setVerticalHeaderLabels(header) + self.TBMatrice.setHorizontalHeaderLabels(header) diff --git a/InterfaceQT4/monWidgetNiveauFact.py b/InterfaceQT4/monWidgetNiveauFact.py index b3a7f27f..27cc76b3 100644 --- a/InterfaceQT4/monWidgetNiveauFact.py +++ b/InterfaceQT4/monWidgetNiveauFact.py @@ -21,7 +21,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types @@ -35,147 +35,145 @@ from PyQt5.QtGui import QIcon from Extensions.i18n import tr -import Accas +import Accas import os - + # Import des panels class MonWidgetNiveauFact(Ui_WidgetNiveauFact,Groupe): - """ - """ - def __init__(self,node,editor,definition,obj): - self.listeAffichageWidget=[] - self.listeBoutonAChanger=[] - Groupe.__init__(self,node,editor,None,definition,obj,1,self) - from InterfaceQT4 import composimp - if isinstance(self.node ,composimp.Node): - widget=self.node.getPanelGroupe(self,self.maCommande) - self.listeBoutonAChanger.append(widget.RBValide) - self.afficheOptionnel() - self.inhibe=False - self.labelDoc.setText(self.node.item.getFr()) - self.labelNomCommande.setText(self.node.item.getLabelText()[0]) - - def reaffiche(self,nodeAVoir=None): - self.node.setDeplieChildren() - self.node.afficheCeNiveau() - self.editor.fenetreCentraleAffichee.labelDoc.setText(self.node.item.getFr()) - self.editor.fenetreCentraleAffichee.labelNomCommande.setText(self.node.item.getLabelText()[0]) - - def getPanel(self): - # necessaire pour handleOnItem de browser.py - # non appele - pass - - def donnePremier(self): - #print "dans donnePremier" - QApplication.processEvents() - if self.listeAffichageWidget != [] : - self.listeAffichageWidget[0].setFocus(7) - QApplication.processEvents() - #print self.focusWidget() - - - def focusNextPrevChild(self, next): - # on s assure que ce n est pas un chgt de fenetre - #print "je passe dans focusNextPrevChild" - if self.editor.fenetreCentraleAffichee != self : return True - f=self.focusWidget() - - if f not in self.listeAffichageWidget : - i=0 - while not hasattr (f,'AAfficher') : - if f==None :i=-1; break - f=f.parentWidget() - if hasattr(f,'AAfficher') : f=f.AAfficher - if i != -1 : i=self.listeAffichageWidget.index(f) - else :i=self.listeAffichageWidget.index(f) - if (i==len(self.listeAffichageWidget) -1) and next and not self.inhibe: - try : - self.listeAffichageWidget[1].setFocus(7) - w=self.focusWidget() - self.inhibe=1 - w.focusPreviousChild() - self.inhibe=0 - return True - except : pass - - if i==0 and next==False and not self.inhibe: - if hasattr(self.editor.fenetreCentraleAffichee,'scrollArea'): - self.editor.fenetreCentraleAffichee.scrollArea.ensureWidgetVisible(self.listeAffichageWidget[-1]) - self.listeAffichageWidget[-2].setFocus(7) - self.inhibe=1 - w=self.focusWidget() - w.focusNextChild() - self.inhibe=0 - return True - - if i==0 and next==True and not self.inhibe: - self.listeAffichageWidget[0].setFocus(7) - self.inhibe=1 - w=self.focusWidget() - w.focusNextChild() - self.inhibe=0 - return True - - if i>0 and next==False and not self.inhibe: - if isinstance(self.listeAffichageWidget[i-1],QRadioButton): - self.listeAffichageWidget[i-1].setFocus(7) - return True - return QWidget.focusNextPrevChild(self, next) - - def etablitOrdre(self): - # si on boucle on perd l'ordre - i=0 - while(i +1 < len(self.listeAffichageWidget)): - self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1]) - i=i+1 - - def afficheSuivant(self,f): - #print ('ds afficheSuivant') - try : - i=self.listeAffichageWidget.index(f) - next=i+1 - except : - next=1 - if (next==len(self.listeAffichageWidget) ): next =0 - try : - self.listeAffichageWidget[next].setFocus(7) - except : + """ + """ + def __init__(self,node,editor,definition,obj): + self.listeAffichageWidget=[] + self.listeBoutonAChanger=[] + Groupe.__init__(self,node,editor,None,definition,obj,1,self) + from InterfaceQT4 import composimp + if isinstance(self.node ,composimp.Node): + widget=self.node.getPanelGroupe(self,self.maCommande) + self.listeBoutonAChanger.append(widget.RBValide) + self.afficheOptionnel() + self.inhibe=False + self.labelDoc.setText(self.node.item.getFr()) + self.labelNomCommande.setText(self.node.item.getLabelText()[0]) + + def reaffiche(self,nodeAVoir=None): + self.node.setDeplieChildren() + self.node.afficheCeNiveau() + self.editor.fenetreCentraleAffichee.labelDoc.setText(self.node.item.getFr()) + self.editor.fenetreCentraleAffichee.labelNomCommande.setText(self.node.item.getLabelText()[0]) + + def getPanel(self): + # necessaire pour handleOnItem de browser.py + # non appele pass - - def afficheOptionnel(self): - # N a pas de parentQt. doit donc etre redefini - #print ('ds afficheOptionnel') - if self.editor.maConfiguration.closeOptionnel : return - if self.editor.widgetOptionnel!= None : - self.monOptionnel=self.editor.widgetOptionnel - else : - self.editor.inhibeSplitter=1 - self.monOptionnel=MonWidgetOptionnel(self.editor) - self.editor.widgetOptionnel=self.monOptionnel - self.editor.splitter.addWidget(self.monOptionnel) - self.editor.ajoutOptionnel() - self.editor.inhibeSplitter=0 - self.monOptionnel.vireTous() - - - liste,liste_rouge=self.ajouteMCOptionnelDesBlocs() - self.monOptionnel.parentCommande=self - self.monOptionnel.titre(self.obj.nom) - self.monGroupe=self.monOptionnel.afficheOptionnel(liste,liste_rouge,self) - - def setValide(self): - Groupe.setValide(self) - for bouton in self.listeBoutonAChanger: - couleur=self.node.item.getIconName() - monIcone = QIcon(self.repIcon+"/" + couleur + ".png") - bouton.setIcon(monIcone) + def donnePremier(self): + #print "dans donnePremier" + QApplication.processEvents() + if self.listeAffichageWidget != [] : + self.listeAffichageWidget[0].setFocus(7) + QApplication.processEvents() + #print self.focusWidget() + + + def focusNextPrevChild(self, next): + # on s assure que ce n est pas un chgt de fenetre + #print "je passe dans focusNextPrevChild" + if self.editor.fenetreCentraleAffichee != self : return True + f=self.focusWidget() + + if f not in self.listeAffichageWidget : + i=0 + while not hasattr (f,'AAfficher') : + if f==None :i=-1; break + f=f.parentWidget() + if hasattr(f,'AAfficher') : f=f.AAfficher + if i != -1 : i=self.listeAffichageWidget.index(f) + else :i=self.listeAffichageWidget.index(f) + if (i==len(self.listeAffichageWidget) -1) and next and not self.inhibe: + try : + self.listeAffichageWidget[1].setFocus(7) + w=self.focusWidget() + self.inhibe=1 + w.focusPreviousChild() + self.inhibe=0 + return True + except : pass + + if i==0 and next==False and not self.inhibe: + if hasattr(self.editor.fenetreCentraleAffichee,'scrollArea'): + self.editor.fenetreCentraleAffichee.scrollArea.ensureWidgetVisible(self.listeAffichageWidget[-1]) + self.listeAffichageWidget[-2].setFocus(7) + self.inhibe=1 + w=self.focusWidget() + w.focusNextChild() + self.inhibe=0 + return True + + if i==0 and next==True and not self.inhibe: + self.listeAffichageWidget[0].setFocus(7) + self.inhibe=1 + w=self.focusWidget() + w.focusNextChild() + self.inhibe=0 + return True + + if i>0 and next==False and not self.inhibe: + if isinstance(self.listeAffichageWidget[i-1],QRadioButton): + self.listeAffichageWidget[i-1].setFocus(7) + return True + return QWidget.focusNextPrevChild(self, next) + + def etablitOrdre(self): + # si on boucle on perd l'ordre + i=0 + while(i +1 < len(self.listeAffichageWidget)): + self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1]) + i=i+1 + + def afficheSuivant(self,f): + #print ('ds afficheSuivant') + try : + i=self.listeAffichageWidget.index(f) + next=i+1 + except : + next=1 + if (next==len(self.listeAffichageWidget) ): next =0 + try : + self.listeAffichageWidget[next].setFocus(7) + except : + pass + + + def afficheOptionnel(self): + # N a pas de parentQt. doit donc etre redefini + #print ('ds afficheOptionnel') + if self.editor.maConfiguration.closeOptionnel : return + if self.editor.widgetOptionnel!= None : + self.monOptionnel=self.editor.widgetOptionnel + else : + self.editor.inhibeSplitter=1 + self.monOptionnel=MonWidgetOptionnel(self.editor) + self.editor.widgetOptionnel=self.monOptionnel + self.editor.splitter.addWidget(self.monOptionnel) + self.editor.ajoutOptionnel() + self.editor.inhibeSplitter=0 + self.monOptionnel.vireTous() + + + liste,liste_rouge=self.ajouteMCOptionnelDesBlocs() + self.monOptionnel.parentCommande=self + self.monOptionnel.titre(self.obj.nom) + self.monGroupe=self.monOptionnel.afficheOptionnel(liste,liste_rouge,self) + + def setValide(self): + Groupe.setValide(self) + for bouton in self.listeBoutonAChanger: + couleur=self.node.item.getIconName() + monIcone = QIcon(self.repIcon+"/" + couleur + ".png") + bouton.setIcon(monIcone) class MonWidgetNiveauFactTableau(MonWidgetNiveauFact): - def __init__(self,node,editor,definition,obj): - MonWidgetNiveauFact.__init__(self,node,editor,definition,obj) - - + def __init__(self,node,editor,definition,obj): + MonWidgetNiveauFact.__init__(self,node,editor,definition,obj) diff --git a/InterfaceQT4/monWidgetOptionnel.py b/InterfaceQT4/monWidgetOptionnel.py index c698206a..c3088b72 100644 --- a/InterfaceQT4/monWidgetOptionnel.py +++ b/InterfaceQT4/monWidgetOptionnel.py @@ -27,67 +27,67 @@ from Extensions.i18n import tr from desWidgetOptionnel import Ui_WidgetOptionnel from .monGroupeOptionnel import MonGroupeOptionnel - + # Import des panels class MonWidgetOptionnel (QWidget,Ui_WidgetOptionnel): - def __init__(self,parentQt): - #print ("dans init de monWidgetOptionnel ", parentQt ) - QWidget.__init__(self,None) - self.setupUi(self) - self.dicoMCWidgetOptionnel={} - self.parentQt=parentQt + def __init__(self,parentQt): + #print ("dans init de monWidgetOptionnel ", parentQt ) + QWidget.__init__(self,None) + self.setupUi(self) + self.dicoMCWidgetOptionnel={} + self.parentQt=parentQt + + def afficheOptionnel(self,liste,liste_rouge,MC): + #print ('afficheOptionnel MonWidgetOptionnel',self, liste,MC.node.item.nom) + self.vireLesAutres(MC) + + if MC.node.item.nom in self.dicoMCWidgetOptionnel : + #print (MC.node.item.nom) + self.dicoMCWidgetOptionnel[MC.node.item.nom].close() + self.dicoMCWidgetOptionnel[MC.node.item.nom].setParent(None) + self.dicoMCWidgetOptionnel[MC.node.item.nom].deleteLater() + del self.dicoMCWidgetOptionnel[MC.node.item.nom] + if liste==[] : return + groupe = MonGroupeOptionnel(liste,liste_rouge,self,MC) + self.groupesOptionnelsLayout.insertWidget(0,groupe) + self.dicoMCWidgetOptionnel[MC.node.item.nom]=groupe + return groupe - def afficheOptionnel(self,liste,liste_rouge,MC): - #print ('afficheOptionnel MonWidgetOptionnel',self, liste,MC.node.item.nom) - self.vireLesAutres(MC) - - if MC.node.item.nom in self.dicoMCWidgetOptionnel : - #print (MC.node.item.nom) - self.dicoMCWidgetOptionnel[MC.node.item.nom].close() - self.dicoMCWidgetOptionnel[MC.node.item.nom].setParent(None) - self.dicoMCWidgetOptionnel[MC.node.item.nom].deleteLater() - del self.dicoMCWidgetOptionnel[MC.node.item.nom] - if liste==[] : return - groupe = MonGroupeOptionnel(liste,liste_rouge,self,MC) - self.groupesOptionnelsLayout.insertWidget(0,groupe) - self.dicoMCWidgetOptionnel[MC.node.item.nom]=groupe - return groupe + def vireLesAutres(self,MC): + #print( "je passe dans vireLesAutres") + genea =MC.obj.getGenealogie() + #print (genea) + for k in list(self.dicoMCWidgetOptionnel.keys()): + #print (k) + #if k not in genea : print ( k) + if k not in genea : + self.dicoMCWidgetOptionnel[k].close() + del self.dicoMCWidgetOptionnel[k] + #print( "fin vireLesAutres") - def vireLesAutres(self,MC): - #print( "je passe dans vireLesAutres") - genea =MC.obj.getGenealogie() - #print (genea) - for k in list(self.dicoMCWidgetOptionnel.keys()): - #print (k) - #if k not in genea : print ( k) - if k not in genea : - self.dicoMCWidgetOptionnel[k].close() - del self.dicoMCWidgetOptionnel[k] - #print( "fin vireLesAutres") - - def vireTous(self): - for k in list(self.dicoMCWidgetOptionnel.keys()): - self.dicoMCWidgetOptionnel[k].close() - del self.dicoMCWidgetOptionnel[k] + def vireTous(self): + for k in list(self.dicoMCWidgetOptionnel.keys()): + self.dicoMCWidgetOptionnel[k].close() + del self.dicoMCWidgetOptionnel[k] - def afficheOptionnelVide(self): - self.GeneaLabel.setText("") - for k in list(self.dicoMCWidgetOptionnel.keys()): + def afficheOptionnelVide(self): + self.GeneaLabel.setText("") + for k in list(self.dicoMCWidgetOptionnel.keys()): self.dicoMCWidgetOptionnel[k].close() del self.dicoMCWidgetOptionnel[k] - def titre(self,MC): - if self.parentCommande.node.editor.maConfiguration.closeFrameRechercheCommande==True : - self.frameLabelCommande.close() - return - labeltext,fonte,couleur = self.parentCommande.node.item.getLabelText() - l=tr(labeltext) - li=[] - while len(l) > 25: - li.append(l[0:24]) - l=l[24:] - li.append(l) - texte="" - for l in li : texte+=l+"\n" - texte=texte[0:-2] - self.GeneaLabel.setText(tr("Options pour \n") +texte) + def titre(self,MC): + if self.parentCommande.node.editor.maConfiguration.closeFrameRechercheCommande==True : + self.frameLabelCommande.close() + return + labeltext,fonte,couleur = self.parentCommande.node.item.getLabelText() + l=tr(labeltext) + li=[] + while len(l) > 25: + li.append(l[0:24]) + l=l[24:] + li.append(l) + texte="" + for l in li : texte+=l+"\n" + texte=texte[0:-2] + self.GeneaLabel.setText(tr("Options pour \n") +texte) diff --git a/InterfaceQT4/monWidgetParam.py b/InterfaceQT4/monWidgetParam.py index cb799fe5..d3bcac80 100644 --- a/InterfaceQT4/monWidgetParam.py +++ b/InterfaceQT4/monWidgetParam.py @@ -21,7 +21,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from desWidgetParam import Ui_WidgetParam @@ -31,88 +31,88 @@ from PyQt5.QtGui import QIcon from Extensions.i18n import tr from Extensions.eficas_exception import EficasException -import Accas +import Accas import os, re import types pattern_name = re.compile(r'^[^\d\W]\w*\Z') - + # Import des panels class MonWidgetParam(QWidget,Ui_WidgetParam,FacultatifOuOptionnel): - """ - """ - def __init__(self,node,editor,commentaire): - QWidget.__init__(self,None) - self.node=node - self.node.fenetre=self - self.setupUi(self) - self.editor=editor - self.appliEficas=self.editor.appliEficas - self.repIcon=self.appliEficas.repIcon - - self.setIconePoubelle() - if not(self.node.item.object.isValid()) : - icon=QIcon(self.repIcon+"/ast-red-ball.png") - self.RBValide.setIcon(icon) - - self.remplit() - #if self.editor.code in ['MAP','CARMELCND','CF'] : self.bCatalogue.close() - if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close() - else : self.bCatalogue.clicked.connect(self.afficheCatalogue) - - self.lineEditVal.returnPressed.connect(self.LEvaleurPressed) - self.lineEditNom.returnPressed.connect(self.LENomPressed) - self.bAvant.clicked.connect(self.afficheAvant) - self.bApres.clicked.connect(self.afficheApres) - self.bVerifie.clicked.connect(self.verifiePressed) - - self.editor.fermeOptionnel() - - - def afficheCatalogue(self): - self.node.tree.racine.affichePanneau() - if self.node : self.node.select() - else : self.node.tree.racine.select() - - def remplit(self): - nom=self.node.item.getNom() - self.lineEditNom.setText(nom) - - valeur=self.node.item.getValeur() - if valeur == None : - self.lineEditVal.clear() - elif type(valeur) == list : - texte="[" - for l in valeur : - texte=texte+str(l) +"," - texte=texte[0:-1]+"]" - self.lineEditVal.setText(texte) - else : - self.lineEditVal.setText(str(valeur)) - - - def donnePremier(self): - self.lineEditVal.setFocus(7) - - def LEvaleurPressed(self): - if self.verifiePressed() == False : - QMessageBox.warning( self,tr( "Modification Impossible"),tr( "le parametre n'est pas valide")) - nom=str(self.lineEditNom.text()) - val=str(self.lineEditVal.text()) - self.node.item.setNom(nom) - self.node.item.setValeur(val) - self.node.updateTexte() - - def LENomPressed(self): - self.LEvaleurPressed() - - def verifiePressed(self): + """ + """ + def __init__(self,node,editor,commentaire): + QWidget.__init__(self,None) + self.node=node + self.node.fenetre=self + self.setupUi(self) + self.editor=editor + self.appliEficas=self.editor.appliEficas + self.repIcon=self.appliEficas.repIcon + + self.setIconePoubelle() + if not(self.node.item.object.isValid()) : + icon=QIcon(self.repIcon+"/ast-red-ball.png") + self.RBValide.setIcon(icon) + + self.remplit() + #if self.editor.code in ['MAP','CARMELCND','CF'] : self.bCatalogue.close() + if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close() + else : self.bCatalogue.clicked.connect(self.afficheCatalogue) + + self.lineEditVal.returnPressed.connect(self.LEvaleurPressed) + self.lineEditNom.returnPressed.connect(self.LENomPressed) + self.bAvant.clicked.connect(self.afficheAvant) + self.bApres.clicked.connect(self.afficheApres) + self.bVerifie.clicked.connect(self.verifiePressed) + + self.editor.fermeOptionnel() + + + def afficheCatalogue(self): + self.node.tree.racine.affichePanneau() + if self.node : self.node.select() + else : self.node.tree.racine.select() + + def remplit(self): + nom=self.node.item.getNom() + self.lineEditNom.setText(nom) + + valeur=self.node.item.getValeur() + if valeur == None : + self.lineEditVal.clear() + elif type(valeur) == list : + texte="[" + for l in valeur : + texte=texte+str(l) +"," + texte=texte[0:-1]+"]" + self.lineEditVal.setText(texte) + else : + self.lineEditVal.setText(str(valeur)) + + + def donnePremier(self): + self.lineEditVal.setFocus(7) + + def LEvaleurPressed(self): + if self.verifiePressed() == False : + QMessageBox.warning( self,tr( "Modification Impossible"),tr( "le parametre n'est pas valide")) + nom=str(self.lineEditNom.text()) + val=str(self.lineEditVal.text()) + self.node.item.setNom(nom) + self.node.item.setValeur(val) + self.node.updateTexte() + + def LENomPressed(self): + self.LEvaleurPressed() + + def verifiePressed(self): nomString=str(self.lineEditNom.text()) - if not pattern_name.match(nomString) : - self.LECommentaire.setText(nomString + tr(" n est pas un identifiant correct")) - return False + if not pattern_name.match(nomString) : + self.LECommentaire.setText(nomString + tr(" n est pas un identifiant correct")) + return False valString=str(self.lineEditVal.text()) @@ -120,29 +120,27 @@ class MonWidgetParam(QWidget,Ui_WidgetParam,FacultatifOuOptionnel): exec("from math import *", contexte) jdc=self.node.item.getJdc() for p in jdc.params : - try: - tp=p.nom+'='+str(repr(p.valeur)) - exec(tp, contexte) - except exc : - pass + try: + tp=p.nom+'='+str(repr(p.valeur)) + exec(tp, contexte) + except exc : + pass monTexte=nomString+"="+valString try : - exec(monTexte, contexte) + exec(monTexte, contexte) except (ValueError,TypeError, NameError,RuntimeError,ZeroDivisionError) as exc: - self.LECommentaire.setText(tr("Valeur incorrecte: ")+str(exc)) - return False + self.LECommentaire.setText(tr("Valeur incorrecte: ")+str(exc)) + return False except : - self.LECommentaire.setText(tr("Valeur incorrecte ")) - return False + self.LECommentaire.setText(tr("Valeur incorrecte ")) + return False self.LECommentaire.setText(tr("Valeur correcte ")) return True - def afficheApres(self): - self.node.selectApres() - - def afficheAvant(self): - self.node.selectAvant() - + def afficheApres(self): + self.node.selectApres() + def afficheAvant(self): + self.node.selectAvant() diff --git a/InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py b/InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py index f3157329..8992990c 100644 --- a/InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py +++ b/InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py @@ -20,14 +20,14 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os,sys # Modules Eficas from Extensions.i18n import tr -from .monWidgetPlusieursIntoOrdonne import MonWidgetPlusieursIntoOrdonne +from .monWidgetPlusieursIntoOrdonne import MonWidgetPlusieursIntoOrdonne from .politiquesValidation import PolitiquePlusieurs from six.moves import range @@ -37,31 +37,29 @@ from PyQt5.QtWidgets import QScrollBar class MonWidgetPlusieursASSDIntoOrdonne (MonWidgetPlusieursIntoOrdonne): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.numLineEditEnCours=0 MonWidgetPlusieursIntoOrdonne.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - - - def prepareListeResultat(self): - for i in self.listeLE: i.close() - self.listeLE=[] - self.vScrollBar = self.scrollArea.verticalScrollBar() - self.listeAAfficher = self.node.item.getSdAvantDuBonType() - if len(self.listeAAfficher) == 0 : - self.ajoutLE(0) - return - - - if len(self.listeAAfficher)*30 > 400 : self.resize(self.width(),200) - else : self.resize(self.width(),len(self.listeAAfficher)*30) - self.politique=PolitiquePlusieurs(self.node,self.editor) - for i in range(1,len(self.listeAAfficher)+1): self.ajoutLE(i) - for i in range(len(self.listeAAfficher)): - nomLE="lineEditVal"+str(i+1) - courant=getattr(self,nomLE) - courant.setText(str(self.listeAAfficher[i])) - self.vScrollBar.triggerAction(QScrollBar.SliderToMinimum) - - + + def prepareListeResultat(self): + for i in self.listeLE: i.close() + self.listeLE=[] + self.vScrollBar = self.scrollArea.verticalScrollBar() + self.listeAAfficher = self.node.item.getSdAvantDuBonType() + + if len(self.listeAAfficher) == 0 : + self.ajoutLE(0) + return + + + if len(self.listeAAfficher)*30 > 400 : self.resize(self.width(),200) + else : self.resize(self.width(),len(self.listeAAfficher)*30) + self.politique=PolitiquePlusieurs(self.node,self.editor) + for i in range(1,len(self.listeAAfficher)+1): self.ajoutLE(i) + for i in range(len(self.listeAAfficher)): + nomLE="lineEditVal"+str(i+1) + courant=getattr(self,nomLE) + courant.setText(str(self.listeAAfficher[i])) + self.vScrollBar.triggerAction(QScrollBar.SliderToMinimum) diff --git a/InterfaceQT4/monWidgetPlusieursBase.py b/InterfaceQT4/monWidgetPlusieursBase.py index be44a11a..eb3081bd 100644 --- a/InterfaceQT4/monWidgetPlusieursBase.py +++ b/InterfaceQT4/monWidgetPlusieursBase.py @@ -20,14 +20,14 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str - from builtins import object + from builtins import str + from builtins import object except : pass import types,os,sys from six.moves import range -from PyQt5.QtGui import QIcon +from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QApplication, QMessageBox, QScrollArea from PyQt5.QtCore import QTimer, QSize, Qt @@ -35,7 +35,7 @@ from PyQt5.QtCore import QTimer, QSize, Qt from Extensions.i18n import tr from InterfaceQT4.feuille import Feuille -from desWidgetPlusieursBase import Ui_WidgetPlusieursBase +from desWidgetPlusieursBase import Ui_WidgetPlusieursBase from InterfaceQT4.politiquesValidation import PolitiquePlusieurs from InterfaceQT4.qtSaisie import SaisieValeur from InterfaceQT4.gereListe import GereListe @@ -47,268 +47,268 @@ hauteurMax=253 class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - #print "MonWidgetPlusieursBase", nom - self.inFocusOutEvent=False - self.nomLine="lineEditVal" - self.inInit=True - self.indexDernierLabel=0 - self.numLineEditEnCours=0 - self.listeAffichageWidget=[] - self.dictLE={} - Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - GereListe.__init__(self) - self.gereIconePlier() - self.BSelectFichier.clicked.connect(self.selectInFile) - - repIcon=self.node.editor.appliEficas.repIcon - fichier=os.path.join(repIcon, 'arrow_up.png') - icon = QIcon(fichier) - self.RBHaut.setIcon(icon) - self.RBHaut.setIconSize(QSize(32, 32)) - fichier2=os.path.join(repIcon, 'arrow_down.png') - icon2 = QIcon(fichier2) - self.RBBas.setIcon(icon2) - fichier3=os.path.join(repIcon, 'file-explorer.png') - icon3 = QIcon(fichier2) - self.BSelectFichier.setIcon(icon3) - self.BSelectFichier.setIconSize(QSize(32, 32)) - icon=QIcon(self.repIcon+"/MoinsBleu.png") - self.RBMoins.setIcon(icon) - icon=QIcon(self.repIcon+"/PlusBleu.png") - self.RBPlus.setIcon(icon) - icon=QIcon(self.repIcon+"/verre-loupe-icone-6087-64.png") - self.RBVoisListe.setIcon(icon) - - - self.listeValeursCourantes=self.node.item.getListeValeurs() - if self.monSimpDef.max != "**" and self.monSimpDef.max < 7: - hauteurMax=dicoLongueur[self.monSimpDef.max] - else : - hauteurMax=220 - # if self.monSimpDef.max == self.monSimpDef.min : self.setMaximumHeight(hauteur) - self.resize(self.width(),hauteurMax) - self.setMinimumHeight(hauteurMax) - self.finCommentaireListe() - self.parentQt.commandesLayout.insertWidget(-1,self) - self.maCommande.listeAffichageWidget.append(self.lineEditVal1) - self.AAfficher=self.lineEditVal1 - self.inInit=False - # PNPN a completer __ si tuple le type des tuples sinon le tuple - self.monCommentaireLabel.setText(self.finCommentaireListe()) - self.scrollArea.leaveEvent = self.leaveEventScrollArea - - - def setValeurs(self): - self.vScrollBar = self.scrollArea.verticalScrollBar() - self.politique=PolitiquePlusieurs(self.node,self.editor) - # construction du min de valeur a entrer - if self.monSimpDef.max == "**" : aConstruire=7 - elif self.monSimpDef.max == float('inf'): aConstruire=7 - else : aConstruire=self.monSimpDef.max - - for i in range(1,aConstruire): - self.ajoutLineEdit() - QApplication.processEvents() - self.scrollArea.ensureWidgetVisible(self.lineEditVal1) - self.listeValeursCourantes=self.node.item.getListeValeurs() - index=1 - for valeur in self.listeValeursCourantes : - val=self.politique.getValeurTexte(valeur) - nomLineEdit="lineEditVal"+str(index) - if hasattr(self,nomLineEdit) : - courant=getattr(self,nomLineEdit) - if 'R' in self.objSimp.definition.type and str(val) != repr(val) : courant.setText(repr(val)) - else : courant.setText(str(val)) - self.dictLE[index]=val - else : - self.ajoutLineEdit(val) - index=index+1 - # ajout d'une ligne vide ou affichage commentaire - if self.indexDernierLabel < self.monSimpDef.max : self.ajoutLineEdit() - else : self.scrollArea.setToolTip('nb max de valeurs atteint') - #self.adjustSize() - #self.vScrollBar.triggerAction(QScrollBar.SliderToMinimum) - - - def ajoutLineEdit(self,valeur=None,): - #print ('ajoutLineEdit plusieursBase') - #print ('self.indexDernierLabel', self.indexDernierLabel) - self.indexDernierLabel=self.indexDernierLabel+1 - nomLineEdit="lineEditVal"+str(self.indexDernierLabel) - if hasattr(self,nomLineEdit) : - self.indexDernierLabel=self.indexDernierLabel-1 - return - nouveauLE = LECustom(self.scrollArea,self,self.indexDernierLabel) - self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE) - nouveauLE.setText("") - if self.indexDernierLabel % 2 == 1 : nouveauLE.setStyleSheet("background:rgb(210,210,210)") - else : nouveauLE.setStyleSheet("background:rgb(235,235,235)") - nouveauLE.setFrame(False) - nouveauLE.returnPressed.connect(self.changeValeur) - - setattr(self,nomLineEdit,nouveauLE) - self.listeAffichageWidget.append(nouveauLE) - self.etablitOrdre() - if valeur != None : - nouveauLE.setText(str(valeur)) - self.dictLE[self.indexDernierLabel] = valeur - else : - self.dictLE[self.indexDernierLabel] = None - # deux lignes pour que le ensureVisible fonctionne - self.estVisible=nouveauLE - if self.inInit==False :QTimer.singleShot(1, self.rendVisibleLigne) - - def etablitOrdre(self): - i=0 - while(i +1 < len(self.listeAffichageWidget)): - self.listeAffichageWidget[i].setFocusPolicy(Qt.StrongFocus) - self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1]) - i=i+1 - # si on boucle on perd l'ordre - - - def rendVisibleLigne(self): - QApplication.processEvents() - self.estVisible.setFocus() - self.scrollArea.ensureWidgetVisible(self.estVisible,0,0) - - - def finCommentaire(self): - return self.finCommentaireListe() - - def ajout1Valeur(self,valeur=None): - #print ('ajout1Valeur plusieursBase') - if valeur == None : return - liste,validite=SaisieValeur.TraiteLEValeur(self,str(valeur)) - if validite == 0 : return - if liste ==[] : return - listeVal=[] - for valeur in self.listeValeursCourantes : listeVal.append(valeur) - validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,-1,listeVal) - if (comm2 != "" and comm != None) : return comm2 - if validite : - self.listeValeursCourantes=self.listeValeursCourantes+listeRetour - if len(self.listeValeursCourantes) > self.monSimpDef.min : - self.node.item.setValeur(self.listeValeursCourantes) - self.reaffiche() - return None - else : - return(comm2+" "+comm) - - def reaffiche(self): - # A priori, on ne fait rien - pass - - - def ajoutNValeur(self,liste): - #print ('ajoutNValeur plusieursBase') - #---------------------------- - # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur - # car alors le temps de verification devient prohibitif reconstructu=ion et verification a - # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs - - - listeFormatee=list(liste) - - min,max=self.node.item.getMinMax() - if self.objSimp.valeur == None : listeComplete=listeFormatee - else : listeComplete =self.objSimp.valeur + listeFormatee - - if len(listeComplete) > max : - texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint") - self.editor.afficheInfos(texte,Qt.red) - return - - validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete) - if not validite : - self.editor.affiche_infos(texte,Qt.red) - return - - # on calcule le dernier lineedit rempli avant de changer la valeur - if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur) - else : indexDernierRempli=0 - - self.politique.recordValeur(listeComplete) - - indexDernierRempli=0 - while ( indexDernierRempli < len(liste) ) : - texte=liste[indexDernierRempli] - if indexDernierRempli < self.indexDernierLabel: - nomLineEdit="lineEditVal"+str(indexDernierRempli+1) + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + #print "MonWidgetPlusieursBase", nom + self.inFocusOutEvent=False + self.nomLine="lineEditVal" + self.inInit=True + self.indexDernierLabel=0 + self.numLineEditEnCours=0 + self.listeAffichageWidget=[] + self.dictLE={} + Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) + GereListe.__init__(self) + self.gereIconePlier() + self.BSelectFichier.clicked.connect(self.selectInFile) + + repIcon=self.node.editor.appliEficas.repIcon + fichier=os.path.join(repIcon, 'arrow_up.png') + icon = QIcon(fichier) + self.RBHaut.setIcon(icon) + self.RBHaut.setIconSize(QSize(32, 32)) + fichier2=os.path.join(repIcon, 'arrow_down.png') + icon2 = QIcon(fichier2) + self.RBBas.setIcon(icon2) + fichier3=os.path.join(repIcon, 'file-explorer.png') + icon3 = QIcon(fichier2) + self.BSelectFichier.setIcon(icon3) + self.BSelectFichier.setIconSize(QSize(32, 32)) + icon=QIcon(self.repIcon+"/MoinsBleu.png") + self.RBMoins.setIcon(icon) + icon=QIcon(self.repIcon+"/PlusBleu.png") + self.RBPlus.setIcon(icon) + icon=QIcon(self.repIcon+"/verre-loupe-icone-6087-64.png") + self.RBVoisListe.setIcon(icon) + + + self.listeValeursCourantes=self.node.item.getListeValeurs() + if self.monSimpDef.max != "**" and self.monSimpDef.max < 7: + hauteurMax=dicoLongueur[self.monSimpDef.max] + else : + hauteurMax=220 + # if self.monSimpDef.max == self.monSimpDef.min : self.setMaximumHeight(hauteur) + self.resize(self.width(),hauteurMax) + self.setMinimumHeight(hauteurMax) + self.finCommentaireListe() + self.parentQt.commandesLayout.insertWidget(-1,self) + self.maCommande.listeAffichageWidget.append(self.lineEditVal1) + self.AAfficher=self.lineEditVal1 + self.inInit=False + # PNPN a completer __ si tuple le type des tuples sinon le tuple + self.monCommentaireLabel.setText(self.finCommentaireListe()) + self.scrollArea.leaveEvent = self.leaveEventScrollArea + + + def setValeurs(self): + self.vScrollBar = self.scrollArea.verticalScrollBar() + self.politique=PolitiquePlusieurs(self.node,self.editor) + # construction du min de valeur a entrer + if self.monSimpDef.max == "**" : aConstruire=7 + elif self.monSimpDef.max == float('inf'): aConstruire=7 + else : aConstruire=self.monSimpDef.max + + for i in range(1,aConstruire): + self.ajoutLineEdit() + QApplication.processEvents() + self.scrollArea.ensureWidgetVisible(self.lineEditVal1) + self.listeValeursCourantes=self.node.item.getListeValeurs() + index=1 + for valeur in self.listeValeursCourantes : + val=self.politique.getValeurTexte(valeur) + nomLineEdit="lineEditVal"+str(index) + if hasattr(self,nomLineEdit) : + courant=getattr(self,nomLineEdit) + if 'R' in self.objSimp.definition.type and str(val) != repr(val) : courant.setText(repr(val)) + else : courant.setText(str(val)) + self.dictLE[index]=val + else : + self.ajoutLineEdit(val) + index=index+1 + # ajout d'une ligne vide ou affichage commentaire + if self.indexDernierLabel < self.monSimpDef.max : self.ajoutLineEdit() + else : self.scrollArea.setToolTip('nb max de valeurs atteint') + #self.adjustSize() + #self.vScrollBar.triggerAction(QScrollBar.SliderToMinimum) + + + def ajoutLineEdit(self,valeur=None,): + #print ('ajoutLineEdit plusieursBase') + #print ('self.indexDernierLabel', self.indexDernierLabel) + self.indexDernierLabel=self.indexDernierLabel+1 + nomLineEdit="lineEditVal"+str(self.indexDernierLabel) + if hasattr(self,nomLineEdit) : + self.indexDernierLabel=self.indexDernierLabel-1 + return + nouveauLE = LECustom(self.scrollArea,self,self.indexDernierLabel) + self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE) + nouveauLE.setText("") + if self.indexDernierLabel % 2 == 1 : nouveauLE.setStyleSheet("background:rgb(210,210,210)") + else : nouveauLE.setStyleSheet("background:rgb(235,235,235)") + nouveauLE.setFrame(False) + nouveauLE.returnPressed.connect(self.changeValeur) + + setattr(self,nomLineEdit,nouveauLE) + self.listeAffichageWidget.append(nouveauLE) + self.etablitOrdre() + if valeur != None : + nouveauLE.setText(str(valeur)) + self.dictLE[self.indexDernierLabel] = valeur + else : + self.dictLE[self.indexDernierLabel] = None + # deux lignes pour que le ensureVisible fonctionne + self.estVisible=nouveauLE + if self.inInit==False :QTimer.singleShot(1, self.rendVisibleLigne) + + def etablitOrdre(self): + i=0 + while(i +1 < len(self.listeAffichageWidget)): + self.listeAffichageWidget[i].setFocusPolicy(Qt.StrongFocus) + self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1]) + i=i+1 + # si on boucle on perd l'ordre + + + def rendVisibleLigne(self): + QApplication.processEvents() + self.estVisible.setFocus() + self.scrollArea.ensureWidgetVisible(self.estVisible,0,0) + + + def finCommentaire(self): + return self.finCommentaireListe() + + def ajout1Valeur(self,valeur=None): + #print ('ajout1Valeur plusieursBase') + if valeur == None : return + liste,validite=SaisieValeur.TraiteLEValeur(self,str(valeur)) + if validite == 0 : return + if liste ==[] : return + listeVal=[] + for valeur in self.listeValeursCourantes : listeVal.append(valeur) + validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,-1,listeVal) + if (comm2 != "" and comm != None) : return comm2 + if validite : + self.listeValeursCourantes=self.listeValeursCourantes+listeRetour + if len(self.listeValeursCourantes) > self.monSimpDef.min : + self.node.item.setValeur(self.listeValeursCourantes) + self.reaffiche() + return None + else : + return(comm2+" "+comm) + + def reaffiche(self): + # A priori, on ne fait rien + pass + + + def ajoutNValeur(self,liste): + #print ('ajoutNValeur plusieursBase') + #---------------------------- + # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur + # car alors le temps de verification devient prohibitif reconstructu=ion et verification a + # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs + + + listeFormatee=list(liste) + + min,max=self.node.item.getMinMax() + if self.objSimp.valeur == None : listeComplete=listeFormatee + else : listeComplete =self.objSimp.valeur + listeFormatee + + if len(listeComplete) > max : + texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint") + self.editor.afficheInfos(texte,Qt.red) + return + + validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete) + if not validite : + self.editor.affiche_infos(texte,Qt.red) + return + + # on calcule le dernier lineedit rempli avant de changer la valeur + if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur) + else : indexDernierRempli=0 + + self.politique.recordValeur(listeComplete) + + indexDernierRempli=0 + while ( indexDernierRempli < len(liste) ) : + texte=liste[indexDernierRempli] + if indexDernierRempli < self.indexDernierLabel: + nomLineEdit="lineEditVal"+str(indexDernierRempli+1) + courant=getattr(self,nomLineEdit) + courant.setText(str(texte)) + else : + self.ajoutLineEdit(texte) + indexDernierRempli = indexDernierRempli + 1 + + + def changeValeur(self,changeDePlace=True,oblige=False): + #print ('achangeValeur plusieursBase') + donneFocus=None + derniereValeur=None + self.listeValeursCourantes = [] + fin=self.indexDernierLabel + for i in range (1, fin): + nomLineEdit="lineEditVal"+str(i) courant=getattr(self,nomLineEdit) - courant.setText(str(texte)) - else : - self.ajoutLineEdit(texte) - indexDernierRempli = indexDernierRempli + 1 - - - def changeValeur(self,changeDePlace=True,oblige=False): - #print ('achangeValeur plusieursBase') - donneFocus=None - derniereValeur=None - self.listeValeursCourantes = [] - fin=self.indexDernierLabel - for i in range (1, fin): - nomLineEdit="lineEditVal"+str(i) - courant=getattr(self,nomLineEdit) - valeur=courant.text() - lval=valeur.split(',') - if len (lval) > 1 : - msgBox=QMessageBox() - msgBox.setText("separator ',' ") - msgBox.setInformativeText("Do you want to enter " + str (lval) + "?") - msgBox.setStandardButtons( QMessageBox.Ok | QMessageBox.Cancel) - msgBox.setDefaultButton(QMessageBox.Ok) - ret = msgBox.exec_() - if ret != 1024 : - courant.setText("") - return - courant.setText(lval[0]) - self.ajoutNValeur(lval[1:]) - self.listeValeursCourantes = [] - - - for i in range (1, self.indexDernierLabel+1): - nomLineEdit="lineEditVal"+str(i) - courant=getattr(self,nomLineEdit) - valeur=courant.text() - if valeur != None and valeur != "" : - commentaire=self.ajout1Valeur(valeur) - if (commentaire != None ): - self.editor.afficheInfos(commentaire,Qt.red) - courant.setText("") - donneFocus=courant - self.reaffiche() - return - else : - self.editor.afficheInfos("") - elif donneFocus==None : donneFocus=courant - - nomDernierLineEdit="lineEditVal"+str(self.indexDernierLabel) - dernier=getattr(self,nomDernierLineEdit) - derniereValeur=dernier.text() - if changeDePlace: - if donneFocus != None : - donneFocus.setFocus() - self.scrollArea.ensureWidgetVisible(donneFocus) - elif self.indexDernierLabel < self.monSimpDef.max : - self.ajoutLineEdit() - if self.listeValeursCourantes == [] : return - min,max = self.node.item.getMinMax() - if len(self.listeValeursCourantes) < self.monSimpDef.min : - self.editor.afficheInfos(tr('nb min de valeurs : ')+str( self.monSimpDef.min)) - if len(self.listeValeursCourantes) < min and oblige==True: return - if len(self.listeValeursCourantes) > max : return - retour=self.node.item.setValeur(self.listeValeursCourantes) - if len(self.listeValeursCourantes) == self.monSimpDef.max : - self.editor.afficheInfos(tr('nb max de valeurs atteint')) - self.setValide() - self.reaffiche() - - def leaveEventScrollArea(self,event): - #print ('achangeValeur plusieursBase') - self.changeValeur(changeDePlace=False) - QScrollArea.leaveEvent(self.scrollArea,event) + valeur=courant.text() + lval=valeur.split(',') + if len (lval) > 1 : + msgBox=QMessageBox() + msgBox.setText("separator ',' ") + msgBox.setInformativeText("Do you want to enter " + str (lval) + "?") + msgBox.setStandardButtons( QMessageBox.Ok | QMessageBox.Cancel) + msgBox.setDefaultButton(QMessageBox.Ok) + ret = msgBox.exec_() + if ret != 1024 : + courant.setText("") + return + courant.setText(lval[0]) + self.ajoutNValeur(lval[1:]) + self.listeValeursCourantes = [] + + + for i in range (1, self.indexDernierLabel+1): + nomLineEdit="lineEditVal"+str(i) + courant=getattr(self,nomLineEdit) + valeur=courant.text() + if valeur != None and valeur != "" : + commentaire=self.ajout1Valeur(valeur) + if (commentaire != None ): + self.editor.afficheInfos(commentaire,Qt.red) + courant.setText("") + donneFocus=courant + self.reaffiche() + return + else : + self.editor.afficheInfos("") + elif donneFocus==None : donneFocus=courant + + nomDernierLineEdit="lineEditVal"+str(self.indexDernierLabel) + dernier=getattr(self,nomDernierLineEdit) + derniereValeur=dernier.text() + if changeDePlace: + if donneFocus != None : + donneFocus.setFocus() + self.scrollArea.ensureWidgetVisible(donneFocus) + elif self.indexDernierLabel < self.monSimpDef.max : + self.ajoutLineEdit() + if self.listeValeursCourantes == [] : return + min,max = self.node.item.getMinMax() + if len(self.listeValeursCourantes) < self.monSimpDef.min : + self.editor.afficheInfos(tr('nb min de valeurs : ')+str( self.monSimpDef.min)) + if len(self.listeValeursCourantes) < min and oblige==True: return + if len(self.listeValeursCourantes) > max : return + retour=self.node.item.setValeur(self.listeValeursCourantes) + if len(self.listeValeursCourantes) == self.monSimpDef.max : + self.editor.afficheInfos(tr('nb max de valeurs atteint')) + self.setValide() + self.reaffiche() + + def leaveEventScrollArea(self,event): + #print ('achangeValeur plusieursBase') + self.changeValeur(changeDePlace=False) + QScrollArea.leaveEvent(self.scrollArea,event) # Avertissement quand on quitte le widget diff --git a/InterfaceQT4/monWidgetPlusieursCreeUserAssd.py b/InterfaceQT4/monWidgetPlusieursCreeUserAssd.py index fb6bc2bb..056cf3e5 100644 --- a/InterfaceQT4/monWidgetPlusieursCreeUserAssd.py +++ b/InterfaceQT4/monWidgetPlusieursCreeUserAssd.py @@ -30,103 +30,103 @@ from copy import copy,deepcopy from PyQt5.QtCore import Qt - + class MonWidgetPlusieursCreeUserAssd ( MonWidgetPlusieursBase): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - MonWidgetPlusieursBase. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - self.etablitOrdre() - self.scrollArea.leaveEvent = self.leaveEventScrollArea - self.RBHaut.close() - self.RBBas.close() - - def ajout1Valeur(self,valeur=None): - if not valeur in list(self.dictValeurs.keys()): - validite,commentaire=self.objSimp.creeUserASSDetSetValeur(valeur) - MonWidgetPlusieursBase.ajout1Valeur(self,valeur) - - def changeValeur(self,changeDePlace=False,oblige=False ): - #print ('dans changeValeur du CreeUserAssd', changeDePlace, self.numLineEditEnCours) - #import traceback - #traceback.print_stack() - self.changeUnLineEdit=False - valeur = self.lineEditEnCours.text() - if self.numLineEditEnCours in list(self.dictLE.keys()) : - oldValeurUserAssd = self.dictLE[self.numLineEditEnCours] - if oldValeurUserAssd == None or oldValeurUserAssd == "" : - enCreation = True - oldValeurUserAssd == True - else : enCreation = False - else : - enCreation = True - oldValeurUserAssd = None - - if oldValeurUserAssd and oldValeurUserAssd.nom == valeur : - self.selectionneNext() - return - - if valeur != "" : - if not enCreation : - validite, commentaire=self.node.item.renommeSdCreeDsListe(oldValeurUserAssd,valeur) - if commentaire != "" and not validite: - self.editor.afficheInfos(commentaire,Qt.red) - self.lineEditEnCours.setText(oldValeurUserAssd.nom) - nomDernierLineEdit="lineEditVal"+str(self.numLineEditEnCours+1) - dernier=getattr(self,nomDernierLineEdit) - dernier.setFocus() - return - - validite, objASSD, commentaire=self.objSimp.creeUserASSD(valeur) - if commentaire != "" and not validite: - self.editor.afficheInfos(commentaire,Qt.red) - self.lineEditEnCours.setText("") - if objASSD : objASSD.supprime(self.objSimp) - return - else: - validite = 1 - objASSD=None - commentaire = "" - - # on relit tout pour tenir compte des lignes blanches - oldValeur=self.objSimp.valeur - liste=[] - for i in range (1, self.indexDernierLabel+1): - if i == self.numLineEditEnCours and objASSD : liste.append(objASSD) - elif self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) - validite=self.node.item.setValeur(liste) - if not validite : - self.objSimp.valeur=oldValeur - self.objSimp.state='changed' - self.setValide() - if objASSD : objASSD.supprime(self.objSimp) - self.lineEditEnCours.setText(oldValeurUserASSD.nom) - return - - validite=self.node.item.isValid() - if validite : - self.dictLE[self.numLineEditEnCours] = objASSD - self.node.item.rattacheUserASSD(objASSD) - if self.indexDernierLabel < len(liste) : self.ajoutLineEdit() - nomDernierLineEdit="lineEditVal"+str(self.numLineEditEnCours+1) - self.listeValeursCourantes=liste - dernier=getattr(self,nomDernierLineEdit) - dernier.setFocus() - else : - self.editor.afficheInfos('ajout impossible' ,Qt.red) - if objASSD : objASSD.supprime(self.objSimp) - self.lineEditEnCours.setText("") - self.parentQt.propageChange(self.objSimp.definition.type[0],self) - - def selectionneDernier(self): - index=len(self.listeValeursCourantes) - self.listeAffichageWidget[index].setFocus() - - def leaveEventScrollArea(self,event): - pass + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + MonWidgetPlusieursBase. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) + self.etablitOrdre() + self.scrollArea.leaveEvent = self.leaveEventScrollArea + self.RBHaut.close() + self.RBBas.close() + + def ajout1Valeur(self,valeur=None): + if not valeur in list(self.dictValeurs.keys()): + validite,commentaire=self.objSimp.creeUserASSDetSetValeur(valeur) + MonWidgetPlusieursBase.ajout1Valeur(self,valeur) + + def changeValeur(self,changeDePlace=False,oblige=False ): + #print ('dans changeValeur du CreeUserAssd', changeDePlace, self.numLineEditEnCours) + #import traceback + #traceback.print_stack() + self.changeUnLineEdit=False + valeur = self.lineEditEnCours.text() + if self.numLineEditEnCours in list(self.dictLE.keys()) : + oldValeurUserAssd = self.dictLE[self.numLineEditEnCours] + if oldValeurUserAssd == None or oldValeurUserAssd == "" : + enCreation = True + oldValeurUserAssd == True + else : enCreation = False + else : + enCreation = True + oldValeurUserAssd = None + + if oldValeurUserAssd and oldValeurUserAssd.nom == valeur : + self.selectionneNext() + return + + if valeur != "" : + if not enCreation : + validite, commentaire=self.node.item.renommeSdCreeDsListe(oldValeurUserAssd,valeur) + if commentaire != "" and not validite: + self.editor.afficheInfos(commentaire,Qt.red) + self.lineEditEnCours.setText(oldValeurUserAssd.nom) + nomDernierLineEdit="lineEditVal"+str(self.numLineEditEnCours+1) + dernier=getattr(self,nomDernierLineEdit) + dernier.setFocus() + return + + validite, objASSD, commentaire=self.objSimp.creeUserASSD(valeur) + if commentaire != "" and not validite: + self.editor.afficheInfos(commentaire,Qt.red) + self.lineEditEnCours.setText("") + if objASSD : objASSD.supprime(self.objSimp) + return + else: + validite = 1 + objASSD=None + commentaire = "" + + # on relit tout pour tenir compte des lignes blanches + oldValeur=self.objSimp.valeur + liste=[] + for i in range (1, self.indexDernierLabel+1): + if i == self.numLineEditEnCours and objASSD : liste.append(objASSD) + elif self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) + validite=self.node.item.setValeur(liste) + if not validite : + self.objSimp.valeur=oldValeur + self.objSimp.state='changed' + self.setValide() + if objASSD : objASSD.supprime(self.objSimp) + self.lineEditEnCours.setText(oldValeurUserASSD.nom) + return + + validite=self.node.item.isValid() + if validite : + self.dictLE[self.numLineEditEnCours] = objASSD + self.node.item.rattacheUserASSD(objASSD) + if self.indexDernierLabel < len(liste) : self.ajoutLineEdit() + nomDernierLineEdit="lineEditVal"+str(self.numLineEditEnCours+1) + self.listeValeursCourantes=liste + dernier=getattr(self,nomDernierLineEdit) + dernier.setFocus() + else : + self.editor.afficheInfos('ajout impossible' ,Qt.red) + if objASSD : objASSD.supprime(self.objSimp) + self.lineEditEnCours.setText("") + self.parentQt.propageChange(self.objSimp.definition.type[0],self) + + def selectionneDernier(self): + index=len(self.listeValeursCourantes) + self.listeAffichageWidget[index].setFocus() + + def leaveEventScrollArea(self,event): + pass # def echangeDeuxValeurs(self): # self.changeUnLineEdit=False -# obj1=self.dictLE[self.num1] -# obj2=self.dictLE[self.num2] +# obj1=self.dictLE[self.num1] +# obj2=self.dictLE[self.num2] # self.dictLE[self.num1]=obj2 # self.dictLE[self.num2]=obj1 # nomLineEdit=self.nomLine+str(self.num1) @@ -138,48 +138,47 @@ class MonWidgetPlusieursCreeUserAssd ( MonWidgetPlusieursBase): # if self.dictLE[self.num2] != None : courant.setText(self.dictLE[self.num2].nom) # else : courant.setText("") # liste=[] -# for i in list(self.dictLE.keys()): +# for i in list(self.dictLE.keys()): # if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) # validite=self.node.item.setValeur(liste) # self.listeValeursCourantes=liste # courant.setFocus(True) - def descendLesLignes(self): - self.changeUnLineEdit=False - if self.numLineEditEnCours==self.indexDernierLabel : return - nouvelleValeur=None - for i in range (self.numLineEditEnCours+1, self.indexDernierLabel): - valeurAGarder=self.dictLE[i] - self.dictLE[i]=nouvelleValeur - nomLineEdit=self.nomLine+str(i) - courant=getattr(self,nomLineEdit) - if nouvelleValeur != None : courant.setText(nouvelleValeur.nom) - else : courant.setText("") - nouvelleValeur=valeurAGarder - - - def moinsPushed(self): - if self.numLineEditEnCours == 0 : return - if self.indexDernierLabel == 0 : return - objASSD=self.dictLE[self.numLineEditEnCours] - if objASSD : objASSD.supprime(self.objSimp) - self.lineEditEnCours.setText("") - self.dictLE[self.numLineEditEnCours]=None - - for i in range (self.numLineEditEnCours, self.indexDernierLabel-1): - self.dictLE[i]= self.dictLE[i+1] - nomLineEdit=self.nomLine+str(i) - courant=getattr(self,nomLineEdit) - if self.dictLE[i] != None : courant.setText(self.dictLE[i].nom) - else : courant.setText("") - nomLineEdit=self.nomLine+str(self.indexDernierLabel) - courant=getattr(self,nomLineEdit) - courant.setText("") - self.dictLE[self.indexDernierLabel]=None - liste=[] - for i in list(self.dictLE.keys()): - if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) - print (liste) - validite=self.node.item.setValeur(liste) - self.listeValeursCourantes=liste - + def descendLesLignes(self): + self.changeUnLineEdit=False + if self.numLineEditEnCours==self.indexDernierLabel : return + nouvelleValeur=None + for i in range (self.numLineEditEnCours+1, self.indexDernierLabel): + valeurAGarder=self.dictLE[i] + self.dictLE[i]=nouvelleValeur + nomLineEdit=self.nomLine+str(i) + courant=getattr(self,nomLineEdit) + if nouvelleValeur != None : courant.setText(nouvelleValeur.nom) + else : courant.setText("") + nouvelleValeur=valeurAGarder + + + def moinsPushed(self): + if self.numLineEditEnCours == 0 : return + if self.indexDernierLabel == 0 : return + objASSD=self.dictLE[self.numLineEditEnCours] + if objASSD : objASSD.supprime(self.objSimp) + self.lineEditEnCours.setText("") + self.dictLE[self.numLineEditEnCours]=None + + for i in range (self.numLineEditEnCours, self.indexDernierLabel-1): + self.dictLE[i]= self.dictLE[i+1] + nomLineEdit=self.nomLine+str(i) + courant=getattr(self,nomLineEdit) + if self.dictLE[i] != None : courant.setText(self.dictLE[i].nom) + else : courant.setText("") + nomLineEdit=self.nomLine+str(self.indexDernierLabel) + courant=getattr(self,nomLineEdit) + courant.setText("") + self.dictLE[self.indexDernierLabel]=None + liste=[] + for i in list(self.dictLE.keys()): + if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) + print (liste) + validite=self.node.item.setValeur(liste) + self.listeValeursCourantes=liste diff --git a/InterfaceQT4/monWidgetPlusieursPlie.py b/InterfaceQT4/monWidgetPlusieursPlie.py index 389e5111..ed14566c 100644 --- a/InterfaceQT4/monWidgetPlusieursPlie.py +++ b/InterfaceQT4/monWidgetPlusieursPlie.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os,sys,re @@ -32,7 +32,7 @@ from PyQt5.QtGui import QIcon, QBrush, QColor from Extensions.i18n import tr from .feuille import Feuille -from desWidgetPlusieursPlie import Ui_WidgetPlusieursPlie +from desWidgetPlusieursPlie import Ui_WidgetPlusieursPlie from .politiquesValidation import PolitiquePlusieurs from .qtSaisie import SaisieValeur @@ -42,81 +42,81 @@ pattern_blanc = re.compile(r"^\s*$") class MonWidgetPlusieursPlie (Ui_WidgetPlusieursPlie,Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): #print ("MonWidgetPlusieursBase", nom) Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.parentQt.commandesLayout.insertWidget(-1,self) self.AAfficher=self.lineEditVal self.maCommande.listeAffichageWidget.append(self.lineEditVal) - if self.node.item.hasInto() : - self.lineEditVal.setReadOnly(True) - self.lineEditVal.setStyleSheet("background:rgb(235,235,235);\n") - self.lineEditVal.setToolTip("Ensemble discret de valeurs possibles, pas de Saisie Manuelle") - #self.lineEditVal.setPen(QtGui.QColor(0,0,200)) - #b=QBrush(Qt.DiagCrossPattern) - #b.setColor(QColor(255,100,0)) - #self.lineEditVal.setBrush(b) + if self.node.item.hasInto() : + self.lineEditVal.setReadOnly(True) + self.lineEditVal.setStyleSheet("background:rgb(235,235,235);\n") + self.lineEditVal.setToolTip("Ensemble discret de valeurs possibles, pas de Saisie Manuelle") + #self.lineEditVal.setPen(QtGui.QColor(0,0,200)) + #b=QBrush(Qt.DiagCrossPattern) + #b.setColor(QColor(255,100,0)) + #self.lineEditVal.setBrush(b) else : - self.lineEditVal.returnPressed.connect(self.valeurEntree) + self.lineEditVal.returnPressed.connect(self.valeurEntree) self.BVisuListe.clicked.connect(self.selectWidgetDeplie) - def setValeurs(self): - self.listeValeursCourantes=self.node.item.getListeValeurs() - if self.listeValeursCourantes != [] : self.lineEditVal.setText(str(self.listeValeursCourantes)) - else : self.lineEditVal.setText("") - self.politique=PolitiquePlusieurs(self.node,self.editor) - return - - def selectWidgetDeplie(self): - self.editor.listeDesListesOuvertes.add(self.node.item) - self.reaffichePourDeplier() - - def valeurEntree(self): - valeurTexte=self.lineEditVal.text() - #print (valeurTexte[0]) - #print (valeurTexte[-1]) - if valeurTexte[0] == '[' or valeurTexte[0] == '(' : valeurTexte = valeurTexte[1:] - if valeurTexte[-1] == ']' or valeurTexte[-1] == ')' : valeurTexte = valeurTexte[:-1] - #print (valeurTexte) - listeValeursBrutes=valeurTexte.split(',') - if listeValeursBrutes == [] or listeValeursBrutes == None : - self.lineEditVal.setText(str(self.listeValeursCourantes)) - return - listeValeur=[] - for v in listeValeursBrutes: - if v == None or pattern_blanc.match(v) : - self.editor.afficheInfos(str(listeValeur)+' Valeurs saisies incorrectes',Qt.red) - return - liste,validite=SaisieValeur.TraiteLEValeur(self,str(v)) - if not validite : - self.editor.afficheInfos(str(listeValeur) +' Valeurs saisies incorrectes',Qt.red) - return - listeValeur.append(liste[0]) - validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(listeValeur,-1,[]) - if validite : - self.node.item.setValeur(listeValeur) - self.node.item.isValid() - self.setValeurs() - else : - self.editor.afficheInfos(str(listeValeur) + ' ' +comm,Qt.red) - self.lineEditVal.setText('') - + def setValeurs(self): + self.listeValeursCourantes=self.node.item.getListeValeurs() + if self.listeValeursCourantes != [] : self.lineEditVal.setText(str(self.listeValeursCourantes)) + else : self.lineEditVal.setText("") + self.politique=PolitiquePlusieurs(self.node,self.editor) + return + + def selectWidgetDeplie(self): + self.editor.listeDesListesOuvertes.add(self.node.item) + self.reaffichePourDeplier() + + def valeurEntree(self): + valeurTexte=self.lineEditVal.text() + #print (valeurTexte[0]) + #print (valeurTexte[-1]) + if valeurTexte[0] == '[' or valeurTexte[0] == '(' : valeurTexte = valeurTexte[1:] + if valeurTexte[-1] == ']' or valeurTexte[-1] == ')' : valeurTexte = valeurTexte[:-1] + #print (valeurTexte) + listeValeursBrutes=valeurTexte.split(',') + if listeValeursBrutes == [] or listeValeursBrutes == None : + self.lineEditVal.setText(str(self.listeValeursCourantes)) + return + listeValeur=[] + for v in listeValeursBrutes: + if v == None or pattern_blanc.match(v) : + self.editor.afficheInfos(str(listeValeur)+' Valeurs saisies incorrectes',Qt.red) + return + liste,validite=SaisieValeur.TraiteLEValeur(self,str(v)) + if not validite : + self.editor.afficheInfos(str(listeValeur) +' Valeurs saisies incorrectes',Qt.red) + return + listeValeur.append(liste[0]) + validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(listeValeur,-1,[]) + if validite : + self.node.item.setValeur(listeValeur) + self.node.item.isValid() + self.setValeurs() + else : + self.editor.afficheInfos(str(listeValeur) + ' ' +comm,Qt.red) + self.lineEditVal.setText('') + class MonWidgetPlusieursPlieASSD (MonWidgetPlusieursPlie): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): MonWidgetPlusieursPlie.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.lineEditVal.setReadOnly(True) - def setValeurs(self): - self.listeValeursCourantes=self.node.item.getListeValeurs() - self.politique=PolitiquePlusieurs(self.node,self.editor) - if self.listeValeursCourantes == [] : self.lineEditVal.setText(""); return - txt="[" - for elt in self.listeValeursCourantes : + def setValeurs(self): + self.listeValeursCourantes=self.node.item.getListeValeurs() + self.politique=PolitiquePlusieurs(self.node,self.editor) + if self.listeValeursCourantes == [] : self.lineEditVal.setText(""); return + txt="[" + for elt in self.listeValeursCourantes : txt= txt+ (str(elt)) + "," - txt= txt + "]" - self.lineEditVal.setText(txt) + txt= txt + "]" + self.lineEditVal.setText(txt) - def valeurEntree(self): - pass + def valeurEntree(self): + pass diff --git a/InterfaceQT4/monWidgetPlusieursTuple.py b/InterfaceQT4/monWidgetPlusieursTuple.py index 3d1b7889..4b9ce64e 100644 --- a/InterfaceQT4/monWidgetPlusieursTuple.py +++ b/InterfaceQT4/monWidgetPlusieursTuple.py @@ -20,9 +20,9 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str - from builtins import range - from builtins import object + from builtins import str + from builtins import range + from builtins import object except : pass import types,os,sys @@ -55,193 +55,193 @@ from Tuple10 import Ui_Tuple10 class TupleCustom(object) : #-------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------------------------------------- - QWidget.__init__(self,parent) - self.setupUi(self) - self.tailleTuple=tailleTuple - self.parent=parent - self.parentQt=parentQt - self.valeur=[] - self.index=index - self.inFocusOutEvent=False - - - for i in range(self.tailleTuple): - nomLE="lineEditVal_"+str(i+1) - courant=getattr(self,nomLE) - courant.num=index - courant.dansUnTuple=True - courant.returnPressed.connect(self.valueChange) - courant.numDsLaListe = i+1 - courant.tupleCustomParent=self - courant.parentTuple = self - - - def valueChange(self): - #---------------------- - - listeVal=[] - for i in range(self.tailleTuple): - nomLE="lineEditVal_"+str(i+1) - courant=getattr(self,nomLE) - val=str(courant.text()) - - if str(val)=="" or val==None : - if not self.inFocusOutEvent : courant.setFocus() - return + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------------------------------------- + QWidget.__init__(self,parent) + self.setupUi(self) + self.tailleTuple=tailleTuple + self.parent=parent + self.parentQt=parentQt + self.valeur=[] + self.index=index + self.inFocusOutEvent=False + + + for i in range(self.tailleTuple): + nomLE="lineEditVal_"+str(i+1) + courant=getattr(self,nomLE) + courant.num=index + courant.dansUnTuple=True + courant.returnPressed.connect(self.valueChange) + courant.numDsLaListe = i+1 + courant.tupleCustomParent=self + courant.parentTuple = self + + + def valueChange(self): + #---------------------- + + listeVal=[] + for i in range(self.tailleTuple): + nomLE="lineEditVal_"+str(i+1) + courant=getattr(self,nomLE) + val=str(courant.text()) + + if str(val)=="" or val==None : + if not self.inFocusOutEvent : courant.setFocus() + return + + try : + valeur=eval(val,{}) + except : + try : + d=self.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape) + valeur=eval(val,d) + except : + valeur=val + listeVal.append(valeur) + self.valeur=listeVal + self.parentQt.changeValeur() + + + def setValeur(self,value): + #---------------------- + + listeVal=[] + valeurNulle=True + for i in range(self.tailleTuple): + nomLE="lineEditVal_"+str(i+1) + courant=getattr(self,nomLE) + try : + if str(value[i]) != "" : valeurNulle=False + except : + pass - try : - valeur=eval(val,{}) - except : - try : - d=self.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape) - valeur=eval(val,d) - except : - valeur=val - listeVal.append(valeur) - self.valeur=listeVal - self.parentQt.changeValeur() - - - def setValeur(self,value): - #---------------------- - - listeVal=[] - valeurNulle=True - for i in range(self.tailleTuple): - nomLE="lineEditVal_"+str(i+1) - courant=getattr(self,nomLE) - try : - if str(value[i]) != "" : valeurNulle=False - except : - pass - - try : - courant.setText(str(value[i])) - except : - courant.setText("") - val=str(courant.text()) - try : - valeur=eval(val,{}) - except : - try : - d=self.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape) - valeur=eval(val,d) - except : - valeur=val - listeVal.append(valeur) - if valeurNulle == True : self.valeur=None - else : self.valeur=listeVal - - def getValeurbad(self): - #---------------------- - self.valeur=[] - vide=True - print (self.tailleTuple) - for i in range(self.tailleTuple): - nomLE="lineEditVal_"+str(i+1) - courant=getattr(self,nomLE) - self.valeur.append(courant.valeur) - if courant.valeur!= None : vide = False - if vide : self.valeur=[] - return self.valeur - - def getValeur(self): - #---------------------- - return self.valeur - - - def text(self): - #-------------- - return self.valeur - - def setText(self,value): - #----------------------- - self.setValeur(value) - - def clean(self): - #------------------- - self.valeur=None - for i in range(self.tailleTuple): - nomLE="lineEditVal_"+str(i+1) - courant=getattr(self,nomLE) - courant.setText("") - - def finCommentaire(self): - #------------------- + try : + courant.setText(str(value[i])) + except : + courant.setText("") + val=str(courant.text()) + try : + valeur=eval(val,{}) + except : + try : + d=self.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape) + valeur=eval(val,d) + except : + valeur=val + listeVal.append(valeur) + if valeurNulle == True : self.valeur=None + else : self.valeur=listeVal + + def getValeurbad(self): + #---------------------- + self.valeur=[] + vide=True + print (self.tailleTuple) + for i in range(self.tailleTuple): + nomLE="lineEditVal_"+str(i+1) + courant=getattr(self,nomLE) + self.valeur.append(courant.valeur) + if courant.valeur!= None : vide = False + if vide : self.valeur=[] + return self.valeur + + def getValeur(self): + #---------------------- + return self.valeur + + + def text(self): + #-------------- + return self.valeur + + def setText(self,value): + #----------------------- + self.setValeur(value) + + def clean(self): + #------------------- + self.valeur=None + for i in range(self.tailleTuple): + nomLE="lineEditVal_"+str(i+1) + courant=getattr(self,nomLE) + courant.setText("") + + def finCommentaire(self): + #------------------- return self.finCommentaireListe() #------------------------------------------------- class TupleCustom2(QWidget,Ui_Tuple2,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) - if self.parentQt.editor.maConfiguration.closeParenthese : - self.label_5.close() - self.label_7.close() + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + if self.parentQt.editor.maConfiguration.closeParenthese : + self.label_5.close() + self.label_7.close() #------------------------------------------------- class TupleCustom3(QWidget,Ui_Tuple3,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) #------------------------------------------------- class TupleCustom4(QWidget,Ui_Tuple4,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) #------------------------------------------------- class TupleCustom5(QWidget,Ui_Tuple5,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) #------------------------------------------------- class TupleCustom6(QWidget,Ui_Tuple6,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) #------------------------------------------------- class TupleCustom7(QWidget,Ui_Tuple7,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) #------------------------------------------------- class TupleCustom8(QWidget,Ui_Tuple8,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) #------------------------------------------------- class TupleCustom9(QWidget,Ui_Tuple9,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) #------------------------------------------------- class TupleCustom10(QWidget,Ui_Tuple10,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) - if self.parentQt.editor.maConfiguration.closeParenthese : - self.label_5.close() - self.label_7.close() + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + if self.parentQt.editor.maConfiguration.closeParenthese : + self.label_5.close() + self.label_7.close() @@ -251,8 +251,8 @@ class TupleCustom10(QWidget,Ui_Tuple10,TupleCustom): class MonWidgetPlusieursTuple(Feuille,GereListe): # -------------------------------------------- # - def __init__(self, node, monSimpDef, nom, objSimp, parentQt, commande): - #----------------------------------------------------- + def __init__(self, node, monSimpDef, nom, objSimp, parentQt, commande): + #----------------------------------------------------- self.indexDernierLabel=0 self.numLineEditEnCours=0 @@ -265,158 +265,158 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): self.parentQt.commandesLayout.insertWidget(-1,self) #if sys.platform[0:5]!="linux": - if 1 : + if 1 : #Pour MT - repIcon=self.node.editor.appliEficas.repIcon - fichier=os.path.join(repIcon, 'arrow_up.png') - icon = QIcon(fichier) - self.RBHaut.setIcon(icon) - self.RBHaut.setIconSize(QSize(32, 32)) - fichier2=os.path.join(repIcon, 'arrow_down.png') - icon2 = QIcon(fichier2) - self.RBBas.setIcon(icon2) - fichier3=os.path.join(repIcon, 'file-explorer.png') - icon3 = QIcon(fichier3) - self.BSelectFichier.setIcon(icon3) - self.BSelectFichier.setIconSize(QSize(32, 32)) + repIcon=self.node.editor.appliEficas.repIcon + fichier=os.path.join(repIcon, 'arrow_up.png') + icon = QIcon(fichier) + self.RBHaut.setIcon(icon) + self.RBHaut.setIconSize(QSize(32, 32)) + fichier2=os.path.join(repIcon, 'arrow_down.png') + icon2 = QIcon(fichier2) + self.RBBas.setIcon(icon2) + fichier3=os.path.join(repIcon, 'file-explorer.png') + icon3 = QIcon(fichier3) + self.BSelectFichier.setIcon(icon3) + self.BSelectFichier.setIconSize(QSize(32, 32)) self.BSelectFichier.clicked.connect(self.selectInFile) - - - - - def ajoutLineEdit(self,valeur=None,inInit=False): - #------------------------------------------------ - self.indexDernierLabel=self.indexDernierLabel+1 - nomLineEdit=self.nomLine+str(self.indexDernierLabel) - if hasattr(self,nomLineEdit) : - self.indexDernierLabel=self.indexDernierLabel-1 - return - - nomCustomTuple='TupleCustom'+str(self.nbValeurs) - laClasseDuTuple=globals()[nomCustomTuple] - nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) - - #if self.nbValeurs == 2 : nouveauLE = TupleCustom2(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) - #else : nouveauLE = TupleCustom3(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) - - self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE) - setattr(self,nomLineEdit,nouveauLE) - if valeur != None : nouveauLE.setValeur(valeur) - - for i in range(self.nbValeurs) : - num=i+1 - nomLineEdit='lineEditVal_'+str(num) - lineEditVal=getattr(nouveauLE,nomLineEdit) - self.listeAffichageWidget.append(lineEditVal) - #self.listeAffichageWidget.append(nouveauLE.lineEditVal_1) - #self.listeAffichageWidget.append(nouveauLE.lineEditVal_2) - #if self.nbValeurs == 3 : self.listeAffichageWidget.append(nouveauLE.lineEditVal_3) - - self.etablitOrdre() - - # deux lignes pour que le ensureVisible fonctionne - self.estVisible=nouveauLE.lineEditVal_1 - if inInit==False :QTimer.singleShot(1, self.rendVisibleLigne) - - def etablitOrdre(self): - # --------------------- - i=0 - while(i +1 < len(self.listeAffichageWidget)): - self.listeAffichageWidget[i].setFocusPolicy(Qt.StrongFocus) - self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1]) - i=i+1 - - - def setValeurs(self): - # --------------------- - if self.editor.code == 'PSEN' : self.RBListePush() - valeurs=self.node.item.getValeur() - min,max=self.node.item.getMinMax() - if max == "**" or max > 8 : aCreer= 8 - else : aCreer=max - - if valeurs == () or valeurs == None : - for i in range(aCreer): self.ajoutLineEdit(inInit=True) - return - - for v in valeurs: - self.ajoutLineEdit(v,inInit=True) - - for i in range(len(valeurs),aCreer) : self.ajoutLineEdit(inInit=True) - - def rendVisibleLigne(self): - # ------------------------- - QApplication.processEvents() - self.estVisible.setFocus(True) - self.scrollArea.ensureWidgetVisible(self.estVisible,0,0) - - - def changeValeur(self,changeDePlace=False,oblige=True): - # ----------------------------------------------------- - #Pour compatibilite signature - #print ('dschangeValeur', self.indexDernierLabel) - - aLeFocus=self.focusWidget() - listeComplete=[] - libre=False - #print (self.indexDernierLabel) - for i in range(self.indexDernierLabel) : - nom=self.nomLine+str(i+1) - courant=getattr(self,nom) - valeurTuple=courant.valeur - if valeurTuple == None or valeurTuple== "" or valeurTuple==[]: - libre=True - continue - validite,comm,comm2,listeRetour= self.politique.ajoutTuple(valeurTuple,listeComplete) - if not validite: - if comm2 != '' : comm += " " + comm2 - self.editor.afficheInfos(comm+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red) - return - listeComplete.append(tuple(courant.valeur)) - #print ('listeComplete', listeComplete) - if listeComplete == [] : listeComplete=None - self.node.item.setValeur(listeComplete) - - if changeDePlace : return - min,max=self.node.item.getMinMax() - if self.indexDernierLabel == max : self.editor.afficheInfos(tr('Nb maximum de valeurs atteint')) - if self.indexDernierLabel < max and libre==False : - self.ajoutLineEdit() - self.listeAffichageWidget[-2].setFocus(True) - else : - try : - QApplication.processEvents() - w=self.listeAffichageWidget[self.listeAffichageWidget.index(aLeFocus)+1] - w.setFocus(True) - self.scrollArea.ensureWidgetVisible(w,0,0) - except : - pass - - def echange(self,num1,num2): - # on donne le focus au a celui ou on a bouge - # par convention le 2 - nomLineEdit=self.nomLine+str(num1) - courant=getattr(self,nomLineEdit) - valeurAGarder=courant.getValeur() - nomLineEdit2=self.nomLine+str(num2) - courant2=getattr(self,nomLineEdit2) - courant.setText(courant2.text()) - courant2.setText(valeurAGarder) - self.changeValeur(changeDePlace=True) - self.numLineEditEnCours=num2 - self.lineEditEnCours=courant2 - courant2.lineEditVal_1.setFocus(True) - - def ajoutNValeur(self,liste): - #---------------------------- - # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur - # car alors le temps de verification devient prohibitif reconstructu=ion et verification a - # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs + + + + + def ajoutLineEdit(self,valeur=None,inInit=False): + #------------------------------------------------ + self.indexDernierLabel=self.indexDernierLabel+1 + nomLineEdit=self.nomLine+str(self.indexDernierLabel) + if hasattr(self,nomLineEdit) : + self.indexDernierLabel=self.indexDernierLabel-1 + return + + nomCustomTuple='TupleCustom'+str(self.nbValeurs) + laClasseDuTuple=globals()[nomCustomTuple] + nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) + + #if self.nbValeurs == 2 : nouveauLE = TupleCustom2(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) + #else : nouveauLE = TupleCustom3(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) + + self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE) + setattr(self,nomLineEdit,nouveauLE) + if valeur != None : nouveauLE.setValeur(valeur) + + for i in range(self.nbValeurs) : + num=i+1 + nomLineEdit='lineEditVal_'+str(num) + lineEditVal=getattr(nouveauLE,nomLineEdit) + self.listeAffichageWidget.append(lineEditVal) + #self.listeAffichageWidget.append(nouveauLE.lineEditVal_1) + #self.listeAffichageWidget.append(nouveauLE.lineEditVal_2) + #if self.nbValeurs == 3 : self.listeAffichageWidget.append(nouveauLE.lineEditVal_3) + + self.etablitOrdre() + + # deux lignes pour que le ensureVisible fonctionne + self.estVisible=nouveauLE.lineEditVal_1 + if inInit==False :QTimer.singleShot(1, self.rendVisibleLigne) + + def etablitOrdre(self): + # --------------------- + i=0 + while(i +1 < len(self.listeAffichageWidget)): + self.listeAffichageWidget[i].setFocusPolicy(Qt.StrongFocus) + self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1]) + i=i+1 + + + def setValeurs(self): + # --------------------- + if self.editor.code == 'PSEN' : self.RBListePush() + valeurs=self.node.item.getValeur() + min,max=self.node.item.getMinMax() + if max == "**" or max > 8 : aCreer= 8 + else : aCreer=max + + if valeurs == () or valeurs == None : + for i in range(aCreer): self.ajoutLineEdit(inInit=True) + return + + for v in valeurs: + self.ajoutLineEdit(v,inInit=True) + + for i in range(len(valeurs),aCreer) : self.ajoutLineEdit(inInit=True) + + def rendVisibleLigne(self): + # ------------------------- + QApplication.processEvents() + self.estVisible.setFocus(True) + self.scrollArea.ensureWidgetVisible(self.estVisible,0,0) + + + def changeValeur(self,changeDePlace=False,oblige=True): + # ----------------------------------------------------- + #Pour compatibilite signature + #print ('dschangeValeur', self.indexDernierLabel) + + aLeFocus=self.focusWidget() + listeComplete=[] + libre=False + #print (self.indexDernierLabel) + for i in range(self.indexDernierLabel) : + nom=self.nomLine+str(i+1) + courant=getattr(self,nom) + valeurTuple=courant.valeur + if valeurTuple == None or valeurTuple== "" or valeurTuple==[]: + libre=True + continue + validite,comm,comm2,listeRetour= self.politique.ajoutTuple(valeurTuple,listeComplete) + if not validite: + if comm2 != '' : comm += " " + comm2 + self.editor.afficheInfos(comm+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red) + return + listeComplete.append(tuple(courant.valeur)) + #print ('listeComplete', listeComplete) + if listeComplete == [] : listeComplete=None + self.node.item.setValeur(listeComplete) + + if changeDePlace : return + min,max=self.node.item.getMinMax() + if self.indexDernierLabel == max : self.editor.afficheInfos(tr('Nb maximum de valeurs atteint')) + if self.indexDernierLabel < max and libre==False : + self.ajoutLineEdit() + self.listeAffichageWidget[-2].setFocus(True) + else : + try : + QApplication.processEvents() + w=self.listeAffichageWidget[self.listeAffichageWidget.index(aLeFocus)+1] + w.setFocus(True) + self.scrollArea.ensureWidgetVisible(w,0,0) + except : + pass + + def echange(self,num1,num2): + # on donne le focus au a celui ou on a bouge + # par convention le 2 + nomLineEdit=self.nomLine+str(num1) + courant=getattr(self,nomLineEdit) + valeurAGarder=courant.getValeur() + nomLineEdit2=self.nomLine+str(num2) + courant2=getattr(self,nomLineEdit2) + courant.setText(courant2.text()) + courant2.setText(valeurAGarder) + self.changeValeur(changeDePlace=True) + self.numLineEditEnCours=num2 + self.lineEditEnCours=courant2 + courant2.lineEditVal_1.setFocus(True) + + def ajoutNValeur(self,liste): + #---------------------------- + # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur + # car alors le temps de verification devient prohibitif reconstructu=ion et verification a + # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs if len(liste)%self.nbValeurs != 0 : - texte="Nombre incorrect de valeurs" - self.editor.afficheInfos(tr(texte),Qt.red) - return + texte="Nombre incorrect de valeurs" + self.editor.afficheInfos(tr(texte),Qt.red) + return i=0 longueur=len(liste)//self.nbValeurs @@ -428,15 +428,15 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): if self.objSimp.valeur == None : listeComplete=listeFormatee else : listeComplete =self.objSimp.valeur + listeFormatee - if len(listeComplete) > max : - texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint") - self.editor.afficheInfos(texte,Qt.red) - return + if len(listeComplete) > max : + texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint") + self.editor.afficheInfos(texte,Qt.red) + return validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete) - if not validite : - self.editor.afficheInfos(comm+comm2,Qt.red) - return + if not validite : + self.editor.afficheInfos(comm+comm2,Qt.red) + return # on calcule le dernier lineedit rempli avant de changer la valeur if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur) @@ -446,101 +446,100 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): while ( i < len(liste) ) : try : - t=tuple(liste[i:i+self.nbValeurs]) + t=tuple(liste[i:i+self.nbValeurs]) except: - t=tuple(liste[i:len(liste)]) + t=tuple(liste[i:len(liste)]) i=i+self.nbValeurs if indexDernierRempli < self.indexDernierLabel: - nomLEARemplir=self.nomLine+str(indexDernierRempli+1) - LEARemplir=getattr(self,nomLEARemplir) - for n in range(self.nbValeurs) : - nomLineEdit='lineEditVal_'+str(n+1) - lineEditVal=getattr(LEARemplir,nomLineEdit) - lineEditVal.setText(str(t[n])) - else : - # ne pas appeler ajoutLineEdit(t,False ) pb de boucle pb du a etablitOrdre et a listeWidgetAffichage qui bouge - self.indexDernierLabel=self.indexDernierLabel+1 - nomLineEdit=self.nomLine+str(self.indexDernierLabel) - - nomCustomTuple='TupleCustom'+str(self.nbValeurs) - laClasseDuTuple=globals()[nomCustomTuple] - nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) - - self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE) - setattr(self,nomLineEdit,nouveauLE) - nouveauLE.setValeur(t) - - for n in range(self.nbValeurs) : - nomLineEdit='lineEditVal_'+str(n+1) - lineEditVal=getattr(nouveauLE,nomLineEdit) - self.listeAffichageWidget.append(lineEditVal) + nomLEARemplir=self.nomLine+str(indexDernierRempli+1) + LEARemplir=getattr(self,nomLEARemplir) + for n in range(self.nbValeurs) : + nomLineEdit='lineEditVal_'+str(n+1) + lineEditVal=getattr(LEARemplir,nomLineEdit) + lineEditVal.setText(str(t[n])) + else : + # ne pas appeler ajoutLineEdit(t,False ) pb de boucle pb du a etablitOrdre et a listeWidgetAffichage qui bouge + self.indexDernierLabel=self.indexDernierLabel+1 + nomLineEdit=self.nomLine+str(self.indexDernierLabel) + + nomCustomTuple='TupleCustom'+str(self.nbValeurs) + laClasseDuTuple=globals()[nomCustomTuple] + nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) + + self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE) + setattr(self,nomLineEdit,nouveauLE) + nouveauLE.setValeur(t) + + for n in range(self.nbValeurs) : + nomLineEdit='lineEditVal_'+str(n+1) + lineEditVal=getattr(nouveauLE,nomLineEdit) + self.listeAffichageWidget.append(lineEditVal) indexDernierRempli = indexDernierRempli+1 self.etablitOrdre() - - - def RBListePush(self): - #---------------------- - # PN a rendre generique avec un truc tel prerempli - # pour l instant specifique PSEN - - if self.editor.code == 'VP' : return - if self.objSimp.valeur != None and self.objSimp.valeur != [] : return - if not hasattr(self.editor.readercata.cata,'sd_ligne') : self.editor.readercata.cata.sd_ligne=None - if not hasattr(self.editor.readercata.cata,'sd_generateur') : self.editor.readercata.cata.sd_generateur=None - if not hasattr(self.editor.readercata.cata,'sd_transfo') : self.editor.readercata.cata.sd_transfo=None - if not hasattr(self.editor.readercata.cata,'sd_charge') : self.editor.readercata.cata.sd_charge=None - if not hasattr(self.editor.readercata.cata,'sd_moteur') : self.editor.readercata.cata.sd_moteur=None - if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_ligne : - val=[] - if hasattr(self.objSimp.jdc,'LineDico'): - for k in self.objSimp.jdc.LineDico : - try : - valeur=self.objSimp.jdc.getConcept(k) - val.append((valeur,0)) - except : - pass - self.node.item.setValeur(val) - if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_generateur : - val=[] - if hasattr(self.objSimp.jdc,'MachineDico'): - for k in self.objSimp.jdc.MachineDico : - try : - valeur=self.objSimp.jdc.getConcept(k) - val.append((valeur,0)) - except : - pass - self.node.item.setValeur(val) - if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_transfo : - val=[] - if hasattr(self.objSimp.jdc,'TransfoDico'): - for k in self.objSimp.jdc.TransfoDico : - try : - valeur=self.objSimp.jdc.getConcept(k) - val.append((valeur,0)) - except : - pass - self.node.item.setValeur(val) - if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_charge : - val=[] - if hasattr(self.objSimp.jdc,'LoadDico'): - for k in self.objSimp.jdc.LoadDico : - try : - valeur=self.objSimp.jdc.getConcept(k) - val.append((valeur,0)) - except : - pass - self.node.item.setValeur(val) - if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_moteur : - val=[] - if hasattr(self.objSimp.jdc,'MotorDico'): - for k in self.objSimp.jdc.MotorDico : - try : - valeur=self.objSimp.jdc.getConcept(k) - val.append((valeur,0)) - except : - pass - self.node.item.setValeur(val) + + def RBListePush(self): + #---------------------- + # PN a rendre generique avec un truc tel prerempli + # pour l instant specifique PSEN + + if self.editor.code == 'VP' : return + if self.objSimp.valeur != None and self.objSimp.valeur != [] : return + if not hasattr(self.editor.readercata.cata,'sd_ligne') : self.editor.readercata.cata.sd_ligne=None + if not hasattr(self.editor.readercata.cata,'sd_generateur') : self.editor.readercata.cata.sd_generateur=None + if not hasattr(self.editor.readercata.cata,'sd_transfo') : self.editor.readercata.cata.sd_transfo=None + if not hasattr(self.editor.readercata.cata,'sd_charge') : self.editor.readercata.cata.sd_charge=None + if not hasattr(self.editor.readercata.cata,'sd_moteur') : self.editor.readercata.cata.sd_moteur=None + if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_ligne : + val=[] + if hasattr(self.objSimp.jdc,'LineDico'): + for k in self.objSimp.jdc.LineDico : + try : + valeur=self.objSimp.jdc.getConcept(k) + val.append((valeur,0)) + except : + pass + self.node.item.setValeur(val) + if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_generateur : + val=[] + if hasattr(self.objSimp.jdc,'MachineDico'): + for k in self.objSimp.jdc.MachineDico : + try : + valeur=self.objSimp.jdc.getConcept(k) + val.append((valeur,0)) + except : + pass + self.node.item.setValeur(val) + if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_transfo : + val=[] + if hasattr(self.objSimp.jdc,'TransfoDico'): + for k in self.objSimp.jdc.TransfoDico : + try : + valeur=self.objSimp.jdc.getConcept(k) + val.append((valeur,0)) + except : + pass + self.node.item.setValeur(val) + if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_charge : + val=[] + if hasattr(self.objSimp.jdc,'LoadDico'): + for k in self.objSimp.jdc.LoadDico : + try : + valeur=self.objSimp.jdc.getConcept(k) + val.append((valeur,0)) + except : + pass + self.node.item.setValeur(val) + if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_moteur : + val=[] + if hasattr(self.objSimp.jdc,'MotorDico'): + for k in self.objSimp.jdc.MotorDico : + try : + valeur=self.objSimp.jdc.getConcept(k) + val.append((valeur,0)) + except : + pass + self.node.item.setValeur(val) diff --git a/InterfaceQT4/monWidgetPlusieursTupleN.py b/InterfaceQT4/monWidgetPlusieursTupleN.py index 36dfee9f..aad22ac9 100644 --- a/InterfaceQT4/monWidgetPlusieursTupleN.py +++ b/InterfaceQT4/monWidgetPlusieursTupleN.py @@ -24,52 +24,51 @@ import types,os # Modules Eficas from .feuille import Feuille -from .monWidgetPlusieursTuple import MonWidgetPlusieursTuple -from desWidgetPlusieursTuple import Ui_WidgetPlusieursTuple +from .monWidgetPlusieursTuple import MonWidgetPlusieursTuple +from desWidgetPlusieursTuple import Ui_WidgetPlusieursTuple class MonWidgetPlusieursTuple2 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=2 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetPlusieursTuple3 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=3 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) class MonWidgetPlusieursTuple4 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=4 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) class MonWidgetPlusieursTuple5 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=5 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetPlusieursTuple6 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=6 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetPlusieursTuple7 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=7 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetPlusieursTuple8 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=8 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetPlusieursTuple9 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=9 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetPlusieursTuple10 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=10 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - diff --git a/InterfaceQT4/monWidgetRadioButton.py b/InterfaceQT4/monWidgetRadioButton.py index 569e56be..ed89bebd 100644 --- a/InterfaceQT4/monWidgetRadioButton.py +++ b/InterfaceQT4/monWidgetRadioButton.py @@ -21,7 +21,7 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str + from builtins import str except : pass import types,os @@ -34,13 +34,13 @@ from PyQt5.QtWidgets import QWidget from Extensions.i18n import tr from .feuille import Feuille -from desWidgetRadioButton import Ui_WidgetRadioButton +from desWidgetRadioButton import Ui_WidgetRadioButton from .politiquesValidation import PolitiqueUnique from .qtSaisie import SaisieValeur class MonWidgetRadioButtonCommun (Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.setMaxI() Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) @@ -52,101 +52,101 @@ class MonWidgetRadioButtonCommun (Feuille): self.maCommande.listeAffichageWidget.append(self.radioButton_1) - def setValeursApresBouton(self): - if self.objSimp.getValeur()==None : return - valeur=self.objSimp.getValeur() - if not(isinstance(valeur, str)) : valeur = str(valeur) - try : - self.dict_bouton[valeur].setChecked(True) - self.dict_bouton[valeur].setFocus(True) - except : - pass - - def determineChoix(self): - self.horizontalLayout.setAlignment(Qt.AlignLeft) - i=1 - j=len(self.maListeDeValeur) - if j > self.maxI : - print ("poumbadaboum") - return - while i < j+1 : - nomBouton="radioButton_"+str(i) - bouton=getattr(self,nomBouton) - valeur=self.maListeDeValeur[i-1] - if not(isinstance(valeur, str)) : valeur = str(valeur) - bouton.setText(tr(valeur)) - self.dict_bouton[valeur]=bouton - bouton.clicked.connect(self.boutonclic) - bouton.keyPressEvent=self.keyPressEvent - setattr(self,nomBouton,bouton) - i=i+1 - while i < self.maxI +1 : - nomBouton="radioButton_"+str(i) - bouton=getattr(self,nomBouton) - bouton.close() - i=i+1 - - def boutonclic(self): - for valeur in self.dict_bouton: - if self.dict_bouton[valeur].isChecked(): - SaisieValeur.LEvaleurPressed(self,valeur) - self.reaffiche() - - - def keyPressEvent(self, event): - if event.key() == Qt.Key_Right : self.selectSuivant(); return - if event.key() == Qt.Key_Left : self.selectPrecedent(); return - if event.key() == Qt.Key_Return or event.key() == Qt.Key_Space : self.checkFocused(); return - QWidget.keyPressEvent(self,event) - - def selectSuivant(self): - aLeFocus=self.focusWidget() - nom=aLeFocus.objectName()[12:] - i=int(nom)+1 - if i == len(self.maListeDeValeur) +1 : i=1 - nomBouton="radioButton_"+str(i) - courant=getattr(self,nomBouton) - courant.setFocus(True) - - def selectPrecedent(self): - aLeFocus=self.focusWidget() - nom=aLeFocus.objectName()[12:] - i=int(nom)-1 - if i == 0 : i= len(self.maListeDeValeur) - nomBouton="radioButton_"+str(i) - courant=getattr(self,nomBouton) - courant.setFocus(True) - - def checkFocused(self): - aLeFocus=self.focusWidget() - nom=aLeFocus.objectName()[12:] - i=int(nom) - if i > 0 and i <= len(self.maListeDeValeur): + def setValeursApresBouton(self): + if self.objSimp.getValeur()==None : return + valeur=self.objSimp.getValeur() + if not(isinstance(valeur, str)) : valeur = str(valeur) + try : + self.dict_bouton[valeur].setChecked(True) + self.dict_bouton[valeur].setFocus(True) + except : + pass + + def determineChoix(self): + self.horizontalLayout.setAlignment(Qt.AlignLeft) + i=1 + j=len(self.maListeDeValeur) + if j > self.maxI : + print ("poumbadaboum") + return + while i < j+1 : + nomBouton="radioButton_"+str(i) + bouton=getattr(self,nomBouton) + valeur=self.maListeDeValeur[i-1] + if not(isinstance(valeur, str)) : valeur = str(valeur) + bouton.setText(tr(valeur)) + self.dict_bouton[valeur]=bouton + bouton.clicked.connect(self.boutonclic) + bouton.keyPressEvent=self.keyPressEvent + setattr(self,nomBouton,bouton) + i=i+1 + while i < self.maxI +1 : + nomBouton="radioButton_"+str(i) + bouton=getattr(self,nomBouton) + bouton.close() + i=i+1 + + def boutonclic(self): + for valeur in self.dict_bouton: + if self.dict_bouton[valeur].isChecked(): + SaisieValeur.LEvaleurPressed(self,valeur) + self.reaffiche() + + + def keyPressEvent(self, event): + if event.key() == Qt.Key_Right : self.selectSuivant(); return + if event.key() == Qt.Key_Left : self.selectPrecedent(); return + if event.key() == Qt.Key_Return or event.key() == Qt.Key_Space : self.checkFocused(); return + QWidget.keyPressEvent(self,event) + + def selectSuivant(self): + aLeFocus=self.focusWidget() + nom=aLeFocus.objectName()[12:] + i=int(nom)+1 + if i == len(self.maListeDeValeur) +1 : i=1 nomBouton="radioButton_"+str(i) courant=getattr(self,nomBouton) - if not courant.isChecked(): - courant.setChecked(True) - self.boutonclic() + courant.setFocus(True) + + def selectPrecedent(self): + aLeFocus=self.focusWidget() + nom=aLeFocus.objectName()[12:] + i=int(nom)-1 + if i == 0 : i= len(self.maListeDeValeur) + nomBouton="radioButton_"+str(i) + courant=getattr(self,nomBouton) + courant.setFocus(True) + + def checkFocused(self): + aLeFocus=self.focusWidget() + nom=aLeFocus.objectName()[12:] + i=int(nom) + if i > 0 and i <= len(self.maListeDeValeur): + nomBouton="radioButton_"+str(i) + courant=getattr(self,nomBouton) + if not courant.isChecked(): + courant.setChecked(True) + self.boutonclic() class MonWidgetRadioButton (Ui_WidgetRadioButton,MonWidgetRadioButtonCommun): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - #print "MonWidgetRadioButton ", self + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + #print "MonWidgetRadioButton ", self if type(monSimpDef.into) ==types.FunctionType : self.maListeDeValeur=monSimpDef.into() else : self.maListeDeValeur=monSimpDef.into MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - - def setMaxI(self): + + def setMaxI(self): self.maxI=3 class MonWidgetRadioButtonSD (Ui_WidgetRadioButton,MonWidgetRadioButtonCommun): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): #print "dans le init de MonWidgetRadioButtonSD",self self.maListeDeValeur=node.item.getSdAvantDuBonType() MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - def setMaxI(self): + def setMaxI(self): self.maxI=3 diff --git a/InterfaceQT4/monWidgetSDCOInto.py b/InterfaceQT4/monWidgetSDCOInto.py index e5c6de93..dcccefdb 100644 --- a/InterfaceQT4/monWidgetSDCOInto.py +++ b/InterfaceQT4/monWidgetSDCOInto.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -31,7 +31,7 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr from .feuille import Feuille -from desWidgetSDCOInto import Ui_WidgetSDCOInto +from desWidgetSDCOInto import Ui_WidgetSDCOInto from .qtSaisie import SaisieSDCO from .politiquesValidation import PolitiqueUnique @@ -39,7 +39,7 @@ from .politiquesValidation import PolitiqueUnique class MonWidgetSDCOInto (Ui_WidgetSDCOInto,Feuille,SaisieSDCO): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): #print "MonWidgetSDCOInto init" Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) @@ -47,25 +47,25 @@ class MonWidgetSDCOInto (Ui_WidgetSDCOInto,Feuille,SaisieSDCO): self.maCommande.listeAffichageWidget.append(self.LESDCO) self.AAficher=self.LESDCO self.initLBSDCO() - + self.LESDCO.returnPressed.connect(self.LESDCOReturnPressed) self.LBSDCO.itemDoubleClicked.connect(self.LBSDCODoubleClicked ) - def LESDCOReturnPressed(self) : + def LESDCOReturnPressed(self) : self.LBSDCO.clearSelection() SaisieSDCO.LESDCOReturnPressed(self) - def initLBSDCO(self): + def initLBSDCO(self): listeNomsSDCO = self.node.item.getSdAvantDuBonType() for aSDCO in listeNomsSDCO: self.LBSDCO.insertItem( 1,aSDCO) valeur = self.node.item.getValeur() if valeur != "" and valeur != None : - self.LESDCO.setText(str(valeur.nom)) + self.LESDCO.setText(str(valeur.nom)) - def LBSDCODoubleClicked(self): + def LBSDCODoubleClicked(self): """ Teste si la valeur fournie par l'utilisateur est une valeur permise : - si oui, l'enregistre @@ -80,19 +80,17 @@ class MonWidgetSDCOInto (Ui_WidgetSDCOInto,Feuille,SaisieSDCO): valeur,validite=self.node.item.evalValeur(nomConcept) test = self.node.item.setValeur(valeur) if not test : - commentaire = tr("impossible d'evaluer : ") + valeur + commentaire = tr("impossible d'evaluer : ") + valeur elif validite: - commentaire = tr("Valeur du mot-clef enregistree") - if test_CO: - # il faut egalement propager la destruction de l'ancien concept - self.node.item.deleteValeurCo(valeur=anc_val) - self.node.item.object.etape.getType_produit(force=1) - self.node.item.object.etape.parent.resetContext() - self.LESDCO.setText(nomConcept) + commentaire = tr("Valeur du mot-clef enregistree") + if test_CO: + # il faut egalement propager la destruction de l'ancien concept + self.node.item.deleteValeurCo(valeur=anc_val) + self.node.item.object.etape.getType_produit(force=1) + self.node.item.object.etape.parent.resetContext() + self.LESDCO.setText(nomConcept) else : - commentaire = self.node.item.getCr() - self.reset_old_valeur(anc_val,mess=mess) - self.editor.afficheInfos(commentaire,Qt.red) + commentaire = self.node.item.getCr() + self.reset_old_valeur(anc_val,mess=mess) + self.editor.afficheInfos(commentaire,Qt.red) self.Commentaire.setText(tr(commentaire)) - - diff --git a/InterfaceQT4/monWidgetSimpBase.py b/InterfaceQT4/monWidgetSimpBase.py index 8a61db01..db0a9686 100644 --- a/InterfaceQT4/monWidgetSimpBase.py +++ b/InterfaceQT4/monWidgetSimpBase.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -31,14 +31,14 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr from .feuille import Feuille -from desWidgetSimpBase import Ui_WidgetSimpBase +from desWidgetSimpBase import Ui_WidgetSimpBase from .politiquesValidation import PolitiqueUnique from .qtSaisie import SaisieValeur class MonWidgetSimpBase (Ui_WidgetSimpBase,Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.parentQt.commandesLayout.insertWidget(-1,self,1) self.setFocusPolicy(Qt.StrongFocus) @@ -51,66 +51,64 @@ class MonWidgetSimpBase (Ui_WidgetSimpBase,Feuille): self.lineEditVal.focusOutEvent=self.monFocusOutEvent - def monFocusInEvent(self,event): - self.editor.nodeEnCours = self - QLineEdit.focusInEvent(self.lineEditVal,event) - - def monFocusOutEvent(self,event): - if self.oldValeurTexte != self.lineEditVal.text(): - self.oldValeurTexte= self.lineEditVal.text() - self.LEvaleurPressed() - QLineEdit.focusOutEvent(self.lineEditVal,event) - - - def setValeurs(self): - #print ("dans setValeurs") - self.politique=PolitiqueUnique(self.node,self.editor) - valeur=self.node.item.getValeur() - valeurTexte=self.politique.getValeurTexte(valeur) - chaine="" - - if valeurTexte != None : - from decimal import Decimal - if isinstance(valeurTexte,Decimal): - chaine=str(valeurTexte) - elif repr(valeurTexte.__class__).find("PARAMETRE") > 0: - chaine = repr(valeur) - else : - #PN ???? - #try : - # chaine=QString("").setNum(valeurTexte) - #except : - chaine=str(valeurTexte) - self.oldValeurTexte=chaine - self.lineEditVal.setText(chaine) - - - def finCommentaire(self): - mc = self.objSimp.definition - d_aides = { 'TXM' : tr(u"Une chaine de caracteres est attendue. "), - 'R' : tr(u"Un reel est attendu. "), - 'I' : tr(u"Un entier est attendu. "), - 'Matrice' : tr(u'Une Matrice est attendue. '), - 'Fichier' : tr(u'Un fichier est attendu. '), - 'FichierNoAbs' : tr(u'Un fichier est attendu. '), - 'Repertoire' : tr(u'Un repertoire est attendu. '), - 'FichierOuRepertoire' : tr(u'Un repertoire ou un fichier est attendu. '), - 'Heure' : tr(u'Heure sous la forme HH:MM'), - 'Date' : tr(u'Date sous la forme JJ/MM/AA')} - if mc.type[0] != type: - commentaire = d_aides.get(mc.type[0], tr("Type de base inconnu")) - else : commentaire="" - return commentaire - - - def LEvaleurPressed(self): - # pour les soucis d encoding - try : - if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return - except : pass - SaisieValeur.LEvaleurPressed(self) - #self.parentQt.donneFocus() - self.setValeurs() - self.reaffiche() - - + def monFocusInEvent(self,event): + self.editor.nodeEnCours = self + QLineEdit.focusInEvent(self.lineEditVal,event) + + def monFocusOutEvent(self,event): + if self.oldValeurTexte != self.lineEditVal.text(): + self.oldValeurTexte= self.lineEditVal.text() + self.LEvaleurPressed() + QLineEdit.focusOutEvent(self.lineEditVal,event) + + + def setValeurs(self): + #print ("dans setValeurs") + self.politique=PolitiqueUnique(self.node,self.editor) + valeur=self.node.item.getValeur() + valeurTexte=self.politique.getValeurTexte(valeur) + chaine="" + + if valeurTexte != None : + from decimal import Decimal + if isinstance(valeurTexte,Decimal): + chaine=str(valeurTexte) + elif repr(valeurTexte.__class__).find("PARAMETRE") > 0: + chaine = repr(valeur) + else : + #PN ???? + #try : + # chaine=QString("").setNum(valeurTexte) + #except : + chaine=str(valeurTexte) + self.oldValeurTexte=chaine + self.lineEditVal.setText(chaine) + + + def finCommentaire(self): + mc = self.objSimp.definition + d_aides = { 'TXM' : tr(u"Une chaine de caracteres est attendue. "), + 'R' : tr(u"Un reel est attendu. "), + 'I' : tr(u"Un entier est attendu. "), + 'Matrice' : tr(u'Une Matrice est attendue. '), + 'Fichier' : tr(u'Un fichier est attendu. '), + 'FichierNoAbs' : tr(u'Un fichier est attendu. '), + 'Repertoire' : tr(u'Un repertoire est attendu. '), + 'FichierOuRepertoire' : tr(u'Un repertoire ou un fichier est attendu. '), + 'Heure' : tr(u'Heure sous la forme HH:MM'), + 'Date' : tr(u'Date sous la forme JJ/MM/AA')} + if mc.type[0] != type: + commentaire = d_aides.get(mc.type[0], tr("Type de base inconnu")) + else : commentaire="" + return commentaire + + + def LEvaleurPressed(self): + # pour les soucis d encoding + try : + if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return + except : pass + SaisieValeur.LEvaleurPressed(self) + #self.parentQt.donneFocus() + self.setValeurs() + self.reaffiche() diff --git a/InterfaceQT4/monWidgetSimpBool.py b/InterfaceQT4/monWidgetSimpBool.py index 53a60983..601c0c42 100644 --- a/InterfaceQT4/monWidgetSimpBool.py +++ b/InterfaceQT4/monWidgetSimpBool.py @@ -26,14 +26,14 @@ from PyQt5.QtWidgets import QRadioButton from Extensions.i18n import tr from .feuille import Feuille -from desWidgetSimpBool import Ui_WidgetSimpBool +from desWidgetSimpBool import Ui_WidgetSimpBool from .politiquesValidation import PolitiqueUnique from .qtSaisie import SaisieValeur class MonWidgetSimpBool (Ui_WidgetSimpBool,Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) self.RBTrue.clicked.connect(self.boutonTrueClic) @@ -42,20 +42,19 @@ class MonWidgetSimpBool (Ui_WidgetSimpBool,Feuille): self.maCommande.listeAffichageWidget.append(self.RBTrue) self.AAfficher=self.RBTrue - def setValeurs(self): - valeur=self.node.item.getValeur() - if valeur == None : return - if valeur == True : self.RBTrue.setChecked(True) - if valeur == False : self.RBFalse.setChecked(True) - if self.monSimpDef.homo == 'constant' : - if valeur == True : self.RBFalse.setDisabled(True) - else : self.RBTrue.setDisabled(True) - - def boutonTrueClic(self): - SaisieValeur.LEvaleurPressed(self,True) - self.reaffiche() - - def boutonFalseClic(self): - SaisieValeur.LEvaleurPressed(self,False) - self.reaffiche() - + def setValeurs(self): + valeur=self.node.item.getValeur() + if valeur == None : return + if valeur == True : self.RBTrue.setChecked(True) + if valeur == False : self.RBFalse.setChecked(True) + if self.monSimpDef.homo == 'constant' : + if valeur == True : self.RBFalse.setDisabled(True) + else : self.RBTrue.setDisabled(True) + + def boutonTrueClic(self): + SaisieValeur.LEvaleurPressed(self,True) + self.reaffiche() + + def boutonFalseClic(self): + SaisieValeur.LEvaleurPressed(self,False) + self.reaffiche() diff --git a/InterfaceQT4/monWidgetSimpComplexe.py b/InterfaceQT4/monWidgetSimpComplexe.py index 5239a2d6..39ae5b76 100644 --- a/InterfaceQT4/monWidgetSimpComplexe.py +++ b/InterfaceQT4/monWidgetSimpComplexe.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os, locale @@ -33,14 +33,14 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr from .feuille import Feuille -from desWidgetSimpComplexe import Ui_WidgetSimpComplexe +from desWidgetSimpComplexe import Ui_WidgetSimpComplexe from .politiquesValidation import PolitiqueUnique from .qtSaisie import SaisieValeur class MonWidgetSimpComplexe (Ui_WidgetSimpComplexe,Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.parentQt.commandesLayout.insertWidget(-1,self) self.setFocusPolicy(Qt.StrongFocus) @@ -56,120 +56,118 @@ class MonWidgetSimpComplexe (Ui_WidgetSimpComplexe,Feuille): #self.maCommande.listeAffichageWidget.append(self.LEImag) - def setValeurs(self): - self.politique=PolitiqueUnique(self.node,self.editor) - valeur=self.node.item.getValeur() - if valeur == None or valeur == '' : return - if type(valeur) not in (list,tuple) : - self.LEComp.setText(str(valeur)) - else : - typ_cplx,x1,x2=valeur - self.LEReel.setText(str(x1)) - self.LEImag.setText(str(x2)) - if typ_cplx == "RI" : - self.RBRI.setChecked(1) - else : - self.RBMP.setChecked(1) - - def LECompRPressed(self) : + def setValeurs(self): + self.politique=PolitiqueUnique(self.node,self.editor) + valeur=self.node.item.getValeur() + if valeur == None or valeur == '' : return + if type(valeur) not in (list,tuple) : + self.LEComp.setText(str(valeur)) + else : + typ_cplx,x1,x2=valeur + self.LEReel.setText(str(x1)) + self.LEImag.setText(str(x2)) + if typ_cplx == "RI" : + self.RBRI.setChecked(1) + else : + self.RBMP.setChecked(1) + + def LECompRPressed(self) : self.LEReel.clear() self.LEImag.clear() commentaire=tr("expression valide") valeur = str(self.LEComp.text()) d={} try : - v=eval(valeur,d) + v=eval(valeur,d) except : - commentaire=tr("expression invalide") - self.editor.afficheInfos(commentaire,Qt.red) - return + commentaire=tr("expression invalide") + self.editor.afficheInfos(commentaire,Qt.red) + return try : - i=v.imag - self.editor.afficheInfos(commentaire) - self.valeurPressed() + i=v.imag + self.editor.afficheInfos(commentaire) + self.valeurPressed() except : - commentaire=tr("l expression n est pas de la forme a+bj") - self.editor.afficheInfos(commentaire,Qt.red) + commentaire=tr("l expression n est pas de la forme a+bj") + self.editor.afficheInfos(commentaire,Qt.red) - def LEReelRPressed(self): + def LEReelRPressed(self): self.LEComp.clear() commentaire=tr("expression valide") valeur = str(self.LEReel.text()) try : - a=locale.atof(valeur) - self.editor.afficheInfos(commentaire) + a=locale.atof(valeur) + self.editor.afficheInfos(commentaire) except : - commentaire=tr("expression invalide") - self.editor.afficheInfos(commentaire,Qt.red) + commentaire=tr("expression invalide") + self.editor.afficheInfos(commentaire,Qt.red) if self.LEImag.text()!="" : self.valeurPressed() - def LEImagRPressed(self): + def LEImagRPressed(self): self.LEComp.clear() commentaire=tr("expression valide") valeur = str(self.LEImag.text()) try : - a=locale.atof(valeur) - self.editor.afficheInfos(commentaire) + a=locale.atof(valeur) + self.editor.afficheInfos(commentaire) except : - commentaire=tr("expression invalide") - self.editor.afficheInfos(commentaire,Qt.red) + commentaire=tr("expression invalide") + self.editor.afficheInfos(commentaire,Qt.red) if self.LEReel.text()!="" : self.valeurPressed() - def finCommentaire(self): - commentaire="valeur de type complexe" - return commentaire + def finCommentaire(self): + commentaire="valeur de type complexe" + return commentaire - def getValeurComp(self): + def getValeurComp(self): commentaire=tr("expression valide") valeur = str(self.LEComp.text()) d={} try : - v=eval(valeur,d) + v=eval(valeur,d) except : - commentaire=tr("expression invalide") - self.editor.afficheInfos(commentaire,Qt.red) - return None + commentaire=tr("expression invalide") + self.editor.afficheInfos(commentaire,Qt.red) + return None try : - i=v.imag + i=v.imag except : - commentaire=tr("expression n est pas de la forme a+bj") - self.editor.afficheInfos(commentaire,Qt.red) - return None + commentaire=tr("expression n est pas de la forme a+bj") + self.editor.afficheInfos(commentaire,Qt.red) + return None return v - def valeurPressed(self): - if self.LEComp.text()== "" and (self.LEReel.text()=="" or self.LEImag.text()=="") : - return - if self.LEComp.text()== "" : valeur = self.getValeurRI() - else : - if self.LEReel.text() != "" or self.LEImag.text() != "" : - commentaire=tr("entrer une seule valeur SVP") - self.editor.afficheInfos(commentaire,Qt.red) - return - valeur= self.getValeurComp() - self.politique.recordValeur(valeur) - self.reaffiche() - self.parentQt.donneFocus() - - def getValeurRI(self): - """ - Retourne le complexe saisi par l'utilisateur - """ - l=[] - if (self.RBMP.isChecked() == 1 ) : - l.append("MP") - elif (self.RBRI.isChecked() == 1) : - l.append("RI") - else : - commentaire=tr("saisir le type de complexe") - self.editor.afficheInfos(commentaire,Qt.red) - return None - try : - l.append(locale.atof(str(self.LEReel.text()))) - l.append(locale.atof(str(self.LEImag.text()))) - except : - return None - return repr(tuple(l)) - - + def valeurPressed(self): + if self.LEComp.text()== "" and (self.LEReel.text()=="" or self.LEImag.text()=="") : + return + if self.LEComp.text()== "" : valeur = self.getValeurRI() + else : + if self.LEReel.text() != "" or self.LEImag.text() != "" : + commentaire=tr("entrer une seule valeur SVP") + self.editor.afficheInfos(commentaire,Qt.red) + return + valeur= self.getValeurComp() + self.politique.recordValeur(valeur) + self.reaffiche() + self.parentQt.donneFocus() + + def getValeurRI(self): + """ + Retourne le complexe saisi par l'utilisateur + """ + l=[] + if (self.RBMP.isChecked() == 1 ) : + l.append("MP") + elif (self.RBRI.isChecked() == 1) : + l.append("RI") + else : + commentaire=tr("saisir le type de complexe") + self.editor.afficheInfos(commentaire,Qt.red) + return None + try : + l.append(locale.atof(str(self.LEReel.text()))) + l.append(locale.atof(str(self.LEImag.text()))) + except : + return None + return repr(tuple(l)) diff --git a/InterfaceQT4/monWidgetSimpFichier.py b/InterfaceQT4/monWidgetSimpFichier.py index 80970e1c..fe93c4f2 100644 --- a/InterfaceQT4/monWidgetSimpFichier.py +++ b/InterfaceQT4/monWidgetSimpFichier.py @@ -26,19 +26,18 @@ from PyQt5.QtGui import QIcon from PyQt5.QtCore import QSize from Extensions.i18n import tr -from desWidgetSimpFichier import Ui_WidgetSimpFichier +from desWidgetSimpFichier import Ui_WidgetSimpFichier from .monWidgetSimpBase import MonWidgetSimpBase class MonWidgetSimpFichier (Ui_WidgetSimpFichier,MonWidgetSimpBase): # c est juste la taille des differents widgets de base qui change - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): MonWidgetSimpBase.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) if sys.platform[0:5]!="linux" : - repIcon=self.node.editor.appliEficas.repIcon - fichier=os.path.join(repIcon, 'file-explorer.png') - icon = QIcon(fichier) - self.BFichier.setIcon(icon) - self.BFichier.setIconSize(QSize(32, 32)) - + repIcon=self.node.editor.appliEficas.repIcon + fichier=os.path.join(repIcon, 'file-explorer.png') + icon = QIcon(fichier) + self.BFichier.setIcon(icon) + self.BFichier.setIconSize(QSize(32, 32)) diff --git a/InterfaceQT4/monWidgetSimpSalome.py b/InterfaceQT4/monWidgetSimpSalome.py index af575fd9..f05a764c 100644 --- a/InterfaceQT4/monWidgetSimpSalome.py +++ b/InterfaceQT4/monWidgetSimpSalome.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -33,14 +33,14 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr from .feuille import Feuille -from desWidgetSimpSalome import Ui_WidgetSimpSalome +from desWidgetSimpSalome import Ui_WidgetSimpSalome from .politiquesValidation import PolitiqueUnique from .qtSaisie import SaisieValeur class MonWidgetSimpSalome (Ui_WidgetSimpSalome,Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.parentQt.commandesLayout.insertWidget(-1,self,1) self.setFocusPolicy(Qt.StrongFocus) @@ -50,14 +50,14 @@ class MonWidgetSimpSalome (Ui_WidgetSimpSalome,Feuille): self.maCommande.listeAffichageWidget.append(self.lineEditVal) - def LEvaleurPressed(self): - if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return - SaisieValeur.LEvaleurPressed(self) - self.parentQt.donneFocus() - self.setValeurs() - self.reaffiche() + def LEvaleurPressed(self): + if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return + SaisieValeur.LEvaleurPressed(self) + self.parentQt.donneFocus() + self.setValeurs() + self.reaffiche() - def setValeurs(self): - valeur=self.node.item.getValeur() - if valeur != None : self.lineEditVal.setText(str(valeur)) + def setValeurs(self): + valeur=self.node.item.getValeur() + if valeur != None : self.lineEditVal.setText(str(valeur)) diff --git a/InterfaceQT4/monWidgetSimpTuple.py b/InterfaceQT4/monWidgetSimpTuple.py index 792df7d9..931ced8f 100644 --- a/InterfaceQT4/monWidgetSimpTuple.py +++ b/InterfaceQT4/monWidgetSimpTuple.py @@ -20,8 +20,8 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str - from builtins import range + from builtins import str + from builtins import range except : pass import types,os @@ -38,63 +38,61 @@ from InterfaceQT4.qtSaisie import SaisieValeur class MonWidgetSimpTuple(Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) self.parentQt.commandesLayout.insertWidget(-1,self) self.setFocusPolicy(Qt.StrongFocus) - def setValeurs(self): - valeur=self.node.item.getValeur() - for i in range(self.nbValeurs) : - nomLineEdit="lineEditVal"+str(i+1) - courant=getattr(self,nomLineEdit) - if valeur !=None: courant.setText(str(valeur[i])) - setattr(self,nomLineEdit,courant) - courant.returnPressed.connect(self.valeursPressed) + def setValeurs(self): + valeur=self.node.item.getValeur() + for i in range(self.nbValeurs) : + nomLineEdit="lineEditVal"+str(i+1) + courant=getattr(self,nomLineEdit) + if valeur !=None: courant.setText(str(valeur[i])) + setattr(self,nomLineEdit,courant) + courant.returnPressed.connect(self.valeursPressed) - def valeursPressed(self): - aLeFocus=self.focusWidget() - self.editor.afficheInfos("") - texteValeur="" - for i in range(self.nbValeurs) : - nomLineEdit="lineEditVal"+str(i+1) - courant=getattr(self,nomLineEdit) - if courant.text()=="" or courant.text()==None : - courant.setFocus(True) - return - s=str(courant.text()) - if hasattr(self.objSimp.definition.validators, 'typeDesTuples'): - if self.objSimp.definition.validators.typeDesTuples[i] == "R" : - if (s.find('.')== -1 and s.find('e')== -1 and s.find('E')==-1) : - s=s+'.0' - courant.setText(s) - if self.objSimp.definition.validators.typeDesTuples[i] == "TXM" : - if s[0]!='"' and s[0] != "'": - if s[-1]=="'": s="'"+s - else : s='"'+s - if s[-1]!='"' and s[-1] != "'": - if s[0]=="'": s=s+"'" - else : s=s+'"' - courant.setText(s) - texteValeur+=str(courant.text()) - #print (texteValeur) - if i+1 != self.nbValeurs : texteValeur+=',' - validite,commentaire=self.politique.recordValeur(texteValeur) - if not validite:self.editor.afficheInfos(commentaire+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red) + def valeursPressed(self): + aLeFocus=self.focusWidget() + self.editor.afficheInfos("") + texteValeur="" + for i in range(self.nbValeurs) : + nomLineEdit="lineEditVal"+str(i+1) + courant=getattr(self,nomLineEdit) + if courant.text()=="" or courant.text()==None : + courant.setFocus(True) + return + s=str(courant.text()) + if hasattr(self.objSimp.definition.validators, 'typeDesTuples'): + if self.objSimp.definition.validators.typeDesTuples[i] == "R" : + if (s.find('.')== -1 and s.find('e')== -1 and s.find('E')==-1) : + s=s+'.0' + courant.setText(s) + if self.objSimp.definition.validators.typeDesTuples[i] == "TXM" : + if s[0]!='"' and s[0] != "'": + if s[-1]=="'": s="'"+s + else : s='"'+s + if s[-1]!='"' and s[-1] != "'": + if s[0]=="'": s=s+"'" + else : s=s+'"' + courant.setText(s) + texteValeur+=str(courant.text()) + #print (texteValeur) + if i+1 != self.nbValeurs : texteValeur+=',' + validite,commentaire=self.politique.recordValeur(texteValeur) + if not validite:self.editor.afficheInfos(commentaire+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red) - # Passage au champ suivant - nom=aLeFocus.objectName()[11:] - try : - i=int(nom)+1 - except : + # Passage au champ suivant + nom=aLeFocus.objectName()[11:] try : - i=i+1 + i=int(nom)+1 except : - return - if i == self.nbValeurs +1 : i=1 - nomLineEdit="lineEditVal"+str(i) - courant=getattr(self,nomLineEdit) - courant.setFocus(True) - - + try : + i=i+1 + except : + return + if i == self.nbValeurs +1 : i=1 + nomLineEdit="lineEditVal"+str(i) + courant=getattr(self,nomLineEdit) + courant.setFocus(True) diff --git a/InterfaceQT4/monWidgetSimpTuple3.py b/InterfaceQT4/monWidgetSimpTuple3.py index e805c2b0..cc05928e 100644 --- a/InterfaceQT4/monWidgetSimpTuple3.py +++ b/InterfaceQT4/monWidgetSimpTuple3.py @@ -27,27 +27,26 @@ import types,os from Extensions.i18n import tr from .feuille import Feuille -from .monWidgetSimpTuple import MonWidgetSimpTuple -from desWidgetTuple3 import Ui_WidgetTuple3 +from .monWidgetSimpTuple import MonWidgetSimpTuple +from desWidgetTuple3 import Ui_WidgetTuple3 class MonWidgetSimpTuple3 (Ui_WidgetTuple3,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=3 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) if self.objSimp.isImmuable() : - self.lineEditVal1.setDisabled(True) - self.lineEditVal2.setDisabled(True) - self.lineEditVal3.setDisabled(True) - self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.lineEditVal3.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) - self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) - self.lineEditVal3.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal1.setDisabled(True) + self.lineEditVal2.setDisabled(True) + self.lineEditVal3.setDisabled(True) + self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.lineEditVal3.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal3.setToolTip(tr("Valeur non modifiable")) else : - self.maCommande.listeAffichageWidget.append(self.lineEditVal1) + self.maCommande.listeAffichageWidget.append(self.lineEditVal1) #self.maCommande.listeAffichageWidget.append(self.lineEditVal2) #self.maCommande.listeAffichageWidget.append(self.lineEditVal3) - diff --git a/InterfaceQT4/monWidgetSimpTupleN.py b/InterfaceQT4/monWidgetSimpTupleN.py index 10eb8092..b6385fab 100644 --- a/InterfaceQT4/monWidgetSimpTupleN.py +++ b/InterfaceQT4/monWidgetSimpTupleN.py @@ -27,77 +27,77 @@ import types,os from Extensions.i18n import tr from InterfaceQT4.feuille import Feuille -from InterfaceQT4.monWidgetSimpTuple import MonWidgetSimpTuple -from desWidgetTuple2 import Ui_WidgetTuple2 -from desWidgetTuple3 import Ui_WidgetTuple3 -from desWidgetTuple4 import Ui_WidgetTuple4 -from desWidgetTuple5 import Ui_WidgetTuple5 -from desWidgetTuple6 import Ui_WidgetTuple6 -from desWidgetTuple7 import Ui_WidgetTuple7 -from desWidgetTuple8 import Ui_WidgetTuple8 -from desWidgetTuple9 import Ui_WidgetTuple9 +from InterfaceQT4.monWidgetSimpTuple import MonWidgetSimpTuple +from desWidgetTuple2 import Ui_WidgetTuple2 +from desWidgetTuple3 import Ui_WidgetTuple3 +from desWidgetTuple4 import Ui_WidgetTuple4 +from desWidgetTuple5 import Ui_WidgetTuple5 +from desWidgetTuple6 import Ui_WidgetTuple6 +from desWidgetTuple7 import Ui_WidgetTuple7 +from desWidgetTuple8 import Ui_WidgetTuple8 +from desWidgetTuple9 import Ui_WidgetTuple9 from desWidgetTuple10 import Ui_WidgetTuple10 class MonWidgetSimpTuple2 (Ui_WidgetTuple2,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=2 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) if self.objSimp.isImmuable() : - self.lineEditVal1.setDisabled(True) - self.lineEditVal2.setDisabled(True) - self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) - self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal1.setDisabled(True) + self.lineEditVal2.setDisabled(True) + self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) else : - self.maCommande.listeAffichageWidget.append(self.lineEditVal1) - + self.maCommande.listeAffichageWidget.append(self.lineEditVal1) + class MonWidgetSimpTuple3 (Ui_WidgetTuple3,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=3 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) if self.objSimp.isImmuable() : - self.lineEditVal1.setDisabled(True) - self.lineEditVal2.setDisabled(True) - self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) - self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal1.setDisabled(True) + self.lineEditVal2.setDisabled(True) + self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) else : - self.maCommande.listeAffichageWidget.append(self.lineEditVal1) - + self.maCommande.listeAffichageWidget.append(self.lineEditVal1) + class MonWidgetSimpTuple4 (Ui_WidgetTuple4,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=4 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetSimpTuple5 (Ui_WidgetTuple5,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=5 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetSimpTuple6 (Ui_WidgetTuple6,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=6 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetSimpTuple7 (Ui_WidgetTuple7,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=7 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetSimpTuple8 (Ui_WidgetTuple8,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=8 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetSimpTuple9 (Ui_WidgetTuple9,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=9 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetSimpTuple10 (Ui_WidgetTuple10,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=10 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) diff --git a/InterfaceQT4/monWidgetSimpTxt.py b/InterfaceQT4/monWidgetSimpTxt.py index ca0cb7fe..8a7aa7fe 100644 --- a/InterfaceQT4/monWidgetSimpTxt.py +++ b/InterfaceQT4/monWidgetSimpTxt.py @@ -24,14 +24,12 @@ import types,os # Modules Eficas from Extensions.i18n import tr -from desWidgetSimpTxt import Ui_WidgetSimpTxt +from desWidgetSimpTxt import Ui_WidgetSimpTxt from .monWidgetSimpBase import MonWidgetSimpBase class MonWidgetSimpTxt (Ui_WidgetSimpTxt,MonWidgetSimpBase): # c est juste la taille des differents widgets de base qui change - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): MonWidgetSimpBase.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - - diff --git a/InterfaceQT4/monWidgetTableau.py b/InterfaceQT4/monWidgetTableau.py index 5a0bc061..60a99b02 100644 --- a/InterfaceQT4/monWidgetTableau.py +++ b/InterfaceQT4/monWidgetTableau.py @@ -27,7 +27,7 @@ from PyQt5.QtWidgets import QLabel, QSizePolicy, QSpacerItem from PyQt5.QtCore import QSize from InterfaceQT4.feuille import Feuille -from InterfaceQT4.monWidgetPlusieursTuple import MonWidgetPlusieursTuple +from InterfaceQT4.monWidgetPlusieursTuple import MonWidgetPlusieursTuple from desWidgetPlusieursTuple import Ui_WidgetPlusieursTuple from desWidgetTableau import Ui_WidgetTableau @@ -35,7 +35,7 @@ maxLen=3 class MonWidgetTableau (Ui_WidgetTableau,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=len(monSimpDef.homo) MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) @@ -43,7 +43,7 @@ class MonWidgetTableau (Ui_WidgetTableau,MonWidgetPlusieursTuple): sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - + for i in range(len(monSimpDef.homo)): nomCol='LECol'+str(i+1) objCol=QLabel(self) @@ -58,16 +58,15 @@ class MonWidgetTableau (Ui_WidgetTableau,MonWidgetPlusieursTuple): # monObjTitreCol=getattr(self,nomCol) # monObjTitreCol.setText(monSimpDef.homo[i]) - + # for i in range(maxLen-len(monSimpDef.homo)): # index=i+len(monSimpDef.homo)+1 # nomCol='LECol'+str(index) # monObjTitreCol=getattr(self,nomCol) # monObjTitreCol.close() - - self.resize(self.width(),1800) - def ajoutLineEdit(self,valeur=None,inInit=False): - hauteurAvant=(self.frame.height()) - MonWidgetPlusieursTuple.ajoutLineEdit(self,valeur,inInit) + self.resize(self.width(),1800) + def ajoutLineEdit(self,valeur=None,inInit=False): + hauteurAvant=(self.frame.height()) + MonWidgetPlusieursTuple.ajoutLineEdit(self,valeur,inInit) diff --git a/InterfaceQT4/monWidgetUniqueSDCO.py b/InterfaceQT4/monWidgetUniqueSDCO.py index 3d733331..d49a5400 100644 --- a/InterfaceQT4/monWidgetUniqueSDCO.py +++ b/InterfaceQT4/monWidgetUniqueSDCO.py @@ -27,7 +27,7 @@ from PyQt4.QtCore import * from Extensions.i18n import tr from .feuille import Feuille -from desWidgetUniqueSDCO import Ui_WidgetUniqueSDCO +from desWidgetUniqueSDCO import Ui_WidgetUniqueSDCO from .politiquesValidation import PolitiqueUnique from .qtSaisie import SaisieSDCO @@ -36,7 +36,7 @@ from .qtSaisie import SaisieSDCO class MonWidgetUniqueSDCO (Ui_WidgetUniqueSDCO,Feuille,SaisieSDCO): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): #print "dans MonWidgetSDCO" Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) @@ -47,4 +47,3 @@ class MonWidgetUniqueSDCO (Ui_WidgetUniqueSDCO,Feuille,SaisieSDCO): valeur = self.node.item.getValeur() if valeur != "" and valeur != None : self.LESDCO.setText(valeur.nom) self.connect(self.LESDCO,SIGNAL("returnPressed()"),self.LESDCOReturnPressed) - diff --git a/InterfaceQT4/monWidgetVide.py b/InterfaceQT4/monWidgetVide.py index 1fb2e720..9957d0eb 100644 --- a/InterfaceQT4/monWidgetVide.py +++ b/InterfaceQT4/monWidgetVide.py @@ -25,13 +25,13 @@ import types,os from Extensions.i18n import tr from .feuille import Feuille -from desWidgetVide import Ui_WidgetVide +from desWidgetVide import Ui_WidgetVide from InterfaceQT4.politiquesValidation import PolitiqueUnique class MonWidgetVide (Ui_WidgetVide,Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) t=self.node.item.object.definition.type[0].__name__ diff --git a/InterfaceQT4/politiquesValidation.py b/InterfaceQT4/politiquesValidation.py index 83c2dab7..1d0dac57 100644 --- a/InterfaceQT4/politiquesValidation.py +++ b/InterfaceQT4/politiquesValidation.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import range + from builtins import range except : pass import types @@ -31,266 +31,264 @@ from Extensions.i18n import tr #------------------ class Validation(object) : #------------------ - def __init__(self,node,parent) : - self.node=node - self.parent=parent - + def __init__(self,node,parent) : + self.node=node + self.parent=parent - def testeUneValeur(self,valeurentree): - commentaire = None - #import traceback - #traceback.print_stack() - valeur,validite=self.node.item.evalValeur(valeurentree) - if not validite : - commentaire = "impossible d'evaluer : %s " %repr(valeurentree) - return valeur,validite,commentaire - if self.node.item.waitTxm() and not( type(valeur) == str) : valeur=str(valeur) - testtype,commentaire = self.node.item.object.verifType(valeur) - if not testtype : - return valeur,0,commentaire + def testeUneValeur(self,valeurentree): + commentaire = None + #import traceback + #traceback.print_stack() + valeur,validite=self.node.item.evalValeur(valeurentree) + if not validite : + commentaire = "impossible d'evaluer : %s " %repr(valeurentree) + return valeur,validite,commentaire + if self.node.item.waitTxm() and not( type(valeur) == str) : valeur=str(valeur) - valide=self.node.item.valideItem(valeur) - if type(valide) == tuple: - validite,commentaire=valide - else : - validite=valide - commentaire=" " + testtype,commentaire = self.node.item.object.verifType(valeur) + if not testtype : + return valeur,0,commentaire - if not validite and commentaire is None: - commentaire = "impossible d'evaluer : %s " %repr(valeurentree) - #print ('ds testeUneValeur', valeur, validite, commentaire) - return valeur, validite, commentaire + valide=self.node.item.valideItem(valeur) + if type(valide) == tuple: + validite,commentaire=valide + else : + validite=valide + commentaire=" " + + if not validite and commentaire is None: + commentaire = "impossible d'evaluer : %s " %repr(valeurentree) + #print ('ds testeUneValeur', valeur, validite, commentaire) + return valeur, validite, commentaire # ---------------------------------------------------------------------------------------- # Methodes utilisees pour la manipulation des items en notation scientifique # a mettre au point # ---------------------------------------------------------------------------------------- - def setValeurTexte(self,texteValeur) : - try : - if "R" in self.node.item.object.definition.type: - if texteValeur[0] != "'": - clef=eval(texteValeur) - if str(clef) != str(texteValeur) : - self.node.item.object.initModif() - clefobj=self.node.item.object.getNomConcept() - if not clefobj in self.parent.appliEficas.dict_reels: - self.parent.appliEficas.dict_reels[clefobj] = {} - self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur - self.parent.appliEficas.dict_reels[clefobj] - if clefobj=="" : - if not self.node.item.object.etape in self.parent.appliEficas.dict_reels : - self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {} - self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur - self.node.item.object.finModif() - except: + def setValeurTexte(self,texteValeur) : + try : + if "R" in self.node.item.object.definition.type: + if texteValeur[0] != "'": + clef=eval(texteValeur) + if str(clef) != str(texteValeur) : + self.node.item.object.initModif() + clefobj=self.node.item.object.getNomConcept() + if not clefobj in self.parent.appliEficas.dict_reels: + self.parent.appliEficas.dict_reels[clefobj] = {} + self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur + self.parent.appliEficas.dict_reels[clefobj] + if clefobj=="" : + if not self.node.item.object.etape in self.parent.appliEficas.dict_reels : + self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {} + self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur + self.node.item.object.finModif() + except: pass - def getValeurTexte(self,valeur) : - valeurTexte=valeur - if valeur == None : return valeur - from decimal import Decimal - if isinstance(valeur,Decimal) : - if self.node.waitTxm() and not self.isParam(valeur) : return "'"+str(valeur)+"'" - else : return(valeur) - if "R" in self.node.item.object.definition.type: - clefobj=self.node.item.object.getNomConcept() - if clefobj in self.parent.appliEficas.dict_reels: - if valeur in self.parent.appliEficas.dict_reels[clefobj] : - valeurTexte=self.parent.appliEficas.dict_reels[clefobj][valeur] - else : - if str(valeur).find('.') == -1 and str(valeur).find('e') == -1 and str(valeur).find('E'): - # aucun '.' n'a ete trouve dans valeur --> on en rajoute un a la fin - if (self.isParam(valeur)): - return valeur - else: - try : + def getValeurTexte(self,valeur) : + valeurTexte=valeur + if valeur == None : return valeur + from decimal import Decimal + if isinstance(valeur,Decimal) : + if self.node.waitTxm() and not self.isParam(valeur) : return "'"+str(valeur)+"'" + else : return(valeur) + if "R" in self.node.item.object.definition.type: + clefobj=self.node.item.object.getNomConcept() + if clefobj in self.parent.appliEficas.dict_reels: + if valeur in self.parent.appliEficas.dict_reels[clefobj] : + valeurTexte=self.parent.appliEficas.dict_reels[clefobj][valeur] + else : + if str(valeur).find('.') == -1 and str(valeur).find('e') == -1 and str(valeur).find('E'): + # aucun '.' n'a ete trouve dans valeur --> on en rajoute un a la fin + if (self.isParam(valeur)): + return valeur + else: + try : val2=eval(str(valeur)+'.') - except : + except : pass - return valeurTexte + return valeurTexte - def isParam(self,valeur) : - for param in self.node.item.jdc.params: - if ((repr(param) == repr(valeur)) or (str(param)==str(valeur))): - return 1 - return 0 + def isParam(self,valeur) : + for param in self.node.item.jdc.params: + if ((repr(param) == repr(valeur)) or (str(param)==str(valeur))): + return 1 + return 0 - def ajoutDsDictReel(self,texteValeur): - # le try except est necessaire pour saisir les parametres - # on enleve l erreur de saisie 00 pour 0 - if str(texteValeur)== '00' : return - try : + def ajoutDsDictReel(self,texteValeur): + # le try except est necessaire pour saisir les parametres + # on enleve l erreur de saisie 00 pour 0 + if str(texteValeur)== '00' : return + try : if "R" in self.node.item.object.definition.type: if str(texteValeur)[0] != "'": - clef=eval(texteValeur) - if str(clef) != str(texteValeur) : - clefobj=self.node.item.object.getNomConcept() - if not clefobj in self.parent.appliEficas : - self.parent.appliEficas.dict_reels[clefobj] = {} - self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur - if clefobj=="" : - if not self.node.item.object.etape in self.parent.appliEficas.dict_reels : - self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {} - self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur - - except: - pass + clef=eval(texteValeur) + if str(clef) != str(texteValeur) : + clefobj=self.node.item.object.getNomConcept() + if not clefobj in self.parent.appliEficas : + self.parent.appliEficas.dict_reels[clefobj] = {} + self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur + if clefobj=="" : + if not self.node.item.object.etape in self.parent.appliEficas.dict_reels : + self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {} + self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur - def ajoutDsDictReelEtape(self): - try: - if self.node.item.object in self.parent.appliEficas.dict_reels: - self.parent.appliEficas.dict_reels[self.node.item.sdnom]=self.parent.appliEficas.dict_reels[self.node.item.object] - del self.parent.appliEficas.dict_reels[self.node.item.object] - except : - pass + except: + pass + + def ajoutDsDictReelEtape(self): + try: + if self.node.item.object in self.parent.appliEficas.dict_reels: + self.parent.appliEficas.dict_reels[self.node.item.sdnom]=self.parent.appliEficas.dict_reels[self.node.item.object] + del self.parent.appliEficas.dict_reels[self.node.item.object] + except : + pass #------------------------------------ class PolitiqueUnique(Validation) : #------------------------------------ - """ - classe servant pour les entrees ne demandant qu un mot clef - """ - def __init__(self,node,parent): + """ + classe servant pour les entrees ne demandant qu un mot clef + """ + def __init__(self,node,parent): Validation.__init__(self,node,parent) - def recordValeur(self,valeurentree): - if self.parent.modified == 'n' : self.parent.initModif() - ancienneVal = self.node.item.getValeur() - valeur,validite,commentaire =self.testeUneValeur(valeurentree) - if validite and ('R' in self.node.item.object.definition.type) and not(isinstance(valeur,PARAMETRE)) : + def recordValeur(self,valeurentree): + if self.parent.modified == 'n' : self.parent.initModif() + ancienneVal = self.node.item.getValeur() + valeur,validite,commentaire =self.testeUneValeur(valeurentree) + if validite and ('R' in self.node.item.object.definition.type) and not(isinstance(valeur,PARAMETRE)) : s=valeurentree if (s.find('.')== -1 and s.find('e')== -1 and s.find('E')==-1) : s=s+'.' valeur,validite,commentaire =self.testeUneValeur(s) - if validite : + if validite : validite=self.node.item.setValeur(valeur) if self.node.item.isValid(): - commentaire = tr("Valeur du mot-cle enregistree") - #commentaire = "Valeur du mot-cle enregistree" - self.setValeurTexte(str(valeurentree)) + commentaire = tr("Valeur du mot-cle enregistree") + #commentaire = "Valeur du mot-cle enregistree" + self.setValeurTexte(str(valeurentree)) else: - cr = self.node.item.getCr() - commentaire = tr("Valeur du mot-cle non autorisee ")+cr.getMessFatal() - self.node.item.setValeur(ancienneVal) - return validite, commentaire + cr = self.node.item.getCr() + commentaire = tr("Valeur du mot-cle non autorisee ")+cr.getMessFatal() + self.node.item.setValeur(ancienneVal) + return validite, commentaire + - #-------------------------------------- class PolitiquePlusieurs(Validation): #-------------------------------------- - """ - classe servant pour les entrees ne demandant qu un mot clef - """ - def __init__(self,node,parent) : - #print "ds PolitiquePlusieurs" - self.node=node - self.parent=parent - #print self.node - #print self.parent + """ + classe servant pour les entrees ne demandant qu un mot clef + """ + def __init__(self,node,parent) : + #print "ds PolitiquePlusieurs" + self.node=node + self.parent=parent + #print self.node + #print self.parent - def ajoutValeurs(self,listevaleur,index,listecourante): - listeRetour=[] - commentaire="Nouvelle valeur acceptee" - commentaire2="" - valide=1 - if listevaleur==None: return - if listevaleur=="": return - if not( type(listevaleur) in (list,tuple)) : + def ajoutValeurs(self,listevaleur,index,listecourante): + listeRetour=[] + commentaire="Nouvelle valeur acceptee" + commentaire2="" + valide=1 + if listevaleur==None: return + if listevaleur=="": return + if not( type(listevaleur) in (list,tuple)) : listevaleur=tuple(listevaleur) - # on verifie que la cardinalite max n a pas ete atteinte - min,max = self.node.item.getMinMax() - if len(listecourante) + len(listevaleur) > max : + # on verifie que la cardinalite max n a pas ete atteinte + min,max = self.node.item.getMinMax() + if len(listecourante) + len(listevaleur) > max : commentaire="La liste atteint le nombre maximum d'elements : "+ str(max) +" ,ajout refuse" return False,commentaire,commentaire2,listeRetour - for valeur in listevaleur : - # On teste le type de la valeur - valeurScientifique=valeur - valide=self.node.item.valideItem(valeur) - if not valide : + for valeur in listevaleur : + # On teste le type de la valeur + valeurScientifique=valeur + valide=self.node.item.valideItem(valeur) + if not valide : try : - valeur,valide=self.node.item.evalValeur(valeur) - valide,commentaire2 = self.node.item.object.verifType(valeur) + valeur,valide=self.node.item.evalValeur(valeur) + valide,commentaire2 = self.node.item.object.verifType(valeur) except : - #return testtype,commentaire,"",listeRetour - pass - if not valide: + #return testtype,commentaire,"",listeRetour + pass + if not valide: if commentaire.find("On attend un chaine") > 1 : - commentaire="Valeur "+str(valeur)+ " incorrecte : ajout a la liste refuse: On attend une chaine de caracteres < 8" + commentaire="Valeur "+str(valeur)+ " incorrecte : ajout a la liste refuse: On attend une chaine de caracteres < 8" else : - commentaire="Valeur "+str(valeur)+ " incorrecte : ajout a la liste refuse" + commentaire="Valeur "+str(valeur)+ " incorrecte : ajout a la liste refuse" if commentaire2== "" :commentaire2=self.node.item.infoErreurItem() return valide,commentaire,commentaire2,listeRetour - # On valide la liste obtenue - encorevalide=self.node.item.valideListePartielle(valeur,listecourante) - if not encorevalide : + # On valide la liste obtenue + encorevalide=self.node.item.valideListePartielle(valeur,listecourante) + if not encorevalide : commentaire2=self.node.item.infoErreurListe() # On traite le cas ou la liste n est pas valide pour un pb de cardinalite min,max = self.node.item.getMinMax() if len(listecourante) + 1 >= max : - commentaire="La liste atteint le nombre maximum d'elements : "+ str(max) +" ,ajout refuse" - return valide,commentaire,commentaire2,listeRetour + commentaire="La liste atteint le nombre maximum d'elements : "+ str(max) +" ,ajout refuse" + return valide,commentaire,commentaire2,listeRetour if len(listecourante) + 1 > min : - commentaire="" - return valide,commentaire,commentaire2,listeRetour - # On ajoute la valeur testee a la liste courante et a la liste acceptee - self.ajoutDsDictReel(valeurScientifique) - listecourante.insert(index,valeur) - index=index+1 - listeRetour.append(valeur) + commentaire="" + return valide,commentaire,commentaire2,listeRetour + # On ajoute la valeur testee a la liste courante et a la liste acceptee + self.ajoutDsDictReel(valeurScientifique) + listecourante.insert(index,valeur) + index=index+1 + listeRetour.append(valeur) - return valide,commentaire,commentaire2,listeRetour + return valide,commentaire,commentaire2,listeRetour - def ajoutTuple(self,valeurTuple,listecourante): - listeRetour=[] - commentaire="Nouvelle valeur acceptee" - commentaire2="" - valide=1 - if valeurTuple==None: return - if valeurTuple==['']: return - # On teste le type de la valeur - valide=self.node.item.valideItem(valeurTuple) - if not valide : + def ajoutTuple(self,valeurTuple,listecourante): + listeRetour=[] + commentaire="Nouvelle valeur acceptee" + commentaire2="" + valide=1 + if valeurTuple==None: return + if valeurTuple==['']: return + # On teste le type de la valeur + valide=self.node.item.valideItem(valeurTuple) + if not valide : try : valeur,valide=self.node.item.evalValeur(valeurTuple) valide = self.node.item.valideItem(valeur) except : pass - if not valide: + if not valide: commentaire="Valeur "+str(valeurTuple)+ " incorrecte : ajout a la liste refuse" commentaire2=self.node.item.infoErreurItem() return valide,commentaire,commentaire2,listeRetour - # On valide la liste obtenue - encorevalide=self.node.item.valideListePartielle(valeurTuple,listecourante) - if not encorevalide : + # On valide la liste obtenue + encorevalide=self.node.item.valideListePartielle(valeurTuple,listecourante) + if not encorevalide : commentaire2=self.node.item.infoErreurListe() return valide,commentaire,commentaire2,listeRetour - listeRetour.append(valeurTuple) - return valide,commentaire,commentaire2,listeRetour + listeRetour.append(valeurTuple) + return valide,commentaire,commentaire2,listeRetour - def ajoutNTuple(self,liste): - commentaire="Nouvelles valeurs acceptee" - commentaire2="" - valide=self.node.item.valideListePartielle(None,liste) - print ('uuuuuuuuuuu',valide) - if not valide : + def ajoutNTuple(self,liste): + commentaire="Nouvelles valeurs acceptee" + commentaire2="" + valide=self.node.item.valideListePartielle(None,liste) + print ('uuuuuuuuuuu',valide) + if not valide : commentaire2=self.node.item.infoErreurListe() - return valide,commentaire,commentaire2 + return valide,commentaire,commentaire2 - def recordValeur(self,liste,dejaValide=True): - ancienneVal = self.node.item.getValeur() - validite=self.node.item.setValeur(liste) - if validite : self.node.item.initModif() - if self.node.item.isValid(): + def recordValeur(self,liste,dejaValide=True): + ancienneVal = self.node.item.getValeur() + validite=self.node.item.setValeur(liste) + if validite : self.node.item.initModif() + if self.node.item.isValid(): commentaire = tr("Valeur du mot-cle enregistree") - else: + else: cr = self.node.item.getCr() commentaire = tr("Valeur du mot-cle non autorisee ")+cr.getMessFatal() self.node.item.setValeur(ancienneVal) - return validite, commentaire - - + return validite, commentaire diff --git a/InterfaceQT4/qtEficas.py b/InterfaceQT4/qtEficas.py index 3347475e..53fd5355 100755 --- a/InterfaceQT4/qtEficas.py +++ b/InterfaceQT4/qtEficas.py @@ -22,7 +22,7 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str + from builtins import str except : pass import os, sys @@ -51,9 +51,9 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): """ Constructor """ - if ssIhm == True : - print ('mauvaise utilisation de la classe Appli. Utiliser AppliSsIm SVP') - exit() + if ssIhm == True : + print ('mauvaise utilisation de la classe Appli. Utiliser AppliSsIm SVP') + exit() AppliSsIhm.__init__(self,code,salome,parent,multi=multi,langue=langue,ssIhm=True, labelCode=labelCode) QMainWindow.__init__(self,parent) @@ -65,21 +65,21 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): if self.multi == False : - self.definitCode(code,None) - if code==None: return + self.definitCode(code,None) + if code==None: return else : - self.definitCode(code,None) - if code==None: return - print ('il faut trouver le chemin du code') - return + self.definitCode(code,None) + if code==None: return + print ('il faut trouver le chemin du code') + return self.suiteTelemac=False if hasattr (self, 'maConfiguration') : - if self.maConfiguration.demandeLangue : - from InterfaceQT4.monChoixLangue import MonChoixLangue - widgetLangue = MonChoixLangue(self) - ret=widgetLangue.exec_() - self.suiteTelemac=self.maConfiguration.suiteTelemac + if self.maConfiguration.demandeLangue : + from InterfaceQT4.monChoixLangue import MonChoixLangue + widgetLangue = MonChoixLangue(self) + ret=widgetLangue.exec_() + self.suiteTelemac=self.maConfiguration.suiteTelemac if not self.salome and hasattr (self, 'maConfiguration') and hasattr(self.maConfiguration,'lang') : self.langue=self.maConfiguration.lang @@ -92,22 +92,22 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): #else : self.parentCentralWidget = None if not self.salome : - if hasattr (self, 'maConfiguration') and hasattr(self.maConfiguration,'taille') : self.taille=self.maConfiguration.taille - else : self.taille=1700 + if hasattr (self, 'maConfiguration') and hasattr(self.maConfiguration,'taille') : self.taille=self.maConfiguration.taille + else : self.taille=1700 - self.resize(self.taille,self.height()) + self.resize(self.taille,self.height()) icon = QIcon(self.repIcon+"/parametres.png") self.actionParametres.setIcon(icon) - if hasattr (self, 'maConfiguration') and self.maConfiguration.boutonDsMenuBar : - self.frameEntete.setMaximumSize(QSize(16777215,100)) - self.frameEntete.setMinimumSize(QSize(0,100)) - if hasattr (self, 'maConfiguration') and self.maConfiguration.enleverActionStructures : + if hasattr (self, 'maConfiguration') and self.maConfiguration.boutonDsMenuBar : + self.frameEntete.setMaximumSize(QSize(16777215,100)) + self.frameEntete.setMinimumSize(QSize(0,100)) + if hasattr (self, 'maConfiguration') and self.maConfiguration.enleverActionStructures : self.enleverActionsStructures() - if hasattr (self, 'maConfiguration') and self.maConfiguration.enleverParametres : + if hasattr (self, 'maConfiguration') and self.maConfiguration.enleverParametres : self.enleverParametres() - if hasattr (self, 'maConfiguration') and self.maConfiguration.enleverSupprimer : + if hasattr (self, 'maConfiguration') and self.maConfiguration.enleverSupprimer : self.enleverSupprimer() @@ -122,15 +122,15 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.blEnteteGlob.insertLayout(0,self.blEntete) - - if hasattr (self, 'maConfiguration') and self.maConfiguration.boutonDsMenuBar : + + if hasattr (self, 'maConfiguration') and self.maConfiguration.boutonDsMenuBar : self.blEnteteCommmande = QBoxLayout(0) self.blEnteteCommmande.insertWidget(0,self.toolBarCommande) self.toolBarCommande.setIconSize(QSize(96,96)) self.blEnteteGlob.insertLayout(-1,self.blEnteteCommmande) else : self.toolBarCommande.close() - + if hasattr (self, 'maConfiguration') and self.maConfiguration.closeEntete==True and self.salome: self.closeEntete() @@ -153,11 +153,11 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): try : #if 1 : #print ('attention try devient if 1') - self.ouvreFichiers() + self.ouvreFichiers() except EficasException as exc: #except: - print ("je suis dans le except") - if self.salome == 0 : exit() + print ("je suis dans le except") + if self.salome == 0 : exit() #self.adjustSize() @@ -170,11 +170,11 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.code=code self.ssCode=ssCode if self.code==None : - self.cleanPath() - from InterfaceQT4.monChoixCode import MonChoixCode - widgetChoix = MonChoixCode(self) - ret=widgetChoix.exec_() - #widgetChoix.show() + self.cleanPath() + from InterfaceQT4.monChoixCode import MonChoixCode + widgetChoix = MonChoixCode(self) + ret=widgetChoix.exec_() + #widgetChoix.show() if self.code == None:return # pour le cancel de la fenetre choix code AppliSsIhm.definitCode(self,self.code,ssCode) @@ -191,20 +191,20 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.initRecents() self.initAides() for intituleMenu in ("menuTraduction","menuOptions","menuMesh","menuExecution","menuN1"): - if hasattr(self,intituleMenu): - menu=getattr(self,intituleMenu) - menu.setAttribute(Qt.WA_DeleteOnClose) - menu.close() - delattr(self,intituleMenu) + if hasattr(self,intituleMenu): + menu=getattr(self,intituleMenu) + menu.setAttribute(Qt.WA_DeleteOnClose) + menu.close() + delattr(self,intituleMenu) for intituleAction in ("actionExecution","actionSaveRun"): if hasattr(self,intituleAction): - action=getattr(self,intituleAction) - self.toolBar.removeAction(action) + action=getattr(self,intituleAction) + self.toolBar.removeAction(action) if self.code.upper() in Appli.__dict__: - Appli.__dict__[self.code.upper()](self,) + Appli.__dict__[self.code.upper()](self,) if self.suiteTelemac : self.lookSuiteTelemac() self.metMenuAJourUtilisateurs() - if hasattr (self, 'maConfiguration') and self.maConfiguration.ajoutExecution : + if hasattr (self, 'maConfiguration') and self.maConfiguration.ajoutExecution : self.ajoutExecution() def initAides(self): @@ -217,10 +217,10 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.fileDoc=os.path.join(self.docPath,fileName) self.actionCode.setText(tr("Aide specifique ")+str(self.code)) if not os.path.isfile(self.fileDoc) : - self.fileDoc="" - self.docPath="" - self.actionCode.setEnabled(False) - return + self.fileDoc="" + self.docPath="" + self.actionCode.setEnabled(False) + return self.actionCode.setEnabled(True) self.menuAide.addAction(self.actionCode) @@ -270,14 +270,14 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.menuExecution = self.menubar.addMenu(tr("&Run")) self.actionExecution = QAction(self) if sys.platform[0:5]=="linux": - icon6 = QIcon(self.repIcon+"/roue.png") - self.actionExecution.setIcon(icon6) + icon6 = QIcon(self.repIcon+"/roue.png") + self.actionExecution.setIcon(icon6) else : - self.actionExecution.setText(tr("Run")) + self.actionExecution.setText(tr("Run")) self.actionExecution.setObjectName("actionExecution") self.menuExecution.addAction(self.actionExecution) if not(self.actionExecution in self.toolBar.actions()): - self.toolBar.addAction(self.actionExecution) + self.toolBar.addAction(self.actionExecution) self.actionExecution.setText(tr("Run")) self.actionExecution.triggered.connect(self.run) @@ -288,7 +288,7 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.actionSaveRun.setObjectName("actionSaveRun") self.menuExecution.addAction(self.actionSaveRun) if not(self.actionSaveRun in self.toolBar.actions()): - self.toolBar.addAction(self.actionSaveRun) + self.toolBar.addAction(self.actionSaveRun) self.actionSaveRun.setText(tr("Save Run")) self.actionSaveRun.triggered.connect(self.saveRun) @@ -446,9 +446,9 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): def ChercheGrpMesh(self): Msg,listeGroup=self.ChercheGrpMeshInSalome() if Msg == None : - self.viewmanager.handleAjoutGroup(listeGroup) + self.viewmanager.handleAjoutGroup(listeGroup) else : - print ("il faut gerer les erreurs") + print ("il faut gerer les erreurs") def ChercheGrpMaille(self): # Normalement la variable self.salome permet de savoir si on est ou non dans Salome @@ -458,9 +458,9 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): except: raise ValueError('Salome non ouvert') if Msg == None : - self.viewmanager.handleAjoutGroup(listeGroup) + self.viewmanager.handleAjoutGroup(listeGroup) else : - print ("il faut gerer les erreurs") + print ("il faut gerer les erreurs") def ChercheGrp(self): @@ -650,57 +650,57 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): # Mise a jour du menu des fichiers recemment ouverts from Editeur import listePatrons if not(self.code in listePatrons.sous_menus) : - if hasattr(self,"menuPatrons"): - self.menuPatrons.setAttribute(Qt.WA_DeleteOnClose) - self.menuPatrons.close() - delattr(self,"menuPatrons") - return + if hasattr(self,"menuPatrons"): + self.menuPatrons.setAttribute(Qt.WA_DeleteOnClose) + self.menuPatrons.close() + delattr(self,"menuPatrons") + return if (not hasattr(self,"menuPatrons")): - self.menuPatrons = QMenu(self.menubar) - self.menuPatrons.setObjectName("menuPatrons") - self.menubar.addAction(self.menuPatrons.menuAction()) - self.menuPatrons.setTitle(tr("Patrons")) + self.menuPatrons = QMenu(self.menubar) + self.menuPatrons.setObjectName("menuPatrons") + self.menubar.addAction(self.menuPatrons.menuAction()) + self.menuPatrons.setTitle(tr("Patrons")) else : - self.menuPatrons.clear() + self.menuPatrons.clear() self.listePatrons = listePatrons.listePatrons(self.code) idx = 0 for nomSsMenu in self.listePatrons.liste: ssmenu=self.menuPatrons.addMenu(nomSsMenu) for fichier in self.listePatrons.liste[nomSsMenu]: - id = ssmenu.addAction(fichier) - self.ficPatrons[id]=fichier - self.id.triggered.connect(self.handleOpenPatrons) + id = ssmenu.addAction(fichier) + self.ficPatrons[id]=fichier + self.id.triggered.connect(self.handleOpenPatrons) # self.Patrons.setItemParameter(id,idx) - idx=idx+1 + idx=idx+1 def initRecents(self): - self.recent = [] - try : - #if sys.platform[0:5]=="linux" : - #rep=os.path.join(os.environ['HOME'],'.config/Eficas',self.code) - rep=os.path.join(os.path.expanduser("~"),'.config/Eficas',self.code) - #else : - # rep=os.path.join('C:/','.config/Eficas',self.code) - monFichier=rep+"/listefichiers_"+self.code - index=0 - f=open(monFichier) - while ( index < 9) : - ligne=f.readline() - if ligne != "" : - l=(ligne.split("\n"))[0] - self.recent.append(l) - index=index+1 - except : - pass - - try : f.close() - except : pass + self.recent = [] + try : + #if sys.platform[0:5]=="linux" : + #rep=os.path.join(os.environ['HOME'],'.config/Eficas',self.code) + rep=os.path.join(os.path.expanduser("~"),'.config/Eficas',self.code) + #else : + # rep=os.path.join('C:/','.config/Eficas',self.code) + monFichier=rep+"/listefichiers_"+self.code + index=0 + f=open(monFichier) + while ( index < 9) : + ligne=f.readline() + if ligne != "" : + l=(ligne.split("\n"))[0] + self.recent.append(l) + index=index+1 + except : + pass + + try : f.close() + except : pass def addToRecentList(self, fn): - while fn in self.recent: self.recent.remove(fn) - self.recent.insert(0,fn) - if len(self.recent) > 9: - self.recent = self.recent[:9] + while fn in self.recent: self.recent.remove(fn) + self.recent.insert(0,fn) + if len(self.recent) > 9: + self.recent = self.recent[:9] def addToRecentListQT4(self, fn): @@ -717,24 +717,24 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.sauveRecents() def sauveRecents(self) : - try : - rep=self.maConfiguration.rep_user - monFichier=rep+"/listefichiers_"+self.code - except : - return - try : + try : + rep=self.maConfiguration.rep_user + monFichier=rep+"/listefichiers_"+self.code + except : + return + try : f=open(monFichier,'w') if len(self.recent) == 0 : return index=0 while ( index < len(self.recent)): - ligne=str(self.recent[index])+"\n" - f.write(ligne) - index=index+1 - except : + ligne=str(self.recent[index])+"\n" + f.write(ligne) + index=index+1 + except : pass - try : + try : f.close() - except : + except : pass @@ -765,49 +765,49 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): repAide=os.path.dirname(os.path.abspath(__file__)) maD=os.path.join( repAide,'..','Doc') try : - indexAide=os.path.join(maD,'index.html') - if sys.platform[0:5]=="linux" : cmd="xdg-open "+indexAide - else : cmd="start "+indexAide - os.system(cmd) + indexAide=os.path.join(maD,'index.html') + if sys.platform[0:5]=="linux" : cmd="xdg-open "+indexAide + else : cmd="start "+indexAide + os.system(cmd) except: - QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) + QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) def aidePSEN(self) : repAide=os.path.dirname(os.path.abspath(__file__)) maD=os.path.join( repAide,'..','Doc') try : - indexAide=os.path.join(maD,'index.html') - if sys.platform[0:5]=="linux" : cmd="xdg-open "+indexAide - else : cmd="start "+indexAide - os.system(cmd) + indexAide=os.path.join(maD,'index.html') + if sys.platform[0:5]=="linux" : cmd="xdg-open "+indexAide + else : cmd="start "+indexAide + os.system(cmd) except: - QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) + QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) def aideCode(self) : if self.code==None : return try : #if 1 : - if sys.platform[0:5]=="linux" : cmd="xdg-open "+self.fileDoc - else : cmd="start "+self.fileDoc - os.system(cmd) + if sys.platform[0:5]=="linux" : cmd="xdg-open "+self.fileDoc + else : cmd="start "+self.fileDoc + os.system(cmd) except: #else: - QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) + QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) def optionEditeur(self) : try : - name='monOptions_'+self.code + name='monOptions_'+self.code except : - QMessageBox.critical( self,tr( "Parametrage"),tr( "Veuillez d abord choisir un code")) - return + QMessageBox.critical( self,tr( "Parametrage"),tr( "Veuillez d abord choisir un code")) + return try : #if 1: - optionCode=__import__(name) + optionCode=__import__(name) except : #else : - QMessageBox.critical( self, tr("Parametrage"), tr("Pas de possibilite de personnalisation de la configuration ")) - return + QMessageBox.critical( self, tr("Parametrage"), tr("Pas de possibilite de personnalisation de la configuration ")) + return monOption=optionCode.Options(parent=self,modal = 0 ,configuration=self.maConfiguration) monOption.show() @@ -843,7 +843,7 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.viewmanager.handleOpen(fichier=fichier, patron =0 ) def handleClearRecent(self): - self.recent = [] + self.recent = [] self.sauveRecents() def handleRechercherDsCatalogue(self): @@ -950,32 +950,32 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): def cleanPath(self): for pathCode in self.ListePathCode: try: - aEnlever=os.path.abspath(os.path.join(os.path.dirname(__file__),'..',pathCode)) - sys.path.remove(aEnlever) + aEnlever=os.path.abspath(os.path.join(os.path.dirname(__file__),'..',pathCode)) + sys.path.remove(aEnlever) except : - pass + pass for pathCode in self.listeAEnlever: try: - sys.path.remove(aEnlever) + sys.path.remove(aEnlever) except : - pass + pass def closeEvent(self,event): - res=self.fileExit() - if res==2 : event.ignore() + res=self.fileExit() + if res==2 : event.ignore() + - def remplitIconesCommandes(self): if self.maConfiguration.boutonDsMenuBar == False : return if not hasattr(self, 'readercata') : return from monLayoutBouton import MonLayoutBouton if hasattr(self,'monLayoutBoutonRempli') : return self.monLayoutBoutonRempli=MonLayoutBouton(self) - + def handleAjoutEtape(self,nomEtape): self.viewmanager.handleAjoutEtape(nomEtape) - + def metMenuAJourUtilisateurs(self): self.lesFonctionsUtilisateurs={} if self.code not in self.mesScripts : return @@ -985,12 +985,12 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.menuOptions = self.menubar.addMenu("menuOptions") self.menuOptions.setTitle(tr(titre)) for elt in lesFonctions : - laFonctionUtilisateur, label, lesArguments = elt - action = QAction(self) - action.setText(label) + laFonctionUtilisateur, label, lesArguments = elt + action = QAction(self) + action.setText(label) #action.triggered.connect(self.appelleFonctionUtilisateur) - self.menuOptions.addAction(action) - self.lesFonctionsUtilisateurs[action]=(laFonctionUtilisateur, lesArguments) + self.menuOptions.addAction(action) + self.lesFonctionsUtilisateurs[action]=(laFonctionUtilisateur, lesArguments) self.menuOptions.triggered.connect(self.handleFonctionUtilisateur) diff --git a/InterfaceQT4/qtEficasSsIhm.py b/InterfaceQT4/qtEficasSsIhm.py index f01e6604..2f5dcedf 100755 --- a/InterfaceQT4/qtEficasSsIhm.py +++ b/InterfaceQT4/qtEficasSsIhm.py @@ -22,7 +22,7 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str + from builtins import str except : pass import os, sys @@ -70,24 +70,24 @@ class AppliSsIhm: self.withXSD=session.d_env.withXSD if self.salome: - import Accas - try : - import eficasSalome - Accas.SalomeEntry = eficasSalome.SalomeEntry - except : - print ('eficas hors salome') + import Accas + try : + import eficasSalome + Accas.SalomeEntry = eficasSalome.SalomeEntry + except : + print ('eficas hors salome') self.multi=multi - if self.multi : - print ('pas de multi sans ihm') + if self.multi : + print ('pas de multi sans ihm') if langue=='fr': self.langue=langue else : self.langue="ang" if self.multi == False : - self.definitCode(code,None) - if code==None: return + self.definitCode(code,None) + if code==None: return self.suiteTelemac=False self.viewmanager=MyViewManagerSsIhm(self) @@ -98,33 +98,33 @@ class AppliSsIhm: self.ssCode=ssCode if self.code == None:return # pour le cancel de la fenetre choix code - try : - name='prefs_'+self.code - prefsCode=__import__(name) - self.repIni=prefsCode.repIni - except : - self.repIni=os.path.dirname(os.path.abspath(__file__)) - + try : + name='prefs_'+self.code + prefsCode=__import__(name) + self.repIni=prefsCode.repIni + except : + self.repIni=os.path.dirname(os.path.abspath(__file__)) + if ssCode != None : - self.formatFichierOut = ssCode #par defaut - prefsCode.NAME_SCHEME = ssCode + self.formatFichierOut = ssCode #par defaut + prefsCode.NAME_SCHEME = ssCode else : - self.formatFichierIn = "python" #par defaut - self.formatFichierOut = "python" #par defaut + self.formatFichierIn = "python" #par defaut + self.formatFichierOut = "python" #par defaut nameConf='configuration_'+self.code try : - configuration=__import__(nameConf) - self.maConfiguration = configuration.make_config(self,self.repIni) + configuration=__import__(nameConf) + self.maConfiguration = configuration.make_config(self,self.repIni) except : - from InterfaceQT4.configuration import makeConfig - #self.maConfiguration = configuration.makeConfig(self,prefsCode.repIni) - self.maConfiguration = makeConfig(self,self.repIni) + from InterfaceQT4.configuration import makeConfig + #self.maConfiguration = configuration.makeConfig(self,prefsCode.repIni) + self.maConfiguration = makeConfig(self,self.repIni) if hasattr (self,'maConfiguration') and self.maConfiguration.translatorFichier : - from Extensions import localisation - localisation.localise(None,self.langue,translatorFichier=self.maConfiguration.translatorFichier) + from Extensions import localisation + localisation.localise(None,self.langue,translatorFichier=self.maConfiguration.translatorFichier) if self.withXSD : self.maConfiguration.withXSD=True @@ -138,18 +138,18 @@ class AppliSsIhm: def initEditor(self,fichier = None,jdc = None, units = None,include=0): - if (hasattr(self, 'editor')) and self.editor != None : - print ('un seul editeur par application') - sys.exit() + if (hasattr(self, 'editor')) and self.editor != None : + print ('un seul editeur par application') + sys.exit() self.editor = self.viewmanager.getNewEditorNormal() - + def initEditorNormal(self,fichier = None,jdc = None, units = None,include=0): - if (hasattr(self, 'editor')) and self.editor != None : - print ('un seul editeur par application') - sys.Exit() + if (hasattr(self, 'editor')) and self.editor != None : + print ('un seul editeur par application') + sys.Exit() #self.editor = JDCEditorSsIhm(self,fichier, jdc, self.myQtab,units=units,include=include) self.editor = self.viewmanager.getNewEditorNormal() - + def fileNew(self): self.editor=self.initEditor() @@ -193,7 +193,7 @@ class AppliSsIhm: #,self.jdcRegles #,self.jdcFichierSource #,self.visuJdcPy - + if __name__=='__main__': diff --git a/InterfaceQT4/qtEficas_with_log.py b/InterfaceQT4/qtEficas_with_log.py index 2eb78021..ef581987 100644 --- a/InterfaceQT4/qtEficas_with_log.py +++ b/InterfaceQT4/qtEficas_with_log.py @@ -31,7 +31,7 @@ from Extensions.i18n import tr from Extensions.eficas_exception import EficasException from Editeur import session -import Accas +import Accas class Appli(Ui_Eficas,QMainWindow): @@ -68,8 +68,8 @@ class Appli(Ui_Eficas,QMainWindow): if langue=='fr': self.langue=langue else : self.langue="ang" if self.multi == False : - self.definitCode(code,ssCode) - if code==None: return + self.definitCode(code,ssCode) + if code==None: return eficas_root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) self.ajoutIcones() @@ -92,10 +92,10 @@ class Appli(Ui_Eficas,QMainWindow): self.code=code self.ssCode=ssCode if self.code==None : - self.cleanPath() - from monChoixCode import MonChoixCode - widgetChoix = MonChoixCode(self) - ret=widgetChoix.exec_() + self.cleanPath() + from monChoixCode import MonChoixCode + widgetChoix = MonChoixCode(self) + ret=widgetChoix.exec_() import sys if self.code == None:return # pour le cancel de la fenetre choix code name='prefs_'+self.code @@ -103,38 +103,38 @@ class Appli(Ui_Eficas,QMainWindow): self.repIni=prefsCode.repIni if ssCode != None : - self.format_fichier= ssCode #par defaut - prefsCode.NAME_SCHEME=ssCode + self.format_fichier= ssCode #par defaut + prefsCode.NAME_SCHEME=ssCode else : - self.format_fichier="python" #par defaut + self.format_fichier="python" #par defaut nameConf='configuration_'+self.code configuration=__import__(nameConf) self.CONFIGURATION = configuration.make_config(self,prefsCode.repIni) self.CONFIGStyle = None if hasattr(configuration,'make_config_style'): - self.CONFIGStyle = configuration.make_config_style(self,prefsCode.repIni) + self.CONFIGStyle = configuration.make_config_style(self,prefsCode.repIni) if hasattr(prefsCode,'encoding'): - import sys - reload(sys) - sys.setdefaultencoding(prefsCode.encoding) + import sys + reload(sys) + sys.setdefaultencoding(prefsCode.encoding) def construitMenu(self): self.initPatrons() self.initRecents() self.initAides() for intituleMenu in ("menuTraduction","menuOptions","menuMesh","menuExecution"): - if hasattr(self,intituleMenu): - menu=getattr(self,intituleMenu) - menu.setAttribute(Qt.WA_DeleteOnClose) - menu.close() - delattr(self,intituleMenu) + if hasattr(self,intituleMenu): + menu=getattr(self,intituleMenu) + menu.setAttribute(Qt.WA_DeleteOnClose) + menu.close() + delattr(self,intituleMenu) for intituleAction in ("actionExecution","actionSaveRun",): if hasattr(self,intituleAction): - action=getattr(self,intituleAction) - self.toolBar.removeAction(action) + action=getattr(self,intituleAction) + self.toolBar.removeAction(action) if self.code in Appli.__dict__.keys(): - listeTexte=apply(Appli.__dict__[self.code],(self,)) + listeTexte=apply(Appli.__dict__[self.code],(self,)) def initAides(self): #print "je passe la" @@ -146,10 +146,10 @@ class Appli(Ui_Eficas,QMainWindow): self.fileDoc=os.path.join(self.docPath,fileName) self.actionCode.setText(tr("Aide specifique ")+str(self.code)) if not os.path.isfile(self.fileDoc) : - self.fileDoc="" - self.docPath="" - self.actionCode.setEnabled(False) - return + self.fileDoc="" + self.docPath="" + self.actionCode.setEnabled(False) + return self.actionCode.setEnabled(True) self.menuAide.addAction(self.actionCode) @@ -162,7 +162,7 @@ class Appli(Ui_Eficas,QMainWindow): self.actionExecution.setObjectName("actionExecution") self.menuExecution.addAction(self.actionExecution) if not(self.actionExecution in self.toolBar.actions()): - self.toolBar.addAction(self.actionExecution) + self.toolBar.addAction(self.actionExecution) self.actionExecution.setText(QApplication.translate("Eficas", "Execution ", None, QApplication.UnicodeUTF8)) self.connect(self.actionExecution,SIGNAL("activated()"),self.run) @@ -172,7 +172,7 @@ class Appli(Ui_Eficas,QMainWindow): self.actionSaveRun.setObjectName("actionSaveRun") self.menuExecution.addAction(self.actionSaveRun) if not(self.actionSaveRun in self.toolBar.actions()): - self.toolBar.addAction(self.actionSaveRun) + self.toolBar.addAction(self.actionSaveRun) self.actionSaveRun.setText(QApplication.translate("Eficas", "Save Run", None, QApplication.UnicodeUTF8)) self.connect(self.actionSaveRun,SIGNAL("activated()"),self.saveRun) @@ -202,16 +202,16 @@ class Appli(Ui_Eficas,QMainWindow): def ChercheGrpMesh(self): Msg,listeGroup=self.ChercheGrpMeshInSalome() if Msg == None : - self.viewmanager.handleAjoutGroup(listeGroup) + self.viewmanager.handleAjoutGroup(listeGroup) else : - print "il faut gerer les erreurs" + print "il faut gerer les erreurs" def ChercheGrpMaille(self): Msg,listeGroup=self.ChercheGrpMailleInSalome() if Msg == None : - self.viewmanager.handleAjoutGroup(listeGroup) + self.viewmanager.handleAjoutGroup(listeGroup) else : - print "il faut gerer les erreurs" + print "il faut gerer les erreurs" def ajoutIcones(self) : @@ -314,49 +314,49 @@ class Appli(Ui_Eficas,QMainWindow): # Mise a jour du menu des fichiers recemment ouverts from Editeur import listePatrons if not(self.code in listePatrons.sous_menus.keys()) : - if hasattr(self,"menuPatrons"): - self.menuPatrons.setAttribute(Qt.WA_DeleteOnClose) - self.menuPatrons.close() - delattr(self,"menuPatrons") - return + if hasattr(self,"menuPatrons"): + self.menuPatrons.setAttribute(Qt.WA_DeleteOnClose) + self.menuPatrons.close() + delattr(self,"menuPatrons") + return if (not hasattr(self,"menuPatrons")): - self.menuPatrons = QMenu(self.menubar) - self.menuPatrons.setObjectName("menuPatrons") - self.menubar.addAction(self.menuPatrons.menuAction()) - self.menuPatrons.setTitle(QApplication.translate("Eficas", "Patrons", None, QApplication.UnicodeUTF8)) + self.menuPatrons = QMenu(self.menubar) + self.menuPatrons.setObjectName("menuPatrons") + self.menubar.addAction(self.menuPatrons.menuAction()) + self.menuPatrons.setTitle(QApplication.translate("Eficas", "Patrons", None, QApplication.UnicodeUTF8)) else : - self.menuPatrons.clear() + self.menuPatrons.clear() self.listePatrons = listePatrons.listePatrons(self.code) idx = 0 for nomSsMenu in self.listePatrons.liste.keys(): ssmenu=self.menuPatrons.addMenu(nomSsMenu) for fichier in self.listePatrons.liste[nomSsMenu]: - id = ssmenu.addAction(fichier) - self.ficPatrons[id]=fichier - self.connect(id, SIGNAL('triggered()'),self.handleOpenPatrons) + id = ssmenu.addAction(fichier) + self.ficPatrons[id]=fichier + self.connect(id, SIGNAL('triggered()'),self.handleOpenPatrons) # self.Patrons.setItemParameter(id,idx) - idx=idx+1 + idx=idx+1 def initRecents(self): - self.recent = QStringList() - try : - #if 1 : - rep=os.path.join(os.environ['HOME'],'.config/Eficas',self.code) - monFichier=rep+"/listefichiers_"+self.code - index=0 - f=open(monFichier) - while ( index < 9) : - ligne=f.readline() - if ligne != "" : - l=(ligne.split("\n"))[0] - self.recent.append(l) - index=index+1 - except : - #else : - pass - - try : f.close() - except : pass + self.recent = QStringList() + try : + #if 1 : + rep=os.path.join(os.environ['HOME'],'.config/Eficas',self.code) + monFichier=rep+"/listefichiers_"+self.code + index=0 + f=open(monFichier) + while ( index < 9) : + ligne=f.readline() + if ligne != "" : + l=(ligne.split("\n"))[0] + self.recent.append(l) + index=index+1 + except : + #else : + pass + + try : f.close() + except : pass def addToRecentList(self, fn): """ @@ -370,24 +370,24 @@ class Appli(Ui_Eficas,QMainWindow): self.recent = self.recent[:9] def sauveRecents(self) : - try : - rep=self.CONFIGURATION.rep_user - monFichier=rep+"/listefichiers_"+self.code - except : - return - try : + try : + rep=self.CONFIGURATION.rep_user + monFichier=rep+"/listefichiers_"+self.code + except : + return + try : f=open(monFichier,'w') if len(self.recent) == 0 : return index=0 while ( index < len(self.recent)): - ligne=str(self.recent[index])+"\n" - f.write(ligne) - index=index+1 - except : + ligne=str(self.recent[index])+"\n" + f.write(ligne) + index=index+1 + except : pass - try : + try : f.close() - except : + except : pass @@ -418,37 +418,37 @@ class Appli(Ui_Eficas,QMainWindow): repAide=os.path.dirname(os.path.abspath(__file__)) maD=repAide+"/../Aide" try : - indexAide=maD+"/fichiers_EFICAS/index.html" - cmd="xdg-open "+indexAide - os.system(cmd) + indexAide=maD+"/fichiers_EFICAS/index.html" + cmd="xdg-open "+indexAide + os.system(cmd) except: - QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) + QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) def aideCode(self) : if self.code==None : return try : #if 1 : - cmd="xdg-open "+self.fileDoc - os.system(cmd) + cmd="xdg-open "+self.fileDoc + os.system(cmd) except: #else: - QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) + QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) def optionEditeur(self) : try : - name='monOptions_'+self.code + name='monOptions_'+self.code except : - QMessageBox.critical( self,tr( "Parametrage"),tr( "Veuillez d abord choisir un code")) - return + QMessageBox.critical( self,tr( "Parametrage"),tr( "Veuillez d abord choisir un code")) + return try : #if 1: - optionCode=__import__(name) + optionCode=__import__(name) except : #else : - QMessageBox.critical( self, tr("Parametrage"), tr("Pas de possibilite de personnalisation de la configuration ")) - return + QMessageBox.critical( self, tr("Parametrage"), tr("Pas de possibilite de personnalisation de la configuration ")) + return monOption=optionCode.Options(parent=self,modal = 0 ,configuration=self.CONFIGURATION) monOption.show() @@ -562,20 +562,20 @@ class Appli(Ui_Eficas,QMainWindow): def cleanPath(self): for pathCode in self.ListeCode: try: - aEnlever=os.path.abspath(os.path.join(os.path.dirname(__file__),'..',pathCode)) - sys.path.remove(aEnlever) + aEnlever=os.path.abspath(os.path.join(os.path.dirname(__file__),'..',pathCode)) + sys.path.remove(aEnlever) except : - pass + pass for pathCode in self.listeAEnlever: try: - sys.path.remove(aEnlever) + sys.path.remove(aEnlever) except : - pass + pass def closeEvent(self,event): - res=self.fileExit() - if res==2 : event.ignore() + res=self.fileExit() + if res==2 : event.ignore() if __name__=='__main__': @@ -584,12 +584,12 @@ if __name__=='__main__': sys.path.append(rep) from Aster import prefsCode if hasattr(prefsCode,'encoding'): - # Hack pour changer le codage par defaut des strings - import sys - reload(sys) - sys.setdefaultencoding(prefsCode.encoding) - del sys.setdefaultencoding - # Fin hack + # Hack pour changer le codage par defaut des strings + import sys + reload(sys) + sys.setdefaultencoding(prefsCode.encoding) + del sys.setdefaultencoding + # Fin hack from Editeur import import_code from Editeur import session diff --git a/InterfaceQT4/qtSaisie.py b/InterfaceQT4/qtSaisie.py index f6f227a7..09f71537 100644 --- a/InterfaceQT4/qtSaisie.py +++ b/InterfaceQT4/qtSaisie.py @@ -20,8 +20,8 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str - from builtins import range + from builtins import str + from builtins import range except : pass import types,os @@ -33,115 +33,115 @@ from PyQt5.QtCore import Qt # Import des panels class SaisieValeur(object): - """ - Classe contenant les methodes communes aux panels - permettant de choisir des valeurs - """ - def __init__(self): - pass + """ + Classe contenant les methodes communes aux panels + permettant de choisir des valeurs + """ + def __init__(self): + pass - def LEvaleurPressed(self,valeur=None): - #print('LEvaleurPressed', valeur, type(valeur)) - if not hasattr(self, 'inSaisieValeur' ) : self.inSaisieValeur=False - if self.inSaisieValeur : return - self.inSaisieValeur=True + def LEvaleurPressed(self,valeur=None): + #print('LEvaleurPressed', valeur, type(valeur)) + if not hasattr(self, 'inSaisieValeur' ) : self.inSaisieValeur=False + if self.inSaisieValeur : return + self.inSaisieValeur=True - if valeur == None : + if valeur == None : try : - nouvelleValeur=str(self.lineEditVal.text()) + nouvelleValeur=str(self.lineEditVal.text()) except UnicodeEncodeError as e : - self.editor.afficheInfos("pb d encoding", Qt.red) - validite,commentaire=self.politique.recordValeur(None) - self.lineEditVal.setText('') - self.setValide() - self.inSaisieValeur=False - return - else : - try : - # la 1 ligne est tres bizarre. remplacee par le 3nd le 01 10 19 - #if hasattr(self,"lineEditVal"):self.lineEditVal.setText(tr(valeur.nom)) - if hasattr(self,"lineEditVal") : self.lineEditVal.setText(tr(valeur)) - except : - if hasattr(self,"lineEditVal"):self.lineEditVal.setText(valeur) + self.editor.afficheInfos("pb d encoding", Qt.red) + validite,commentaire=self.politique.recordValeur(None) + self.lineEditVal.setText('') + self.setValide() + self.inSaisieValeur=False + return + else : + try : + # la 1 ligne est tres bizarre. remplacee par le 3nd le 01 10 19 + #if hasattr(self,"lineEditVal"):self.lineEditVal.setText(tr(valeur.nom)) + if hasattr(self,"lineEditVal") : self.lineEditVal.setText(tr(valeur)) + except : + if hasattr(self,"lineEditVal"):self.lineEditVal.setText(valeur) nouvelleValeur=valeur - if self.node.item.definition.validators != None : + if self.node.item.definition.validators != None : if self.node.item.definition.validators.verifItem(nouvelleValeur) !=1 : commentaire=self.node.item.definition.validators.infoErreurItem() self.editor.afficheInfos(commentaire,Qt.red) self.inSaisieValeur=False return - nouvelleValeurFormat=self.politique.getValeurTexte(nouvelleValeur) - validite,commentaire=self.politique.recordValeur(nouvelleValeurFormat) - if commentaire != "" : + nouvelleValeurFormat=self.politique.getValeurTexte(nouvelleValeur) + validite,commentaire=self.politique.recordValeur(nouvelleValeurFormat) + if commentaire != "" : if validite : self.editor.afficheCommentaire(commentaire) else : self.editor.afficheInfos(commentaire,Qt.red) - self.inSaisieValeur=False - self.setValide() + self.inSaisieValeur=False + self.setValide() - def TraiteLEValeur(self,valeurTraitee=None) : + def TraiteLEValeur(self,valeurTraitee=None) : # lit la chaine entree dans le line edit # et la tranforme en chaine de valeurs # a traiter. renvoie eventuellement des complexes listeValeurs=[] if valeurTraitee == None : - valeurBrute=str(self.LEValeur.text()) + valeurBrute=str(self.LEValeur.text()) else : - valeurBrute=valeurTraitee + valeurBrute=valeurTraitee if valeurBrute == str("") : return listeValeurs,1 try : - valeur=eval(valeurBrute,{}) + valeur=eval(valeurBrute,{}) except : valeur=valeurBrute # pour traiter 11.0 - 30.0 pour le CIST #if (valeurTraitee and (type(valeurTraitee) in types.StringTypes) and (self.node.item.waitTxm())) : if (valeurTraitee and isinstance(valeurTraitee, str) and (self.node.item.waitTxm())) : - valeur=str(valeurTraitee) + valeur=str(valeurTraitee) if type(valeur) in (list,tuple) : - if self.node.item.waitComplex() : - indice = 0 - while (indice < len(valeur)): - v=valeur[indice] - - if (v== 'RI' or v == 'MP'): - try : - t=tuple([v,valeur[indice+1],valeur[indice+2]]) - listeValeurs.append(t) - indice=indice+3 - except : - commentaire = tr("Veuillez entrer le complexe sous forme aster ou sous forme python") - self.editor.afficheInfos(commentaire) - return listeValeurs,0 - - - else : # ce n'est pas un tuple a la mode aster - listeValeurs.append(v) - indice = indice + 1 - - else: # on n'attend pas un complexe - listeValeurs=valeurBrute.split(',') + if self.node.item.waitComplex() : + indice = 0 + while (indice < len(valeur)): + v=valeur[indice] + + if (v== 'RI' or v == 'MP'): + try : + t=tuple([v,valeur[indice+1],valeur[indice+2]]) + listeValeurs.append(t) + indice=indice+3 + except : + commentaire = tr("Veuillez entrer le complexe sous forme aster ou sous forme python") + self.editor.afficheInfos(commentaire) + return listeValeurs,0 + + + else : # ce n'est pas un tuple a la mode aster + listeValeurs.append(v) + indice = indice + 1 + + else: # on n'attend pas un complexe + listeValeurs=valeurBrute.split(',') elif type(valeur) == bytes: - listeValeurs=valeur.split(',') + listeValeurs=valeur.split(',') else: - #listeValeurs.append(valeurBrute) - listeValeurs.append(valeur) + #listeValeurs.append(valeurBrute) + listeValeurs.append(valeur) return listeValeurs,1 class SaisieSDCO(object) : - def LESDCOReturnPressed(self): + def LESDCOReturnPressed(self): """ Lit le nom donne par l'utilisateur au concept de type CO qui doit être la valeur du MCS courant et stocke cette valeur @@ -149,20 +149,19 @@ class SaisieSDCO(object) : self.editor.initModif() anc_val = self.node.item.getValeur() if anc_val != None: - # il faut egalement propager la destruction de l'ancien concept - self.node.item.deleteValeurCo(valeur=anc_val) - # et on force le recalcul des concepts de sortie de l'etape - self.node.item.object.etape.getType_produit(force=1) - # et le recalcul du contexte - self.node.item.object.etape.parent.resetContext() + # il faut egalement propager la destruction de l'ancien concept + self.node.item.deleteValeurCo(valeur=anc_val) + # et on force le recalcul des concepts de sortie de l'etape + self.node.item.object.etape.getType_produit(force=1) + # et le recalcul du contexte + self.node.item.object.etape.parent.resetContext() nomConcept = str(self.LESDCO.text()) if nomConcept == "" : return test,commentaire=self.node.item.setValeurCo(nomConcept) if test: - commentaire=tr("Valeur du mot-clef enregistree") - self.node.updateNodeValid() + commentaire=tr("Valeur du mot-clef enregistree") + self.node.updateNodeValid() else : - cr = self.node.item.getCr() - commentaire = tr("Valeur du mot-clef non autorisee :")+cr.getMessFatal() - + cr = self.node.item.getCr() + commentaire = tr("Valeur du mot-clef non autorisee :")+cr.getMessFatal() diff --git a/InterfaceQT4/readercata.py b/InterfaceQT4/readercata.py index 3937d81b..7543b2b6 100644 --- a/InterfaceQT4/readercata.py +++ b/InterfaceQT4/readercata.py @@ -26,8 +26,8 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str - from builtins import object + from builtins import str + from builtins import object except : pass import os, sys @@ -48,349 +48,349 @@ from Extensions.eficas_exception import EficasException class ReaderCataCommun(object): #------------------------------- - def askChoixCatalogue(self, cataListeChoix): - # ____________________________________________ - """ - Ouvre une fenetre de selection du catalogue dans le cas où plusieurs - ont ete definis dans Accas/editeur.ini - """ - try : - from PyQt5.QtWidgets import QDialog - except : - print ('Pas de choix interactif sans qt') - return - - code = getattr(self.appliEficas.maConfiguration, "code", None) - if code != None : - title=tr("Choix d une version du code ")+str(code) - else : - title=tr("Choix d une version ") - - from InterfaceQT4.monChoixCata import MonChoixCata - widgetChoix = MonChoixCata(self.appliEficas, [cata.labelCode for cata in cataListeChoix], title) - ret=widgetChoix.exec_() - - - lab=str(self.VERSION_EFICAS)+" " - lab+=tr(" pour ") - lab+=str(self.code) - lab+=tr(" avec le catalogue ") - if ret == QDialog.Accepted: - cata = cataListeChoix[widgetChoix.CBChoixCata.currentIndex()] - self.fichierCata = cata.fichierCata - self.labelCode = cata.labelCode - self.appliEficas.formatFichierOut = cata.formatFichierOut - self.appliEficas.formatFichierIn = cata.formatFichierIn - lab+=self.labelCode - self.appliEficas.setWindowTitle(lab) - widgetChoix.close() - else: - widgetChoix.close() - raise EficasException() - - def choisitCata(self): - # ____________________ - - - listeCataPossibles=[] - self.Commandes_Ordre_Catalogue=[] - - - listeTousLesCatas = [] - for catalogue in self.appliEficas.maConfiguration.catalogues: - if isinstance(catalogue, CatalogDescription): listeTousLesCatas.append(catalogue) - elif isinstance(catalogue, tuple) : listeTousLesCatas.append(CatalogDescription.createFromTuple(catalogue)) - else: print(("Catalog description cannot be interpreted: ", catalogue)) - - # This filter is only useful for codes that have subcodes (like MAP). - # Otherwise, the "code" attribute of the catalog description can (should) be None. - if self.ssCode is None: listeCataPossibles = listeTousLesCatas - else: - for catalogue in listeTousLesCatas: - if catalogue.code == self.code and catalogue.ssCode == self.ssCode: listeCataPossibles.append(catalogue) - - # le catalogue est fixe dans la ligne de commande - if self.appliEficas.fichierCata != None : - trouve=False - for catalogue in listeTousLesCatas: - if os.path.abspath(catalogue.fichierCata) == (os.path.abspath(self.appliEficas.fichierCata)) : - listeCataPossibles=(catalogue,) - trouve=True - break - if not trouve: + def askChoixCatalogue(self, cataListeChoix): + # ____________________________________________ + """ + Ouvre une fenetre de selection du catalogue dans le cas où plusieurs + ont ete definis dans Accas/editeur.ini + """ + try : + from PyQt5.QtWidgets import QDialog + except : + print ('Pas de choix interactif sans qt') + return + + code = getattr(self.appliEficas.maConfiguration, "code", None) + if code != None : + title=tr("Choix d une version du code ")+str(code) + else : + title=tr("Choix d une version ") + + from InterfaceQT4.monChoixCata import MonChoixCata + widgetChoix = MonChoixCata(self.appliEficas, [cata.labelCode for cata in cataListeChoix], title) + ret=widgetChoix.exec_() + + + lab=str(self.VERSION_EFICAS)+" " + lab+=tr(" pour ") + lab+=str(self.code) + lab+=tr(" avec le catalogue ") + if ret == QDialog.Accepted: + cata = cataListeChoix[widgetChoix.CBChoixCata.currentIndex()] + self.fichierCata = cata.fichierCata + self.labelCode = cata.labelCode + self.appliEficas.formatFichierOut = cata.formatFichierOut + self.appliEficas.formatFichierIn = cata.formatFichierIn + lab+=self.labelCode + self.appliEficas.setWindowTitle(lab) + widgetChoix.close() + else: + widgetChoix.close() + raise EficasException() + + def choisitCata(self): + # ____________________ + + + listeCataPossibles=[] + self.Commandes_Ordre_Catalogue=[] + + + listeTousLesCatas = [] + for catalogue in self.appliEficas.maConfiguration.catalogues: + if isinstance(catalogue, CatalogDescription): listeTousLesCatas.append(catalogue) + elif isinstance(catalogue, tuple) : listeTousLesCatas.append(CatalogDescription.createFromTuple(catalogue)) + else: print(("Catalog description cannot be interpreted: ", catalogue)) + + # This filter is only useful for codes that have subcodes (like MAP). + # Otherwise, the "code" attribute of the catalog description can (should) be None. + if self.ssCode is None: listeCataPossibles = listeTousLesCatas + else: + for catalogue in listeTousLesCatas: + if catalogue.code == self.code and catalogue.ssCode == self.ssCode: listeCataPossibles.append(catalogue) + + # le catalogue est fixe dans la ligne de commande + if self.appliEficas.fichierCata != None : + trouve=False + for catalogue in listeTousLesCatas: + if os.path.abspath(catalogue.fichierCata) == (os.path.abspath(self.appliEficas.fichierCata)) : + listeCataPossibles=(catalogue,) + trouve=True + break + if not trouve: catalogue=CatalogDescription.createFromTuple((self.code ,self.code,self.appliEficas.fichierCata,'python','python')) listeCataPossibles=(catalogue,) - - - if len(listeCataPossibles)==0: - try : - from PyQt5.QtWidgets import QMessageBox, QDialog - QMessageBox.critical(self.QWParent, tr("Import du catalogue"), - tr("Pas de catalogue defini pour le code ") + self.code) - except : - print ("Pas de catalogue defini pour le code " + self.code) - self.appliEficas.close() - if self.appliEficas.salome == 0 : sys.exit(1) - return - - - # le label est fixe dans la ligne de commande - if self.labelCode is not None: - # La version a ete fixee - for cata in listeCataPossibles: - if self.labelCode == cata.labelCode: - self.fichierCata = cata.fichierCata - self.appliEficas.formatFichierIn = cata.formatFichierIn - self.appliEficas.formatFichierOut = cata.formatFichierOut - else: - cataListeChoix = [] - for cata in listeCataPossibles: - if cata.default : cataListeChoix.insert(0, cata) - else : cataListeChoix.append(cata) - - if len(cataListeChoix) == 0: - try : - from PyQt5.QtWidgets import QMessageBox + + + if len(listeCataPossibles)==0: + try : + from PyQt5.QtWidgets import QMessageBox, QDialog QMessageBox.critical(self.QWParent, tr("Import du catalogue"), - tr("Aucun catalogue trouve")) - except : + tr("Pas de catalogue defini pour le code ") + self.code) + except : print ("Pas de catalogue defini pour le code " + self.code) - self.appliEficas.close() - if self.appliEficas.salome == 0 : sys.exit(1) - - elif len(cataListeChoix) == 1: - self.fichierCata = cataListeChoix[0].fichierCata - self.labelCode = cataListeChoix[0].labelCode - self.appliEficas.formatFichierOut = cataListeChoix[0].formatFichierOut - self.appliEficas.formatFichierIn = cataListeChoix[0].formatFichierIn - - else: - # plusieurs catalogues sont disponibles : il faut demander a l'utilisateur - # lequel il veut utiliser ... - if self.appliEficas.ssIhm : - print ('Unable to know which catafile is choosen') - exit() - self.askChoixCatalogue(cataListeChoix) - self.demandeCatalogue=True - - if self.fichierCata == None : - if self.appliEficas.salome == 0 : - print(("Pas de catalogue pour code %s, version %s" %(self.code,self.labelCode))) - sys.exit(1) - else : - self.appliEficas.close() - return + self.appliEficas.close() + if self.appliEficas.salome == 0 : sys.exit(1) + return + + + # le label est fixe dans la ligne de commande + if self.labelCode is not None: + # La version a ete fixee + for cata in listeCataPossibles: + if self.labelCode == cata.labelCode: + self.fichierCata = cata.fichierCata + self.appliEficas.formatFichierIn = cata.formatFichierIn + self.appliEficas.formatFichierOut = cata.formatFichierOut + else: + cataListeChoix = [] + for cata in listeCataPossibles: + if cata.default : cataListeChoix.insert(0, cata) + else : cataListeChoix.append(cata) + + if len(cataListeChoix) == 0: + try : + from PyQt5.QtWidgets import QMessageBox + QMessageBox.critical(self.QWParent, tr("Import du catalogue"), + tr("Aucun catalogue trouve")) + except : + print ("Pas de catalogue defini pour le code " + self.code) + self.appliEficas.close() + if self.appliEficas.salome == 0 : sys.exit(1) + + elif len(cataListeChoix) == 1: + self.fichierCata = cataListeChoix[0].fichierCata + self.labelCode = cataListeChoix[0].labelCode + self.appliEficas.formatFichierOut = cataListeChoix[0].formatFichierOut + self.appliEficas.formatFichierIn = cataListeChoix[0].formatFichierIn + + else: + # plusieurs catalogues sont disponibles : il faut demander a l'utilisateur + # lequel il veut utiliser ... + if self.appliEficas.ssIhm : + print ('Unable to know which catafile is choosen') + exit() + self.askChoixCatalogue(cataListeChoix) + self.demandeCatalogue=True + + if self.fichierCata == None : + if self.appliEficas.salome == 0 : + print(("Pas de catalogue pour code %s, version %s" %(self.code,self.labelCode))) + sys.exit(1) + else : + self.appliEficas.close() + return #------------------------------------ class ReaderCata (ReaderCataCommun): #------------------------------------ - def __init__(self,QWParent, appliEficas): - # _______________________________________ - - - self.QWParent=QWParent - self.appliEficas=self.QWParent.appliEficas - self.VERSION_EFICAS=self.appliEficas.VERSION_EFICAS - self.demandeCatalogue=False - self.code=self.appliEficas.code - self.ssCode=self.appliEficas.ssCode - # on positionne par defaut mais est-ce vraiment necessaire - self.appliEficas.formatFichierIn='python' - self.appliEficas.formatFichierOut='python' - self.labelCode=self.appliEficas.labelCode - self.fichierCata=self.appliEficas.fichierCata - self.openCata() - self.traiteIcones() - self.cataitem=None - self.creeDicoInverse() - if self.code=="TELEMAC": self.creeDicoCasToCata() - - - def openCata(self): - """ - Ouvre le catalogue standard du code courant, cad le catalogue present - dans le repertoire Cata - """ - # import du catalogue - self.choisitCata() - - self.cata = self.importCata(self.fichierCata) - if self.code == 'NonConnu' : self.code = self.cata.JdC.code - modeleMetier = None - dicoEltDif = {} - if not (self.appliEficas.genereXSD) : - if (self.appliEficas.maConfiguration.withXSD or self.appliEficas.withXSD) : - try : - import pyxb - except : - self.QWParent.informe('environnement', 'please source pyxb environment') - exit() - try : - #if 1 : - nomCataXsd = os.path.splitext(os.path.basename(self.fichierCata))[0] - fichierCataTrunc=os.path.splitext(os.path.basename(self.fichierCata))[0] - nomCataXsd = fichierCataTrunc+'_driver' - pathCata = os.path.dirname(self.fichierCata)+'/raw/'+nomCataXsd+'.py' - import imp - modeleMetier= imp.load_source(nomCataXsd,pathCata) - #print ('nomCataXsd , pathCata ',nomCataXsd,pathCata) - try : - monObjetAnnotation = getattr(modeleMetier,'PNEFdico_'+self.code) - texte=monObjetAnnotation.__doc__ - except : - texte=None - if texte != None and texte != "": - l={} - texte='dicoEltDif = '+ texte - exec (texte, globals(),l) - dicoEltDif=l['dicoEltDif'] - #print ('dans readerCata _________', dicoEltDif) - - except : - #else : - if self.appliEficas.ssIhm == False :print ('______________ poum import cata_genere ') - self.QWParent.informe('XSD driver', 'unable to load xsd driver',critique=False) - modeleMetier = None - - self.cata.DicoNomTypeDifferentNomElt=dicoEltDif - - if hasattr(self.cata, 'implement'): self.cata.JdC.implement = self.cata.implement - else : self.cata.JdC.implement = "" - if hasattr(self.cata, 'importedBy'): self.cata.JdC.importedBy = self.cata.importedBy - else : self.cata.JdC.importedBy = [] - self.cata.JdC.labelCode = self.labelCode - if not(hasattr(self.cata, 'dict_condition')): self.cata.dict_condition = {} - - # pointeur pour le dumpXSD - self.cata.JdC.cata=self.cata - - self.cata.modeleMetier = modeleMetier - if not self.cata : - #try: - #from PyQt5.QtWidgets import QMessageBox, QDialog - #QMessageBox.critical( self.QWParent, tr("Import du catalogue"),tr("Impossible d'importer le catalogue ")+ self.fichierCata) - #except : - # print ("Impossible d'importer le catalogue "+ self.fichierCata) - self.QWParent.informe("Catalogue","Impossible d'importer le catalogue "+ self.fichierCata) - self.appliEficas.close() - if self.appliEficas.salome == 0 : - sys.exit(1) - # - # analyse du catalogue (ordre des mots-cles) - # - # retrouveOrdreCataStandard fait une analyse textuelle du catalogue - # remplace par retrouveOrdreCataStandardAutre qui utilise une numerotation - # des mots cles a la creation - #print (dir(self.cata)) - self.retrouveOrdreCataStandardAutre() - if self.appliEficas.maConfiguration.modeNouvCommande == "initial" : self.retrouveOrdreCataStandard() - 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=() - if hasattr(self.cata,'enum'): - try : - _temp= __import__(self.cata.enum,globals(), locals(), ['DicoEnumCasFrToEnumCasEn', 'TelemacdicoEn'], 0) - self.DicoEnumCasFrToEnumCasEn = _temp.DicoEnumCasFrToEnumCasEn - self.TelemacdicoEn = _temp.TelemacdicoEn - except : pass - - #print self.cata.Ordre_Des_Commandes - - # - # analyse des donnees liees l'IHM : UIinfo - # - uiinfo.traite_UIinfo(self.cata) - - # - # traitement des clefs documentaires - # - - self.titre=self.VERSION_EFICAS+" "+tr( " avec le catalogue ") + os.path.basename(self.fichierCata) - if self.appliEficas.ssIhm == False : self.appliEficas.setWindowTitle(self.titre) - self.appliEficas.titre=self.titre - self.QWParent.titre=self.titre - - - def importCata(self,cata): - """ - Realise l'import du catalogue dont le chemin d'acces est donne par cata - """ - nom_cata = os.path.splitext(os.path.basename(cata))[0] - rep_cata = os.path.dirname(cata) - sys.path[:0] = [rep_cata] - self.appliEficas.listeAEnlever.append(rep_cata) - - # PNPNPN pas propre __ A reflechir - if 'cata_Vimmp' in list(sys.modules.keys()) : - del sys.modules['cata_Vimmp'] - - if nom_cata in list(sys.modules.keys()) : - del sys.modules[nom_cata] - - for k in sys.modules: - if k[0:len(nom_cata)+1] == nom_cata+'.': - del sys.modules[k] - - mesScriptsNomFichier='mesScripts_'+self.code.upper() - try : - self.appliEficas.mesScripts[self.code]=__import__(mesScriptsNomFichier) - except: - pass - - #if 1 : - try : - o=__import__(nom_cata) - return o - except Exception as e: - self.QWParent.informe('catalog', 'unable to load catalog file') - import traceback - traceback.print_exc() - return 0 - - - - def retrouveOrdreCataStandardAutre(self): - """ - Construit une structure de donnees dans le catalogue qui permet - a EFICAS de retrouver l'ordre des mots-cles dans le texte du catalogue. - Pour chaque entite du catlogue on cree une liste de nom ordre_mc qui - contient le nom des mots cles dans le bon ordre - """ - self.cata_ordonne_dico, self.appliEficas.liste_simp_reel=autre_analyse_cata.analyseCatalogue(self.cata) - #print ('_________________________________________', self) - #print (self.cata_ordonne_dico) - #self.appliEficas.liste_simp_reel = () - #self.cata_ordonne_dico = {} - - def retrouveOrdreCataStandard(self): - """ - Retrouve l'ordre des mots-cles dans le catalogue, cad : - Attention s appuie sur les commentaires - """ - nom_cata = os.path.splitext(os.path.basename(self.fichierCata))[0] - rep_cata = os.path.dirname(self.fichierCata) - self.Commandes_Ordre_Catalogue = analyse_catalogue_initial.analyseCatalogue(self.fichierCata) - #print self.Commandes_Ordre_Catalogue - - def traiteIcones(self): - if self.appliEficas.maConfiguration.ficIcones==None : return - try: - ficIcones=self.appliEficas.maConfiguration.ficIcones - fichierIcones = __import__(ficIcones, globals(), locals(), [], 0) - self.appliEficas.maConfiguration.dicoIcones=fichierIcones.dicoDesIcones.dicoIcones - self.appliEficas.maConfiguration.dicoImages=fichierIcones.dicoDesIcones.dicoImages - except: - print ("Pas de fichier associe contenant des liens sur les icones ") - self.appliEficas.maConfiguration.dicoIcones={} - - - - def creeDicoInverse(self): + def __init__(self,QWParent, appliEficas): + # _______________________________________ + + + self.QWParent=QWParent + self.appliEficas=self.QWParent.appliEficas + self.VERSION_EFICAS=self.appliEficas.VERSION_EFICAS + self.demandeCatalogue=False + self.code=self.appliEficas.code + self.ssCode=self.appliEficas.ssCode + # on positionne par defaut mais est-ce vraiment necessaire + self.appliEficas.formatFichierIn='python' + self.appliEficas.formatFichierOut='python' + self.labelCode=self.appliEficas.labelCode + self.fichierCata=self.appliEficas.fichierCata + self.openCata() + self.traiteIcones() + self.cataitem=None + self.creeDicoInverse() + if self.code=="TELEMAC": self.creeDicoCasToCata() + + + def openCata(self): + """ + Ouvre le catalogue standard du code courant, cad le catalogue present + dans le repertoire Cata + """ + # import du catalogue + self.choisitCata() + + self.cata = self.importCata(self.fichierCata) + if self.code == 'NonConnu' : self.code = self.cata.JdC.code + modeleMetier = None + dicoEltDif = {} + if not (self.appliEficas.genereXSD) : + if (self.appliEficas.maConfiguration.withXSD or self.appliEficas.withXSD) : + try : + import pyxb + except : + self.QWParent.informe('environnement', 'please source pyxb environment') + exit() + try : + #if 1 : + nomCataXsd = os.path.splitext(os.path.basename(self.fichierCata))[0] + fichierCataTrunc=os.path.splitext(os.path.basename(self.fichierCata))[0] + nomCataXsd = fichierCataTrunc+'_driver' + pathCata = os.path.dirname(self.fichierCata)+'/raw/'+nomCataXsd+'.py' + import imp + modeleMetier= imp.load_source(nomCataXsd,pathCata) + #print ('nomCataXsd , pathCata ',nomCataXsd,pathCata) + try : + monObjetAnnotation = getattr(modeleMetier,'PNEFdico_'+self.code) + texte=monObjetAnnotation.__doc__ + except : + texte=None + if texte != None and texte != "": + l={} + texte='dicoEltDif = '+ texte + exec (texte, globals(),l) + dicoEltDif=l['dicoEltDif'] + #print ('dans readerCata _________', dicoEltDif) + + except : + #else : + if self.appliEficas.ssIhm == False :print ('______________ poum import cata_genere ') + self.QWParent.informe('XSD driver', 'unable to load xsd driver',critique=False) + modeleMetier = None + + self.cata.DicoNomTypeDifferentNomElt=dicoEltDif + + if hasattr(self.cata, 'implement'): self.cata.JdC.implement = self.cata.implement + else : self.cata.JdC.implement = "" + if hasattr(self.cata, 'importedBy'): self.cata.JdC.importedBy = self.cata.importedBy + else : self.cata.JdC.importedBy = [] + self.cata.JdC.labelCode = self.labelCode + if not(hasattr(self.cata, 'dict_condition')): self.cata.dict_condition = {} + + # pointeur pour le dumpXSD + self.cata.JdC.cata=self.cata + + self.cata.modeleMetier = modeleMetier + if not self.cata : + #try: + #from PyQt5.QtWidgets import QMessageBox, QDialog + #QMessageBox.critical( self.QWParent, tr("Import du catalogue"),tr("Impossible d'importer le catalogue ")+ self.fichierCata) + #except : + # print ("Impossible d'importer le catalogue "+ self.fichierCata) + self.QWParent.informe("Catalogue","Impossible d'importer le catalogue "+ self.fichierCata) + self.appliEficas.close() + if self.appliEficas.salome == 0 : + sys.exit(1) + # + # analyse du catalogue (ordre des mots-cles) + # + # retrouveOrdreCataStandard fait une analyse textuelle du catalogue + # remplace par retrouveOrdreCataStandardAutre qui utilise une numerotation + # des mots cles a la creation + #print (dir(self.cata)) + self.retrouveOrdreCataStandardAutre() + if self.appliEficas.maConfiguration.modeNouvCommande == "initial" : self.retrouveOrdreCataStandard() + 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=() + if hasattr(self.cata,'enum'): + try : + _temp= __import__(self.cata.enum,globals(), locals(), ['DicoEnumCasFrToEnumCasEn', 'TelemacdicoEn'], 0) + self.DicoEnumCasFrToEnumCasEn = _temp.DicoEnumCasFrToEnumCasEn + self.TelemacdicoEn = _temp.TelemacdicoEn + except : pass + + #print self.cata.Ordre_Des_Commandes + + # + # analyse des donnees liees l'IHM : UIinfo + # + uiinfo.traite_UIinfo(self.cata) + + # + # traitement des clefs documentaires + # + + self.titre=self.VERSION_EFICAS+" "+tr( " avec le catalogue ") + os.path.basename(self.fichierCata) + if self.appliEficas.ssIhm == False : self.appliEficas.setWindowTitle(self.titre) + self.appliEficas.titre=self.titre + self.QWParent.titre=self.titre + + + def importCata(self,cata): + """ + Realise l'import du catalogue dont le chemin d'acces est donne par cata + """ + nom_cata = os.path.splitext(os.path.basename(cata))[0] + rep_cata = os.path.dirname(cata) + sys.path[:0] = [rep_cata] + self.appliEficas.listeAEnlever.append(rep_cata) + + # PNPNPN pas propre __ A reflechir + if 'cata_Vimmp' in list(sys.modules.keys()) : + del sys.modules['cata_Vimmp'] + + if nom_cata in list(sys.modules.keys()) : + del sys.modules[nom_cata] + + for k in sys.modules: + if k[0:len(nom_cata)+1] == nom_cata+'.': + del sys.modules[k] + + mesScriptsNomFichier='mesScripts_'+self.code.upper() + try : + self.appliEficas.mesScripts[self.code]=__import__(mesScriptsNomFichier) + except: + pass + + #if 1 : + try : + o=__import__(nom_cata) + return o + except Exception as e: + self.QWParent.informe('catalog', 'unable to load catalog file') + import traceback + traceback.print_exc() + return 0 + + + + def retrouveOrdreCataStandardAutre(self): + """ + Construit une structure de donnees dans le catalogue qui permet + a EFICAS de retrouver l'ordre des mots-cles dans le texte du catalogue. + Pour chaque entite du catlogue on cree une liste de nom ordre_mc qui + contient le nom des mots cles dans le bon ordre + """ + self.cata_ordonne_dico, self.appliEficas.liste_simp_reel=autre_analyse_cata.analyseCatalogue(self.cata) + #print ('_________________________________________', self) + #print (self.cata_ordonne_dico) + #self.appliEficas.liste_simp_reel = () + #self.cata_ordonne_dico = {} + + def retrouveOrdreCataStandard(self): + """ + Retrouve l'ordre des mots-cles dans le catalogue, cad : + Attention s appuie sur les commentaires + """ + nom_cata = os.path.splitext(os.path.basename(self.fichierCata))[0] + rep_cata = os.path.dirname(self.fichierCata) + self.Commandes_Ordre_Catalogue = analyse_catalogue_initial.analyseCatalogue(self.fichierCata) + #print self.Commandes_Ordre_Catalogue + + def traiteIcones(self): + if self.appliEficas.maConfiguration.ficIcones==None : return + try: + ficIcones=self.appliEficas.maConfiguration.ficIcones + fichierIcones = __import__(ficIcones, globals(), locals(), [], 0) + self.appliEficas.maConfiguration.dicoIcones=fichierIcones.dicoDesIcones.dicoIcones + self.appliEficas.maConfiguration.dicoImages=fichierIcones.dicoDesIcones.dicoImages + except: + print ("Pas de fichier associe contenant des liens sur les icones ") + self.appliEficas.maConfiguration.dicoIcones={} + + + + def creeDicoInverse(self): self.dicoInverse={} self.dicoMC={} listeEtapes=self.cata.JdC.commandes @@ -398,48 +398,47 @@ class ReaderCata (ReaderCataCommun): self.traiteEntite(e) - def creeDicoCasToCata(self): - if hasattr(self.cata,'dicoCasEn'): - _temp= __import__(self.cata.dicoCasEn,globals(), locals(), ['DicoCasEnToCata'], 0) - if self.appliEficas.langue=="ang" : - self.dicoCasToCata=_temp.dicoCasEnToCata - else : - self.dicoCasToCata=_temp.dicoCasFrToCata + def creeDicoCasToCata(self): + if hasattr(self.cata,'dicoCasEn'): + _temp= __import__(self.cata.dicoCasEn,globals(), locals(), ['DicoCasEnToCata'], 0) + if self.appliEficas.langue=="ang" : + self.dicoCasToCata=_temp.dicoCasEnToCata + else : + self.dicoCasToCata=_temp.dicoCasFrToCata - def traiteEntite(self,e): - boolIn=0 - for (nomFils, fils) in list(e.entites.items()) : - self.dicoMC[nomFils]=fils - self.traiteEntite(fils) - boolIn=1 - if boolIn==0 : - liste=[] - moi=e - while hasattr(moi,'pere') : + def traiteEntite(self,e): + boolIn=0 + for (nomFils, fils) in list(e.entites.items()) : + self.dicoMC[nomFils]=fils + self.traiteEntite(fils) + boolIn=1 + if boolIn==0 : + liste=[] + moi=e + while hasattr(moi,'pere') : liste.append((moi.nom,moi)) moi=moi.pere - liste.append((moi.nom,moi)) - self.dicoInverse[e.nom]=liste - self.dicoInverse[tr(e.nom)]=liste - - def creeRubrique(self,e,dico, niveau): - from Accas import A_BLOC - decale=niveau*" " - #if niveau != 0 : - # if isinstance(e,A_BLOC.BLOC): print decale, e.condition - # else : print decale, e. nom - for (nom, fils) in list(e.entites.items()) : - if list(fils.entites.items()) != [] : self.creeRubrique(fils,dico,niveau+1) - #else : print (niveau+1)*" ", nom - - - def dumpToXsdEficas(self): - # Pas sur qu on ait jamais besoin de cela - pass - #from Efi2Xsd import readerEfficas - #newSchema= xml = open('Cata_MED_FAM.xml').read() - #SchemaMed = efficas.CreateFromDocument(xml) - #SchemaMed.alimenteCata(self.cata) - + liste.append((moi.nom,moi)) + self.dicoInverse[e.nom]=liste + self.dicoInverse[tr(e.nom)]=liste + + def creeRubrique(self,e,dico, niveau): + from Accas import A_BLOC + decale=niveau*" " + #if niveau != 0 : + # if isinstance(e,A_BLOC.BLOC): print decale, e.condition + # else : print decale, e. nom + for (nom, fils) in list(e.entites.items()) : + if list(fils.entites.items()) != [] : self.creeRubrique(fils,dico,niveau+1) + #else : print (niveau+1)*" ", nom + + + def dumpToXsdEficas(self): + # Pas sur qu on ait jamais besoin de cela + pass + #from Efi2Xsd import readerEfficas + #newSchema= xml = open('Cata_MED_FAM.xml').read() + #SchemaMed = efficas.CreateFromDocument(xml) + #SchemaMed.alimenteCata(self.cata) diff --git a/InterfaceQT4/readercataXML.py b/InterfaceQT4/readercataXML.py index 9282b622..98cd309f 100644 --- a/InterfaceQT4/readercataXML.py +++ b/InterfaceQT4/readercataXML.py @@ -40,45 +40,45 @@ from readercata import ReaderCataCommun class ReaderCata (ReaderCataCommun): - def __init__(self,QWParent, appliEficas): - self.QWParent=QWParent - self.appliEficas=appliEficas - self.VERSION_EFICAS=self.appliEficas.VERSION_EFICAS - self.code=self.appliEficas.code - self.ssCode=self.appliEficas.ssCode - # PN ?? bizarre le 22/04/20 - self.appliEficas.formatfichierOut='python' - self.appliEficas.formatfichierIn ='xml' - self.modeNouvCommande=self.appliEficas.maConfiguration.modeNouvCommande - self.labelCode=self.appliEficas.labelCode - self.version_cata=None - self.ficCata=None - self.OpenCata() - self.cataitem=None - self.titre='Eficas XML' - self.Ordre_Des_Commandes=None - self.Classement_Commandes_Ds_Arbre=() - self.demandeCatalogue=False + def __init__(self,QWParent, appliEficas): + self.QWParent=QWParent + self.appliEficas=appliEficas + self.VERSION_EFICAS=self.appliEficas.VERSION_EFICAS + self.code=self.appliEficas.code + self.ssCode=self.appliEficas.ssCode + # PN ?? bizarre le 22/04/20 + self.appliEficas.formatfichierOut='python' + self.appliEficas.formatfichierIn ='xml' + self.modeNouvCommande=self.appliEficas.maConfiguration.modeNouvCommande + self.labelCode=self.appliEficas.labelCode + self.version_cata=None + self.ficCata=None + self.OpenCata() + self.cataitem=None + self.titre='Eficas XML' + self.Ordre_Des_Commandes=None + self.Classement_Commandes_Ds_Arbre=() + self.demandeCatalogue=False - #self.traiteIcones() - #self.creeDicoInverse() + #self.traiteIcones() + #self.creeDicoInverse() - def OpenCata(self): + def OpenCata(self): - #self.ficCata = 'Cata_MED_FAM.xml' - #xml = open('/home/A96028/QT5GitEficasTravail/eficas/Med/Cata_MED_FAM.xml').read() - #xml = open('/home/A96028/QT5GitEficasTravail/eficas/CataTestXSD/cata_test1.xml').read() - self.choisitCata() - xml=open(self.ficCata).read() - SchemaMed = readerEfiXsd.efficas.CreateFromDocument(xml) - SchemaMed.exploreCata() - self.cata=SchemaMed - uiinfo.traite_UIinfo(self.cata) - self.Commandes_Ordre_Catalogue=[] - self.cata_ordonne_dico,self.appliEficas.liste_simp_reel=autre_analyse_cata.analyseCatalogue(self.cata) - self.liste_groupes=None + #self.ficCata = 'Cata_MED_FAM.xml' + #xml = open('/home/A96028/QT5GitEficasTravail/eficas/Med/Cata_MED_FAM.xml').read() + #xml = open('/home/A96028/QT5GitEficasTravail/eficas/CataTestXSD/cata_test1.xml').read() + self.choisitCata() + xml=open(self.ficCata).read() + SchemaMed = readerEfiXsd.efficas.CreateFromDocument(xml) + SchemaMed.exploreCata() + self.cata=SchemaMed + uiinfo.traite_UIinfo(self.cata) + self.Commandes_Ordre_Catalogue=[] + self.cata_ordonne_dico,self.appliEficas.liste_simp_reel=autre_analyse_cata.analyseCatalogue(self.cata) + self.liste_groupes=None - def dumpToXml(self): - # pour compatibilite - pass + def dumpToXml(self): + # pour compatibilite + pass diff --git a/InterfaceQT4/typeNode.py b/InterfaceQT4/typeNode.py index f9e2e944..387ca360 100644 --- a/InterfaceQT4/typeNode.py +++ b/InterfaceQT4/typeNode.py @@ -19,7 +19,7 @@ # from __future__ import absolute_import try : - from builtins import object + from builtins import object except : pass from PyQt5.QtWidgets import QAction, QMenu, QMessageBox @@ -61,16 +61,16 @@ class PopUpMenuNodeMinimal(object) : self.menu.addAction(self.Supprime) if hasattr(self.appliEficas, 'mesScripts'): if self.editor.code in self.editor.appliEficas.mesScripts : - self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes - if self.tree.currentItem().item.getNom() in self.dict_commandes_mesScripts : - self.ajoutScript() - + self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes + if self.tree.currentItem().item.getNom() in self.dict_commandes_mesScripts : + self.ajoutScript() + def ajoutScript(self): # cochon mais je n arrive pas a faire mieux avec le mecanisme de plugin # a revoir avec un menu et un connect sur le triggered sur le menu ? if hasattr(self.appliEficas, 'mesScripts'): if self.editor.code in self.editor.appliEficas.mesScripts : - self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes + self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes else : return from Extensions import jdc_include @@ -80,18 +80,18 @@ class PopUpMenuNodeMinimal(object) : if type(listeCommandes) != tuple: listeCommandes=(listeCommandes,) numero=0 for commande in listeCommandes : - conditionSalome=commande[3] - if (self.appliEficas.salome == 0 and conditionSalome == True): return - label=commande[1] - tip=commande[5] - self.action=QAction(label,self.tree) - self.action.setStatusTip(tip) - if numero==4: self.action.triggered.connect(self.appelleFonction4) - if numero==3: self.action.triggered.connect(self.appelleFonction3); numero=4 - if numero==2: self.action.triggered.connect(self.appelleFonction2); numero=3 - if numero==1: self.action.triggered.connect(self.appelleFonction1); numero=2 - if numero==0: self.action.triggered.connect(self.appelleFonction0); numero=1 - self.menu.addAction(self.action) + conditionSalome=commande[3] + if (self.appliEficas.salome == 0 and conditionSalome == True): return + label=commande[1] + tip=commande[5] + self.action=QAction(label,self.tree) + self.action.setStatusTip(tip) + if numero==4: self.action.triggered.connect(self.appelleFonction4) + if numero==3: self.action.triggered.connect(self.appelleFonction3); numero=4 + if numero==2: self.action.triggered.connect(self.appelleFonction2); numero=3 + if numero==1: self.action.triggered.connect(self.appelleFonction1); numero=2 + if numero==0: self.action.triggered.connect(self.appelleFonction0); numero=1 + self.menu.addAction(self.action) def appelleFonction0(self): @@ -114,7 +114,7 @@ class PopUpMenuNodeMinimal(object) : nomCmd=nodeTraite.item.getNom() if hasattr(self.appliEficas, 'mesScripts'): if self.editor.code in self.editor.appliEficas.mesScripts : - self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes + self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes else : return listeCommandes=self.dict_commandes_mesScripts[nomCmd] commande=listeCommandes[numero] @@ -122,28 +122,28 @@ class PopUpMenuNodeMinimal(object) : if (nodeTraite.item.isValid() == 0 and conditionValid == True): - QMessageBox.warning( None, - tr("item invalide"), - tr("l item doit etre valide"),) - return + QMessageBox.warning( None, + tr("item invalide"), + tr("l item doit etre valide"),) + return fonction=commande[0] listenomparam=commande[2] listeparam=[] for p in listenomparam: if hasattr(nodeTraite,p): - listeparam.append(getattr(nodeTraite,p)) + listeparam.append(getattr(nodeTraite,p)) if p=="self" : listeparam.append(self) - + try : - res, commentaire= fonction(listeparam) - if not res : - QMessageBox.warning( None, - tr("echec de la fonction"), - tr(commentaire),) - return + res, commentaire= fonction(listeparam) + if not res : + QMessageBox.warning( None, + tr("echec de la fonction"), + tr(commentaire),) + return except : - pass - + pass + @@ -184,25 +184,25 @@ class PopUpMenuNodeMinimal(object) : try : f=open(commande,"rb") except : - texte=tr("impossible de trouver la commande ") + commande - QMessageBox.information( self.editor, tr("Lecteur PDF"), texte) - return + texte=tr("impossible de trouver la commande ") + commande + QMessageBox.information( self.editor, tr("Lecteur PDF"), texte) + return import os if cle_doc.startswith('http:'): - fichier = cle_doc + fichier = cle_doc else : fichier = os.path.abspath(os.path.join(self.editor.maConfiguration.path_doc, cle_doc)) try : - f=open(fichier,"rb") + f=open(fichier,"rb") except : - texte=tr("impossible d'ouvrir ") + fichier - QMessageBox.information( self.editor, tr("Documentation Vide"), texte) - return + texte=tr("impossible d'ouvrir ") + fichier + QMessageBox.information( self.editor, tr("Documentation Vide"), texte) + return + - if os.name == 'nt': - os.spawnv(os.P_NOWAIT,commande,(commande,fichier,)) + os.spawnv(os.P_NOWAIT,commande,(commande,fichier,)) elif os.name == 'posix': script ="#!/usr/bin/sh \n%s %s&" %(commande,fichier) pid = os.system(script) @@ -237,7 +237,7 @@ class PopUpMenuNodePartiel (PopUpMenuNodeMinimal): self.commentMenu.addAction(self.CommApres) self.commentMenu.addAction(self.CommAvant) #ss-menu Parameters: - self.paramMenu =self.menu.addMenu(tr('Parametre')) + self.paramMenu =self.menu.addMenu(tr('Parametre')) self.paramMenu.addAction(self.ParamApres) self.paramMenu.addAction(self.ParamAvant) self.menu.addAction(self.Documentation) diff --git a/InterfaceQT4/viewManager.py b/InterfaceQT4/viewManager.py index 62656df3..3d5975cc 100644 --- a/InterfaceQT4/viewManager.py +++ b/InterfaceQT4/viewManager.py @@ -20,8 +20,8 @@ from __future__ import absolute_import try : - from builtins import str - from builtins import object + from builtins import str + from builtins import object except : pass import os @@ -32,263 +32,263 @@ from PyQt5.QtCore import QFileInfo DictExtensions= {"MAP" : ".map"} class MyViewManager(object): - def __init__(self,appliEficas): - self.appliEficas=appliEficas - self.tabWidgets = [] - self.mesIndexes = {} - self.appliEficas=appliEficas - self.editors = [] - self.dictEditors={} - self.untitledCount = 0 - self.doubles = {} - - self.myQtab = self.appliEficas.myQtab - self.myQtab.currentChanged.connect(self.indexChanged) - self.myQtab.tabCloseRequested.connect(self.closeTab) - - def indexChanged(self): - index=self.myQtab.currentIndex() - if index in self.dictEditors: - editor=self.dictEditors[index] - if editor.jdc !=None : - CONTEXT.unsetCurrentJdC() - CONTEXT.setCurrentJdC(editor.jdc) - self.appliEficas.maConfiguration=editor.maConfiguration - self.appliEficas.code=editor.maConfiguration.code - self.appliEficas.setWindowTitle(editor.titre) - self.appliEficas.construitMenu() - - def handleOpen(self,fichier=None,patron=0,units=None): - result = None - if fichier is None: - if self.appliEficas.demande==True : - self.appliEficas.definitCode(None,None) - if self.appliEficas.code == None:return - + def __init__(self,appliEficas): + self.appliEficas=appliEficas + self.tabWidgets = [] + self.mesIndexes = {} + self.appliEficas=appliEficas + self.editors = [] + self.dictEditors={} + self.untitledCount = 0 + self.doubles = {} + + self.myQtab = self.appliEficas.myQtab + self.myQtab.currentChanged.connect(self.indexChanged) + self.myQtab.tabCloseRequested.connect(self.closeTab) + + def indexChanged(self): + index=self.myQtab.currentIndex() + if index in self.dictEditors: + editor=self.dictEditors[index] + if editor.jdc !=None : + CONTEXT.unsetCurrentJdC() + CONTEXT.setCurrentJdC(editor.jdc) + self.appliEficas.maConfiguration=editor.maConfiguration + self.appliEficas.code=editor.maConfiguration.code + self.appliEficas.setWindowTitle(editor.titre) + self.appliEficas.construitMenu() + + def handleOpen(self,fichier=None,patron=0,units=None): + result = None + if fichier is None: + if self.appliEficas.demande==True : + self.appliEficas.definitCode(None,None) + if self.appliEficas.code == None:return + if self.appliEficas.code in DictExtensions: - chaine="JDC (*"+DictExtensions[self.appliEficas.code]+");;" - extensions=tr(chaine+ "All Files (*)") + chaine="JDC (*"+DictExtensions[self.appliEficas.code]+");;" + extensions=tr(chaine+ "All Files (*)") elif self.appliEficas.code== "TELEMAC" : extensions=tr('CAS (*.cas);;All Files (*)') else : - extensions=tr('Fichiers JDC (*.comm);;''Tous les Fichiers (*)') + extensions=tr('Fichiers JDC (*.comm);;''Tous les Fichiers (*)') fichier = QFileDialog.getOpenFileName(self.appliEficas, tr('Ouvrir Fichier'), self.appliEficas.maConfiguration.savedir, extensions) fichier=fichier[0] - fichier = os.path.abspath(fichier) - ulfile = os.path.abspath(fichier) - self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] - self.appliEficas.addToRecentList(fichier) - maPage = self.getEditor( fichier,units=units) - if maPage : result = maPage - if maPage : self.myQtab.setTabText(self.myQtab.indexOf(maPage),os.path.basename(fichier)) - return result - - def closeTab(self,indexAFermer): - self.handleClose(indexAFermer = indexAFermer) - - def handleClose(self,doitSauverRecent = 1,texte=tr('&Quitter'),indexAFermer=None): - if doitSauverRecent : self.appliEficas.sauveRecents() - if indexAFermer == None : index=self.myQtab.currentIndex() - else : index = indexAFermer - if index < 0 : return - res=self.checkDirty(self.dictEditors[index],texte) - if res == 2 : return 2 # l utilisateur a annule - idx=index - while idx < len(self.dictEditors) -1 : - self.dictEditors[idx]=self.dictEditors[idx+1] - idx = idx + 1 - del self.dictEditors[len (self.dictEditors) -1] - try : - del self.doubles[self.dictEditors[index]] - except : - pass - self.myQtab.removeTab(index) - return res - - - def run(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.run() - - def saveRun(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.saveRun() - - def handleCloseAll(self,texte=tr('Quitter')): - res=0 - self.appliEficas.sauveRecents() - while len(self.dictEditors) > 0 : - self.myQtab.setCurrentIndex(0) - res=self.handleClose(0,texte) - if res==2 : return res # l utilsateur a annule - return res - - def handleRechercher(self): - #print "passage dans handleRechercher" - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleRechercher() - - def handleRechercherDsCatalogue(self): - #print "passage dans handleRechercher" - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleRechercherDsCatalogue() - - def handleDeplier(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleDeplier() - - def handleEditCopy(self): - #print "passage dans handleEditCopy" - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleEditCopy() - - def handleEditCut(self): - #print "passage dans handleEditCut" - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleEditCut() - - def handleEditPaste(self): - #print "passage dans handleEditPaste" - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleEditPaste() - - def handleSupprimer(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleSupprimer() - - def handleAjoutEtape(self,nomEtape): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleAjoutEtape(nomEtape) - - - def newEditor(self,include=0): - if self.appliEficas.demande==True : - self.appliEficas.definitCode(None,None) - if self.appliEficas.code == None:return - maPage=self.getEditor(include=include) - - def newIncludeEditor(self): - self.newEditor(include=1) - - def handleViewJdcFichierSource(self): - index=self.myQtab.currentIndex() - if index < 0 : return - self.dictEditors[index].viewJdcSource() - - def ouvreArbre(self): - index=self.myQtab.currentIndex() - if index < 0 : return - self.dictEditors[index].ouvreArbre() - - def fermeArbre(self): - index=self.myQtab.currentIndex() - if index < 0 : return - self.dictEditors[index].fermeArbre() - - def ajoutCommentaire(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.ajoutCommentaire() - - def handleViewJdcRegles(self): - index=self.myQtab.currentIndex() - if index < 0 : return - self.dictEditors[index].viewJdcRegles() - - def handleGestionParam(self): - index=self.myQtab.currentIndex() - if index < 0 : - QMessageBox.warning( self.appliEficas,tr(u"Creation Parametre indisponible"),tr(u"les parametres sont lies a un jeu de donnees")) - return - self.dictEditors[index].gestionParam() - - def handleViewJdcRapport(self): - index=self.myQtab.currentIndex() - if index < 0 : return - self.dictEditors[index].viewJdcRapport() - - def handleViewJdcPy(self): - index=self.myQtab.currentIndex() - if index < 0 : return - self.dictEditors[index].viewJdcPy() - - def saveCurrentEditor(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - if editor in self.doubles : - QMessageBox.warning( - None, - tr("Fichier Duplique"), - tr("Le fichier ne sera pas sauvegarde."),) - return - ok, newName = editor.saveFile() - if ok : - fileName=os.path.basename(newName) - self.myQtab.setTabText(index,fileName) - return ok - - def saveCompleteCurrentEditor(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - ok, newName = editor.saveCompleteFile() - return ok - - def sauveLigneCurrentEditor(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - if editor in self.doubles : - QMessageBox.warning( - None, - tr("Fichier Duplique"), - tr("Le fichier ne sera pas sauvegarde."),) - return - ok, newName = editor.sauveLigneFile() - if ok : - fileName=os.path.basename(newName) - self.myQtab.setTabText(index,fileName) - return ok - - def saveAsCurrentEditor(self): - index=self.myQtab.currentIndex() - editor=self.dictEditors[index] - oldName=editor.fichier - ok,newName = editor.saveFileAs() - if ok : - fileName=os.path.basename(newName) - self.myQtab.setTabText(index,fileName) - if editor in self.doubles : - if oldName != newName : - del self.doubles[editor] - return ok - - def displayJDC(self,jdc,fn=None): + fichier = os.path.abspath(fichier) + ulfile = os.path.abspath(fichier) + self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] + self.appliEficas.addToRecentList(fichier) + maPage = self.getEditor( fichier,units=units) + if maPage : result = maPage + if maPage : self.myQtab.setTabText(self.myQtab.indexOf(maPage),os.path.basename(fichier)) + return result + + def closeTab(self,indexAFermer): + self.handleClose(indexAFermer = indexAFermer) + + def handleClose(self,doitSauverRecent = 1,texte=tr('&Quitter'),indexAFermer=None): + if doitSauverRecent : self.appliEficas.sauveRecents() + if indexAFermer == None : index=self.myQtab.currentIndex() + else : index = indexAFermer + if index < 0 : return + res=self.checkDirty(self.dictEditors[index],texte) + if res == 2 : return 2 # l utilisateur a annule + idx=index + while idx < len(self.dictEditors) -1 : + self.dictEditors[idx]=self.dictEditors[idx+1] + idx = idx + 1 + del self.dictEditors[len (self.dictEditors) -1] + try : + del self.doubles[self.dictEditors[index]] + except : + pass + self.myQtab.removeTab(index) + return res + + + def run(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.run() + + def saveRun(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.saveRun() + + def handleCloseAll(self,texte=tr('Quitter')): + res=0 + self.appliEficas.sauveRecents() + while len(self.dictEditors) > 0 : + self.myQtab.setCurrentIndex(0) + res=self.handleClose(0,texte) + if res==2 : return res # l utilsateur a annule + return res + + def handleRechercher(self): + #print "passage dans handleRechercher" + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleRechercher() + + def handleRechercherDsCatalogue(self): + #print "passage dans handleRechercher" + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleRechercherDsCatalogue() + + def handleDeplier(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleDeplier() + + def handleEditCopy(self): + #print "passage dans handleEditCopy" + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleEditCopy() + + def handleEditCut(self): + #print "passage dans handleEditCut" + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleEditCut() + + def handleEditPaste(self): + #print "passage dans handleEditPaste" + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleEditPaste() + + def handleSupprimer(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleSupprimer() + + def handleAjoutEtape(self,nomEtape): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleAjoutEtape(nomEtape) + + + def newEditor(self,include=0): + if self.appliEficas.demande==True : + self.appliEficas.definitCode(None,None) + if self.appliEficas.code == None:return + maPage=self.getEditor(include=include) + + def newIncludeEditor(self): + self.newEditor(include=1) + + def handleViewJdcFichierSource(self): + index=self.myQtab.currentIndex() + if index < 0 : return + self.dictEditors[index].viewJdcSource() + + def ouvreArbre(self): + index=self.myQtab.currentIndex() + if index < 0 : return + self.dictEditors[index].ouvreArbre() + + def fermeArbre(self): + index=self.myQtab.currentIndex() + if index < 0 : return + self.dictEditors[index].fermeArbre() + + def ajoutCommentaire(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.ajoutCommentaire() + + def handleViewJdcRegles(self): + index=self.myQtab.currentIndex() + if index < 0 : return + self.dictEditors[index].viewJdcRegles() + + def handleGestionParam(self): + index=self.myQtab.currentIndex() + if index < 0 : + QMessageBox.warning( self.appliEficas,tr(u"Creation Parametre indisponible"),tr(u"les parametres sont lies a un jeu de donnees")) + return + self.dictEditors[index].gestionParam() + + def handleViewJdcRapport(self): + index=self.myQtab.currentIndex() + if index < 0 : return + self.dictEditors[index].viewJdcRapport() + + def handleViewJdcPy(self): + index=self.myQtab.currentIndex() + if index < 0 : return + self.dictEditors[index].viewJdcPy() + + def saveCurrentEditor(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + if editor in self.doubles : + QMessageBox.warning( + None, + tr("Fichier Duplique"), + tr("Le fichier ne sera pas sauvegarde."),) + return + ok, newName = editor.saveFile() + if ok : + fileName=os.path.basename(newName) + self.myQtab.setTabText(index,fileName) + return ok + + def saveCompleteCurrentEditor(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + ok, newName = editor.saveCompleteFile() + return ok + + def sauveLigneCurrentEditor(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + if editor in self.doubles : + QMessageBox.warning( + None, + tr("Fichier Duplique"), + tr("Le fichier ne sera pas sauvegarde."),) + return + ok, newName = editor.sauveLigneFile() + if ok : + fileName=os.path.basename(newName) + self.myQtab.setTabText(index,fileName) + return ok + + def saveAsCurrentEditor(self): + index=self.myQtab.currentIndex() + editor=self.dictEditors[index] + oldName=editor.fichier + ok,newName = editor.saveFileAs() + if ok : + fileName=os.path.basename(newName) + self.myQtab.setTabText(index,fileName) + if editor in self.doubles : + if oldName != newName : + del self.doubles[editor] + return ok + + def displayJDC(self,jdc,fn=None): """ Public slot to display a file in an editor. @param fn name of file to be opened @@ -299,43 +299,43 @@ class MyViewManager(object): editor = self.getEditor(fichier= fn, jdc = jdc ,include=1) self.appliEficas.addToRecentList(editor.getFileName()) - def getEditor(self,fichier = None,jdc = None, units = None,include=0): - newWin = 0 - double = None - indexEditor=0 - for indexEditor in self.dictEditors : - editor=self.dictEditors[indexEditor] - if self.samePath(fichier, editor.getFileName()): - msgBox = QMessageBox() - msgBox.setWindowTitle(tr("Fichier")) - msgBox.setText(tr("Le fichier %s est deja ouvert", str(fichier))) - msgBox.addButton(tr("&Duplication"),0) - msgBox.addButton(tr("&Abandonner"),1) - abort=msgBox.exec_() - if abort: break - double=editor - else : + def getEditor(self,fichier = None,jdc = None, units = None,include=0): + newWin = 0 + double = None + indexEditor=0 + for indexEditor in self.dictEditors : + editor=self.dictEditors[indexEditor] + if self.samePath(fichier, editor.getFileName()): + msgBox = QMessageBox() + msgBox.setWindowTitle(tr("Fichier")) + msgBox.setText(tr("Le fichier %s est deja ouvert", str(fichier))) + msgBox.addButton(tr("&Duplication"),0) + msgBox.addButton(tr("&Abandonner"),1) + abort=msgBox.exec_() + if abort: break + double=editor + else : from .editor import JDCEditor editor = JDCEditor(self.appliEficas,fichier, jdc, self.myQtab,units=units,include=include) - if double != None : - self.doubles[editor]=double + if double != None : + self.doubles[editor]=double if editor.jdc: # le fichier est bien un jdc self.editors.append(editor) newWin = 1 else: editor.closeIt() - if newWin: + if newWin: self.addView(editor, fichier) - elif editor.jdc: + elif editor.jdc: self.myQtab.setCurrentIndex(indexEditor) - index=self.myQtab.currentIndex() - if index != -1 : - self.dictEditors[index]=editor - return editor + index=self.myQtab.currentIndex() + if index != -1 : + self.dictEditors[index]=editor + return editor - def addView(self, win, fichier=None): + def addView(self, win, fichier=None): #PNPNPNPN --> a affiner if fichier is None: self.untitledCount += 1 @@ -351,31 +351,31 @@ class MyViewManager(object): self.currentEditor=win win.setFocus() - def getOpenStartDir(self) : - #PN --> Les Preferences + def getOpenStartDir(self) : + #PN --> Les Preferences try : userDir=os.path.expanduser("~/Eficas_install/") return userDir except : return "" - def samePath(self,f1, f2): - """ - compare two paths. - """ - if f1 is None or f2 is None: return 0 - if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1 - return 0 + def samePath(self,f1, f2): + """ + compare two paths. + """ + if f1 is None or f2 is None: return 0 + if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1 + return 0 - def checkDirty(self, editor,texte): + def checkDirty(self, editor,texte): """ Private method to check dirty status and open a message window. - + @param editor editor window to check @return flag indicating successful reset of the dirty flag (boolean) - """ - res=1 + """ + res=1 if (editor.modified) and (editor in self.doubles) : msgBox = QMessageBox(None) msgBox.setWindowTitle(tr("Fichier Duplique")) @@ -405,28 +405,27 @@ class MyViewManager(object): return ok return res - def handleAjoutGroup(self,listeGroup): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleAjoutGroup(listeGroup) - - def handleFonctionUtilisateur(self,laFonctionUtilisateur, lesArguments): - # Peut-etre a blinder un peu plus sur le nb d argument - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - if editor.getEtapeCourante() == None : - QMessageBox.information( self.appliEficas, - tr("Selectionner une etape"), - tr("Le texte ne peut pas etre insere dans un fichier vide,\nCreer un materiau vide ou une zone vide et inserer le catalogue apres")) - return - - listeParam = [] - for p in lesArguments: - #print (p) - if hasattr(editor,p): listeParam.append(getattr(editor,p)) - if p=="editor" : listeParam.append(editor) - if p=="etapeCourante" : listeParam.append(editor.getEtapeCourante()) - laFonctionUtilisateur(*listeParam) - + def handleAjoutGroup(self,listeGroup): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleAjoutGroup(listeGroup) + + def handleFonctionUtilisateur(self,laFonctionUtilisateur, lesArguments): + # Peut-etre a blinder un peu plus sur le nb d argument + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + if editor.getEtapeCourante() == None : + QMessageBox.information( self.appliEficas, + tr("Selectionner une etape"), + tr("Le texte ne peut pas etre insere dans un fichier vide,\nCreer un materiau vide ou une zone vide et inserer le catalogue apres")) + return + + listeParam = [] + for p in lesArguments: + #print (p) + if hasattr(editor,p): listeParam.append(getattr(editor,p)) + if p=="editor" : listeParam.append(editor) + if p=="etapeCourante" : listeParam.append(editor.getEtapeCourante()) + laFonctionUtilisateur(*listeParam) diff --git a/InterfaceQT4/viewManagerSsIhm.py b/InterfaceQT4/viewManagerSsIhm.py index 030f86a8..e487fa89 100644 --- a/InterfaceQT4/viewManagerSsIhm.py +++ b/InterfaceQT4/viewManagerSsIhm.py @@ -20,8 +20,8 @@ from __future__ import absolute_import try : - from builtins import str - from builtins import object + from builtins import str + from builtins import object except : pass import os @@ -32,45 +32,45 @@ class JdcSsIhmHandler(object): # -------------------------------- # retourne a l utilisateur - def __init__(self,viewManager): + def __init__(self,viewManager): # -------------------------------------- - self.viewManagerSsIhm=viewManager + self.viewManagerSsIhm=viewManager - def viewJdcPy(self) : + def viewJdcPy(self) : # --------------------- - self.viewManagerSsIhm.handleViewJdcPy(self) + self.viewManagerSsIhm.handleViewJdcPy(self) - def viewJdcSource(self) : + def viewJdcSource(self) : # --------------------- - self.viewManagerSsIhm.handleViewJdcSource(self) + self.viewManagerSsIhm.handleViewJdcSource(self) - def getFileName(self): + def getFileName(self): # --------------------- - self.viewManagerSsIhm.getFileName(self) + self.viewManagerSsIhm.getFileName(self) - def viewJdcRapport(self) : + def viewJdcRapport(self) : # --------------------- - self.viewManagerSsIhm.handleViewJdcRapport(self) + self.viewManagerSsIhm.handleViewJdcRapport(self) - def getJdcRapport(self) : + def getJdcRapport(self) : # --------------------- - return self.viewManagerSsIhm.handleGetJdcRapport(self) + return self.viewManagerSsIhm.handleGetJdcRapport(self) - def getDicoPython(self) : + def getDicoPython(self) : # ------------------------- - return self.viewManagerSsIhm.generDico(self) + return self.viewManagerSsIhm.generDico(self) - def isJdcValid(self) : + def isJdcValid(self) : # ------------------------- - return self.viewManagerSsIhm.isJdcValid(self) + return self.viewManagerSsIhm.isJdcValid(self) - def fileSaveAs(self,fileName): + def fileSaveAs(self,fileName): # ------------------------- - return self.viewManagerSsIhm.fileSaveAs(self,fileName) + return self.viewManagerSsIhm.fileSaveAs(self,fileName) - def fileLegerSaveAs(self,fileName): + def fileLegerSaveAs(self,fileName): # ----------------------------------- - return self.viewManagerSsIhm.fileLegerSaveAs(self,fileName) + return self.viewManagerSsIhm.fileLegerSaveAs(self,fileName) @@ -79,163 +79,161 @@ class MyViewManagerSsIhm(object): #-------------------------------- # Symetrique de ViewManager mais pas d heritage entre les 2 # dans le viewManager pas de souci pour savoir qui est le jdc sur lequel on travaille -# ici en revanche.... c est moins sur . voir avec le fichier +# ici en revanche.... c est moins sur . voir avec le fichier # -------------------------------- - def __init__(self,appliEficas): + def __init__(self,appliEficas): # -------------------------------- - self.appliEficas=appliEficas - self.tabWidgets = [] - self.mesIndexes = {} - self.dictEditors={} - self.untitledCount = 0 - self.doubles = {} + self.appliEficas=appliEficas + self.tabWidgets = [] + self.mesIndexes = {} + self.dictEditors={} + self.untitledCount = 0 + self.doubles = {} # ------------------------------------------------------ - def handleOpen(self,fichier=None, units=None): + def handleOpen(self,fichier=None, units=None): # ------------------------------------------------------ - result = None - if fichier is None: - print ('nom de fichier obligatoire') - return None + result = None + if fichier is None: + print ('nom de fichier obligatoire') + return None - for handler in self.dictEditors : - editor=self.dictEditors[handler] - if self.samePath(fichier, editor.getFileName()): - print ('fichier deja ouvert . pas de nouvel editor') - return handler + for handler in self.dictEditors : + editor=self.dictEditors[handler] + if self.samePath(fichier, editor.getFileName()): + print ('fichier deja ouvert . pas de nouvel editor') + return handler - monNewHandler = self.getNewEditor(fichier,units) - return monNewHandler + monNewHandler = self.getNewEditor(fichier,units) + return monNewHandler # ---------------------------------------------------------------------- - def getNewEditor(self,fichier = None,jdc = None, units = None,include=0): + def getNewEditor(self,fichier = None,jdc = None, units = None,include=0): # ---------------------------------------------------------------------- # il faudrait decider entre e handler ou non # le cas d usage n est pas tout a fait identique : # avec handler pour les utilisateurs avance # sans pour les utilisateurs encore plus ancvances et les tests - from InterfaceQT4.editorSsIhm import JDCEditorSsIhm - editor = JDCEditorSsIhm(self.appliEficas,fichier,jdc, units=units,include=include) + from InterfaceQT4.editorSsIhm import JDCEditorSsIhm + editor = JDCEditorSsIhm(self.appliEficas,fichier,jdc, units=units,include=include) - if editor.jdc: # le fichier est bien un jdc - monHandler = JdcSsIhmHandler(self) - self.dictEditors[monHandler]=editor - return monHandler - else: - print ('impossible de construire le jdc') - return None + if editor.jdc: # le fichier est bien un jdc + monHandler = JdcSsIhmHandler(self) + self.dictEditors[monHandler]=editor + return monHandler + else: + print ('impossible de construire le jdc') + return None # -------------------------------------------------------------------------------- - def getNewEditorNormal(self,fichier = None,jdc = None, units = None,include=0): + def getNewEditorNormal(self,fichier = None,jdc = None, units = None,include=0): # -------------------------------------------------------------------------------- - from InterfaceQT4.editorSsIhm import JDCEditorSsIhm - editor = JDCEditorSsIhm(self.appliEficas,fichier,jdc, units=units,include=include) - self.editor=editor - return editor + from InterfaceQT4.editorSsIhm import JDCEditorSsIhm + editor = JDCEditorSsIhm(self.appliEficas,fichier,jdc, units=units,include=include) + self.editor=editor + return editor # ----------------------------- - def samePath(self,f1, f2): + def samePath(self,f1, f2): # ------------------------------ - """ - compare two paths. - """ - if f1 is None or f2 is None: return 0 - if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1 - return 0 + """ + compare two paths. + """ + if f1 is None or f2 is None: return 0 + if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1 + return 0 # --------------------------------- - def handleViewJdcPy(self,handler): + def handleViewJdcPy(self,handler): # --------------------------------- if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return self.dictEditors[handler].viewJdcPy() # --------------------------------- - def getFileName(self,handler): + def getFileName(self,handler): # --------------------------------- if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return return self.dictEditors[handler].getFileName() # --------------------------------------------- - def handleViewJdcSource(self,handler): + def handleViewJdcSource(self,handler): # --------------------------------------------- print (handler) if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return self.dictEditors[handler].viewJdcSource() # --------------------------------------------- - def handleViewJdcRapport(self,handler): + def handleViewJdcRapport(self,handler): # --------------------------------------------- print (handler) if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return self.dictEditors[handler].viewJdcRapport() # --------------------------------------------- - def handleGetJdcRapport(self,handler): + def handleGetJdcRapport(self,handler): # --------------------------------------------- if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return return self.dictEditors[handler].getJdcRapport() # --------------------------------------------- - def handleViewJdcRapport(self,handler): + def handleViewJdcRapport(self,handler): # --------------------------------------------- print (handler) if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return self.dictEditors[handler].viewJdcRapport() # --------------------------------------------- - def generDico(self,handler): + def generDico(self,handler): # --------------------------------------------- print (handler) if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return return self.dictEditors[handler].generDico() # --------------------------------------------- - def isJdcValid(self,handler): + def isJdcValid(self,handler): # --------------------------------------------- print (handler) if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return return self.dictEditors[handler].jdc.isValid() # --------------------------------------------- - def fileSaveAs(self,handler,fileName): + def fileSaveAs(self,handler,fileName): # --------------------------------------------- print (handler) if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return return self.dictEditors[handler].saveFile(fileName) # --------------------------------------------- - def fileLegerSaveAs(self, handler,fileName): + def fileLegerSaveAs(self, handler,fileName): # --------------------------------------------- # print (handler) if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return self.dictEditors[handler].saveFileLegerAs(fileName) - -