Salome HOME
701d57660f68a20ca34341d1e81b2e6a24981401
[tools/eficas.git] / Editeur / appli.py
1 """
2     Ce module contient la classe APPLI qui est la classe mère de
3     l'application EFICAS. Elle prend en charge l'organisation générale
4     des composants graphiques et l'initialisation Tk
5     L'aspect applicatif doit etre pris en charge par la classe dérivée
6 """
7 # Modules Python
8 import sys
9 import Pmw
10 import Tkinter
11
12 # Modules Eficas
13 import splash
14 import prefs
15 import fontes
16
17 class APPLI: 
18   def __init__ (self,master,code='ASTER',fichier=None) :
19       self.top=master
20       self.code=code
21       self.top.protocol("WM_DELETE_WINDOW",self.exitEFICAS)
22       self.top.minsize(900,500)
23       self.top.geometry("900x500")
24       self.top.title('EFICAS v1.1 pour '+self.code)
25       self.top.withdraw()
26       self.initializeTk(master)
27       Pmw.initialise(master)
28       self.lecture_parametres()
29       self.format_fichier = Tkinter.StringVar()
30       self.message=''
31       self.cree_composants_graphiques()
32       self.load_extensions()
33       self.affiche_FAQ()
34       splash.fini_splash()
35
36   def send_message(self,message):
37       self.message=message
38
39   def exitEFICAS(self):
40       self.quit()
41
42   def quit(self):
43       self.top.quit()
44
45   def lecture_parametres(self):
46       """
47           Active la lecture des paramètres standards et utilisateur
48       """
49       splash._splash.configure(text = "Chargement des paramètres utilisateur")
50       import configuration
51       self.CONFIGURATION = configuration.make_config(self,prefs.REPINI)
52
53   def cree_composants_graphiques(self):
54       """
55           Cree les constituants de l'application :
56            - menubar
57            - tollbar
58            - bureau
59            - statusbar
60       """
61       splash._splash.configure(text = "Chargement de l'IHM")
62       splash._splash.configure(text = "Chargement de la menubar")
63       import menubar
64       self.menubar=menubar.MENUBAR(self,self.top)
65       splash._splash.configure(text = "Chargement de la toolbar")
66       import toolbar
67       self.toolbar=toolbar.TOOLBAR(self,self.top)
68       splash._splash.configure(text = "Chargement de la statusbar")
69       import statusbar
70       self.statusbar=statusbar.STATUSBAR(self.top)
71
72   def load_extensions(self):
73       splash._splash.configure(text = "Chargement des extensions")
74       for mname in self.extensions:
75          self.load_extension(mname)
76
77   def load_extension(self,mname):
78       module=__import__(mname,globals(),locals())
79       factory=getattr(module,mname.upper())
80       extension=factory(self,self.top)
81       setattr(self,mname,extension)
82       self.fill_menus(extension,extension.menu_defs)
83       self.toolbar.creer_boutons_extension(extension.button_defs,extension)
84
85   def affiche_FAQ(self):
86       import faq
87       faq.affiche(self.top)
88
89   def affiche_infos(self,message):
90       self.statusbar.affiche_infos(message)
91       return
92
93   def  initializeTk(self, root):
94         """
95         Initialize platform specific options
96         """
97         if sys.platform == 'mac':
98             self.initializeTk_mac(root)
99         elif sys.platform == 'win32':
100             self.initializeTk_win32(root)
101         else:
102             self.initializeTk_unix(root)
103
104   def initializeTk_win32(self, root):
105         root.option_add('*Font', fontes.standard)
106         root.option_add('*EntryField.Entry.Font', fontes.standard)
107         root.option_add('*Listbox*Font',fontes.standard)
108
109   def initializeTk_colors_common(self, root):
110         root.option_add('*background', 'grey')
111         root.option_add('*foreground', 'black')
112         root.option_add('*EntryField.Entry.background', 'white')
113         root.option_add('*Entry*background', 'white')
114         root.option_add('*Listbox*background', 'white')
115         root.option_add('*Listbox*selectBackground', '#00008b')
116         root.option_add('*Listbox*selectForeground', 'white')
117
118   def initializeTk_mac(self, root):
119         self.initializeTk_colors_common(root)
120
121   def initializeTk_unix(self, root):
122       root.option_add('*Font', fontes.standard)
123       root.option_add('*EntryField.Entry.Font',fontes.standard )
124       root.option_add('*Listbox*Font', fontes.standard)
125       self.initializeTk_colors_common(root)
126
127   def get_texte_infos(self):
128       """
129           Retourne un texte d'informations sur la session courante d'EFICAS
130       """
131       texte = 'EFICAS v1.1\n\n'
132       texte = texte + 'EFICAS est un produit développé par \nEDF-Division Stratégie et Développement\n'
133       texte = texte + 'Equipe : MTI/MMN\n\n'
134       texte = texte + 'Code utilisé : %s\n' %self.code
135       return texte
136
137   def efface_aide(self,event):
138       """
139           Efface la bulle d'aide d'un panneau
140       """
141       try:
142           self.aide.destroy()
143       except:
144           pass
145       return
146
147   def affiche_aide(self,event,aide):
148       """
149           Affiche l'aide concernant un panneau
150       """
151       x=event.x
152       y=event.y
153       widget=event.widget
154       self.aide = Tkinter.Label(widget ,text = aide,
155                         bg="yellow",relief="ridge",anchor='w')
156       self.aide.place(in_=widget,
157                       relx=0.5,rely=0.5,anchor='center')
158       print aide
159       return
160
161   def fill_menus(self,extension,defs):
162       menudict=self.menubar.menudict
163       for mname,itemlist in defs:
164           menu=menudict.get(mname)
165           if not menu:continue
166           for item in itemlist:
167              if not item :
168                 menu.add_separator()
169              else:
170                 label,method=item
171                 command=getattr(extension,method)
172                 menu.add_command(label=label,command=command)
173                 
174