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.
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.
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.
19 # ======================================================================
21 Ce module contient la classe APPLI qui est la classe mère de
22 l'application EFICAS. Elle prend en charge l'organisation générale
23 des composants graphiques et l'initialisation Tk
24 L'aspect applicatif doit etre pris en charge par la classe dérivée
42 def __init__ (self,master,code='ASTER',fichier=None) :
45 self.top.protocol("WM_DELETE_WINDOW",self.exitEFICAS)
46 self.top.minsize(900,500)
47 self.top.geometry("900x500")
48 self.top.title(VERSION + ' pour '+self.code)
50 self.initializeTk(master)
51 Pmw.initialise(master)
52 self.lecture_parametres()
53 self.format_fichier = Tkinter.StringVar()
55 self.cree_composants_graphiques()
56 self.load_appli_composants()
60 def send_message(self,message):
69 def lecture_parametres(self):
71 Active la lecture des paramètres standards et utilisateur
73 splash._splash.configure(text = "Chargement des paramètres utilisateur")
75 self.CONFIGURATION = configuration.make_config(self,prefs.REPINI)
77 def cree_composants_graphiques(self):
79 Cree les constituants de l'application :
85 splash._splash.configure(text = "Chargement de l'IHM")
86 splash._splash.configure(text = "Chargement de la menubar")
88 self.menubar=menubar.MENUBAR(self,self.top)
89 splash._splash.configure(text = "Chargement de la toolbar")
91 self.toolbar=toolbar.TOOLBAR(self,self.top)
92 splash._splash.configure(text = "Chargement de la statusbar")
94 self.statusbar=statusbar.STATUSBAR(self.top)
96 def load_appli_composants(self):
97 splash._splash.configure(text = "Chargement des appli_composants")
98 for mname in self.appli_composants:
99 self.load_appli_composant(mname)
101 def load_appli_composant(self,mname):
102 module=__import__(mname,globals(),locals())
103 factory=getattr(module,mname.upper())
104 appli_composant=factory(self,self.top)
105 setattr(self,mname,appli_composant)
106 self.fill_menus(appli_composant,appli_composant.menu_defs)
107 self.toolbar.creer_boutons_appli_composant(appli_composant.button_defs,appli_composant)
109 def affiche_FAQ(self):
111 faq.affiche(self.top)
113 def affiche_infos(self,message):
114 self.statusbar.affiche_infos(message)
117 def initializeTk(self, root):
119 Initialize platform specific options
121 if sys.platform == 'mac':
122 self.initializeTk_mac(root)
123 elif sys.platform == 'win32':
124 self.initializeTk_win32(root)
126 self.initializeTk_unix(root)
128 def initializeTk_win32(self, root):
129 root.option_add('*Font', fontes.standard)
130 root.option_add('*EntryField.Entry.Font', fontes.standard)
131 root.option_add('*Listbox*Font',fontes.standard)
133 def initializeTk_colors_common(self, root):
134 root.option_add('*background', 'grey')
135 root.option_add('*foreground', 'black')
136 root.option_add('*EntryField.Entry.background', 'white')
137 root.option_add('*Entry*background', 'white')
138 root.option_add('*Listbox*background', 'white')
139 root.option_add('*Listbox*selectBackground', '#00008b')
140 root.option_add('*Listbox*selectForeground', 'white')
142 def initializeTk_mac(self, root):
143 self.initializeTk_colors_common(root)
145 def initializeTk_unix(self, root):
146 root.option_add('*Font', fontes.standard)
147 root.option_add('*EntryField.Entry.Font',fontes.standard )
148 root.option_add('*Listbox*Font', fontes.standard)
149 self.initializeTk_colors_common(root)
151 def get_texte_infos(self):
153 Retourne un texte d'informations sur la session courante d'EFICAS
155 texte = VERSION + '\n\n'
156 texte = texte + 'EFICAS est un produit développé par \nEDF-Division Stratégie et Développement\n'
157 texte = texte + 'Equipe : MTI/MMN\n\n'
158 texte = texte + 'Code utilisé : %s version %s\n' % (self.code,properties.version)
161 def efface_aide(self,event):
163 Efface la bulle d'aide d'un panneau
171 def affiche_aide(self,event,aide):
173 Affiche l'aide concernant un panneau
178 self.aide=tooltip.TOOLTIP(widget)
179 self.aide.xoffset = 10
180 self.aide.yoffset = - widget.winfo_height()/2
181 self.aide.setText(aide)
185 def cree_menu(self,menu,itemlist,appli_composant):
187 Ajoute les items du tuple itemlist
192 for item in itemlist:
193 number_item=number_item + 1
198 if type(method) == types.TupleType:
199 # On a un tuple => on cree une cascade
200 menu_cascade=Tkinter.Menu(menu)
201 menu.add_cascade(label=label,menu=menu_cascade)
202 self.cree_menu(menu_cascade,method,appli_composant)
203 elif method[0] == '&':
204 # On a une chaine avec & en tete => on cree un radiobouton
205 command=getattr(appli_composant,method[1:])
206 menu.add_radiobutton(label=label,command=command)
207 if radio == None:radio=number_item
209 command=getattr(appli_composant,method)
210 menu.add_command(label=label,command=command)
211 # Si au moins un radiobouton existe on invoke le premier
212 if radio:menu.invoke(radio)
214 def fill_menus(self,appli_composant,defs):
215 menudict=self.menubar.menudict
216 for mname,itemlist in defs:
217 menu=menudict.get(mname)
219 self.cree_menu(menu,itemlist,appli_composant)