1 # Copyright (C) 2007-2013 EDF R&D
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.
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.
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
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 from desWidgetCommande import Ui_WidgetCommande
23 from groupe import Groupe
24 from gereIcones import FacultatifOuOptionnel
25 from determine import monEnvQT5
28 from PyQt5.QtWidgets import QApplication, QWidget
29 from PyQt5.QtGui import QFont, QIcon
30 from PyQt5.QtCore import QTimer
32 from PyQt4.QtGui import *
33 from PyQt4.QtCore import *
36 from Extensions.i18n import tr
44 class MonWidgetCommande(Ui_WidgetCommande,Groupe):
47 def __init__(self,node,editor,etape):
48 #print "MonWidgetCommande ", self
49 self.listeAffichageWidget=[]
52 Groupe.__init__(self,node,editor,None,etape.definition,etape,1,self)
54 if node.item.get_fr() != "" : self.labelDoc.setText(QString(node.item.get_fr()))
55 else : self.labelDoc.close()
57 if (etape.get_type_produit()==None): self.LENom.close()
58 elif (hasattr(etape, 'sdnom')) and etape.sdnom != "sansnom" and etape.sdnom != None: self.LENom.setText(etape.sdnom)
59 else : self.LENom.setText("")
61 maPolice= QFont("Times", 10,)
62 self.setFont(maPolice)
63 self.labelNomCommande.setText(tr(self.obj.nom))
65 self.commandesLayout.addStretch()
66 self.commandesLayout.focusInEvent=self.focusInEvent
67 self.scrollAreaCommandes.focusInEvent=self.focusInEvent
71 if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close()
72 else : self.bCatalogue.clicked.connect(self.afficheCatalogue)
73 if self.editor.code in ['Adao','MAP'] :
77 self.bAvant.clicked.connect(self.afficheAvant)
78 self.bApres.clicked.connect(self.afficheApres)
79 self.LENom.returnPressed.connect(self.nomChange)
81 if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close()
82 else : self.connect(self.bCatalogue,SIGNAL("clicked()"), self.afficheCatalogue)
83 if self.editor.code in ['Adao','MAP'] :
87 self.connect(self.bAvant,SIGNAL("clicked()"), self.afficheAvant)
88 self.connect(self.bApres,SIGNAL("clicked()"), self.afficheApres)
89 self.connect(self.LENom,SIGNAL("returnPressed()"),self.nomChange)
91 self.racine=self.node.tree.racine
92 if self.node.item.GetIconName() == "ast-red-square" : self.LENom.setDisabled(True)
94 self.setAcceptDrops(True)
97 if self.editor.code == "CARMELCND" :
98 self.RBPoubelle.close() # JDC Fige
99 return # Pas de MC Optionnels pour Carmel
100 from monWidgetOptionnel import MonWidgetOptionnel
101 #if hasattr(self.editor,'widgetOptionnel') :
102 if self.editor.widgetOptionnel!= None :
103 self.monOptionnel=self.editor.widgetOptionnel
105 self.monOptionnel=MonWidgetOptionnel(self)
106 self.editor.widgetOptionnel=self.monOptionnel
107 self.editor.splitter.addWidget(self.monOptionnel)
108 #self.editor.restoreSplitterSizes()
109 self.afficheOptionnel()
110 #print "fin init de widget Commande"
113 def donnePremier(self):
114 #print "dans donnePremier"
115 QApplication.processEvents()
116 if self.listeAffichageWidget != [] :
117 self.listeAffichageWidget[0].setFocus(7)
118 QApplication.processEvents()
119 #print self.focusWidget()
122 def focusNextPrevChild(self, next):
123 # on s assure que ce n est pas un chgt de fenetre
124 #print "je passe dans focusNextPrevChild"
125 if self.editor.fenetreCentraleAffichee != self : return True
127 if f not in self.listeAffichageWidget :
129 while not hasattr (f,'AAfficher') :
130 if f==None :i=-1; break
132 if hasattr(f,'AAfficher') : f=f.AAfficher
133 if i != -1 : i=self.listeAffichageWidget.index(f)
134 else :i=self.listeAffichageWidget.index(f)
135 if (i==len(self.listeAffichageWidget) -1) and next and not self.inhibe:
137 self.listeAffichageWidget[1].setFocus(7)
140 w.focusPreviousChild()
144 print self.listeAffichageWidget
145 print "souci ds focusNextPrevChild"
146 if i==0 and next==False and not self.inhibe:
147 if hasattr(self.editor.fenetreCentraleAffichee,'scrollArea'):
148 self.editor.fenetreCentraleAffichee.scrollArea.ensureWidgetVisible(self.listeAffichageWidget[-1])
149 self.listeAffichageWidget[-2].setFocus(7)
155 if i==0 and next==True and not self.inhibe:
156 self.listeAffichageWidget[0].setFocus(7)
162 if i>0 and next==False and not self.inhibe:
163 if isinstance(self.listeAffichageWidget[i-1],QRadioButton):
164 self.listeAffichageWidget[i-1].setFocus(7)
166 return QWidget.focusNextPrevChild(self, next)
168 def etablitOrdre(self):
170 while(i +1 < len(self.listeAffichageWidget)):
171 self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1])
173 # si on boucle on perd l'ordre
175 def afficheSuivant(self,f):
177 i=self.listeAffichageWidget.index(f)
181 if (next==len(self.listeAffichageWidget) -1 ): next =0
183 #QTimer.singleShot(1, self.rendVisible)
185 self.listeAffichageWidget[next].setFocus(7)
190 nom = str(self.LENom.text())
191 nom = string.strip(nom)
192 if nom == '' : return # si pas de nom, on ressort sans rien faire
193 test,mess = self.node.item.nomme_sd(nom)
194 self.editor.affiche_commentaire(mess)
196 #Notation scientifique
198 from politiquesValidation import Validation
199 validation=Validation(self.node,self.editor)
200 validation.AjoutDsDictReelEtape()
202 def afficheOptionnel(self):
203 # N a pas de parentQt. doit donc etre redefini
204 liste=self.ajouteMCOptionnelDesBlocs()
205 #print "dans afficheOptionnel", self.monOptionnel
206 # dans le cas ou l insertion n a pas eu leiu (souci d ordre par exemple)
207 #if self.monOptionnel == None : return
208 self.monOptionnel.parentMC=self
209 self.monOptionnel.affiche(liste)
211 #def focusInEvent(self,event):
212 #print "je mets a jour dans focusInEvent de monWidget Commande "
213 # if self.editor.code == "CARMELCND" : return #Pas de MC Optionnels pour Carmel
214 # self.afficheOptionnel()
217 def reaffiche(self,nodeAVoir=None):
218 self.avantH=self.editor.fenetreCentraleAffichee.scrollAreaCommandes.horizontalScrollBar().sliderPosition()
219 self.avantV=self.editor.fenetreCentraleAffichee.scrollAreaCommandes.verticalScrollBar().sliderPosition()
220 self.inhibeExpand=True
221 self.node.affichePanneau()
222 #print "dans reaffiche de monWidgetCommande", self.avantH, self.avantV
223 QTimer.singleShot(1, self.recentre)
224 if nodeAVoir != None:
225 self.f=nodeAVoir.fenetre
227 newNode=nodeAVoir.treeParent.chercheNoeudCorrespondant(nodeAVoir.item.object)
228 self.f = newNode.fenetre
229 print "dans reaffiche",self.f, nodeAVoir.item.nom
230 if self.f != None and self.f.isVisible() : return
231 if self.f != None : QTimer.singleShot(1, self.rendVisible)
232 self.inhibeExpand=False
236 QApplication.processEvents()
237 s=self.editor.fenetreCentraleAffichee.scrollAreaCommandes
238 s.horizontalScrollBar().setSliderPosition(self.avantH)
239 s.verticalScrollBar().setSliderPosition(self.avantV)
241 def rendVisibleNoeud(self,node):
243 print "dans rendVisibleNoeud",self.f, node.item.nom
244 QTimer.singleShot(1, self.rendVisible)
246 def rendVisible(self):
247 QApplication.processEvents()
249 self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(self.f)
251 def afficheCatalogue(self):
252 if self.editor.widgetOptionnel != None : self.monOptionnel.hide()
253 self.racine.affichePanneau()
254 if self.node : self.node.select()
255 else : self.racine.select()
257 def afficheApres(self):
258 self.node.selectApres()
260 def afficheAvant(self):
261 self.node.selectAvant()
264 if not(hasattr (self,'RBValide')) : return
266 if self.node.item.object.isvalid() :
267 icon=QIcon(self.repIcon+"/ast-green-ball.png")
269 icon=QIcon(self.repIcon+"/ast-red-ball.png")
270 if self.node.item.GetIconName() == "ast-yellow-square" :
271 icon=QIcon(self.repIcon+"/ast-yel-ball.png")
272 self.RBValide.setIcon(icon)