1 # -*- coding: utf-8 -*-
2 # CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
20 # ======================================================================
22 Ce module contient les classes permettant de définir les objets graphiques
23 représentant un objet de type PARAMETRE, cad le panneau et l'item de l'arbre
27 # import modules Python
32 # import modules EFICAS
33 from Editeur import Objecttreeitem
38 Fonte_PARAMETRE = fontes.standard_italique
39 Fonte_TITRE = fontes.standard_gras_souligne
42 class PARAMPanel(panels.OngletPanel):
44 Classe servant à construire le panneau associé à un paramètre.
45 C'est au moyen de ce panneau que l'utilisateur peut accéder
46 aux nom et valeur du paramètre en vue éventuellement de les
52 Initialise les frame des panneaux contextuels relatifs à un PARAMETRE
54 nb = Pmw.NoteBook(self,raisecommand=self.raisecmd)
55 nb.pack(fill = 'both', expand = 1)
57 nb.add('Parametre', tab_text='Valeur Paramètre')
58 nb.add('Commande', tab_text='Nouvelle Commande')
59 nb.add('Commentaire',tab_text='Paramètre/Commentaire')
60 self.makeParametrePage(nb.page("Parametre"))
61 self.makeCommandePage(nb.page("Commande"))
62 self.makeParamCommentPage_for_etape(nb.page("Commentaire"))
63 nb.tab('Parametre').focus_set()
69 def makeParametrePage(self,page):
71 Crée la page qui permet d'afficher et d'éditer le texte du PARAMETRE
73 self.frame_valeur = Frame(page)
74 #self.frame_valeur.place(relwidth=0.9,relheight=0.9,relx=0.05,rely=0.05,anchor='nw')
75 self.frame_valeur.pack(expand=1)
76 # affichage du titre du panneau
77 self.titre = StringVar()
78 self.titre.set("PARAMETRE "+self.node.item.get_nom())
79 #Label(self.frame_valeur,textvariable=self.titre,font=Fonte_TITRE).place(relx=0.5,rely=0.1,anchor='n')
80 Label(self.frame_valeur,textvariable=self.titre,font=Fonte_TITRE).grid(row=0,columnspan=2,padx=5,pady=5)
81 # création des labels et entries associés aux nom et valeur du paramètre
82 #Label(self.frame_valeur,text= 'Nom du paramètre : ').place(relx=0.,rely=0.3)
83 Label(self.frame_valeur,text= 'Nom du paramètre : ').grid(row=1,sticky=W,padx=5,pady=5)
84 self.entry_nom = Entry(self.frame_valeur)
85 #Label(self.frame_valeur,text= 'Valeur du paramètre : ').place(relx=0.,rely=0.5)
86 Label(self.frame_valeur,text= 'Valeur du paramètre : ').grid(row=2,sticky=W,padx=5,pady=5)
87 self.entry_val = Entry(self.frame_valeur)
88 # binding sur entry_nom
89 self.entry_nom.bind("<Return>",lambda e,s=self : s.entry_val.focus())
90 self.entry_val.bind("<Return>",lambda e,s=self : s.change_valeur())
91 self.entry_nom.bind("<KP_Enter>",lambda e,s=self : s.entry_val.focus())
92 self.entry_val.bind("<KP_Enter>",lambda e,s=self : s.change_valeur())
93 # affichage des entries
94 #self.entry_nom.place(relx=0.35,rely=0.3,relwidth=0.3)
95 self.entry_nom.grid(row=1,column=1,sticky=W,padx=5,pady=5)
96 #self.entry_val.place(relx=0.35,rely=0.5,relwidth=0.5)
97 self.entry_val.grid(row=2,column=1,sticky=W,padx=5,pady=5)
98 # affichage d'une phrase d'aide
100 Un retour de chariot dans une zone de saisie vous permet de vérifier si
101 la valeur que vous avez entrée est valide.
102 Ce n'est qu'après avoir appuyé sur le bouton Valider que les nouvelles
103 valeurs seront effectivement prises en compte
105 #Label(self.frame_valeur,text=aide).place(relx=0.5,rely=0.65,anchor='n')
106 Label(self.frame_valeur,text=aide).grid(row=3,columnspan=2,padx=5,pady=5)
107 self.frame_valeur.columnconfigure(1,weight=1)
108 # affichage des nom et valeur du paramètre
109 self.display_valeur()
110 self.entry_nom.focus()
112 def make_buttons(self):
114 Crée les boutons du panneau
116 #self.bouton_sup.place_forget()
117 #self.bouton_doc.place_forget()
118 #self.bouton_val = Button(self.fr_but,text='Valider',command=self.change_valeur,width=14)
119 #self.bouton_ann = Button(self.fr_but,text='Annuler',command=self.display_valeur,width=14)
120 #self.bouton_val.place(relx=0.25,rely=0.5,relheight=0.8,anchor='center')
121 #self.bouton_ann.place(relx=0.50,rely=0.5,relheight=0.8,anchor='center')
122 #self.bouton_sup.place(relx=0.75,rely=0.5,relheight=0.8,anchor='center')
124 self.bouton_sup.pack_forget()
125 self.bouton_doc.pack_forget()
126 self.bouton_val = Button(self.fr_but,text='Valider',command=self.change_valeur)
127 self.bouton_ann = Button(self.fr_but,text='Annuler',command=self.display_valeur)
128 self.bouton_val.pack(side='left',padx=5, pady=5)
129 self.bouton_ann.pack(side='left',padx=5, pady=5)
130 self.bouton_sup.pack(side='right',padx=5, pady=5)
132 def change_valeur(self):
134 Stocke la nouvelle valeur donnée par l'utilisateur comme valeur du PARAMETRE
136 if self.parent.modified == 'n' : self.parent.init_modif()
137 new_nom = self.entry_nom.get()
138 new_val = self.entry_val.get()
139 self.node.item.set_nom(new_nom)
140 self.node.item.set_valeur(new_val)
142 self.display_valeur()
144 def display_valeur(self):
146 Affiche dans self.widget_text la valeur de l'objet PARAMETRE
147 (annule d'éventuelles modifications faite par l'utilisateur)
149 self.entry_nom.delete(0,END)
150 self.entry_val.delete(0,END)
151 self.titre.set('PARAMETRE '+self.node.item.get_nom())
152 self.entry_nom.insert(END,self.node.item.get_nom())
153 self.entry_val.insert(END,self.node.item.get_valeur())
155 class PARAMTreeItem(Objecttreeitem.ObjectTreeItem):
157 Classe servant à définir l'item porté par le noeud de l'arbre d'EFICAS
158 qui représente le PARAMETRE
163 self.setfunction = self.set_valeur
165 # ---------------------------------------------------------------------------
166 # API du PARAMETRE pour l'arbre
167 # ---------------------------------------------------------------------------
169 def GetIconName(self):
171 Retourne le nom de l'icône associée au noeud qui porte self,
172 dépendant de la validité de l'objet
173 NB : un PARAMETRE est toujours valide ...
177 return "ast-green-square"
179 return "ast-red-square"
181 return "ast-white-square"
183 def GetLabelText(self):
184 """ Retourne 3 valeurs :
185 - le texte à afficher dans le noeud représentant l'item
186 - la fonte dans laquelle afficher ce texte
187 - la couleur du texte
189 return 'Paramètre',Fonte_PARAMETRE,None
193 Retourne le texte à afficher après le nom de la commande (ici après 'paramètre')
194 Ce texte est tronqué à 25 caractères
196 texte = repr(self.object)
197 texte = string.split(texte,'\n')[0]
201 return texte[0:24]+'...'
203 def GetSubList(self):
205 Retourne la liste des fils de self
209 # ---------------------------------------------------------------------------
210 # Méthodes permettant la modification et la lecture des attributs
211 # du paramètre = API graphique du PARAMETRE pour Panel et EFICAS
212 # ---------------------------------------------------------------------------
214 def get_valeur(self):
216 Retourne la valeur de l'objet PARAMETRE cad son texte
218 if self.object.valeur is None: return ''
219 else: return self.object.valeur
223 Retourne le nom du paramètre
225 return self.object.nom
227 def set_valeur(self,new_valeur):
229 Affecte valeur à l'objet PARAMETRE
231 self.object.set_valeur(new_valeur)
233 def set_nom(self,new_nom):
237 self.object.set_nom(new_nom)
238 #self.object.set_attribut('nom',new_nom)
242 Retourne le fr associé au paramètre, cad la bulle d'aide pour EFICAS
244 return "Définition d'un paramètre"
246 import Extensions.parametre
247 treeitem =PARAMTreeItem
248 objet = Extensions.parametre.PARAMETRE