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.menu.insertItem( 'View3D', self.view3D )
25 def doPaste(self,node_selected):
27 Déclenche la copie de l'objet item avec pour cible
28 l'objet passé en argument : node_selected
30 objet_a_copier = self.item.get_copie_objet()
31 child=node_selected.doPasteCommande(objet_a_copier)
34 def doPasteCommande(self,objet_a_copier):
36 Réalise la copie de l'objet passé en argument qui est nécessairement
40 #child = parent.item.append_child(objet_a_copier,self.item.getObject())
41 child = self.append_brother(objet_a_copier)
42 #if child is None:return 0
45 def doPasteMCF(self,objet_a_copier):
47 Réalise la copie de l'objet passé en argument (objet_a_copier)
48 Il s'agit forcément d'un mot clé facteur
50 child = self.append_child(objet_a_copier,pos='first',retour='oui')
54 from Editeur import TroisDPal
55 troisD=TroisDPal.TroisDPilote(self.item,self.editor.parent.appliEficas)
59 class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
60 """ La classe EtapeTreeItem est un adaptateur des objets ETAPE du noyau
61 Accas. Elle leur permet d'etre affichés comme des noeuds
63 Cette classe a entre autres deux attributs importants :
64 - _object qui est un pointeur vers l'objet du noyau
65 - object qui pointe vers l'objet auquel sont délégués les
66 appels de méthode et les acces aux attributs
67 Dans le cas d'une ETAPE, _object et object pointent vers le
72 def IsExpandable(self):
75 def GetIconName(self):
77 Retourne le nom de l'icone a afficher dans l'arbre
78 Ce nom dépend de la validité de l'objet
80 if not self.object.isactif():
81 return "ast-white-square"
82 elif self.object.isvalid():
83 return "ast-green-square"
85 valid=self.valid_child()
86 valid=valid * self.valid_regles("non")
87 if self.reste_val != {}:
90 return "ast-red-square"
93 # on traite ici le cas d include materiau
94 # print self.object.definition.nom
95 if self.object.fichier_ini != self.object.nom_mater :
96 return "ast-red-square"
99 return "ast-yellow-square"
101 def GetLabelText(self):
102 """ Retourne 3 valeurs :
103 - le texte a afficher dans le noeud représentant l'item
104 - la fonte dans laquelle afficher ce texte
105 - la couleur du texte
107 if self.object.isactif():
108 # None --> fonte et couleur par défaut
109 return self.labeltext,None,None
111 return self.labeltext, None, None #CS_pbruno todo
113 def get_objet(self,name) :
114 for v in self.object.mc_liste:
115 if v.nom == name : return v
118 def get_type_sd_prod(self):
120 Retourne le nom du type du concept résultat de l'étape
122 sd_prod=self.object.get_type_produit()
124 return sd_prod.__name__
128 def additem(self,name,pos):
129 mcent = self._object.addentite(name,pos)
133 def suppitem(self,item) :
134 # item : item du MOCLE de l'ETAPE a supprimer
135 # item.getObject() = MCSIMP, MCFACT, MCBLOC ou MCList
136 itemobject=item.getObject()
137 if itemobject.isoblig() :
138 self.appli.affiche_infos('Impossible de supprimer un mot-clé obligatoire ')
140 if self.object.suppentite(itemobject):
141 message = "Mot-clé " + itemobject.nom + " supprimé"
142 self.appli.affiche_infos(message)
145 self.appli.affiche_infos('Pb interne : impossible de supprimer ce mot-clé')
150 return self.object.get_sdname()
155 keys=self.object.mc_dict.keys()
158 def GetSubList(self):
160 Reactualise la liste des items fils stockes dans self.sublist
163 liste=self.object.mc_liste
167 sublist=[None]*len(liste)
168 # suppression des items lies aux objets disparus
169 for item in self.sublist:
170 old_obj=item.getObject()
172 pos=liste.index(old_obj)
175 pass # objets supprimes ignores
177 # ajout des items lies aux nouveaux objets
180 if sublist[pos] is None:
181 # nouvel objet : on cree un nouvel item
182 def setfunction(value, object=obj):
184 item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, setfunction)
192 return self.object.isvalid()
194 def iscopiable(self):
196 Retourne 1 si l'objet est copiable, 0 sinon
200 def update(self,item):
201 if item.sd and item.sd.nom:
202 self.nomme_sd(item.sd.nom)
204 def nomme_sd(self,nom):
205 """ Lance la méthode de nommage de la SD """
207 if self.object.sd != None :
208 oldnom=self.object.sd.nom
209 test,mess= self.object.nomme_sd(nom)
210 if test:self.object.parent.reset_context()
211 if (test and self.appli.dict_reels.has_key(oldnom) ):
212 self.appli.dict_reels[nom]=self.appli.dict_reels[oldnom]
215 def is_reentrant(self):
216 return self.object.is_reentrant()
218 def get_noms_sd_oper_reentrant(self):
219 return self.object.get_noms_sd_oper_reentrant()
221 def get_objet_commentarise(self):
223 Cette méthode retourne un objet commentarisé
224 représentatif de self.object
226 # Format de fichier utilisé
227 format=self.appli.format_fichier
228 return self.object.get_objet_commentarise(format)
230 def get_objet_commentarise_BAK(self):
232 Cette méthode retourne un objet commentarisé
233 représentatif de self.object
235 import generator,string,Accas
236 # Format de fichier utilisé
237 format=self.appli.format_fichier
238 g=generator.plugins[format]()
239 texte_commande = g.gener(self.object,format='beautifie')
240 # Il faut enlever la premiere ligne vide de texte_commande que
241 # rajoute le generator
242 rebut,texte_commande = string.split(texte_commande,'\n',1)
243 # on construit l'objet COMMANDE_COMM repésentatif de self mais non
244 # enregistré dans le jdc
245 commande_comment = Accas.COMMANDE_COMM(texte=texte_commande,reg='non',
246 parent=self.object.parent)
247 commande_comment.niveau = self.object.niveau
248 commande_comment.jdc = commande_comment.parent = self.object.jdc
250 pos=self.object.parent.etapes.index(self.object)
251 parent=self.object.parent
252 self.object.parent.suppentite(self.object)
253 parent.addentite(commande_comment,pos)
255 return commande_comment
259 treeitem = EtapeTreeItem