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