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:])