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(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
104 self.editor.restoreSplitterSizes()
106 self.monOptionnel=MonWidgetOptionnel(self)
107 self.editor.widgetOptionnel=self.monOptionnel
108 self.editor.splitter.addWidget(self.monOptionnel)
109 #self.editor.restoreSplitterSizes()
110 self.afficheOptionnel()
111 #print "fin init de widget Commande"
114 def donnePremier(self):
115 #print "dans donnePremier"
116 QApplication.processEvents()
117 if self.listeAffichageWidget != [] :
118 self.listeAffichageWidget[0].setFocus(7)
119 QApplication.processEvents()
120 #print self.focusWidget()
123 def focusNextPrevChild(self, next):
124 # on s assure que ce n est pas un chgt de fenetre
125 #print "je passe dans focusNextPrevChild"
126 if self.editor.fenetreCentraleAffichee != self : return True
128 if f not in self.listeAffichageWidget :
130 while not hasattr (f,'AAfficher') :
131 if f==None :i=-1; break
133 if hasattr(f,'AAfficher') : f=f.AAfficher
134 if i != -1 : i=self.listeAffichageWidget.index(f)
135 else :i=self.listeAffichageWidget.index(f)
136 if (i==len(self.listeAffichageWidget) -1) and next and not self.inhibe:
138 self.listeAffichageWidget[1].setFocus(7)
141 w.focusPreviousChild()
145 print self.listeAffichageWidget
146 print "souci ds focusNextPrevChild"
147 if i==0 and next==False and not self.inhibe:
148 if hasattr(self.editor.fenetreCentraleAffichee,'scrollArea'):
149 self.editor.fenetreCentraleAffichee.scrollArea.ensureWidgetVisible(self.listeAffichageWidget[-1])
150 self.listeAffichageWidget[-2].setFocus(7)
156 if i==0 and next==True and not self.inhibe:
157 self.listeAffichageWidget[0].setFocus(7)
163 if i>0 and next==False and not self.inhibe:
164 if isinstance(self.listeAffichageWidget[i-1],QRadioButton):
165 self.listeAffichageWidget[i-1].setFocus(7)
167 return QWidget.focusNextPrevChild(self, next)
169 def etablitOrdre(self):
171 while(i +1 < len(self.listeAffichageWidget)):
172 self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1])
174 # si on boucle on perd l'ordre
176 def afficheSuivant(self,f):
178 i=self.listeAffichageWidget.index(f)
182 if (next==len(self.listeAffichageWidget) -1 ): next =0
184 #QTimer.singleShot(1, self.rendVisible)
186 self.listeAffichageWidget[next].setFocus(7)
191 nom = str(self.LENom.text())
192 nom = string.strip(nom)
193 if nom == '' : return # si pas de nom, on ressort sans rien faire
194 test,mess = self.node.item.nomme_sd(nom)
195 self.editor.affiche_commentaire(mess)
197 #Notation scientifique
199 from politiquesValidation import Validation
200 validation=Validation(self.node,self.editor)
201 validation.AjoutDsDictReelEtape()
203 def afficheOptionnel(self):
204 # N a pas de parentQt. doit donc etre redefini
205 liste=self.ajouteMCOptionnelDesBlocs()
206 #print "dans afficheOptionnel", self.monOptionnel
207 # dans le cas ou l insertion n a pas eu leiu (souci d ordre par exemple)
208 #if self.monOptionnel == None : return
209 self.monOptionnel.parentMC=self
210 self.monOptionnel.affiche(liste)
212 #def focusInEvent(self,event):
213 #print "je mets a jour dans focusInEvent de monWidget Commande "
214 # if self.editor.code == "CARMELCND" : return #Pas de MC Optionnels pour Carmel
215 # self.afficheOptionnel()
218 def reaffiche(self,nodeAVoir=None):
219 self.avantH=self.editor.fenetreCentraleAffichee.scrollAreaCommandes.horizontalScrollBar().sliderPosition()
220 self.avantV=self.editor.fenetreCentraleAffichee.scrollAreaCommandes.verticalScrollBar().sliderPosition()
221 self.inhibeExpand=True
222 self.node.affichePanneau()
223 #print "dans reaffiche de monWidgetCommande", self.avantH, self.avantV
224 QTimer.singleShot(1, self.recentre)
225 if nodeAVoir != None:
226 self.f=nodeAVoir.fenetre
228 newNode=nodeAVoir.treeParent.chercheNoeudCorrespondant(nodeAVoir.item.object)
229 self.f = newNode.fenetre
230 print "dans reaffiche",self.f, nodeAVoir.item.nom
231 if self.f != None and self.f.isVisible() : return
232 if self.f != None : QTimer.singleShot(1, self.rendVisible)
233 self.inhibeExpand=False
237 QApplication.processEvents()
238 s=self.editor.fenetreCentraleAffichee.scrollAreaCommandes
239 s.horizontalScrollBar().setSliderPosition(self.avantH)
240 s.verticalScrollBar().setSliderPosition(self.avantV)
242 def rendVisibleNoeud(self,node):
244 print "dans rendVisibleNoeud",self.f, node.item.nom
245 QTimer.singleShot(1, self.rendVisible)
247 def rendVisible(self):
248 QApplication.processEvents()
250 self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(self.f)
252 def afficheCatalogue(self):
253 if self.editor.widgetOptionnel != None : self.monOptionnel.hide()
254 self.racine.affichePanneau()
255 if self.node : self.node.select()
256 else : self.racine.select()
258 def afficheApres(self):
259 self.node.selectApres()
261 def afficheAvant(self):
262 self.node.selectAvant()
265 if not(hasattr (self,'RBValide')) : return
267 if self.node.item.object.isvalid() :
268 icon=QIcon(self.repIcon+"/ast-green-ball.png")
270 icon=QIcon(self.repIcon+"/ast-red-ball.png")
271 if self.node.item.GetIconName() == "ast-yellow-square" :
272 icon=QIcon(self.repIcon+"/ast-yel-ball.png")
273 self.RBValide.setIcon(icon)