Salome HOME
PN
[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.8 2005/11/03 09:03:48 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.enlevebind()
53       self.creebind()
54       self.nb.setnaturalsize()
55     
56   def makeValeurPage(self,page):
57     label = Tkinter.Label(page,text='Valeurs :').pack(side=Tkinter.LEFT)
58     i=0
59     for obj in self.node.item.object.mc_liste:
60       frame_valeur=Tkinter.Frame(page)
61       frame_valeur.pack(side=Tkinter.LEFT)
62       if hasattr(obj,'definition'):
63          objet_mc=obj.definition
64       else:  
65          objet_mc=None
66       valeur=obj.valeur
67       if type(valeur) == types.InstanceType :
68         valeur=obj.getval()
69       aide=self.gen_aide(obj)
70       if objet_mc.into != None :
71         l_choix=list(objet_mc.into)
72         #obj.set_valeur(l_choix[0],evaluation='non')
73         obj.set_valeur(l_choix[0])
74         option=Pmw.OptionMenu (frame_valeur,
75                 items = l_choix,
76                 menubutton_width = 10,
77                 command = lambda e,obj=obj,s=self:s.record_valeur(val=e,obj=obj),
78         )
79         option.pack(side=Tkinter.LEFT,padx=1)
80       else :
81         entry = Tkinter.Entry(frame_valeur,relief='sunken',width=10)
82         entry.pack(side=Tkinter.LEFT,padx=1)
83         entry.bind("<Return>",
84                 lambda e,obj=obj,s=self:s.valid_valeur(e,obj=obj))
85         entry.bind("<KP_Enter>",
86                 lambda e,obj=obj,s=self:s.valid_valeur(e,obj=obj))
87         if i==0:entry.focus_set()
88         #aide = Tkinter.Label(frame_valeur, text = aide)
89         #aide.place(relx=0.5,rely=0.55,anchor='n')
90         if valeur != None :
91           entry.delete(0,Tkinter.END)
92           entry.insert(0,obj.getval())
93       i=i+1
94
95   def record_valeur(self,val=None,obj=None,mess='Valeur du mot-cl\351 enregistr\351e'):
96     """ 
97       Enregistre  val comme valeur de self.node.item.object SANS faire de 
98       test de validité
99     """
100     #obj.set_valeur(val,evaluation='non')
101     obj.set_valeur(val)
102     self.parent.appli.affiche_infos(mess)
103     #self.node.parent.verif()
104     #self.node.update()
105
106   def valid_valeur(self,e,obj=None,mess='Valeur du mot-cl\351 enregistr\351e'):
107     """ 
108       Enregistre  val comme valeur de self.node.item.object avec
109       test de validité
110     """
111     valeur=e.widget.get()
112     e.widget.delete(0,Tkinter.END)
113     anc_val=obj.getval()
114     if anc_val == None:anc_val=''
115     test=obj.set_valeur(valeur)
116     if test:
117       if obj.isvalid():
118           self.parent.appli.affiche_infos('Valeur du mot-cl\351 enregistr\351e')
119           e.widget.insert(0,obj.getval())
120       else:
121           #obj.set_valeur(anc_val,evaluation='non')
122           obj.set_valeur(anc_val)
123           self.parent.appli.affiche_infos("valeur du mot-cl\351 non autoris\351e")
124           e.widget.insert(0,anc_val)
125     else:
126       print "impossible d'\351valuer : %s " %valeur
127       print "test =",test
128       self.parent.appli.affiche_infos("valeur du mot-cl\351 non autoris\351e")
129       e.widget.delete(0,Tkinter.END)
130       e.widget.insert(0,anc_val)
131           
132     #self.node.parent.verif()
133     #self.node.update()
134
135   def gen_aide(self,obj):
136     return ""
137     
138
139 class NUPLETTreeItem(Objecttreeitem.ObjectTreeItem):
140   panel=NUPLETPanel
141
142   def IsExpandable(self):
143     return Expandable
144
145   def GetText(self):
146       return  ''
147
148   def isvalid(self):
149     return self.object.isvalid()
150
151   def GetIconName(self):
152     if self.object.isvalid():
153       return "ast-green-los"
154     elif self.object.isoblig():
155       return "ast-red-los"
156     else:
157       return "ast-yel-los"
158
159   def GetSubList(self):
160     if not Expandable:return []
161     sublist=[]
162     for obj in self.object.mc_liste:
163       item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, None)    
164       sublist.append(item)
165     return sublist
166
167   def additem(self,name,pos):
168     raise "NUPLET"
169
170   def suppitem(self,item) :
171     raise "NUPLET"
172
173 import Accas
174 treeitem=NUPLETTreeItem
175 objet=Accas.MCNUPLET