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 self
.customThrobber
= \
73 throb
.Throbber(self
, -1, images
, size
=(36, 36),
76 sequence
= [ 1, 5, 2, 7, 3, 6, 4, 4, 4, 4, 7, 2, 2, 0 ]
79 box
= wx
.BoxSizer(wx
.VERTICAL
)
80 sizer
= wx
.GridBagSizer()
81 box
.Add(sizer
, 1, wx
.EXPAND|wx
.ALL
, 5)
82 sizer
.AddGrowableCol(1)
86 # use a list so we can keep our order
87 for t
in ['plain', 'reverse', 'autoreverse', 'label', 'overlay', 'overlay+text']:
89 self
.throbbers
[t
]['throbber'], (row
, 0), (1, 1),
90 flag
= wx
.ALIGN_CENTER|wx
.ALL
, border
=2
94 wx
.StaticText(self
, -1, self
.throbbers
[t
]['text']),
95 (row
, 1), flag
= wx
.ALIGN_CENTER_VERTICAL | wx
.ALIGN_LEFT
100 # Add custom throbber to sizer.
103 self
.customThrobber
, (row
, 0), (1, 1),
104 flag
= wx
.ALIGN_CENTER|wx
.ALL
, border
=2
108 wx
.StaticText(self
, -1, 'with custom & manual sequences'),
109 (row
, 1), flag
= wx
.ALIGN_CENTER_VERTICAL | wx
.ALIGN_LEFT
112 # start and stop buttons
113 startButton
= wx
.Button(self
, -1, "Start")
114 self
.Bind(wx
.EVT_BUTTON
, self
.OnStartAnimation
, startButton
)
116 stopButton
= wx
.Button(self
, -1, "Stop")
117 self
.Bind(wx
.EVT_BUTTON
, self
.OnStopAnimation
, stopButton
)
119 buttonBox
= wx
.BoxSizer(wx
.HORIZONTAL
)
121 (startButton
, 0, wx
.ALIGN_CENTER_HORIZONTAL | wx
.ALL
, 5),
122 (stopButton
, 0, wx
.ALIGN_CENTER_HORIZONTAL | wx
.ALL
, 5),
126 buttonBox
, (len(self
.throbbers
) + 2, 0), (1, 3), flag
= wx
.ALIGN_CENTER
129 # Buttoms for the custom throbber.
130 nextButton
= wx
.Button(self
, -1, "Next")
131 self
.Bind(wx
.EVT_BUTTON
, self
.OnNext
, nextButton
)
133 prevButton
= wx
.Button(self
, -1, "Previous")
134 self
.Bind(wx
.EVT_BUTTON
, self
.OnPrevious
, prevButton
)
136 incButton
= wx
.Button(self
, -1, "Increment")
137 self
.Bind(wx
.EVT_BUTTON
, self
.OnIncrement
, incButton
)
139 decButton
= wx
.Button(self
, -1, "Decrement")
140 self
.Bind(wx
.EVT_BUTTON
, self
.OnDecrement
, decButton
)
142 revButton
= wx
.Button(self
, -1, "Reverse")
143 self
.Bind(wx
.EVT_BUTTON
, self
.OnReverse
, revButton
)
145 restButton
= wx
.Button(self
, -1, "Rest")
146 self
.Bind(wx
.EVT_BUTTON
, self
.OnRest
, restButton
)
148 startButton
= wx
.Button(self
, -1, "Start")
149 self
.Bind(wx
.EVT_BUTTON
, self
.OnStart
, startButton
)
151 stopButton
= wx
.Button(self
, -1, "Stop")
152 self
.Bind(wx
.EVT_BUTTON
, self
.OnStop
, stopButton
)
154 customBox1
= wx
.BoxSizer(wx
.HORIZONTAL
)
156 (nextButton
, 0, wx
.ALIGN_CENTER_HORIZONTAL | wx
.ALL
, 5),
157 (prevButton
, 0, wx
.ALIGN_CENTER_HORIZONTAL | wx
.ALL
, 5),
158 (incButton
, 0, wx
.ALIGN_CENTER_HORIZONTAL | wx
.ALL
, 5),
159 (decButton
, 0, wx
.ALIGN_CENTER_HORIZONTAL | wx
.ALL
, 5),
160 (revButton
, 0, wx
.ALIGN_CENTER_HORIZONTAL | wx
.ALL
, 5),
163 customBox2
= wx
.BoxSizer(wx
.HORIZONTAL
)
165 (restButton
, 0, wx
.ALIGN_CENTER_HORIZONTAL | wx
.ALL
, 5),
166 (startButton
, 0, wx
.ALIGN_CENTER_HORIZONTAL | wx
.ALL
, 5),
167 (stopButton
, 0, wx
.ALIGN_CENTER_HORIZONTAL | wx
.ALL
, 5),
170 sizer
.Add( customBox1
, (len(self
.throbbers
) + 5, 0), (1, 3), flag
= wx
.ALIGN_CENTER
)
171 sizer
.Add( customBox2
, (len(self
.throbbers
) + 6, 0), (1, 3), flag
= wx
.ALIGN_CENTER
)
175 self
.SetAutoLayout(True)
177 sizer
.SetSizeHints(self
)
180 for t
in self
.throbbers
.keys():
181 self
.throbbers
[t
]['throbber'].Start()
183 self
.Bind(wx
.EVT_WINDOW_DESTROY
, self
.OnDestroy
)
185 def OnDestroy(self
, event
):
186 self
.log
.write("got destroy event")
189 def OnStartAnimation(self
, event
):
190 for t
in self
.throbbers
.keys():
191 self
.throbbers
[t
]['throbber'].Start()
193 def OnStopAnimation(self
, event
):
194 for t
in self
.throbbers
.keys():
195 self
.throbbers
[t
]['throbber'].Rest()
197 def OnNext(self
, event
):
198 self
.customThrobber
.Next()
200 def OnPrevious(self
, event
):
201 self
.customThrobber
.Previous()
203 def OnIncrement(self
, event
):
204 self
.customThrobber
.Increment()
206 def OnDecrement(self
, event
):
207 self
.customThrobber
.Decrement()
209 def OnReverse(self
, event
):
210 self
.customThrobber
.Reverse()
212 def OnRest(self
, event
):
213 self
.customThrobber
.Rest()
215 def OnStart(self
, event
):
216 self
.customThrobber
.Start()
218 def OnStop(self
, event
):
219 self
.customThrobber
.Stop()
221 def ShutdownDemo(self
):
222 for t
in self
.throbbers
.keys():
223 self
.throbbers
[t
]['throbber'].Rest()
226 #----------------------------------------------------------------------
228 def runTest(frame
, nb
, log
):
229 win
= TestPanel(nb
, log
)
232 #----------------------------------------------------------------------
236 overview
= """<html><body>
237 <h4><center>Throbber</center></h4>
244 if __name__
== '__main__':
247 run
.main(['', os
.path
.basename(sys
.argv
[0])] + sys
.argv
[1:])