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
41 def __init__ (self,master,code='ASTER',fichier=None) :
44 self.top.protocol("WM_DELETE_WINDOW",self.exitEFICAS)
45 self.top.minsize(900,500)
46 self.top.geometry("900x500")
47 self.top.title(VERSION + ' pour '+self.code)
49 self.initializeTk(master)
50 Pmw.initialise(master)
51 self.lecture_parametres()
52 self.format_fichier = Tkinter.StringVar()
54 self.cree_composants_graphiques()
55 self.load_appli_composants()
59 def send_message(self,message):
68 def lecture_parametres(self):
70 Active la lecture des paramètres standards et utilisateur
72 splash._splash.configure(text = "Chargement des paramètres utilisateur")
74 self.CONFIGURATION = configuration.make_config(self,prefs.REPINI)
76 def cree_composants_graphiques(self):
78 Cree les constituants de l'application :
84 splash._splash.configure(text = "Chargement de l'IHM")
85 splash._splash.configure(text = "Chargement de la menubar")
87 self.menubar=menubar.MENUBAR(self,self.top)
88 splash._splash.configure(text = "Chargement de la toolbar")
90 self.toolbar=toolbar.TOOLBAR(self,self.top)
91 splash._splash.configure(text = "Chargement de la statusbar")
93 self.statusbar=statusbar.STATUSBAR(self.top)
95 def load_appli_composants(self):
96 splash._splash.configure(text = "Chargement des appli_composants")
97 for mname in self.appli_composants:
98 self.load_appli_composant(mname)
100 def load_appli_composant(self,mname):
101 module=__import__(mname,globals(),locals())
102 factory=getattr(module,mname.upper())
103 appli_composant=factory(self,self.top)
104 setattr(self,mname,appli_composant)
105 self.fill_menus(appli_composant,appli_composant.menu_defs)
106 self.toolbar.creer_boutons_appli_composant(appli_composant.button_defs,appli_composant)
108 def affiche_FAQ(self):
110 faq.affiche(self.top)
112 def affiche_infos(self,message):
113 self.statusbar.affiche_infos(message)
116 def initializeTk(self, root):
118 Initialize platform specific options
120 if sys.platform == 'mac':
121 self.initializeTk_mac(root)
122 elif sys.platform == 'win32':
123 self.initializeTk_win32(root)
125 self.initializeTk_unix(root)
127 def initializeTk_win32(self, root):
128 root.option_add('*Font', fontes.standard)
129 root.option_add('*EntryField.Entry.Font', fontes.standard)
130 root.option_add('*Listbox*Font',fontes.standard)
132 def initializeTk_colors_common(self, root):
133 root.option_add('*background', 'grey')
134 root.option_add('*foreground', 'black')
135 root.option_add('*EntryField.Entry.background', 'white')
136 root.option_add('*Entry*background', 'white')
137 root.option_add('*Listbox*background', 'white')
138 root.option_add('*Listbox*selectBackground', '#00008b')
139 root.option_add('*Listbox*selectForeground', 'white')
141 def initializeTk_mac(self, root):
142 self.initializeTk_colors_common(root)
144 def initializeTk_unix(self, root):
145 root.option_add('*Font', fontes.standard)
146 root.option_add('*EntryField.Entry.Font',fontes.standard )
147 root.option_add('*Listbox*Font', fontes.standard)
148 self.initializeTk_colors_common(root)
150 def get_texte_infos(self):
152 Retourne un texte d'informations sur la session courante d'EFICAS
154 texte = VERSION + '\n\n'
155 texte = texte + 'EFICAS est un produit développé par \nEDF-Division Stratégie et Développement\n'
156 texte = texte + 'Equipe : MTI/MMN\n\n'
157 texte = texte + 'Code utilisé : %s\n' %self.code
160 def efface_aide(self,event):
162 Efface la bulle d'aide d'un panneau
170 def affiche_aide(self,event,aide):
172 Affiche l'aide concernant un panneau
177 self.aide=tooltip.TOOLTIP(widget)
178 self.aide.xoffset = 10
179 self.aide.yoffset = - widget.winfo_height()/2
180 self.aide.setText(aide)
184 def cree_menu(self,menu,itemlist,appli_composant):
186 Ajoute les items du tuple itemlist
191 for item in itemlist:
192 number_item=number_item + 1
197 if type(method) == types.TupleType:
198 # On a un tuple => on cree une cascade
199 menu_cascade=Tkinter.Menu(menu)
200 menu.add_cascade(label=label,menu=menu_cascade)
201 self.cree_menu(menu_cascade,method,appli_composant)
202 elif method[0] == '&':
203 # On a une chaine avec & en tete => on cree un radiobouton
204 command=getattr(appli_composant,method[1:])
205 menu.add_radiobutton(label=label,command=command)
206 if radio == None:radio=number_item
208 command=getattr(appli_composant,method)
209 menu.add_command(label=label,command=command)
210 # Si au moins un radiobouton existe on invoke le premier
211 if radio:menu.invoke(radio)
213 def fill_menus(self,appli_composant,defs):
214 menudict=self.menubar.menudict
215 for mname,itemlist in defs:
216 menu=menudict.get(mname)
218 self.cree_menu(menu,itemlist,appli_composant)