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 return self.object.nomme_sd(nom)
194 def is_reentrant(self):
195 return self.object.is_reentrant()
197 def get_noms_sd_oper_reentrant(self):
198 return self.object.get_noms_sd_oper_reentrant()
200 def get_objet_commentarise(self):
202 Cette méthode retourne un objet commentarisé
203 représentatif de self.object
205 import generator,string,Accas
206 # Format de fichier utilisé
207 format=self.appli.format_fichier.get()
208 g=generator.plugins[format]()
209 texte_commande = g.gener(self.object,format='beautifie')
210 # Il faut enlever la première ligne vide de texte_commande que
211 # rajoute le generator
212 rebut,texte_commande = string.split(texte_commande,'\n',1)
213 # on construit l'objet COMMANDE_COMM repésentatif de self mais non
214 # enregistré dans le jdc
215 commande_comment = Accas.COMMANDE_COMM(texte=texte_commande,reg='non',
216 parent=self.object.parent)
217 commande_comment.niveau = self.object.niveau
218 commande_comment.jdc = commande_comment.parent = self.object.jdc
219 return commande_comment
222 treeitem = EtapeTreeItem