]>
git.saurik.com Git - wxWidgets.git/blob - utils/wxPython/lib/splashscreen.py
1 #----------------------------------------------------------------------
2 # Name: wxPython.lib.splashscreen
3 # Purpose: A simple frame that can display a bitmap and closes itself
4 # after a specified timeout or a mouse click.
6 # Author: Mike Fletcher, Robin Dunn
10 # Copyright: (c) 1999 by Total Control Software
11 # Licence: wxWindows license
12 #----------------------------------------------------------------------
14 from wxPython
.wx
import *
16 #----------------------------------------------------------------------
18 def bitmapFromFile(filename
):
19 '''Non-portable test for bitmap type...'''
21 BITMAPTYPEGUESSDICT
= {
22 "bmp" :wxBITMAP_TYPE_BMP
,
23 "png" :wxBITMAP_TYPE_PNG
,
24 "jpeg":wxBITMAP_TYPE_JPEG
,
25 "gif" :wxBITMAP_TYPE_GIF
,
26 "xbm" :wxBITMAP_TYPE_XBM
,
28 # following assumes bitmap type if we cannot resolve image type
29 typ
= BITMAPTYPEGUESSDICT
.get(imghdr
.what(filename
), wxBITMAP_TYPE_BMP
)
30 bitmap
= wxImage(filename
, typ
).ConvertToBitmap()
33 #----------------------------------------------------------------------
35 class SplashScreen(wxFrame
):
36 def __init__(self
, parent
, ID
=-1, title
="SplashScreen", style
=wxSTAY_ON_TOP
,
37 duration
=1500, bitmapfile
="bitmaps/splashscreen.bmp", callback
= None):
39 parent, ID, title, style -- see wxFrame
40 duration -- milliseconds to display the splash screen
41 bitmapfile -- absolute or relative pathname, extension used for type negotiation
42 callback -- if specified, is called when timer completes, callback is responsible for closing the splash screen
45 self
.bitmap
= bmp
= bitmapFromFile(bitmapfile
)
46 ### Determine size of bitmap to size window...
47 size
= (bmp
.GetWidth(), bmp
.GetHeight())
49 width
= wxSystemSettings_GetSystemMetric(wxSYS_SCREEN_X
)
50 height
= wxSystemSettings_GetSystemMetric(wxSYS_SCREEN_Y
)
51 pos
= ((width
-size
[0])/2, (height
-size
[1])/2)
53 # check for overflow...
55 size
= (wxSystemSettings_GetSystemMetric(wxSYS_SCREEN_X
), size
[1])
57 size
= (size
[0], wxSystemSettings_GetSystemMetric(wxSYS_SCREEN_Y
))
59 wxFrame
.__init
__(self
, parent
, ID
, title
, pos
, size
, style
)
62 dc
.DrawBitmap(self
.bitmap
, 0,0, false
)
64 class SplashTimer(wxTimer
):
65 def __init__(self
, targetFunction
):
66 self
.Notify
= targetFunction
67 wxTimer
.__init
__(self
)
70 callback
= self
.OnSplashExitDefault
72 self
.timer
= SplashTimer(callback
)
73 self
.timer
.Start(duration
, 1) # one-shot only
74 EVT_LEFT_DOWN(self
, self
.OnMouseClick
)
77 def OnSplashExitDefault(self
, event
=None):
81 def OnCloseWindow(self
, event
=None):
88 def OnMouseClick(self
, event
):
91 #----------------------------------------------------------------------
94 if __name__
== "__main__":
97 wxImage_AddHandler(wxJPEGHandler())
98 wxImage_AddHandler(wxPNGHandler())
99 wxImage_AddHandler(wxGIFHandler())
100 self
.splash
= SplashScreen(NULL
, bitmapfile
="splashscreen.jpg", callback
=self
.OnSplashExit
)
101 self
.splash
.Show(true
)
102 self
.SetTopWindow(self
.splash
)
104 def OnSplashExit(self
, event
=None):
105 print "Yay! Application callback worked!"
106 self
.splash
.Close(true
)
108 ### Build working windows here...
109 def test(sceneGraph
=None):