"""
# Modules Python
import sys
+import types
import Pmw
import Tkinter
+from tkMessageBox import showinfo,askyesno,showerror
# Modules Eficas
import splash
import prefs
import fontes
+import tooltip
+import properties
+from widgets import Fenetre
VERSION="EFICAS v1.3"
self.format_fichier = Tkinter.StringVar()
self.message=''
self.cree_composants_graphiques()
- self.load_extensions()
+ self.load_appli_composants()
self.affiche_FAQ()
splash.fini_splash()
"""
Cree les constituants de l'application :
- menubar
- - tollbar
+ - toolbar
- bureau
- statusbar
"""
import statusbar
self.statusbar=statusbar.STATUSBAR(self.top)
- def load_extensions(self):
- splash._splash.configure(text = "Chargement des extensions")
- for mname in self.extensions:
- self.load_extension(mname)
+ def load_appli_composants(self):
+ splash._splash.configure(text = "Chargement des appli_composants")
+ for mname in self.appli_composants:
+ self.load_appli_composant(mname)
- def load_extension(self,mname):
+ def load_appli_composant(self,mname):
module=__import__(mname,globals(),locals())
factory=getattr(module,mname.upper())
- extension=factory(self,self.top)
- setattr(self,mname,extension)
- self.fill_menus(extension,extension.menu_defs)
- self.toolbar.creer_boutons_extension(extension.button_defs,extension)
+ appli_composant=factory(self,self.top)
+ setattr(self,mname,appli_composant)
+ self.fill_menus(appli_composant,appli_composant.menu_defs)
+ self.toolbar.creer_boutons_appli_composant(appli_composant.button_defs,appli_composant)
def affiche_FAQ(self):
import faq
texte = VERSION + '\n\n'
texte = texte + 'EFICAS est un produit développé par \nEDF-Division Stratégie et Développement\n'
texte = texte + 'Equipe : MTI/MMN\n\n'
- texte = texte + 'Code utilisé : %s\n' %self.code
+ texte = texte + 'Code utilisé : %s version %s\n' % (self.code,properties.version)
return texte
def efface_aide(self,event):
x=event.x
y=event.y
widget=event.widget
- self.aide = Tkinter.Label(widget ,text = aide,
- bg="yellow",relief="ridge",anchor='w')
- self.aide.place(in_=widget,
- relx=0.5,rely=0.5,anchor='center')
- print aide
- return
-
- def fill_menus(self,extension,defs):
+ self.aide=tooltip.TOOLTIP(widget)
+ self.aide.xoffset = 10
+ self.aide.yoffset = - widget.winfo_height()/2
+ self.aide.setText(aide)
+ self.aide._showTip()
+ return
+
+ def cree_menu(self,menu,itemlist,appli_composant):
+ """
+ Ajoute les items du tuple itemlist
+ dans le menu menu
+ """
+ number_item=0
+ radio=None
+ for item in itemlist:
+ number_item=number_item + 1
+ if not item :
+ menu.add_separator()
+ else:
+ label,method=item
+ if type(method) == types.TupleType:
+ # On a un tuple => on cree une cascade
+ menu_cascade=Tkinter.Menu(menu)
+ menu.add_cascade(label=label,menu=menu_cascade)
+ self.cree_menu(menu_cascade,method,appli_composant)
+ elif method[0] == '&':
+ # On a une chaine avec & en tete => on cree un radiobouton
+ command=getattr(appli_composant,method[1:])
+ menu.add_radiobutton(label=label,command=command)
+ if radio == None:radio=number_item
+ else:
+ command=getattr(appli_composant,method)
+ menu.add_command(label=label,command=command)
+ # Si au moins un radiobouton existe on invoke le premier
+ if radio:menu.invoke(radio)
+
+ def fill_menus(self,appli_composant,defs):
menudict=self.menubar.menudict
for mname,itemlist in defs:
menu=menudict.get(mname)
if not menu:continue
- for item in itemlist:
- if not item :
- menu.add_separator()
- else:
- label,method=item
- command=getattr(extension,method)
- menu.add_command(label=label,command=command)
-
-
+ self.cree_menu(menu,itemlist,appli_composant)
+
+ def update_jdc_courant(self):
+ self.bureau.update_jdc_courant()
+
+ def affiche_alerte(self,titre,message):
+ f=Fenetre(self, titre="Compte-rendu d'erreur", texte = titre + "\n\n" + message)
+ f.wait()
+
+