+
+import wx
+from wx.lib.ticker import Ticker
+import wx.lib.colourselect as csel #for easy color selection
+
+#----------------------------------------------------------------------
+
+class TestPanel(wx.Panel):
+ def __init__(self, parent, log):
+ self.log = log
+ wx.Panel.__init__(self, parent, -1)
+
+ self.ticker = Ticker(self)
+
+ # Controls for ...controlling... the ticker.
+ self.txt = wx.TextCtrl(self, value="I am a scrolling ticker!!!!", size=(200,-1))
+ wx.CallAfter(self.txt.SetInsertionPoint, 0)
+ txtl = wx.StaticText(self, label="Ticker text:")
+ fgb = csel.ColourSelect(self, -1, colour=self.ticker.GetForegroundColour())
+ fgl = wx.StaticText(self, label="Foreground Color:")
+ bgb = csel.ColourSelect(self, -1, colour=self.ticker.GetBackgroundColour())
+ bgl = wx.StaticText(self, label="Background Color:")
+ fontb = wx.Button(self, label="Change")
+ self.fontl = wx.StaticText(self)
+ dirb = wx.Button(self, label="Switch")
+ self.dirl = wx.StaticText(self)
+ fpsl = wx.StaticText(self, label="Frames per Second:")
+ fps = wx.Slider(self, value=self.ticker.GetFPS(), minValue=1, maxValue=100,
+ size=(150,-1),
+ style=wx.SL_HORIZONTAL|wx.SL_AUTOTICKS|wx.SL_LABELS)
+ fps.SetTickFreq(5)
+ ppfl = wx.StaticText(self, label="Pixels per frame:")
+ ppf = wx.Slider(self, value=self.ticker.GetPPF(), minValue=1, maxValue=10,
+ size=(150,-1),
+ style=wx.SL_HORIZONTAL|wx.SL_AUTOTICKS|wx.SL_LABELS)
+
+ # Do layout
+ sz = wx.FlexGridSizer(cols=2, hgap=4, vgap=4)
+
+ sz.Add(txtl, flag=wx.ALIGN_CENTER_VERTICAL)
+ sz.Add(self.txt, flag=wx.ALIGN_CENTER_VERTICAL)
+
+ sz.Add(fgl, flag=wx.ALIGN_CENTER_VERTICAL)
+ sz.Add(fgb, flag=wx.ALIGN_CENTER_VERTICAL)
+
+ sz.Add(bgl, flag=wx.ALIGN_CENTER_VERTICAL)
+ sz.Add(bgb, flag=wx.ALIGN_CENTER_VERTICAL)
+
+ sz.Add(self.fontl, flag=wx.ALIGN_CENTER_VERTICAL)
+ sz.Add(fontb, flag=wx.ALIGN_CENTER_VERTICAL)
+
+ sz.Add(self.dirl, flag=wx.ALIGN_CENTER_VERTICAL)
+ sz.Add(dirb, flag=wx.ALIGN_CENTER_VERTICAL)
+
+ sz.Add(fpsl, flag=wx.ALIGN_CENTER_VERTICAL)
+ sz.Add(fps, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT)
+
+ sz.Add(ppfl, flag=wx.ALIGN_CENTER_VERTICAL)
+ sz.Add(ppf, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT)
+
+ sz2 = wx.BoxSizer(wx.VERTICAL)
+ sz2.Add(self.ticker, flag=wx.EXPAND|wx.ALL, border=5)
+ sz2.Add(sz, flag=wx.EXPAND|wx.ALL, proportion=1, border=25)
+ self.SetSizer(sz2)
+ sz2.SetSizeHints(self)
+
+ # Bind events
+ self.Bind(wx.EVT_BUTTON, self.OnChangeTickDirection, dirb)
+ self.Bind(wx.EVT_BUTTON, self.OnChangeTickFont, fontb)
+ self.Bind(wx.EVT_TEXT, self.OnText, self.txt)
+ self.Bind(csel.EVT_COLOURSELECT, self.ChangeTickFGColor, fgb)
+ self.Bind(csel.EVT_COLOURSELECT, self.ChangeTickBGColor, bgb)
+ self.Bind(wx.EVT_SCROLL, self.ChangeFPS, fps)
+ self.Bind(wx.EVT_SCROLL, self.ChangePPF, ppf)
+
+ # Set defaults
+ self.SetTickDirection("rtl")
+ self.SetTickFont(self.ticker.GetFont())
+ self.ticker.SetText(self.txt.GetValue())
+ def SetTickFont(self, font):
+ """Sets ticker font, updates label"""
+ self.ticker.SetFont(font)
+ self.fontl.SetLabel("Font: %s"%(self.ticker.GetFont().GetFaceName()))
+ self.Layout()
+
+
+ def OnChangeTickFont(self, evt):
+ fd = wx.FontData()
+ fd.EnableEffects(False)
+ fd.SetInitialFont(self.ticker.GetFont())
+ dlg = wx.FontDialog(wx.GetTopLevelParent(self), fd)
+ if dlg.ShowModal() == wx.ID_OK:
+ data = dlg.GetFontData()
+ self.SetTickFont(data.GetChosenFont())
+
+
+ def SetTickDirection(self, dir):
+ """Sets tick direction, updates label"""
+ self.ticker.SetDirection(dir)
+ self.dirl.SetLabel("Direction: %s"%(self.ticker.GetDirection()))
+
+
+ def OnChangeTickDirection(self, dir):
+ if self.ticker.GetDirection() == "rtl":
+ self.SetTickDirection("ltr")
+ else:
+ self.SetTickDirection("rtl")
+
+
+ def OnText(self, evt):
+ """Live update of the ticker text"""
+ self.ticker.SetText(self.txt.GetValue())
+
+ def ChangeTickFGColor(self, evt):
+ self.ticker.SetForegroundColour(evt.GetValue())
+
+ def ChangeTickBGColor(self, evt):
+ self.ticker.SetBackgroundColour(evt.GetValue())
+
+ def ChangeFPS(self, evt):
+ self.ticker.SetFPS(evt.GetPosition())
+
+ def ChangePPF(self, evt):
+ self.ticker.SetPPF(evt.GetPosition())
+
+#----------------------------------------------------------------------
+
+def runTest(frame, nb, log):
+ win = TestPanel(nb, log)
+ return win
+
+#----------------------------------------------------------------------
+
+
+
+overview = wx.lib.ticker.__doc__
+
+
+
+if __name__ == '__main__':
+ import sys,os
+ import run
+ run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
+