Salome HOME
reindent + copyright + merge manuel avec la V9_dev sauf repertoires metier
[tools/eficas.git] / InterfaceQT4 / monChoixCommande.py
index c0d40bec68a129d5df748e7f2ff1aedafbc3a48f..bc0cebdaf5b107539c10c8d2646807ccf59d39f2 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2013   EDF R&D
+# Copyright (C) 2007-2021   EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
 # Modules Python
 # Modules Eficas
 
+from __future__ import absolute_import
+try :
+    from builtins import str
+except : pass
+
 from desChoixCommandes import Ui_ChoixCommandes
-from PyQt4  import *
-from PyQt4.QtCore import *
-from PyQt4.QtGui import *
-from PyQt4.QtCore import *
+from PyQt5.QtWidgets import QWidget, QAction ,QButtonGroup, QRadioButton, QLabel , QPushButton, QSpacerItem, QSizePolicy, QGridLayout
+from PyQt5.QtGui  import QIcon, QPixmap
+from PyQt5.QtCore import QSize, QRect
+
 from Extensions.i18n import tr
 import os
 
-    
+
 # Import des panels
 
-class MonChoixCommande(Ui_ChoixCommandes,QtGui.QWidget):
-  """
-  """
-  def __init__(self,node, jdc_item, editor):
-      QtGui.QWidget.__init__(self,None)
-      self.setupUi(self)
-      #self.labelIcone.setText('<img src="/local00/home/A96028/Install_EficasV1/KarineEficas/InterfaceQT4/loopOff.png">');
-
-      self.item = jdc_item
-      self.node = node
-      self.editor = editor
-      self.jdc  = self.item.object.get_jdc_root()
-      debutTitre=self.editor.titre
-      self.listeWidget=[]
-      if self.editor.fichier != None : 
-          nouveauTitre=debutTitre+" "+str(os.path.basename(self.editor.fichier))
-      else :
-          nouveauTitre=debutTitre
-      self.editor.appliEficas.setWindowTitle(nouveauTitre)
-
-      #print self.node.tree
-
-      self.connect(self.RBalpha,SIGNAL("clicked()"),self.afficheAlpha)
-      self.connect(self.RBGroupe,SIGNAL("clicked()"),self.afficheGroupe)
-      self.connect(self.RBOrdre,SIGNAL("clicked()"),self.afficheOrdre)
-      if self.node.tree.item.get_regles() == () :
-         self.RBRegle.close()
-         self.labelRegle.close()
-      else : self.connect(self.RBRegle,SIGNAL("clicked()"),self.afficheRegle)
-
-      if self.editor.Ordre_Des_Commandes == None : self.RBOrdre.close()
-
-       
-      self.editor.labelCommentaire.setText("")
-      if self.editor.widgetOptionnel!= None : 
-         self.editor.widgetOptionnel.close()
-         self.editor.widgetOptionnel=None
-      self.name=None
-      self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.AjouteRadioButton)
-
-      self.affiche_alpha=0
-      self.affiche_groupe=0
-      self.affiche_ordre=0
-      if self.editor.affiche=="alpha"  : 
-         self.affiche_alpha==1;  
-         self.RBalpha.setChecked(True);
-         self.afficheAlpha()
-      elif self.editor.affiche=="groupe" : 
-         self.affiche_groupe==1; 
-         self.RBGroupe.setChecked(True); 
-         self.afficheGroupe()
-      elif self.editor.affiche=="ordre"  : 
-         self.affiche_ordre==1;  
-         self.RBOrdre.setChecked(True);  
-         self.afficheOrdre()
-      if self.editor.code == "Adao" : self.frameAffichage.close()
-
-  def afficheRegle(self):
-      self.node.tree.AppelleBuildLBRegles()
-
-  def afficheAlpha(self):
-      self.affiche_alpha=1
-      self.affiche_groupe=0
-      self.affiche_ordre=0
-      self.AjouteRadioButton()
-
-  def afficheGroupe(self):
-      self.affiche_alpha=0
-      self.affiche_groupe=1
-      self.affiche_ordre=0
-      self.AjouteRadioButton()
-
-  def afficheOrdre(self):
-      self.affiche_alpha=0
-      self.affiche_groupe=0
-      self.affiche_ordre=1
-      self.AjouteRadioButton()
-
-  def mouseDoubleClickEvent(self,event):
-      nodeCourrant=self.node.tree.currentItem()
-      if nodeCourrant==None: nodeCourrant=self.node.tree.racine
-      if self.name != None :
-         plier=self.editor.afficheCommandesPliees
-         if nodeCourrant==self.node : nouveau=self.node.append_child(self.name,'first',plier)
-         else : nouveau=nodeCourrant.append_brother(self.name,plier=plier)
-      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.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)
-      event.accept()
-      
-
-  def CreeListeCommande(self,filtre):
-      listeGroupes,dictGroupes=self.jdc.get_groups()
-      if "CACHE" in dictGroupes.keys():
-         aExclure=dictGroupes["CACHE"]
-      else:
-         aExclure=()
-      listeACreer=[]
-      for l in self.jdc.get_liste_cmd():
-         if l not in aExclure : 
-            if filtre != None and not filtre in l : continue
-            listeACreer.append(l)
-      return listeACreer
-
-  def AjouteRadioButton(self):
-      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.close()
-      else :
-         self.buttonGroup = QButtonGroup()
-      for w in self.listeWidget :
-         w.close()
-      self.listeWidget=[]
-      if self.affiche_alpha==1 :
-         liste=self.CreeListeCommande(filtre)
-         for cmd in liste :
-           rbcmd=(QRadioButton(tr(cmd)))
-           self.buttonGroup.addButton(rbcmd)
-           self.commandesLayout.addWidget(rbcmd)
-           rbcmd.mouseDoubleClickEvent=self.mouseDoubleClickEvent
-           self.connect(self.buttonGroup, SIGNAL("buttonClicked(QAbstractButton*)"),self.rbClique) 
-      elif  self.affiche_groupe==1 :
-         listeGroupes,dictGroupes=self.jdc.get_groups()
-         for grp in listeGroupes:
-           if grp == "CACHE" : continue
-           label=QLabel(self)
-           text=QString.fromUtf8('<html><head/><body><p><span style=\" font-weight:600;\">Groupe : '+tr(grp)+'</span></p></body></html>')
-           label.setText(text)
-           self.listeWidget.append(label)
-           aAjouter=1
-           for cmd in  dictGroupes[grp]:
-              if filtre != None and not filtre in cmd : continue
-              if aAjouter == 1 :
-                 self.commandesLayout.addWidget(label)
-                 aAjouter=0
-              rbcmd=(QRadioButton(tr(cmd)))
-              self.buttonGroup.addButton(rbcmd)
-              self.commandesLayout.addWidget(rbcmd)
-              rbcmd.mouseDoubleClickEvent=self.mouseDoubleClickEvent
-              self.connect(self.buttonGroup, SIGNAL("buttonClicked(QAbstractButton*)"),self.rbClique)
-           label2=QLabel(self)
-           label2.setText(" ")
-           self.listeWidget.append(label2)
-           self.commandesLayout.addWidget(label2)
-      elif  self.affiche_ordre==1 :
-         listeFiltre=self.CreeListeCommande(filtre)
-         liste=[]
-         if self.editor.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre
-         else : Ordre_Des_Commandes=self.editor.Ordre_Des_Commandes
-         for cmd in Ordre_Des_Commandes :
-            if cmd in listeFiltre :
-                 liste.append(cmd)
-         for cmd in liste :
-           rbcmd=(QRadioButton(tr(cmd)))
-           self.buttonGroup.addButton(rbcmd)
-           self.commandesLayout.addWidget(rbcmd)
-           rbcmd.mouseDoubleClickEvent=self.mouseDoubleClickEvent
-           self.connect(self.buttonGroup, SIGNAL("buttonClicked(QAbstractButton*)"),self.rbClique) 
-
-     
-  def LEfiltreReturnPressed(self):
-      self.AjouteRadioButton(filtre)
-
-
-  def rbClique(self,id):
-      self.name=str(id.text().toLatin1())
-      definitionEtape=getattr(self.jdc.cata[0],self.name)
-      commentaire=getattr(definitionEtape,self.jdc.lang)
-      try :
-        commentaire=getattr(definitionEtape,self.jdc.lang)
-      except :
+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():
+            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
+        #print 'ds ajouteRadioButtons'
+        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('<html><head/><body><p><span style=\" font-weight:600;\">Groupe : '+tr(grp)+'</span></p></body></html>')
+                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 :
+            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,"ang")
+            commentaire=getattr(definitionEtape,self.jdc.lang)
         except :
-           commentaire=""
-      self.editor.labelCommentaire.setText(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