1 # -*- coding: utf-8 -*-
8 from Editeur import Objecttreeitem
12 class Node(browser.JDCNode, typeNode.PopUpMenuNode):
16 from monCommandePanel import MonCommandePanel
17 return MonCommandePanel(self,parent=self.editor)
19 def createPopUpMenu(self):
20 typeNode.PopUpMenuNode.createPopUpMenu(self)
21 if ("AFFE_CARA_ELEM" in self.item.get_genealogie()) and self.editor.salome:
22 self.menu.insertItem( 'View3D', self.view3D )
24 def doPaste(self,node_selected):
26 Déclenche la copie de l'objet item avec pour cible
27 l'objet passé en argument : node_selected
29 objet_a_copier = self.item.get_copie_objet()
30 child=node_selected.doPasteCommande(objet_a_copier)
33 def doPasteCommande(self,objet_a_copier):
35 Réalise la copie de l'objet passé en argument qui est nécessairement
39 #child = parent.item.append_child(objet_a_copier,self.item.getObject())
40 child = self.append_brother(objet_a_copier,retour='oui')
41 #if child is None:return 0
44 def doPasteMCF(self,objet_a_copier):
46 Réalise la copie de l'objet passé en argument (objet_a_copier)
47 Il s'agit forcément d'un mot clé facteur
49 child = self.append_child(objet_a_copier,pos='first',retour='oui')
53 from Editeur import TroisDPal
54 troisD=TroisDPal.TroisDPilote(self.item,self.editor.parent.appliEficas)
58 class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
59 """ La classe EtapeTreeItem est un adaptateur des objets ETAPE du noyau
60 Accas. Elle leur permet d'etre affichés comme des noeuds
62 Cette classe a entre autres deux attributs importants :
63 - _object qui est un pointeur vers l'objet du noyau
64 - object qui pointe vers l'objet auquel sont délégués les
65 appels de méthode et les acces aux attributs
66 Dans le cas d'une ETAPE, _object et object pointent vers le
71 def IsExpandable(self):
74 def GetIconName(self):
76 Retourne le nom de l'icone a afficher dans l'arbre
77 Ce nom dépend de la validité de l'objet
79 if not self.object.isactif():
80 return "ast-white-square"
81 elif self.object.isvalid():
82 return "ast-green-square"
84 valid=self.valid_child()
85 valid=valid * self.valid_regles("non")
86 if self.reste_val != {}:
89 return "ast-red-square"
92 # on traite ici le cas d include materiau
93 # print self.object.definition.nom
94 if self.object.fichier_ini != self.object.nom_mater :
95 return "ast-red-square"
98 return "ast-yellow-square"
100 def GetLabelText(self):
101 """ Retourne 3 valeurs :
102 - le texte a afficher dans le noeud représentant l'item
103 - la fonte dans laquelle afficher ce texte
104 - la couleur du texte
106 if self.object.isactif():
107 # None --> fonte et couleur par défaut
108 return self.labeltext,None,None
110 return self.labeltext, None, None #CS_pbruno todo
112 def get_objet(self,name) :
113 for v in self.object.mc_liste:
114 if v.nom == name : return v
117 def get_type_sd_prod(self):
119 Retourne le nom du type du concept résultat de l'étape
121 sd_prod=self.object.get_type_produit()
123 return sd_prod.__name__
127 def additem(self,name,pos):
128 mcent = self._object.addentite(name,pos)
132 def suppitem(self,item) :
133 # item : item du MOCLE de l'ETAPE a supprimer
134 # item.getObject() = MCSIMP, MCFACT, MCBLOC ou MCList
135 itemobject=item.getObject()
136 if itemobject.isoblig() :
137 self.appli.affiche_infos('Impossible de supprimer un mot-clé obligatoire ')
139 if self.object.suppentite(itemobject):
140 message = "Mot-clé " + itemobject.nom + " supprimé"
141 self.appli.affiche_infos(message)
144 self.appli.affiche_infos('Pb interne : impossible de supprimer ce mot-clé')
149 return self.object.get_sdname()
154 keys=self.object.mc_dict.keys()
157 def GetSubList(self):
159 Reactualise la liste des items fils stockes dans self.sublist
162 liste=self.object.mc_liste
166 sublist=[None]*len(liste)
167 # suppression des items lies aux objets disparus
168 for item in self.sublist:
169 old_obj=item.getObject()
171 pos=liste.index(old_obj)
174 pass # objets supprimes ignores
176 # ajout des items lies aux nouveaux objets
179 if sublist[pos] is None:
180 # nouvel objet : on cree un nouvel item
181 def setfunction(value, object=obj):
183 item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, setfunction)
191 return self.object.isvalid()
193 def iscopiable(self):
195 Retourne 1 si l'objet est copiable, 0 sinon
199 def update(self,item):
200 if item.sd and item.sd.nom:
201 self.nomme_sd(item.sd.nom)
203 def nomme_sd(self,nom):
204 """ Lance la méthode de nommage de la SD """
206 if self.object.sd != None :
207 oldnom=self.object.sd.nom
208 test,mess= self.object.nomme_sd(nom)
209 if test:self.object.parent.reset_context()
210 if (test and self.appli.dict_reels.has_key(oldnom) ):
211 self.appli.dict_reels[nom]=self.appli.dict_reels[oldnom]
214 def is_reentrant(self):
215 return self.object.is_reentrant()
217 def get_noms_sd_oper_reentrant(self):
218 return self.object.get_noms_sd_oper_reentrant()
220 def get_objet_commentarise(self):
222 Cette méthode retourne un objet commentarisé
223 représentatif de self.object
225 # Format de fichier utilisé
226 format=self.appli.format_fichier
227 return self.object.get_objet_commentarise(format)
229 def get_objet_commentarise_BAK(self):
231 Cette méthode retourne un objet commentarisé
232 représentatif de self.object
234 import generator,string,Accas
235 # Format de fichier utilisé
236 format=self.appli.format_fichier
237 g=generator.plugins[format]()
238 texte_commande = g.gener(self.object,format='beautifie')
239 # Il faut enlever la premiere ligne vide de texte_commande que
240 # rajoute le generator
241 rebut,texte_commande = string.split(texte_commande,'\n',1)
242 # on construit l'objet COMMANDE_COMM repésentatif de self mais non
243 # enregistré dans le jdc
244 commande_comment = Accas.COMMANDE_COMM(texte=texte_commande,reg='non',
245 parent=self.object.parent)
246 commande_comment.niveau = self.object.niveau
247 commande_comment.jdc = commande_comment.parent = self.object.jdc
249 pos=self.object.parent.etapes.index(self.object)
250 parent=self.object.parent
251 self.object.parent.suppentite(self.object)
252 parent.addentite(commande_comment,pos)
254 return commande_comment
258 treeitem = EtapeTreeItem