]> SALOME platform Git repositories - tools/eficas.git/blob - Editeur/componuplet.py
Salome HOME
PN : pour les clefs documentaires
[tools/eficas.git] / Editeur / componuplet.py
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.
8 #
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.
13 #
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.
17 #
18 #
19 # ======================================================================
20 # Modules Python
21 import types
22 import Tkinter
23 import Pmw
24 from repr import Repr
25 from copy import copy,deepcopy
26
27 # Modules Eficas
28 import Objecttreeitem
29 import panels
30
31 #
32 __version__="$Name:  $"
33 __Id__="$Id: componuplet.py,v 1.3.2.1 2003/10/09 14:57:58 eficas Exp $"
34 #
35
36 myrepr = Repr()
37 myrepr.maxstring = 100
38 myrepr.maxother = 100
39
40 # Si Expandable vaut 1 les éléments du nuplet apparaissent dans l'arbre
41 # Si Expandable vaut 0 les éléments n'apparaissent pas
42 Expandable=1
43
44 class NUPLETPanel(panels.OngletPanel):
45   def init(self):
46       """ Initialise les frame des panneaux contextuels relatifs \340 un NUPLET """
47       self.nb=Pmw.NoteBook(self,raisecommand=self.raisecmd)
48       self.nb.pack(fill = 'both', expand = 1)
49       self.nb.add("Valeurs",tab_text="Saisir valeurs")
50       self.makeValeurPage(self.nb.page('Valeurs'))
51       self.nb.setnaturalsize()
52     
53   def makeValeurPage(self,page):
54     label = Tkinter.Label(page,text='Valeurs :').pack(side=Tkinter.LEFT)
55     i=0
56     for obj in self.node.item.object.mc_liste:
57       frame_valeur=Tkinter.Frame(page)
58       frame_valeur.pack(side=Tkinter.LEFT)
59       if hasattr(obj,'definition'):
60          objet_mc=obj.definition
61       else:  
62          objet_mc=None
63       valeur=obj.valeur
64       if type(valeur) == types.InstanceType :
65         valeur=obj.getval()
66       aide=self.gen_aide(obj)
67       if objet_mc.into != None :
68         l_choix=list(objet_mc.into)
69         #obj.set_valeur(l_choix[0],evaluation='non')
70         obj.set_valeur(l_choix[0])
71         option=Pmw.OptionMenu (frame_valeur,
72                 items = l_choix,
73                 menubutton_width = 10,
74                 command = lambda e,obj=obj,s=self:s.record_valeur(val=e,obj=obj),
75         )
76         option.pack(side=Tkinter.LEFT,padx=1)
77       else :
78         entry = Tkinter.Entry(frame_valeur,relief='sunken',width=10)
79         entry.pack(side=Tkinter.LEFT,padx=1)
80         entry.bind("<Return>",
81                 lambda e,obj=obj,s=self:s.valid_valeur(e,obj=obj))
82         if i==0:entry.focus_set()
83         #aide = Tkinter.Label(frame_valeur, text = aide)
84         #aide.place(relx=0.5,rely=0.55,anchor='n')
85         if valeur != None :
86           entry.delete(0,Tkinter.END)
87           entry.insert(0,obj.getval())
88       i=i+1
89
90   def record_valeur(self,val=None,obj=None,mess='Valeur du mot-cl\351 enregistr\351e'):
91     """ 
92       Enregistre  val comme valeur de self.node.item.object SANS faire de 
93       test de validité
94     """
95     #obj.set_valeur(val,evaluation='non')
96     obj.set_valeur(val)
97     self.parent.appli.affiche_infos(mess)
98     self.node.parent.verif()
99     self.node.update()
100
101   def valid_valeur(self,e,obj=None,mess='Valeur du mot-cl\351 enregistr\351e'):
102     """ 
103       Enregistre  val comme valeur de self.node.item.object avec
104       test de validité
105     """
106     valeur=e.widget.get()
107     e.widget.delete(0,Tkinter.END)
108     anc_val=obj.getval()
109     if anc_val == None:anc_val=''
110     test=obj.set_valeur(valeur)
111     if test:
112       if obj.isvalid():
113           self.parent.appli.affiche_infos('Valeur du mot-cl\351 enregistr\351e')
114           e.widget.insert(0,obj.getval())
115       else:
116           #obj.set_valeur(anc_val,evaluation='non')
117           obj.set_valeur(anc_val)
118           self.parent.appli.affiche_infos("valeur du mot-cl\351 non autoris\351e")
119           e.widget.insert(0,anc_val)
120     else:
121       print "impossible d'\351valuer : %s " %valeur
122       print "test =",test
123       self.parent.appli.affiche_infos("valeur du mot-cl\351 non autoris\351e")
124       e.widget.delete(0,Tkinter.END)
125       e.widget.insert(0,anc_val)
126           
127     self.node.parent.verif()
128     self.node.update()
129
130   def gen_aide(self,obj):
131     return ""
132     
133
134 class NUPLETTreeItem(Objecttreeitem.ObjectTreeItem):
135   panel=NUPLETPanel
136
137   def IsExpandable(self):
138     return Expandable
139
140   def GetText(self):
141       return  ''
142
143   def isvalid(self):
144     return self.object.isvalid()
145
146   def GetIconName(self):
147     if self.object.isvalid():
148       return "ast-green-los"
149     elif self.object.isoblig():
150       return "ast-red-los"
151     else:
152       return "ast-yel-los"
153
154   def GetSubList(self):
155     if not Expandable:return []
156     sublist=[]
157     for obj in self.object.mc_liste:
158       item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, None)    
159       sublist.append(item)
160     return sublist
161
162   def additem(self,name,pos):
163     raise "NUPLET"
164
165   def suppitem(self,item) :
166     raise "NUPLET"
167
168   def verif_condition_bloc(self):
169     return self.object.verif_condition_bloc()
170
171 import Accas
172 treeitem=NUPLETTreeItem
173 objet=Accas.MCNUPLET