3 import wx
.lib
.throbber
as throb
5 import throbImages
# this was created using a modified version of img2py
7 from wx
.lib
.throbber
import __doc__
as docString
9 #----------------------------------------------------------------------
11 class TestPanel(wx
.Panel
):
12 def __init__(self
, parent
, log
):
13 wx
.Panel
.__init
__(self
, parent
, -1)
16 # create the throbbers
18 'plain': { 'throbber': None,
19 'text': "Plain throbber." },
20 'reverse': { 'throbber': None,
21 'text': "This throbber runs in reverse and faster." },
22 'autoreverse': { 'throbber': None,
23 'text': "This throbber switches direction." },
24 'label': { 'throbber': None,
25 'text': "With a label." },
26 'overlay': { 'throbber': None,
27 'text': "With an overlayed image." },
28 'overlay+text': { 'throbber': None,
29 'text': "With a label and an overlayed image." },
32 images
= [throbImages
.catalog
[i
].getBitmap()
33 for i
in throbImages
.index
34 if i
not in ['eclouds', 'logo']]
36 self
.throbbers
['plain']['throbber'] = \
37 throb
.Throbber(self
, -1, images
, size
=(36, 36),frameDelay
= 0.1)
39 self
.throbbers
['reverse']['throbber'] = \
40 throb
.Throbber(self
, -1, images
, frameDelay
= 0.07)
42 self
.throbbers
['reverse']['throbber'].Reverse()
44 self
.throbbers
['autoreverse']['throbber'] = \
45 throb
.Throbber(self
, -1, images
, frameDelay
= 0.1, reverse
= True)
47 self
.throbbers
['autoreverse']['throbber'].sequence
.append(0)
49 self
.throbbers
['label']['throbber'] = \
50 throb
.Throbber(self
, -1, images
, frameDelay
= 0.1, label
= 'Label')
52 self
.throbbers
['label']['throbber'].SetFont(wx
.Font(
53 pointSize
= 10, family
= wx
.DEFAULT
, style
= wx
.NORMAL
, weight
= wx
.BOLD
56 self
.throbbers
['overlay']['throbber'] = \
58 self
, -1, images
, frameDelay
= 0.1,
59 overlay
= throbImages
.catalog
['logo'].getBitmap()
62 self
.throbbers
['overlay+text']['throbber'] = \
64 self
, -1, images
, frameDelay
= 0.1,
65 overlay
= throbImages
.catalog
['logo'].getBitmap(), label
= "Python!"
68 self
.throbbers
['overlay+text']['throbber'].SetFont(wx
.Font(
69 pointSize
= 8, family
= wx
.DEFAULT
, style
= wx
.NORMAL
, weight
= wx
.BOLD
72 # this throbber is created using a single, composite image
73 self
.otherThrobber
= throb
.Throbber(
74 self
, -1, throbImages
.catalog
['eclouds'].getBitmap(), frameDelay
= 0.15,
75 frames
= 12, frameWidth
= 48, label
= "Stop"
79 self
.otherThrobber
.Bind(wx
.EVT_LEFT_DOWN
, self
.OnClickThrobber
)
81 box
= wx
.BoxSizer(wx
.VERTICAL
)
82 sizer
= wx
.GridBagSizer()
83 box
.Add(sizer
, 1, wx
.EXPAND|wx
.ALL
, 5)
84 sizer
.AddGrowableCol(1)
86 sizer
.Add(self
.otherThrobber
, (0, 2), (4, 1),flag
= wx
.ALIGN_CENTER_VERTICAL
)
90 # use a list so we can keep our order
91 for t
in ['plain', 'reverse', 'autoreverse', 'label', 'overlay', 'overlay+text']:
93 self
.throbbers
[t
]['throbber'], (row
, 0), (1, 1),
94 flag
= wx
.ALIGN_CENTER|wx
.ALL
, border
=2
98 wx
.StaticText(self
, -1, self
.throbbers
[t
]['text']),
99 (row
, 1), flag
= wx
.ALIGN_CENTER_VERTICAL | wx
.ALIGN_LEFT
104 # start and stop buttons
105 startButton
= wx
.Button(self
, -1, "Start")
106 self
.Bind(wx
.EVT_BUTTON
, self
.OnStartAnimation
, startButton
)
108 stopButton
= wx
.Button(self
, -1, "Stop")
109 self
.Bind(wx
.EVT_BUTTON
, self
.OnStopAnimation
, stopButton
)
111 buttonBox
= wx
.BoxSizer(wx
.HORIZONTAL
)
113 (startButton
, 0, wx
.ALIGN_CENTER_HORIZONTAL | wx
.ALL
, 5),
114 (stopButton
, 0, wx
.ALIGN_CENTER_HORIZONTAL | wx
.ALL
, 5),
118 buttonBox
, (len(self
.throbbers
) + 3, 0), (1, 3), flag
= wx
.ALIGN_CENTER
122 self
.SetAutoLayout(True)
124 sizer
.SetSizeHints(self
)
127 for t
in self
.throbbers
.keys():
128 self
.throbbers
[t
]['throbber'].Start()
130 self
.otherThrobber
.Start()
131 self
.otherThrobber
.Reverse()
133 self
.Bind(wx
.EVT_WINDOW_DESTROY
, self
.OnDestroy
)
135 def OnDestroy(self
, event
):
136 self
.log
.write("got destroy event")
139 def OnStartAnimation(self
, event
):
140 for t
in self
.throbbers
.keys():
141 self
.throbbers
[t
]['throbber'].Start()
143 def OnStopAnimation(self
, event
):
144 for t
in self
.throbbers
.keys():
145 self
.throbbers
[t
]['throbber'].Rest()
147 def OnClickThrobber(self
, event
):
148 if self
.otherThrobber
.Running():
149 self
.otherThrobber
.Rest()
150 self
.otherThrobber
.SetLabel("Start")
152 self
.otherThrobber
.Start()
153 self
.otherThrobber
.SetLabel("Stop")
155 def ShutdownDemo(self
):
156 self
.otherThrobber
.Rest()
157 for t
in self
.throbbers
.keys():
158 self
.throbbers
[t
]['throbber'].Rest()
161 #----------------------------------------------------------------------
163 def runTest(frame
, nb
, log
):
164 if wx
.Platform
== "__WXMAC__":
165 wx
.MessageBox("This demo currently fails on the Mac.",
169 win
= TestPanel(nb
, log
)
172 #----------------------------------------------------------------------
176 overview
= """<html><body>
177 <h4><center>Throbber</center></h4>
184 if __name__
== '__main__':
187 run
.main(['', os
.path
.basename(sys
.argv
[0])] + sys
.argv
[1:])