1 # CONFIGURATION MANAGEMENT OF EDF VERSION
2 # ======================================================================
3 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
4 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
5 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
6 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
7 # (AT YOUR OPTION) ANY LATER VERSION.
9 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
10 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
11 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
12 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
15 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
16 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
19 # ======================================================================
21 Ce module contient les classes permettant de définir les objets graphiques
22 représentant un objet de type PARAMETRE, cad le panneau et l'item de l'arbre
26 # import modules Python
31 # import modules EFICAS
37 Fonte_PARAMETRE = fontes.standard_italique
38 Fonte_TITRE = fontes.standard_gras_souligne
41 class PARAMPanel(panels.OngletPanel):
43 Classe servant à construire le panneau associé à un paramètre.
44 C'est au moyen de ce panneau que l'utilisateur peut accéder
45 aux nom et valeur du paramètre en vue éventuellement de les
51 Initialise les frame des panneaux contextuels relatifs à un PARAMETRE
53 nb = Pmw.NoteBook(self,raisecommand=self.raisecmd)
54 nb.pack(fill = 'both', expand = 1)
56 nb.add('Parametre', tab_text='Valeur Paramètre')
57 nb.add('Commande', tab_text='Nouvelle Commande')
58 nb.add('Commentaire',tab_text='Paramètre/Commentaire')
59 self.makeParametrePage(nb.page("Parametre"))
60 self.makeCommandePage(nb.page("Commande"))
61 self.makeParamCommentPage_for_etape(nb.page("Commentaire"))
62 nb.tab('Parametre').focus_set()
66 def makeParametrePage(self,page):
68 Crée la page qui permet d'afficher et d'éditer le texte du PARAMETRE
70 self.frame_valeur = Frame(page)
71 self.frame_valeur.place(relwidth=0.9,relheight=0.9,relx=0.05,rely=0.05,anchor='nw')
72 # affichage du titre du panneau
73 self.titre = StringVar()
74 self.titre.set("PARAMETRE "+self.node.item.get_nom())
75 Label(self.frame_valeur,textvariable=self.titre,font=Fonte_TITRE).place(relx=0.5,rely=0.1,anchor='n')
76 # création des labels et entries associés aux nom et valeur du paramètre
77 Label(self.frame_valeur,text= 'Nom du paramètre : ').place(relx=0.,rely=0.3)
78 self.entry_nom = Entry(self.frame_valeur)
79 Label(self.frame_valeur,text= 'Valeur du paramètre : ').place(relx=0.,rely=0.5)
80 self.entry_val = Entry(self.frame_valeur)
81 # binding sur entry_nom
82 self.entry_nom.bind("<Return>",lambda e,s=self : s.entry_val.focus())
83 self.entry_val.bind("<Return>",lambda e,s=self : s.change_valeur())
84 # affichage des entries
85 self.entry_nom.place(relx=0.35,rely=0.3,relwidth=0.3)
86 self.entry_val.place(relx=0.35,rely=0.5,relwidth=0.5)
87 # affichage d'une phrase d'aide
89 Un retour de chariot dans une zone de saisie vous permet de vérifier si
90 la valeur que vous avez entrée est valide.
91 Ce n'est qu'après avoir appuyé sur le bouton Valider que les nouvelles
92 valeurs seront effectivement prises en compte
94 Label(self.frame_valeur,text=aide).place(relx=0.5,rely=0.65,anchor='n')
95 # affichage des nom et valeur du paramètre
97 self.entry_nom.focus()
99 def make_buttons(self):
101 Crée les boutons du panneau
103 self.bouton_sup.place_forget()
104 self.bouton_doc.place_forget()
105 self.bouton_val = Button(self.fr_but,text='Valider',command=self.change_valeur,width=14)
106 self.bouton_ann = Button(self.fr_but,text='Annuler',command=self.display_valeur,width=14)
108 self.bouton_val.place(relx=0.25,rely=0.5,relheight=0.8,anchor='center')
109 self.bouton_ann.place(relx=0.50,rely=0.5,relheight=0.8,anchor='center')
110 self.bouton_sup.place(relx=0.75,rely=0.5,relheight=0.8,anchor='center')
112 def change_valeur(self):
114 Stocke la nouvelle valeur donnée par l'utilisateur comme valeur du PARAMETRE
116 if self.parent.modified == 'n' : self.parent.init_modif()
117 new_nom = self.entry_nom.get()
118 new_val = self.entry_val.get()
119 self.node.item.set_nom(new_nom)
120 self.node.item.set_valeur(new_val)
122 self.display_valeur()
124 def display_valeur(self):
126 Affiche dans self.widget_text la valeur de l'objet PARAMETRE
127 (annule d'éventuelles modifications faite par l'utilisateur)
129 self.entry_nom.delete(0,END)
130 self.entry_val.delete(0,END)
131 self.titre.set('PARAMETRE '+self.node.item.get_nom())
132 self.entry_nom.insert(END,self.node.item.get_nom())
133 self.entry_val.insert(END,self.node.item.get_valeur())
135 class PARAMTreeItem(Objecttreeitem.ObjectTreeItem):
137 Classe servant à définir l'item porté par le noeud de l'arbre d'EFICAS
138 qui représente le PARAMETRE
143 self.setfunction = self.set_valeur
145 # ---------------------------------------------------------------------------
146 # API du PARAMETRE pour l'arbre
147 # ---------------------------------------------------------------------------
149 def GetIconName(self):
151 Retourne le nom de l'icône associée au noeud qui porte self,
152 dépendant de la validité de l'objet
153 NB : un PARAMETRE est toujours valide ...
157 return "ast-green-square"
159 return "ast-red-square"
161 return "ast-white-square"
163 def GetLabelText(self):
164 """ Retourne 3 valeurs :
165 - le texte à afficher dans le noeud représentant l'item
166 - la fonte dans laquelle afficher ce texte
167 - la couleur du texte
169 return 'Paramètre',Fonte_PARAMETRE,None
173 Retourne le texte à afficher après le nom de la commande (ici après 'paramètre')
174 Ce texte est tronqué à 25 caractères
176 texte = repr(self.object)
177 texte = string.split(texte,'\n')[0]
181 return texte[0:24]+'...'
183 def GetSubList(self):
185 Retourne la liste des fils de self
189 # ---------------------------------------------------------------------------
190 # Méthodes permettant la modification et la lecture des attributs
191 # du paramètre = API graphique du PARAMETRE pour Panel et EFICAS
192 # ---------------------------------------------------------------------------
194 def get_valeur(self):
196 Retourne la valeur de l'objet PARAMETRE cad son texte
198 return self.object.valeur or ''
202 Retourne le nom du paramètre
204 return self.object.nom
206 def set_valeur(self,new_valeur):
208 Affecte valeur à l'objet PARAMETRE
210 self.object.set_valeur(new_valeur)
212 def set_nom(self,new_nom):
216 self.object.set_attribut('nom',new_nom)
220 Retourne le fr associé au paramètre, cad la bulle d'aide pour EFICAS
222 return "Définition d'un paramètre"
224 import Extensions.parametre
225 treeitem =PARAMTreeItem
226 objet = Extensions.parametre.PARAMETRE