+++ /dev/null
-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()
- self.createToolBar()
-
- 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 createToolBar(self):
- toolbar = self.CreateToolBar()
- for each in self.toolbarData():
- self.createSimpleTool(toolbar, *each)
- toolbar.AddSeparator()
- for each in self.toolbarColorData():
- self.createColorTool(toolbar, each)
- toolbar.Realize()
-
- def createSimpleTool(self, toolbar, label, filename, help, handler):
- if not label:
- toolbar.AddSeparator()
- return
- bmp = wx.Image(filename, wx.BITMAP_TYPE_BMP).ConvertToBitmap()
- tool = toolbar.AddSimpleTool(-1, bmp, label, help)
- self.Bind(wx.EVT_MENU, handler, tool)
-
- def toolbarData(self):
- return (("New", "new.bmp", "Create new sketch", self.OnNew),
- ("", "", "", ""),
- ("Open", "open.bmp", "Open existing sketch", self.OnOpen),
- ("Save", "save.bmp", "Save existing sketch", self.OnSave))
-
- def createColorTool(self, toolbar, color):
- bmp = self.MakeBitmap(color)
- tool = toolbar.AddRadioTool(-1, bmp, shortHelp=color)
- self.Bind(wx.EVT_MENU, self.OnColor, tool)
-
- def MakeBitmap(self, color):
- bmp = wx.EmptyBitmap(16, 15)
- dc = wx.MemoryDC()
- dc.SelectObject(bmp)
- dc.SetBackground(wx.Brush(color))
- dc.Clear()
- dc.SelectObject(wx.NullBitmap)
- return bmp
-
- def toolbarColorData(self):
- return ("Black", "Red", "Green", "Blue")
-
- 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)
- if not item:
- toolbar = self.GetToolBar()
- item = toolbar.FindById(itemId)
- color = item.GetShortHelp()
- else:
- 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()