git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36607 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			248 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			248 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
 | 
						|
import  wx
 | 
						|
import  wx.lib.throbber as  throb
 | 
						|
 | 
						|
import throbImages # this was created using a modified version of img2py
 | 
						|
 | 
						|
from wx.lib.throbber import __doc__ as docString
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
class TestPanel(wx.Panel):
 | 
						|
    def __init__(self, parent, log):
 | 
						|
        wx.Panel.__init__(self, parent, -1)
 | 
						|
        self.log = log
 | 
						|
 | 
						|
        # create the throbbers
 | 
						|
        self.throbbers = {
 | 
						|
            'plain':        { 'throbber': None,
 | 
						|
                              'text':     "Plain throbber." },
 | 
						|
            'reverse':      { 'throbber': None,
 | 
						|
                              'text':     "This throbber runs in reverse and faster." },
 | 
						|
            'autoreverse':  { 'throbber': None,
 | 
						|
                              'text':     "This throbber switches direction." },
 | 
						|
            'label':        { 'throbber': None,
 | 
						|
                              'text':     "With a label." },
 | 
						|
            'overlay':      { 'throbber': None,
 | 
						|
                              'text':     "With an overlayed image." },
 | 
						|
            'overlay+text': { 'throbber': None,
 | 
						|
                              'text':     "With a label and an overlayed image." },
 | 
						|
            }
 | 
						|
 | 
						|
        images = [throbImages.catalog[i].getBitmap()
 | 
						|
                  for i in throbImages.index
 | 
						|
                  if i not in ['eclouds', 'logo']]
 | 
						|
 | 
						|
        self.throbbers['plain']['throbber'] = \
 | 
						|
            throb.Throbber(self, -1, images, size=(36, 36),frameDelay = 0.1)
 | 
						|
                                                
 | 
						|
        self.throbbers['reverse']['throbber'] = \
 | 
						|
            throb.Throbber(self, -1, images, frameDelay = 0.07)
 | 
						|
 | 
						|
        self.throbbers['reverse']['throbber'].Reverse()
 | 
						|
 | 
						|
        self.throbbers['autoreverse']['throbber'] = \
 | 
						|
            throb.Throbber(self, -1, images, frameDelay = 0.1, reverse = True)
 | 
						|
 | 
						|
        self.throbbers['autoreverse']['throbber'].sequence.append(0)
 | 
						|
 | 
						|
        self.throbbers['label']['throbber'] = \
 | 
						|
            throb.Throbber(self, -1, images, frameDelay = 0.1, label = 'Label')
 | 
						|
 | 
						|
        self.throbbers['label']['throbber'].SetFont(wx.Font(
 | 
						|
            pointSize = 10, family = wx.DEFAULT, style = wx.NORMAL, weight = wx.BOLD
 | 
						|
            ))
 | 
						|
 | 
						|
        self.throbbers['overlay']['throbber'] = \
 | 
						|
            throb.Throbber(
 | 
						|
                self, -1, images, frameDelay = 0.1, 
 | 
						|
                overlay = throbImages.catalog['logo'].getBitmap()
 | 
						|
                )
 | 
						|
 | 
						|
        self.throbbers['overlay+text']['throbber'] = \
 | 
						|
            throb.Throbber(
 | 
						|
                self, -1, images, frameDelay = 0.1, 
 | 
						|
                overlay = throbImages.catalog['logo'].getBitmap(), label = "Python!"
 | 
						|
                )
 | 
						|
 | 
						|
        self.throbbers['overlay+text']['throbber'].SetFont(wx.Font(
 | 
						|
            pointSize = 8, family = wx.DEFAULT, style = wx.NORMAL, weight = wx.BOLD
 | 
						|
            ))
 | 
						|
 | 
						|
        self.customThrobber = \
 | 
						|
            throb.Throbber(self, -1, images, size=(36, 36),
 | 
						|
                           frameDelay = 0.1,
 | 
						|
                           rest = 4,
 | 
						|
                           sequence = [ 1, 5, 2, 7, 3, 6, 4, 4, 4, 4, 7, 2, 2, 0 ]
 | 
						|
                           )
 | 
						|
                                                
 | 
						|
        box = wx.BoxSizer(wx.VERTICAL)
 | 
						|
        sizer = wx.GridBagSizer()
 | 
						|
        box.Add(sizer, 1, wx.EXPAND|wx.ALL, 5)
 | 
						|
        sizer.AddGrowableCol(1)
 | 
						|
 | 
						|
        row = 2
 | 
						|
 | 
						|
        # use a list so we can keep our order
 | 
						|
        for t in ['plain', 'reverse', 'autoreverse', 'label', 'overlay', 'overlay+text']:
 | 
						|
            sizer.Add(
 | 
						|
                self.throbbers[t]['throbber'], (row, 0), (1, 1), 
 | 
						|
                flag = wx.ALIGN_CENTER|wx.ALL, border=2
 | 
						|
                )
 | 
						|
 | 
						|
            sizer.Add(
 | 
						|
                wx.StaticText(self, -1, self.throbbers[t]['text']), 
 | 
						|
                (row, 1), flag = wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_LEFT
 | 
						|
                )
 | 
						|
 | 
						|
            row += 1
 | 
						|
 | 
						|
        # Add custom throbber to sizer.
 | 
						|
        row += 2
 | 
						|
        sizer.Add(
 | 
						|
            self.customThrobber, (row, 0), (1, 1), 
 | 
						|
            flag = wx.ALIGN_CENTER|wx.ALL, border=2
 | 
						|
            )
 | 
						|
 | 
						|
        sizer.Add(
 | 
						|
            wx.StaticText(self, -1, 'with custom & manual sequences'), 
 | 
						|
            (row, 1), flag = wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_LEFT
 | 
						|
            )
 | 
						|
 | 
						|
        # start and stop buttons
 | 
						|
        startButton = wx.Button(self, -1, "Start")
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.OnStartAnimation, startButton)
 | 
						|
 | 
						|
        stopButton = wx.Button(self, -1, "Stop")
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.OnStopAnimation, stopButton)
 | 
						|
 | 
						|
        buttonBox = wx.BoxSizer(wx.HORIZONTAL)
 | 
						|
        buttonBox.AddMany([
 | 
						|
            (startButton, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5),
 | 
						|
            (stopButton, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5),
 | 
						|
            ])
 | 
						|
 | 
						|
        sizer.Add(
 | 
						|
            buttonBox, (len(self.throbbers) + 2, 0), (1, 3), flag = wx.ALIGN_CENTER
 | 
						|
            )
 | 
						|
 | 
						|
        # Buttoms for the custom throbber.
 | 
						|
        nextButton = wx.Button(self, -1, "Next")
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.OnNext, nextButton)
 | 
						|
 | 
						|
        prevButton = wx.Button(self, -1, "Previous")
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.OnPrevious, prevButton)
 | 
						|
 | 
						|
        incButton = wx.Button(self, -1, "Increment")
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.OnIncrement, incButton)
 | 
						|
 | 
						|
        decButton = wx.Button(self, -1, "Decrement")
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.OnDecrement, decButton)
 | 
						|
 | 
						|
        revButton = wx.Button(self, -1, "Reverse")
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.OnReverse, revButton)
 | 
						|
 | 
						|
        restButton = wx.Button(self, -1, "Rest")
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.OnRest, restButton)
 | 
						|
 | 
						|
        startButton = wx.Button(self, -1, "Start")
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.OnStart, startButton)
 | 
						|
 | 
						|
        stopButton = wx.Button(self, -1, "Stop")
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.OnStop, stopButton)
 | 
						|
 | 
						|
        customBox1 = wx.BoxSizer(wx.HORIZONTAL)
 | 
						|
        customBox1.AddMany([
 | 
						|
            (nextButton, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5),
 | 
						|
            (prevButton, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5),
 | 
						|
            (incButton, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5),
 | 
						|
            (decButton, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5),
 | 
						|
            (revButton, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5),
 | 
						|
            ])
 | 
						|
 | 
						|
        customBox2 = wx.BoxSizer(wx.HORIZONTAL)
 | 
						|
        customBox2.AddMany([
 | 
						|
            (restButton, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5),
 | 
						|
            (startButton, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5),
 | 
						|
            (stopButton, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5),
 | 
						|
            ])
 | 
						|
 | 
						|
        sizer.Add( customBox1, (len(self.throbbers) + 5, 0), (1, 3), flag = wx.ALIGN_CENTER )
 | 
						|
        sizer.Add( customBox2, (len(self.throbbers) + 6, 0), (1, 3), flag = wx.ALIGN_CENTER )
 | 
						|
 | 
						|
        # Layout.
 | 
						|
        self.SetSizer(box)
 | 
						|
        self.SetAutoLayout(True)
 | 
						|
        self.Layout()
 | 
						|
        sizer.SetSizeHints(self)
 | 
						|
        sizer.Fit(self)
 | 
						|
 | 
						|
        for t in self.throbbers.keys():
 | 
						|
            self.throbbers[t]['throbber'].Start()
 | 
						|
 | 
						|
        self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy)
 | 
						|
 | 
						|
    def OnDestroy(self, event):
 | 
						|
        self.log.write("got destroy event")
 | 
						|
        event.Skip()
 | 
						|
 | 
						|
    def OnStartAnimation(self, event):
 | 
						|
        for t in self.throbbers.keys():
 | 
						|
            self.throbbers[t]['throbber'].Start()
 | 
						|
 | 
						|
    def OnStopAnimation(self, event):
 | 
						|
        for t in self.throbbers.keys():
 | 
						|
            self.throbbers[t]['throbber'].Rest()
 | 
						|
 | 
						|
    def OnNext(self, event):
 | 
						|
        self.customThrobber.Next()
 | 
						|
 | 
						|
    def OnPrevious(self, event):
 | 
						|
        self.customThrobber.Previous()
 | 
						|
 | 
						|
    def OnIncrement(self, event):
 | 
						|
        self.customThrobber.Increment()
 | 
						|
 | 
						|
    def OnDecrement(self, event):
 | 
						|
        self.customThrobber.Decrement()
 | 
						|
 | 
						|
    def OnReverse(self, event):
 | 
						|
        self.customThrobber.Reverse()
 | 
						|
 | 
						|
    def OnRest(self, event):
 | 
						|
        self.customThrobber.Rest()
 | 
						|
 | 
						|
    def OnStart(self, event):
 | 
						|
        self.customThrobber.Start()
 | 
						|
 | 
						|
    def OnStop(self, event):
 | 
						|
        self.customThrobber.Stop()
 | 
						|
 | 
						|
    def ShutdownDemo(self):
 | 
						|
        for t in self.throbbers.keys():
 | 
						|
            self.throbbers[t]['throbber'].Rest()
 | 
						|
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
def runTest(frame, nb, log):
 | 
						|
    win = TestPanel(nb, log)
 | 
						|
    return win
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
 | 
						|
 | 
						|
overview = """<html><body>
 | 
						|
<h4><center>Throbber</center></h4>
 | 
						|
<p>%s</p>
 | 
						|
</body></html>
 | 
						|
""" % docString
 | 
						|
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    import sys,os
 | 
						|
    import run
 | 
						|
    run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
 |