Renamed demo modules to be wx-less.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25064 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
124
wxPython/demo/StatusBar.py
Normal file
124
wxPython/demo/StatusBar.py
Normal file
@@ -0,0 +1,124 @@
|
||||
# 11/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
|
||||
#
|
||||
# o Updated for wx namespace
|
||||
#
|
||||
|
||||
import time
|
||||
import wx
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
class CustomStatusBar(wx.StatusBar):
|
||||
def __init__(self, parent, log):
|
||||
wx.StatusBar.__init__(self, parent, -1)
|
||||
|
||||
# This status bar has three fields
|
||||
self.SetFieldsCount(3)
|
||||
self.log = log
|
||||
self.sizeChanged = False
|
||||
self.Bind(wx.EVT_SIZE, self.OnSize)
|
||||
self.Bind(wx.EVT_IDLE, self.OnIdle)
|
||||
|
||||
# Field 0 ... just text
|
||||
self.SetStatusText("A Custom StatusBar...", 0)
|
||||
|
||||
# This will fall into field 1 (the second field)
|
||||
self.cb = wx.CheckBox(self, 1001, "toggle clock")
|
||||
self.Bind(wx.EVT_CHECKBOX, self.OnToggleClock, self.cb)
|
||||
self.cb.SetValue(True)
|
||||
|
||||
# set the initial position of the checkbox
|
||||
self.Reposition()
|
||||
|
||||
# We're going to use a timer to drive a 'clock' in the last
|
||||
# field.
|
||||
self.timer = wx.PyTimer(self.Notify)
|
||||
self.timer.Start(1000)
|
||||
self.Notify()
|
||||
|
||||
|
||||
# Handles events from the timer we started in __init__().
|
||||
# We're using it to drive a 'clock' in field 2 (the third field).
|
||||
def Notify(self):
|
||||
t = time.localtime(time.time())
|
||||
st = time.strftime("%d-%b-%Y %I:%M:%S", t)
|
||||
self.SetStatusText(st, 2)
|
||||
self.log.WriteText("tick...\n")
|
||||
|
||||
|
||||
# the checkbox was clicked
|
||||
def OnToggleClock(self, event):
|
||||
if self.cb.GetValue():
|
||||
self.timer.Start(1000)
|
||||
self.Notify()
|
||||
else:
|
||||
self.timer.Stop()
|
||||
|
||||
|
||||
def OnSize(self, evt):
|
||||
self.Reposition() # for normal size events
|
||||
|
||||
# Set a flag so the idle time handler will also do the repositioning.
|
||||
# It is done this way to get around a buglet where GetFieldRect is not
|
||||
# accurate during the EVT_SIZE resulting from a frame maximize.
|
||||
self.sizeChanged = True
|
||||
|
||||
|
||||
def OnIdle(self, evt):
|
||||
if self.sizeChanged:
|
||||
self.Reposition()
|
||||
|
||||
|
||||
# reposition the checkbox
|
||||
def Reposition(self):
|
||||
rect = self.GetFieldRect(1)
|
||||
self.cb.SetPosition((rect.x+2, rect.y+2))
|
||||
self.cb.SetSize((rect.width-4, rect.height-4))
|
||||
self.sizeChanged = False
|
||||
|
||||
|
||||
|
||||
class TestCustomStatusBar(wx.Frame):
|
||||
def __init__(self, parent, log):
|
||||
wx.Frame.__init__(self, parent, -1, 'Test Custom StatusBar')
|
||||
|
||||
self.sb = CustomStatusBar(self, log)
|
||||
self.SetStatusBar(self.sb)
|
||||
tc = wx.TextCtrl(self, -1, "", style=wx.TE_READONLY|wx.TE_MULTILINE)
|
||||
|
||||
self.SetSize((500, 300))
|
||||
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
|
||||
|
||||
def OnCloseWindow(self, event):
|
||||
self.sb.timer.Stop()
|
||||
del self.sb.timer
|
||||
self.Destroy()
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
def runTest(frame, nb, log):
|
||||
win = TestCustomStatusBar(frame, log)
|
||||
frame.otherWin = win
|
||||
win.Show(True)
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
|
||||
overview = """\
|
||||
A status bar is a narrow window that can be placed along the bottom of
|
||||
a frame to give small amounts of status information. It can contain
|
||||
one or more fields, one or more of which can be variable length
|
||||
according to the size of the window.
|
||||
|
||||
This example demonstrates how to create a custom status bar with actual
|
||||
gadgets embedded in it. In this case, the first field is just plain text,
|
||||
The second one has a checkbox that enables the timer, and the third
|
||||
field has a clock that shows the current time when it is enabled.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import sys,os
|
||||
import run
|
||||
run.main(['', os.path.basename(sys.argv[0])])
|
Reference in New Issue
Block a user