Salome HOME
modif pour MT
[tools/eficas.git] / InterfaceQT4 / monGroupeOptionnel.py
1 # Copyright (C) 2007-2017   EDF R&D
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19 # Modules Python
20 # Modules Eficas
21
22 from __future__ import absolute_import
23 from PyQt5.QtWidgets import QCheckBox, QWidget, QLabel, QPushButton
24 from PyQt5.QtCore    import Qt, QRect
25 from PyQt5.QtGui     import QPalette
26
27 from Extensions.i18n    import tr
28 from desGroupeOptionnel import Ui_groupeOptionnel
29 from desPBOptionnelMT   import Ui_customPB
30
31     
32 # Import des panels
33
34 class MonRBButtonCustom(QCheckBox):
35
36    def __init__(self,texte,monOptionnel,parent=None,couleur=None):
37       QCheckBox.__init__(self,tr(texte),parent)
38       self.mousePressed=True
39       self.monOptionnel=monOptionnel
40       self.setToolTip(tr("clicker: affichage aide, double-click: ajout"))
41       if couleur != None :
42          mapalette=self.palette()
43          mapalette.setColor( QPalette.WindowText, couleur )
44          mapalette.setColor( QPalette.Base, Qt.green )
45          self.setPalette( mapalette );
46          self.setText(tr(texte))
47          try :
48            monToolTip=monOptionnel.parentMC.dictToolTipMc[texte]
49            self.setToolTip(monToolTip)
50          except :
51            pass
52
53
54    def mouseDoubleClickEvent(self, event):
55       #print "dans mouseDoubleClickEvent", self
56       if self not in self.monOptionnel.dicoCb: 
57          event.accept()
58          return
59       listeCheckedMC="+"+self.monOptionnel.dicoCb[self]
60       self.monOptionnel.parentMC.ajoutMC(listeCheckedMC)
61       event.accept()
62       
63
64    def mousePressEvent(self, event):
65       if not( event.button() != Qt.RightButton)  : 
66          event.accept()
67          return
68       if self.monOptionnel.cbPressed != None :
69          self.monOptionnel.cbPressed.setChecked(False)
70       self.monOptionnel.cbPressed=self
71       if self.mousePressed == False :
72          self.mousePressed=True
73       else :
74          self.mousePressed=False
75          self.ajoutAideMC()
76       QCheckBox.mousePressEvent(self, event)
77       event.accept()
78
79    def ajoutAideMC(self):
80       try :
81         maDefinition = self.monOptionnel.parentMC.definition.entites[self.texte]
82         maLangue =  self.monOptionnel.parentMC.jdc.lang
83         if hasattr(maDefinition,maLangue): 
84           self.monAide = getattr(maDefinition,self.monOptionnel.parentMC.jdc.lang)
85         else : 
86           self.monAide = ""
87       except :
88           self.monAide = ""
89       self.monOptionnel.parentMC.editor.afficheCommentaire(self.monAide)
90   
91 class MonPBButtonCustom(QWidget,Ui_customPB):
92
93    def __init__(self,texte,monOptionnel,parent=None,couleur=None):
94       QWidget.__init__(self)
95       self.setupUi(self)
96       if couleur != None :
97          self.monPb.setText(texte)
98          self.monPb.setStyleSheet('QPushButton {background-color: #A3C1DA; color: red;}')
99          #mapalette=self.monPb.palette()
100          #mapalette.setColor( QPalette.ButtonText, Qt.red )
101          #self.monPb.setPalette( mapalette )
102          self.monPb.update()
103          #self.update()
104          try :
105            monToolTip=monOptionnel.parentMC.dictToolTipMc[texte]
106            self.monPb.setToolTip(monToolTip)
107          except :
108            pass
109       self.monPb.setText(texte)
110       self.monPb.clicked.connect(self.ajoutMC)
111
112       self.texte=texte
113       self.monOptionnel=monOptionnel
114       self.definitAideMC()
115       self.setToolTip(self.monAide)
116
117    def ajoutMC (self) :
118       listeCheckedMC="+"+self.monOptionnel.dicoCb[self]
119       self.monOptionnel.parentMC.ajoutMC(listeCheckedMC)
120
121    def definitAideMC(self):
122       try :
123         maDefinition = self.monOptionnel.parentMC.definition.entites[self.texte]
124         maLangue =  self.monOptionnel.parentMC.jdc.lang
125         if hasattr(maDefinition,maLangue): 
126           self.monAide = getattr(maDefinition,self.monOptionnel.parentMC.jdc.lang)
127       except :
128           self.monAide = ""
129         
130 class MonGroupeOptionnel (QWidget,Ui_groupeOptionnel):
131   """
132   """
133   def __init__(self,liste,liste_rouge,parentQt,parentMC):
134      #print ("dans init de monWidgetOptionnel ", parentQt, liste,parentMC)
135      QWidget.__init__(self,None)
136      self.setupUi(self)
137      self.listeChecked=[]
138      self.dicoCb={}
139      self.mousePressed=False
140      self.cbPressed=None
141      self.cb=None
142      self.parentQt=parentQt
143      self.parentMC=parentMC
144      
145
146      if liste != [] : 
147         self.affiche(liste,liste_rouge)
148         self.afficheTitre()
149      elif self.parentQt.parentQt.maConfiguration.afficheOptionnelVide != False : 
150         self.afficheTitre()
151         self.MCOptionnelLayout.insertWidget(0,QLabel(tr('Pas de MC Optionnel')))
152      else :
153         self.frameLabelMC.close()
154      #print "dans fin de monWidgetOptionnel ", parentQt
155
156
157   def afficheTitre(self):
158      labeltext,fonte,couleur = self.parentMC.node.item.getLabelText()
159      #print (labeltext)
160      l=tr(labeltext)
161      li=[]
162      while len(l) > 25:
163          li.append(l[0:24])
164          l=l[24:]
165      li.append(l)
166      texte=""
167      for l in li : texte+=l+"\n"
168      texte=texte[0:-1]
169      self.MCLabel.setText(texte)
170
171   def affiche(self,liste,liste_rouge):
172      #print ("dans Optionnel ____ affiche", liste,liste_rouge)
173      self.dicoCb={}
174      liste.reverse()
175      for mot in liste :
176          #if mot in liste_rouge : print ('je dois afficher en rouge' , mot)
177          couleur=None
178          if mot in liste_rouge : couleur=Qt.red 
179          if self.parentQt.parentQt.maConfiguration.simpleClic == False :
180             cb = MonRBButtonCustom(mot,self,couleur=couleur)
181             cb.clicked.connect(cb.ajoutAideMC)
182          else :
183             cb = MonPBButtonCustom(mot,self,couleur=couleur)
184
185          self.MCOptionnelLayout.insertWidget(0,cb)
186          self.dicoCb[cb]=mot
187      self.scrollAreaCommandesOptionnelles.horizontalScrollBar().setSliderPosition(0)
188