Salome HOME
Import dans la branche I26 de la version 7.1.16 modifiée par CCAR (au 18/9/2003)
[tools/eficas.git] / Editeur / compoparam.py
1 #@ MODIF compoparam 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 # ======================================================================
8 """
9    Ce module contient les classes permettant de définir les objets graphiques
10    représentant un objet de type PARAMETRE, cad le panneau et l'item de l'arbre
11    d'EFICAS
12 """
13
14 # import modules Python
15 from Tkinter import *
16 import Pmw
17 import string
18
19 # import modules EFICAS
20 import Objecttreeitem
21 import panels
22 import fontes
23
24
25 Fonte_PARAMETRE = fontes.standard_italique
26 Fonte_TITRE = fontes.standard_gras_souligne
27
28
29 class PARAMPanel(panels.OngletPanel):
30   """
31   Classe servant à construire le panneau associé à un paramètre.
32   C'est au moyen de ce panneau que l'utilisateur peut accéder
33   aux nom et valeur du paramètre en vue éventuellement de les
34   modifier.
35   """
36
37   def init(self):
38     """
39     Initialise les frame des panneaux contextuels relatifs à un PARAMETRE
40     """
41     nb = Pmw.NoteBook(self,raisecommand=self.raisecmd)
42     nb.pack(fill = 'both', expand = 1)
43     self.nb=nb
44     nb.add('Parametre', tab_text='Valeur Paramètre')
45     nb.add('Commande', tab_text='Nouvelle Commande')
46     nb.add('Commentaire',tab_text='Paramètre/Commentaire')
47     self.makeParametrePage(nb.page("Parametre"))
48     self.makeCommandePage(nb.page("Commande"))
49     self.makeParamCommentPage_for_etape(nb.page("Commentaire"))
50     nb.tab('Parametre').focus_set()
51     nb.setnaturalsize()
52     self.make_buttons()
53     
54   def makeParametrePage(self,page):
55     """
56     Crée la page qui permet d'afficher et d'éditer le texte du PARAMETRE
57     """
58     self.frame_valeur = Frame(page)
59     self.frame_valeur.place(relwidth=0.9,relheight=0.9,relx=0.05,rely=0.05,anchor='nw')
60     # affichage du titre du panneau
61     self.titre = StringVar()
62     self.titre.set("PARAMETRE "+self.node.item.get_nom())
63     Label(self.frame_valeur,textvariable=self.titre,font=Fonte_TITRE).place(relx=0.5,rely=0.1,anchor='n')
64     # création des labels et entries associés aux nom et valeur du paramètre
65     Label(self.frame_valeur,text= 'Nom du paramètre : ').place(relx=0.,rely=0.3)
66     self.entry_nom = Entry(self.frame_valeur)
67     Label(self.frame_valeur,text= 'Valeur du paramètre : ').place(relx=0.,rely=0.5)
68     self.entry_val = Entry(self.frame_valeur)
69     # binding sur entry_nom
70     self.entry_nom.bind("<Return>",lambda e,s=self : s.entry_val.focus())
71     self.entry_val.bind("<Return>",lambda e,s=self : s.change_valeur())
72     # affichage des entries
73     self.entry_nom.place(relx=0.35,rely=0.3,relwidth=0.3)
74     self.entry_val.place(relx=0.35,rely=0.5,relwidth=0.5)
75     # affichage d'une phrase d'aide
76     aide = """
77     Un retour de chariot dans une zone de saisie vous permet de vérifier si
78     la valeur que vous avez entrée est valide.
79     Ce n'est qu'après avoir appuyé sur le bouton Valider que les nouvelles
80     valeurs seront effectivement prises en compte
81     """
82     Label(self.frame_valeur,text=aide).place(relx=0.5,rely=0.65,anchor='n')
83     # affichage des nom et valeur du paramètre
84     self.display_valeur()
85     self.entry_nom.focus()
86
87   def make_buttons(self):
88     """
89     Crée les boutons du panneau
90     """
91     self.bouton_sup.place_forget()
92     self.bouton_doc.place_forget()
93     self.bouton_val = Button(self.fr_but,text='Valider',command=self.change_valeur,width=14)
94     self.bouton_ann = Button(self.fr_but,text='Annuler',command=self.display_valeur,width=14)
95
96     self.bouton_val.place(relx=0.25,rely=0.5,relheight=0.8,anchor='center')
97     self.bouton_ann.place(relx=0.50,rely=0.5,relheight=0.8,anchor='center')
98     self.bouton_sup.place(relx=0.75,rely=0.5,relheight=0.8,anchor='center')
99
100   def change_valeur(self):
101     """
102     Stocke la nouvelle valeur donnée par l'utilisateur comme valeur du PARAMETRE
103     """
104     if self.parent.modified == 'n' : self.parent.init_modif()
105     new_nom = self.entry_nom.get()
106     new_val = self.entry_val.get()
107     self.node.item.set_nom(new_nom)
108     self.node.item.set_valeur(new_val)
109     self.node.update()
110     self.display_valeur()
111     
112   def display_valeur(self):
113     """
114     Affiche dans self.widget_text la valeur de l'objet PARAMETRE
115     (annule d'éventuelles modifications faite par l'utilisateur)
116     """
117     self.entry_nom.delete(0,END)
118     self.entry_val.delete(0,END)
119     self.titre.set('PARAMETRE '+self.node.item.get_nom())
120     self.entry_nom.insert(END,self.node.item.get_nom())
121     self.entry_val.insert(END,self.node.item.get_valeur())
122
123 class PARAMTreeItem(Objecttreeitem.ObjectTreeItem):
124     """
125     Classe servant à définir l'item porté par le noeud de l'arbre d'EFICAS
126     qui représente le PARAMETRE
127     """
128     panel = PARAMPanel
129
130     def init(self):
131       self.setfunction = self.set_valeur
132
133 # ---------------------------------------------------------------------------
134 #                   API du PARAMETRE pour l'arbre 
135 # ---------------------------------------------------------------------------
136
137     def GetIconName(self):
138       """
139       Retourne le nom de l'icône associée au noeud qui porte self,
140       dépendant de la validité de l'objet
141       NB : un PARAMETRE est toujours valide ...
142       """
143       if self.isactif():
144           if self.isvalid():
145               return "ast-green-square"
146           else:
147               return "ast-red-square"
148       else:
149           return "ast-white-square"
150
151     def GetLabelText(self):
152         """ Retourne 3 valeurs :
153         - le texte à afficher dans le noeud représentant l'item
154         - la fonte dans laquelle afficher ce texte
155         - la couleur du texte
156         """
157         return 'Paramètre',Fonte_PARAMETRE,None
158
159     def GetText(self):
160       """
161       Retourne le texte à afficher après le nom de la commande (ici après 'paramètre')
162       Ce texte est tronqué à 25 caractères
163       """
164       texte = repr(self.object)
165       texte = string.split(texte,'\n')[0]
166       if len(texte) < 25 :
167           return texte
168       else :
169           return texte[0:24]+'...'
170
171     def GetSubList(self):
172       """
173       Retourne la liste des fils de self
174       """
175       return []
176     
177 # ---------------------------------------------------------------------------
178 #       Méthodes permettant la modification et la lecture des attributs
179 #       du paramètre = API graphique du PARAMETRE pour Panel et EFICAS
180 # ---------------------------------------------------------------------------
181
182     def get_valeur(self):
183       """
184       Retourne la valeur de l'objet PARAMETRE cad son texte
185       """
186       return self.object.valeur or ''
187
188     def get_nom(self):
189       """
190       Retourne le nom du paramètre
191       """
192       return self.object.nom
193
194     def set_valeur(self,new_valeur):
195       """
196       Affecte valeur à l'objet PARAMETRE
197       """
198       self.object.set_valeur(new_valeur)
199
200     def set_nom(self,new_nom):
201       """
202       Renomme le paramètre
203       """
204       self.object.set_attribut('nom',new_nom)
205
206     def get_fr(self):
207       """
208       Retourne le fr associé au paramètre, cad la bulle d'aide pour EFICAS
209       """
210       return "Définition d'un paramètre"
211     
212 import Extensions.parametre
213 treeitem =PARAMTreeItem
214 objet = Extensions.parametre.PARAMETRE