]> SALOME platform Git repositories - tools/eficas.git/blob - Editeur/splash.py
Salome HOME
Version initiale de EFICAS 1.2
[tools/eficas.git] / Editeur / splash.py
1 """
2     Ce module permet de créer, mettre à jour et détruire
3     un écran Splash
4 """
5 from Tkinter import *
6
7 from centerwindow import centerwindow
8 from Tools.foztools.foztools import Slider
9 import fontes
10 import images
11
12 _splash=None
13
14 def init_splash(*pos,**args):
15    global _splash
16    _splash=SplashScreen(*pos,**args)
17
18 def fini_splash():
19    global _splash
20    _splash.quit()
21    _splash=None
22
23 class SplashScreen(Toplevel):
24     """ 
25         Provides a splash screen. Usage:
26         Subclass and override 'CreateWidgets()'
27         In constructor of main window/application call
28         - S = SplashScreen(main=self)        (if caller is Toplevel)
29         - S = SplashScreen(main=self.master) (if caller is Frame)
30         - S.quit()  after you are done creating your widgets etc.
31     """
32     def __init__(self, master=None,**args):
33         Toplevel.__init__(self, master, relief='groove',
34                           borderwidth=5)
35         self.main = master
36         if self.main != None :
37             self.main.iconify()
38         self.withdraw()
39         self.frame = Frame(self)
40         self.frame.pack(expand=1,fill='both')
41         self.init(args)
42         self.geometry("300x200")
43         self.resizable(0,0)
44         centerwindow(self)
45         self.CreateWidgets()
46         self.deiconify()
47
48     def init(self,args={}):
49         self.text = StringVar()
50         self.text.set('')
51         self.text2 = StringVar()
52         self.text2.set('')
53         self.icone = 'logo_edf.gif'
54         self.barre = 'non'
55         if args == {} : return
56         if args.has_key('text'):
57             self.text.set(args['text'])
58         if args.has_key('info'):
59             self.text2.set(args['info'])
60         if args.has_key('titre'):
61             self.title(args['titre'])
62         if args.has_key('code'):
63             self.code = args['code']
64         else:
65             self.code = 'inconnu'
66         if args.has_key('icone'):
67             self.icone = args['icone']
68         if self.code == 'ASTER' :
69             self.icone = 'code_aster.gif'
70         elif self.code == 'SATURNE':
71             self.icone = 'code_saturne.gif'
72         elif self.code == 'DESCARTES':
73             self.icone = 'code_descartes.gif'
74
75     def CreateWidgets(self):
76         self.catIcon = images.get_image(self.icone)
77         self.label = Label(self.frame, image=self.catIcon)
78         self.label.pack(side=TOP)
79         self.label = Label(self.frame, textvariable=self.text,font = fontes.standard_gras)
80         self.label.pack(side=TOP,expand=1,fill='both')
81         self.label2 = Label(self.frame, textvariable=self.text2,font = fontes.standard_italique)
82         self.label2.pack(side=TOP,expand=1,fill='both')
83         self.progress = Slider(self.frame,value=0,max=100,orientation='horizontal',
84                                fillColor='#00008b',width=200,height=30,
85                                background='white',labelColor='red')
86         centerwindow(self)
87
88     def update_barre(self,event=None):
89         """ Permet de faire avancer la barre de progression """
90         try:
91             self.progress.value = self.progress.value+self.increment
92             self.progress.update()
93         except:
94             pass
95
96     def configure_barre(self):
97         """ 
98              Calcule l'incrément de progression de la barre en fonction
99              du nombre d'opérations à effectuer afin que le compteur
100              soit à 100% à la fin des opérations
101         """
102         self.increment = 100./self.ratio
103         self.progress.update()
104
105     def configure(self,**args):
106         if args.has_key('text'):
107             self.text.set(args['text'])
108         if args.has_key('info'):
109             self.text2.set(args['info'])
110         if args.has_key('titre'):
111             self.title(args['titre'])
112         if args.has_key('barre'):
113             old = self.barre
114             self.barre = args['barre']
115             if self.barre == 'oui' and old == 'non':
116                 self.progress.frame.pack(in_=self.frame,side='top')
117             elif self.barre == 'non' and old == 'oui':
118                 self.progress.frame.pack_forget()
119         if args.has_key('ratio'):
120             self.ratio = args['ratio']
121             self.configure_barre()
122         self.update()
123
124     def quit(self):
125         self.progress = None
126         self.destroy()
127         if self.main:
128            self.main.update()
129            self.main.deiconify()
130            centerwindow(self.main,parent='sans')
131