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 # affichage des entries
86 self.entry_nom.place(relx=0.35,rely=0.3,relwidth=0.3)
87 self.entry_val.place(relx=0.35,rely=0.5,relwidth=0.5)
88 # affichage d'une phrase d'aide
90 Un retour de chariot dans une zone de saisie vous permet de vérifier si
91 la valeur que vous avez entrée est valide.
92 Ce n'est qu'après avoir appuyé sur le bouton Valider que les nouvelles
93 valeurs seront effectivement prises en compte
95 Label(self.frame_valeur,text=aide).place(relx=0.5,rely=0.65,anchor='n')
96 # affichage des nom et valeur du paramètre
98 self.entry_nom.focus()
100 def make_buttons(self):
102 Crée les boutons du panneau
104 self.bouton_sup.place_forget()
105 self.bouton_doc.place_forget()
106 self.bouton_val = Button(self.fr_but,text='Valider',command=self.change_valeur,width=14)
107 self.bouton_ann = Button(self.fr_but,text='Annuler',command=self.display_valeur,width=14)
109 self.bouton_val.place(relx=0.25,rely=0.5,relheight=0.8,anchor='center')
110 self.bouton_ann.place(relx=0.50,rely=0.5,relheight=0.8,anchor='center')
111 self.bouton_sup.place(relx=0.75,rely=0.5,relheight=0.8,anchor='center')
113 def change_valeur(self):
115 Stocke la nouvelle valeur donnée par l'utilisateur comme valeur du PARAMETRE
117 if self.parent.modified == 'n' : self.parent.init_modif()
118 new_nom = self.entry_nom.get()
119 new_val = self.entry_val.get()
120 self.node.item.set_nom(new_nom)
121 self.node.item.set_valeur(new_val)
123 self.display_valeur()
125 def display_valeur(self):
127 Affiche dans self.widget_text la valeur de l'objet PARAMETRE
128 (annule d'éventuelles modifications faite par l'utilisateur)
130 self.entry_nom.delete(0,END)
131 self.entry_val.delete(0,END)
132 self.titre.set('PARAMETRE '+self.node.item.get_nom())
133 self.entry_nom.insert(END,self.node.item.get_nom())
134 self.entry_val.insert(END,self.node.item.get_valeur())
136 class PARAMTreeItem(Objecttreeitem.ObjectTreeItem):
138 Classe servant à définir l'item porté par le noeud de l'arbre d'EFICAS
139 qui représente le PARAMETRE
144 self.setfunction = self.set_valeur
146 # ---------------------------------------------------------------------------
147 # API du PARAMETRE pour l'arbre
148 # ---------------------------------------------------------------------------
150 def GetIconName(self):
152 Retourne le nom de l'icône associée au noeud qui porte self,
153 dépendant de la validité de l'objet
154 NB : un PARAMETRE est toujours valide ...
158 return "ast-green-square"
160 return "ast-red-square"
162 return "ast-white-square"
164 def GetLabelText(self):
165 """ Retourne 3 valeurs :
166 - le texte à afficher dans le noeud représentant l'item
167 - la fonte dans laquelle afficher ce texte
168 - la couleur du texte
170 return 'Paramètre',Fonte_PARAMETRE,None
174 Retourne le texte à afficher après le nom de la commande (ici après 'paramètre')
175 Ce texte est tronqué à 25 caractères
177 texte = repr(self.object)
178 texte = string.split(texte,'\n')[0]
182 return texte[0:24]+'...'
184 def GetSubList(self):
186 Retourne la liste des fils de self
190 # ---------------------------------------------------------------------------
191 # Méthodes permettant la modification et la lecture des attributs
192 # du paramètre = API graphique du PARAMETRE pour Panel et EFICAS
193 # ---------------------------------------------------------------------------
195 def get_valeur(self):
197 Retourne la valeur de l'objet PARAMETRE cad son texte
199 return self.object.valeur or ''
203 Retourne le nom du paramètre
205 return self.object.nom
207 def set_valeur(self,new_valeur):
209 Affecte valeur à l'objet PARAMETRE
211 self.object.set_valeur(new_valeur)
213 def set_nom(self,new_nom):
217 self.object.set_attribut('nom',new_nom)
221 Retourne le fr associé au paramètre, cad la bulle d'aide pour EFICAS
223 return "Définition d'un paramètre"
225 import Extensions.parametre
226 treeitem =PARAMTreeItem
227 objet = Extensions.parametre.PARAMETRE