--- /dev/null
+#!/usr/bin/env python
+
+import wx
+
+class RefactorExample(wx.Frame):
+
+ def __init__(self, parent, id):
+ wx.Frame.__init__(self, parent, id, 'Refactor Example',
+ size=(340, 200))
+ panel = wx.Panel(self, -1)
+ panel.SetBackgroundColour("White")
+ self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
+ self.createMenuBar()
+ self.createButtonBar(panel)
+ self.createTextFields(panel)
+
+ def menuData(self):
+ return (("&File",
+ ("&Open", "Open in status bar", self.OnOpen),
+ ("&Quit", "Quit", self.OnCloseWindow)),
+ ("&Edit",
+ ("&Copy", "Copy", self.OnCopy),
+ ("C&ut", "Cut", self.OnCut),
+ ("&Paste", "Paste", self.OnPaste),
+ ("", "", ""),
+ ("&Options...", "DisplayOptions", self.OnOptions)))
+
+ def createMenuBar(self):
+ menuBar = wx.MenuBar()
+ for eachMenuData in self.menuData():
+ menuLabel = eachMenuData[0]
+ menuItems = eachMenuData[1:]
+ menuBar.Append(self.createMenu(menuItems), menuLabel)
+ self.SetMenuBar(menuBar)
+
+ def createMenu(self, menuData):
+ menu = wx.Menu()
+ for eachLabel, eachStatus, eachHandler in menuData:
+ if not eachLabel:
+ menu.AppendSeparator()
+ continue
+ menuItem = menu.Append(-1, eachLabel, eachStatus)
+ self.Bind(wx.EVT_MENU, eachHandler, menuItem)
+ return menu
+
+ def buttonData(self):
+ return (("First", self.OnFirst),
+ ("<< PREV", self.OnPrev),
+ ("NEXT >>", self.OnNext),
+ ("Last", self.OnLast))
+
+ def createButtonBar(self, panel, yPos = 0):
+ xPos = 0
+ for eachLabel, eachHandler in self.buttonData():
+ pos = (xPos, yPos)
+ button = self.buildOneButton(panel, eachLabel, eachHandler, pos)
+ xPos += button.GetSize().width
+
+ def buildOneButton(self, parent, label, handler, pos=(0,0)):
+ button = wx.Button(parent, -1, label, pos)
+ self.Bind(wx.EVT_BUTTON, handler, button)
+ return button
+
+ def textFieldData(self):
+ return (("First Name", (10, 50)),
+ ("Last Name", (10, 80)))
+
+ def createTextFields(self, panel):
+ for eachLabel, eachPos in self.textFieldData():
+ self.createCaptionedText(panel, eachLabel, eachPos)
+
+ def createCaptionedText(self, panel, label, pos):
+ static = wx.StaticText(panel, wx.NewId(), label, pos)
+ static.SetBackgroundColour("White")
+ textPos = (pos[0] + 75, pos[1])
+ wx.TextCtrl(panel, wx.NewId(), "", size=(100, -1), pos=textPos)
+
+ # Just grouping the empty event handlers together
+ def OnPrev(self, event): pass
+ def OnNext(self, event): pass
+ def OnLast(self, event): pass
+ def OnFirst(self, event): pass
+ def OnOpen(self, event): pass
+ def OnCopy(self, event): pass
+ def OnCut(self, event): pass
+ def OnPaste(self, event): pass
+ def OnOptions(self, event): pass
+ def OnCloseWindow(self, event):
+ self.Destroy()
+
+if __name__ == '__main__':
+ app = wx.PySimpleApp()
+ frame = RefactorExample(parent=None, id=-1)
+ frame.Show()
+ app.MainLoop()
+