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 # ======================================================================
14 class OPERPanel(panels.OngletPanel):
17 nb = Pmw.NoteBook(self,raisecommand=self.raisecmd)
18 nb.pack(fill = 'both', expand = 1)
20 nb.add('Mocles', tab_text='Nouveau mot-clé')
21 nb.add('Concept', tab_text='Nommer concept')
22 nb.add('Commande', tab_text='Nouvelle Commande')
23 nb.add('Commentaire',tab_text='Paramètre/Commentaire')
24 panneau=Pmw.PanedWidget(nb.page("Mocles"),
26 panneau.add('left',min=0.4,max=0.6,size=0.5)
27 panneau.add('right',min=0.4,max=0.6,size=0.5)
28 panneau.pack(expand=1,fill='both')
29 self.makeCommandePage(nb.page("Commande"))
30 self.makeConceptPage_oper(nb.page("Concept"))
31 self.makeMoclesPage(panneau.pane('left'))
32 self.makeReglesPage(panneau.pane('right'))
33 #self.makeCommentairePage(nb.page("Commentaire"))
34 self.makeParamCommentPage_for_etape(nb.page("Commentaire"))
35 nb.tab('Mocles').focus_set()
39 def makeConceptPage_oper(self,page):
40 """ Crée la page de saisie du nom du concept """
41 if self.node.item.is_reentrant():
42 self.makeConceptPage_reentrant(page)
44 self.makeConceptPage(page)
46 def makeConceptPage_reentrant(self,page):
47 """ Crée la page de saisie du nom de concept pour un opérateur reentrant
48 cad propose dans la liste des SD utilisées dans la commande celle(s) dont le
49 type est compatible avec celui que retourne l'opérateur """
50 liste_noms_sd = self.node.item.get_noms_sd_oper_reentrant()
51 self.listbox = Pmw.ScrolledListBox(page,
54 label_text="Structure(s) de données à enrichir par l'opérateur courant :",
56 selectioncommand=self.select_valeur_from_list,
57 dblclickcommand=lambda s=self,c=self.execConcept : s.choose_valeur_from_list(c))
58 self.listbox.place(relx=0.5,rely=0.3,relheight=0.4,anchor='center')
59 Label(page,text='Structure de donnée choisie :').place(relx=0.05,rely=0.6)
60 self.valeur_choisie = StringVar()
61 self.label_valeur = Label(page,textvariable=self.valeur_choisie)
62 self.label_valeur.place(relx=0.45,rely=0.6)
63 if len(liste_noms_sd) == 1 :
64 self.valeur_choisie.set(liste_noms_sd[0])
66 def select_valeur_from_list(self):
68 choix = self.listbox.getcurselection()[0]
69 self.valeur_choisie.set(choix)
73 def choose_valeur_from_list(self,command):
75 choix = self.listbox.getcurselection()[0]
76 self.valeur_choisie.set(choix)
81 class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
84 def IsExpandable(self):
87 def GetIconName(self):
89 Retourne le nom de l'icône à afficher dans l'arbre
90 Ce nom dépend de la validité de l'objet
92 if self.object.isactif():
93 if self.object.isvalid():
94 return "ast-green-square"
96 return "ast-red-square"
98 return "ast-white-square"
100 def GetLabelText(self):
101 """ Retourne 3 valeurs :
102 - le texte à 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,fontes.standard_italique,None
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 if isinstance(name,Objecttreeitem.ObjectTreeItem) :
129 mcent = self.object.addentite(name.object,pos)
131 mcent = self.object.addentite(name,pos)
134 # on ne peut ajouter l'élément de nom name
136 def setfunction(value, object=mcent):
138 item = self.make_objecttreeitem(self.appli,mcent.nom + " : ", mcent, setfunction)
141 def suppitem(self,item) :
142 # item : item du MOCLE de l'ETAPE à supprimer
143 # item.object = MCSIMP, MCFACT, MCBLOC ou MCList
144 if item.object.isoblig() :
145 self.appli.affiche_infos('Impossible de supprimer un mot-clé obligatoire ')
148 self.object.suppentite(item.object)
149 message = "Mot-clé " + item.object.nom + " supprimé"
150 self.appli.affiche_infos(message)
155 return self.object.get_sdname()
160 keys=self.object.mc_dict.keys()
163 def GetSubList(self):
165 for obj in self.object.mc_liste:
166 def setfunction(value, object=obj):
168 item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, setfunction)
173 return self.object.isvalid()
175 def iscopiable(self):
177 Retourne 1 si l'objet est copiable, 0 sinon
181 def isCommande(self):
183 Retourne 1 si l'objet pointé par self est une Commande, 0 sinon
187 def verif_condition_bloc(self):
188 return self.object.verif_condition_bloc()
190 def nomme_sd(self,nom):
191 """ Lance la méthode de nommage de la SD """
192 test,mess= self.object.nomme_sd(nom)
193 if test:self.object.parent.reset_context()
196 def is_reentrant(self):
197 return self.object.is_reentrant()
199 def get_noms_sd_oper_reentrant(self):
200 return self.object.get_noms_sd_oper_reentrant()
202 def get_objet_commentarise(self):
204 Cette méthode retourne un objet commentarisé
205 représentatif de self.object
207 import generator,string,Accas
208 # Format de fichier utilisé
209 format=self.appli.format_fichier.get()
210 g=generator.plugins[format]()
211 texte_commande = g.gener(self.object,format='beautifie')
212 # Il faut enlever la première ligne vide de texte_commande que
213 # rajoute le generator
214 rebut,texte_commande = string.split(texte_commande,'\n',1)
215 # on construit l'objet COMMANDE_COMM repésentatif de self mais non
216 # enregistré dans le jdc
217 commande_comment = Accas.COMMANDE_COMM(texte=texte_commande,reg='non',
218 parent=self.object.parent)
219 commande_comment.niveau = self.object.niveau
220 commande_comment.jdc = commande_comment.parent = self.object.jdc
221 return commande_comment
223 def replace_child(self,old_item,new_item):
225 Remplace old_item.object par new_item.object dans les fils de self.object
227 index = self.object.mc_liste.index(old_item.object)
228 self.object.init_modif()
229 self.object.mc_liste.remove(old_item.object)
230 self.object.mc_liste.insert(index,new_item.object)
231 self.object.fin_modif()
234 treeitem = EtapeTreeItem