git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42925 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			93 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import wx
 | |
| from example1 import SketchWindow
 | |
| 
 | |
| 
 | |
| class SketchFrame(wx.Frame):
 | |
|     def __init__(self, parent):
 | |
|         wx.Frame.__init__(self, parent, -1, "Sketch Frame",
 | |
|                 size=(800,600))
 | |
|         self.sketch = SketchWindow(self, -1)
 | |
|         self.sketch.Bind(wx.EVT_MOTION, self.OnSketchMotion)
 | |
|         self.initStatusBar()
 | |
|         self.createMenuBar()
 | |
| 
 | |
|     def initStatusBar(self):
 | |
|         self.statusbar = self.CreateStatusBar()
 | |
|         self.statusbar.SetFieldsCount(3)
 | |
|         self.statusbar.SetStatusWidths([-1, -2, -3])
 | |
| 
 | |
|     def OnSketchMotion(self, event):
 | |
|         self.statusbar.SetStatusText("Pos: %s" %
 | |
|                 str(event.GetPositionTuple()), 0)
 | |
|         self.statusbar.SetStatusText("Current Pts: %s" %
 | |
|                 len(self.sketch.curLine), 1)
 | |
|         self.statusbar.SetStatusText("Line Count: %s" %
 | |
|                 len(self.sketch.lines), 2)
 | |
|         event.Skip()
 | |
| 
 | |
|     def menuData(self):
 | |
|         return [("&File", (
 | |
|                     ("&New", "New Sketch file", self.OnNew),
 | |
|                     ("&Open", "Open sketch file", self.OnOpen),
 | |
|                     ("&Save", "Save sketch file", self.OnSave),
 | |
|                     ("", "", ""),
 | |
|                     ("&Color", (
 | |
|                         ("&Black", "", self.OnColor,
 | |
|                            wx.ITEM_RADIO),
 | |
|                         ("&Red", "", self.OnColor,
 | |
|                            wx.ITEM_RADIO),
 | |
|                         ("&Green", "", self.OnColor,
 | |
|                            wx.ITEM_RADIO),
 | |
|                         ("&Blue", "", self.OnColor,
 | |
|                            wx.ITEM_RADIO))),
 | |
|                     ("", "", ""),
 | |
|                     ("&Quit", "Quit", self.OnCloseWindow)))]
 | |
| 
 | |
|     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 eachItem in menuData:
 | |
|             if len(eachItem) == 2:
 | |
|                 label = eachItem[0]
 | |
|                 subMenu = self.createMenu(eachItem[1])
 | |
|                 menu.AppendMenu(wx.NewId(), label, subMenu)
 | |
|             else:
 | |
|                 self.createMenuItem(menu, *eachItem)
 | |
|         return menu
 | |
| 
 | |
|     def createMenuItem(self, menu, label, status, handler,
 | |
|                        kind=wx.ITEM_NORMAL):
 | |
|         if not label:
 | |
|             menu.AppendSeparator()
 | |
|             return
 | |
|         menuItem = menu.Append(-1, label, status, kind)
 | |
|         self.Bind(wx.EVT_MENU, handler, menuItem)
 | |
| 
 | |
|     def OnNew(self, event): pass
 | |
|     def OnOpen(self, event): pass
 | |
|     def OnSave(self, event): pass
 | |
| 
 | |
|     def OnColor(self, event):
 | |
|         menubar = self.GetMenuBar()
 | |
|         itemId = event.GetId()
 | |
|         item = menubar.FindItemById(itemId)
 | |
|         color = item.GetLabel()
 | |
|         self.sketch.SetColor(color)
 | |
| 
 | |
|     def OnCloseWindow(self, event):
 | |
|         self.Destroy()
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     app = wx.PySimpleApp()
 | |
|     frame = SketchFrame(None)
 | |
|     frame.Show(True)
 | |
|     app.MainLoop()
 |