git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42925 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			97 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/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()
 | |
| 
 |