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
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()
67 def makeParametrePage(self,page):
69 Crée la page qui permet d'afficher et d'éditer le texte du PARAMETRE
71 self.frame_valeur = Frame(page)
72 self.frame_valeur.place(relwidth=0.9,relheight=0.9,relx=0.05,rely=0.05,anchor='nw')
73 # affichage du titre du panneau
74 self.titre = StringVar()
75 self.titre.set("PARAMETRE "+self.node.item.get_nom())
76 Label(self.frame_valeur,textvariable=self.titre,font=Fonte_TITRE).place(relx=0.5,rely=0.1,anchor='n')
77 # création des labels et entries associés aux nom et valeur du paramètre
78 Label(self.frame_valeur,text= 'Nom du paramètre : ').place(relx=0.,rely=0.3)
79 self.entry_nom = Entry(self.frame_valeur)
80 Label(self.frame_valeur,text= 'Valeur du paramètre : ').place(relx=0.,rely=0.5)
81 self.entry_val = Entry(self.frame_valeur)
82 # binding sur entry_nom
83 self.entry_nom.bind("<Return>",lambda e,s=self : s.entry_val.focus())
84 self.entry_val.bind("<Return>",lambda e,s=self : s.change_valeur())
85 self.entry_nom.bind("<KP_Enter>",lambda e,s=self : s.entry_val.focus())
86 self.entry_val.bind("<KP_Enter>",lambda e,s=self : s.change_valeur())
87 # affichage des entries
88 self.entry_nom.place(relx=0.35,rely=0.3,relwidth=0.3)
89 self.entry_val.place(relx=0.35,rely=0.5,relwidth=0.5)
90 # affichage d'une phrase d'aide
92 Un retour de chariot dans une zone de saisie vous permet de vérifier si
93 la valeur que vous avez entrée est valide.
94 Ce n'est qu'après avoir appuyé sur le bouton Valider que les nouvelles
95 valeurs seront effectivement prises en compte
97 Label(self.frame_valeur,text=aide).place(relx=0.5,rely=0.65,anchor='n')
98 # affichage des nom et valeur du paramètre
100 self.entry_nom.focus()
102 def make_buttons(self):
104 Crée les boutons du panneau
106 self.bouton_sup.place_forget()
107 self.bouton_doc.place_forget()
108 self.bouton_val = Button(self.fr_but,text='Valider',command=self.change_valeur,width=14)
109 self.bouton_ann = Button(self.fr_but,text='Annuler',command=self.display_valeur,width=14)
111 self.bouton_val.place(relx=0.25,rely=0.5,relheight=0.8,anchor='center')
112 self.bouton_ann.place(relx=0.50,rely=0.5,relheight=0.8,anchor='center')
113 self.bouton_sup.place(relx=0.75,rely=0.5,relheight=0.8,anchor='center')
115 def change_valeur(self):
117 Stocke la nouvelle valeur donnée par l'utilisateur comme valeur du PARAMETRE
119 if self.parent.modified == 'n' : self.parent.init_modif()
120 new_nom = self.entry_nom.get()
121 new_val = self.entry_val.get()
122 self.node.item.set_nom(new_nom)
123 self.node.item.set_valeur(new_val)
125 self.display_valeur()
127 def display_valeur(self):
129 Affiche dans self.widget_text la valeur de l'objet PARAMETRE
130 (annule d'éventuelles modifications faite par l'utilisateur)
132 self.entry_nom.delete(0,END)
133 self.entry_val.delete(0,END)
134 self.titre.set('PARAMETRE '+self.node.item.get_nom())
135 self.entry_nom.insert(END,self.node.item.get_nom())
136 self.entry_val.insert(END,self.node.item.get_valeur())
138 class PARAMTreeItem(Objecttreeitem.ObjectTreeItem):
140 Classe servant à définir l'item porté par le noeud de l'arbre d'EFICAS
141 qui représente le PARAMETRE
146 self.setfunction = self.set_valeur
148 # ---------------------------------------------------------------------------
149 # API du PARAMETRE pour l'arbre
150 # ---------------------------------------------------------------------------
152 def GetIconName(self):
154 Retourne le nom de l'icône associée au noeud qui porte self,
155 dépendant de la validité de l'objet
156 NB : un PARAMETRE est toujours valide ...
160 return "ast-green-square"
162 return "ast-red-square"
164 return "ast-white-square"
166 def GetLabelText(self):
167 """ Retourne 3 valeurs :
168 - le texte à afficher dans le noeud représentant l'item
169 - la fonte dans laquelle afficher ce texte
170 - la couleur du texte
172 return 'Paramètre',Fonte_PARAMETRE,None
176 Retourne le texte à afficher après le nom de la commande (ici après 'paramètre')
177 Ce texte est tronqué à 25 caractères
179 texte = repr(self.object)
180 texte = string.split(texte,'\n')[0]
184 return texte[0:24]+'...'
186 def GetSubList(self):
188 Retourne la liste des fils de self
192 # ---------------------------------------------------------------------------
193 # Méthodes permettant la modification et la lecture des attributs
194 # du paramètre = API graphique du PARAMETRE pour Panel et EFICAS
195 # ---------------------------------------------------------------------------
197 def get_valeur(self):
199 Retourne la valeur de l'objet PARAMETRE cad son texte
201 return self.object.valeur or ''
205 Retourne le nom du paramètre
207 return self.object.nom
209 def set_valeur(self,new_valeur):
211 Affecte valeur à l'objet PARAMETRE
213 self.object.set_valeur(new_valeur)
215 def set_nom(self,new_nom):
219 self.object.set_attribut('nom',new_nom)
223 Retourne le fr associé au paramètre, cad la bulle d'aide pour EFICAS
225 return "Définition d'un paramètre"
227 import Extensions.parametre
228 treeitem =PARAMTreeItem
229 objet = Extensions.parametre.PARAMETRE