]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/monGroupeOptionnel.py
Salome HOME
bug sur un mesage dans une exception sur un validator (cf JPA)
[tools/eficas.git] / InterfaceQT4 / monGroupeOptionnel.py
1 # Copyright (C) 2007-2021   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)