1 #@ MODIF compooper Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE
2 # CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
5 # SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND
6 # REDISTRIBUTION OF THIS FILE.
7 # ======================================================================
15 class OPERPanel(panels.OngletPanel):
18 nb = Pmw.NoteBook(self,raisecommand=self.raisecmd)
19 nb.pack(fill = 'both', expand = 1)
21 nb.add('Mocles', tab_text='Nouveau mot-clé')
22 nb.add('Concept', tab_text='Nommer concept')
23 nb.add('Commande', tab_text='Nouvelle Commande')
24 nb.add('Commentaire',tab_text='Paramètre/Commentaire')
25 panneau=Pmw.PanedWidget(nb.page("Mocles"),
27 panneau.add('left',min=0.4,max=0.6,size=0.5)
28 panneau.add('right',min=0.4,max=0.6,size=0.5)
29 panneau.pack(expand=1,fill='both')
30 self.makeCommandePage(nb.page("Commande"))
31 self.makeConceptPage_oper(nb.page("Concept"))
32 self.makeMoclesPage(panneau.pane('left'))
33 self.makeReglesPage(panneau.pane('right'))
34 #self.makeCommentairePage(nb.page("Commentaire"))
35 self.makeParamCommentPage_for_etape(nb.page("Commentaire"))
36 nb.tab('Mocles').focus_set()
40 def makeConceptPage_oper(self,page):
41 """ Crée la page de saisie du nom du concept """
42 if self.node.item.is_reentrant():
43 self.makeConceptPage_reentrant(page)
45 self.makeConceptPage(page)
47 def makeConceptPage_reentrant(self,page):
48 """ Crée la page de saisie du nom de concept pour un opérateur reentrant
49 cad propose dans la liste des SD utilisées dans la commande celle(s) dont le
50 type est compatible avec celui que retourne l'opérateur """
51 liste_noms_sd = self.node.item.get_noms_sd_oper_reentrant()
52 self.listbox = Pmw.ScrolledListBox(page,
55 label_text="Structure(s) de données à enrichir par l'opérateur courant :",
57 selectioncommand=self.select_valeur_from_list,
58 dblclickcommand=lambda s=self,c=self.execConcept : s.choose_valeur_from_list(c))
59 self.listbox.place(relx=0.5,rely=0.3,relheight=0.4,anchor='center')
60 Label(page,text='Structure de donnée choisie :').place(relx=0.05,rely=0.6)
61 self.valeur_choisie = StringVar()
62 self.label_valeur = Label(page,textvariable=self.valeur_choisie)
63 self.label_valeur.place(relx=0.45,rely=0.6)
64 if len(liste_noms_sd) == 1 :
65 self.valeur_choisie.set(liste_noms_sd[0])
67 def select_valeur_from_list(self):
69 choix = self.listbox.getcurselection()[0]
70 self.valeur_choisie.set(choix)
75 def choose_valeur_from_list(self,command):
77 choix = self.listbox.getcurselection()[0]
78 self.valeur_choisie.set(choix)
83 class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
86 def IsExpandable(self):
89 def GetIconName(self):
91 Retourne le nom de l'icône à afficher dans l'arbre
92 Ce nom dépend de la validité de l'objet
94 if self.object.isactif():
95 if self.object.isvalid():
96 return "ast-green-square"
98 return "ast-red-square"
100 return "ast-white-square"
102 def GetLabelText(self):
103 """ Retourne 3 valeurs :
104 - le texte à afficher dans le noeud représentant l'item
105 - la fonte dans laquelle afficher ce texte
106 - la couleur du texte
108 if self.object.isactif():
109 # None --> fonte et couleur par défaut
110 return self.labeltext,None,None
112 return self.labeltext,fontes.standard_italique,None
114 def get_objet(self,name) :
115 for v in self.object.mc_liste:
116 if v.nom == name : return v
119 def get_type_sd_prod(self):
121 Retourne le nom du type du concept résultat de l'étape
123 sd_prod=self.object.get_type_produit()
125 return sd_prod.__name__
129 def additem(self,name,pos):
130 if isinstance(name,Objecttreeitem.ObjectTreeItem) :
131 mcent = self.object.addentite(name.object,pos)
133 mcent = self.object.addentite(name,pos)
136 # on ne peut ajouter l'élément de nom name
138 def setfunction(value, object=mcent):
140 item = self.make_objecttreeitem(self.appli,mcent.nom + " : ", mcent, setfunction)
143 def suppitem(self,item) :
144 # item : item du MOCLE de l'ETAPE à supprimer
145 # item.object = MCSIMP, MCFACT, MCBLOC ou MCList
146 if item.object.isoblig() :
147 self.appli.affiche_infos('Impossible de supprimer un mot-clé obligatoire ')
150 self.object.suppentite(item.object)
151 message = "Mot-clé " + item.object.nom + " supprimé"
152 self.appli.affiche_infos(message)
157 return self.object.get_sdname()
162 keys=self.object.mc_dict.keys()
165 def GetSubList(self):
167 for obj in self.object.mc_liste:
168 def setfunction(value, object=obj):
170 item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, setfunction)
175 return self.object.isvalid()
177 def iscopiable(self):
179 Retourne 1 si l'objet est copiable, 0 sinon
183 def isCommande(self):
185 Retourne 1 si l'objet pointé par self est une Commande, 0 sinon
189 def verif_condition_bloc(self):
190 return self.object.verif_condition_bloc()
192 def nomme_sd(self,nom):
193 """ Lance la méthode de nommage de la SD """
194 test,mess= self.object.nomme_sd(nom)
195 if test:self.object.parent.reset_context()
198 def is_reentrant(self):
199 return self.object.is_reentrant()
201 def get_noms_sd_oper_reentrant(self):
202 return self.object.get_noms_sd_oper_reentrant()
204 def get_objet_commentarise(self):
206 Cette méthode retourne un objet commentarisé
207 représentatif de self.object
209 import generator,string,Accas
210 # Format de fichier utilisé
211 format=self.appli.format_fichier.get()
212 g=generator.plugins[format]()
213 texte_commande = g.gener(self.object,format='beautifie')
214 # Il faut enlever la première ligne vide de texte_commande que
215 # rajoute le generator
216 rebut,texte_commande = string.split(texte_commande,'\n',1)
217 # on construit l'objet COMMANDE_COMM repésentatif de self mais non
218 # enregistré dans le jdc
219 commande_comment = Accas.COMMANDE_COMM(texte=texte_commande,reg='non',
220 parent=self.object.parent)
221 commande_comment.niveau = self.object.niveau
222 commande_comment.jdc = commande_comment.parent = self.object.jdc
223 return commande_comment
225 def replace_child(self,old_item,new_item):
227 Remplace old_item.object par new_item.object dans les fils de self.object
229 index = self.object.mc_liste.index(old_item.object)
230 self.object.init_modif()
231 self.object.mc_liste.remove(old_item.object)
232 self.object.mc_liste.insert(index,new_item.object)
233 self.object.fin_modif()
236 treeitem = EtapeTreeItem