Salome HOME
This commit was generated by cvs2git to track changes on a CVS vendor
[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.1.1.1 2002/03/26 09:08:46 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         option=Pmw.OptionMenu (frame_valeur,
71                 items = l_choix,
72                 menubutton_width = 10,
73                 command = lambda e,obj=obj,s=self:s.record_valeur(val=e,obj=obj),
74         )
75         option.pack(side=Tkinter.LEFT,padx=1)
76       else :
77         entry = Tkinter.Entry(frame_valeur,relief='sunken',width=10)
78         entry.pack(side=Tkinter.LEFT,padx=1)
79         entry.bind("<Return>",
80                 lambda e,obj=obj,s=self:s.valid_valeur(e,obj=obj))
81         if i==0:entry.focus_set()
82         #aide = Tkinter.Label(frame_valeur, text = aide)
83         #aide.place(relx=0.5,rely=0.55,anchor='n')
84         if valeur != None :
85           entry.delete(0,Tkinter.END)
86           entry.insert(0,obj.getval())
87       i=i+1
88
89   def record_valeur(self,val=None,obj=None,mess='Valeur du mot-cl\351 enregistr\351e'):
90     """ 
91       Enregistre  val comme valeur de self.node.item.object SANS faire de 
92        test de validit\351 
93     """
94     obj.set_valeur(val,evaluation='non')
95     self.parent.appli.affiche_infos(mess)
96     self.node.parent.verif()
97     self.node.update()
98
99   def valid_valeur(self,e,obj=None,mess='Valeur du mot-cl\351 enregistr\351e'):
100     """ 
101       Enregistre  val comme valeur de self.node.item.object avec
102        test de validit\351 
103     """
104     valeur=e.widget.get()
105     e.widget.delete(0,Tkinter.END)
106     anc_val=obj.getval()
107     if anc_val == None:anc_val=''
108     test=obj.set_valeur(valeur)
109     if test:
110       if obj.isvalid():
111           self.parent.appli.affiche_infos('Valeur du mot-cl\351 enregistr\351e')
112           e.widget.insert(0,obj.getval())
113       else:
114           obj.set_valeur(anc_val,evaluation='non')
115           self.parent.appli.affiche_infos("valeur du mot-cl\351 non autoris\351e")
116           e.widget.insert(0,anc_val)
117     else:
118       print "impossible d'\351valuer : %s " %valeur
119       print "test =",test
120       self.parent.appli.affiche_infos("valeur du mot-cl\351 non autoris\351e")
121       e.widget.delete(0,Tkinter.END)
122       e.widget.insert(0,anc_val)
123           
124     self.node.parent.verif()
125     self.node.update()
126
127   def gen_aide(self,obj):
128     return ""
129     
130
131 class NUPLETTreeItem(Objecttreeitem.ObjectTreeItem):
132   panel=NUPLETPanel
133
134   def IsExpandable(self):
135     return Expandable
136
137   def GetText(self):
138       return  ''
139
140   def isvalid(self):
141     return self.object.isvalid()
142
143   def GetIconName(self):
144     if self.object.isvalid():
145       return "ast-green-los"
146     elif self.object.isoblig():
147       return "ast-red-los"
148     else:
149       return "ast-yel-los"
150
151   def GetSubList(self):
152     if not Expandable:return []
153     sublist=[]
154     for obj in self.object.mc_liste:
155       item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, None)    
156       sublist.append(item)
157     return sublist
158
159   def additem(self,name,pos):
160     raise "NUPLET"
161
162   def suppitem(self,item) :
163     raise "NUPLET"
164
165   def verif_condition_bloc(self):
166     return self.object.verif_condition_bloc()
167
168 import Accas
169 treeitem=NUPLETTreeItem
170 objet=Accas.MCNUPLET