1 # -*- coding: utf-8 -*-
5 from PyQt4.QtGui import *
6 from PyQt4.QtCore import *
9 from Editeur import Objecttreeitem
13 class Node(browser.JDCNode, typeNode.PopUpMenuNode):
17 from monCommandePanel import MonCommandePanel
18 return MonCommandePanel(self,parent=self.editor)
20 def createPopUpMenu(self):
21 typeNode.PopUpMenuNode.createPopUpMenu(self)
22 if ("AFFE_CARA_ELEM" in self.item.get_genealogie()) and self.editor.salome:
23 self.ViewElt = QAction('View3D',self.tree)
24 self.tree.connect(self.ViewElt,SIGNAL("activated()"),self.view3D)
25 self.ViewElt.setStatusTip("affiche dans Geom les elements de structure")
26 self.menu.addAction(self.ViewElt)
27 if self.item.isvalid() :
28 self.ViewElt.setEnabled(1)
30 self.ViewElt.setEnabled(0)
31 if self.item.get_nom() == "DISTRIBUTION" :
32 self.Graphe = QAction('Graphique',self.tree)
33 self.tree.connect(self.Graphe,SIGNAL("activated()"),self.viewPng)
34 self.Graphe.setStatusTip("affiche la distribution ")
35 self.menu.addAction(self.Graphe)
36 if self.item.isvalid() :
37 self.Graphe.setEnabled(1)
39 self.Graphe.setEnabled(0)
42 from Editeur import TroisDPal
43 troisD=TroisDPal.TroisDPilote(self.item,self.editor.appliEficas)
47 from monPixmap import MonLabelPixmap
48 fichier=self.appliEficas.getName()
56 g = generator.plugins[self.appliEficas.format_fichier]()
57 g.gener(self.item.object, format='beautifie')
58 stdGener = g.getGenerateur()
59 if len(g.dictMCLois) != 1:
62 self.appliEficas.trUtf8("Erreur interne"),
63 self.appliEficas.trUtf8("La PDF de la loi ne peut pas etre affichee."),
64 self.appliEficas.trUtf8("&Annuler"))
66 loi = g.dictMCLois.keys()[0]
67 nomLoi = loi.get_name()
68 script = stdGener.GraphiquePDF(loi, fichier)
72 widgetPng=MonLabelPixmap(self.appliEficas,fichier,nomLoi)
78 self.appliEficas.trUtf8("Erreur interne"),
79 self.appliEficas.trUtf8("La PDF de la loi ne peut pas etre affichee."),
80 self.appliEficas.trUtf8("&Annuler"))
82 class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
83 """ La classe EtapeTreeItem est un adaptateur des objets ETAPE du noyau
84 Accas. Elle leur permet d'etre affichés comme des noeuds
86 Cette classe a entre autres deux attributs importants :
87 - _object qui est un pointeur vers l'objet du noyau
88 - object qui pointe vers l'objet auquel sont délégués les
89 appels de méthode et les acces aux attributs
90 Dans le cas d'une ETAPE, _object et object pointent vers le
95 def IsExpandable(self):
98 def GetIconName(self):
100 Retourne le nom de l'icone a afficher dans l'arbre
101 Ce nom depend de la validite de l'objet
103 if not self.object.isactif():
104 return "ast-white-square"
105 elif self.object.isvalid():
106 return "ast-green-square"
108 valid=self.valid_child()
109 valid=valid * self.valid_regles("non")
110 if self.reste_val != {}:
113 return "ast-red-square"
116 # on traite ici le cas d include materiau
117 # print self.object.definition.nom
118 if self.object.fichier_ini != self.object.nom_mater :
119 return "ast-red-square"
122 return "ast-yellow-square"
124 def GetLabelText(self):
125 """ Retourne 3 valeurs :
126 - le texte a afficher dans le noeud représentant l'item
127 - la fonte dans laquelle afficher ce texte
128 - la couleur du texte
130 if self.object.isactif():
131 # None --> fonte et couleur par défaut
132 return self.labeltext,None,None
134 return self.labeltext, None, None #CS_pbruno todo
136 def get_objet(self,name) :
137 for v in self.object.mc_liste:
138 if v.nom == name : return v
141 def get_type_sd_prod(self):
143 Retourne le nom du type du concept résultat de l'étape
145 sd_prod=self.object.get_type_produit()
147 return sd_prod.__name__
151 def additem(self,name,pos):
152 mcent = self._object.addentite(name,pos)
156 def suppitem(self,item) :
157 # item : item du MOCLE de l'ETAPE a supprimer
158 # item.getObject() = MCSIMP, MCFACT, MCBLOC ou MCList
159 itemobject=item.getObject()
160 if itemobject.isoblig() :
161 self.appli.affiche_infos('Impossible de supprimer un mot-clé obligatoire ',Qt.red)
163 if self.object.suppentite(itemobject):
164 message = "Mot-clef " + itemobject.nom + " supprime"
165 self.appli.affiche_infos(message)
168 self.appli.affiche_infos('Pb interne : impossible de supprimer ce mot-clé',Qt.red)
173 return self.object.get_sdname()
178 keys=self.object.mc_dict.keys()
181 def GetSubList(self):
183 Reactualise la liste des items fils stockes dans self.sublist
186 liste=self.object.mc_liste
190 sublist=[None]*len(liste)
191 # suppression des items lies aux objets disparus
192 for item in self.sublist:
193 old_obj=item.getObject()
195 pos=liste.index(old_obj)
198 pass # objets supprimes ignores
200 # ajout des items lies aux nouveaux objets
203 if sublist[pos] is None:
204 # nouvel objet : on cree un nouvel item
205 def setfunction(value, object=obj):
207 item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, setfunction)
215 return self.object.isvalid()
217 def iscopiable(self):
219 Retourne 1 si l'objet est copiable, 0 sinon
223 def update(self,item):
224 if item.sd and item.sd.nom:
225 self.nomme_sd(item.sd.nom)
227 def nomme_sd(self,nom):
228 """ Lance la méthode de nommage de la SD """
230 if self.object.sd != None :
231 oldnom=self.object.sd.nom
232 test,mess= self.object.nomme_sd(nom)
233 if test:self.object.parent.reset_context()
234 if (test and self.appli.dict_reels.has_key(oldnom) ):
235 self.appli.dict_reels[nom]=self.appli.dict_reels[oldnom]
238 def is_reentrant(self):
239 return self.object.is_reentrant()
241 def get_noms_sd_oper_reentrant(self):
242 return self.object.get_noms_sd_oper_reentrant()
244 def get_objet_commentarise(self):
246 Cette méthode retourne un objet commentarisé
247 représentatif de self.object
249 # Format de fichier utilisé
250 format=self.appli.appliEficas.format_fichier
251 return self.object.get_objet_commentarise(format)
253 def get_objet_commentarise_BAK(self):
255 Cette méthode retourne un objet commentarisé
256 représentatif de self.object
258 import generator,string,Accas
259 # Format de fichier utilisé
260 format=self.appli.appliEficas.format_fichier
261 g=generator.plugins[format]()
262 texte_commande = g.gener(self.object,format='beautifie')
263 # Il faut enlever la premiere ligne vide de texte_commande que
264 # rajoute le generator
265 rebut,texte_commande = string.split(texte_commande,'\n',1)
266 # on construit l'objet COMMANDE_COMM repésentatif de self mais non
267 # enregistré dans le jdc
268 commande_comment = Accas.COMMANDE_COMM(texte=texte_commande,reg='non',
269 parent=self.object.parent)
270 commande_comment.niveau = self.object.niveau
271 commande_comment.jdc = commande_comment.parent = self.object.jdc
273 pos=self.object.parent.etapes.index(self.object)
274 parent=self.object.parent
275 self.object.parent.suppentite(self.object)
276 parent.addentite(commande_comment,pos)
278 return commande_comment
282 treeitem = EtapeTreeItem