X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ec873c943d71f0d5f13e3398557071448cda6c23..a4027e74873007e3430af3bd77019bcab76f6c04:/wxPython/samples/wxPIA_book/Chapter-06/example6.py diff --git a/wxPython/samples/wxPIA_book/Chapter-06/example6.py b/wxPython/samples/wxPIA_book/Chapter-06/example6.py deleted file mode 100644 index 9d58f06517..0000000000 --- a/wxPython/samples/wxPIA_book/Chapter-06/example6.py +++ /dev/null @@ -1,192 +0,0 @@ -import wx -import cPickle -import os - -from example1 import SketchWindow - - -class SketchFrame(wx.Frame): - def __init__(self, parent): - self.title = "Sketch Frame" - wx.Frame.__init__(self, parent, -1, self.title, - size=(800,600)) - self.filename = "" - 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), - ("&Other...", "", self.OnOtherColor, 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 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() - - def SaveFile(self): - if self.filename: - data = self.sketch.GetLinesData() - f = open(self.filename, 'w') - cPickle.dump(data, f) - f.close() - - def ReadFile(self): - if self.filename: - try: - f = open(self.filename, 'r') - data = cPickle.load(f) - f.close() - self.sketch.SetLinesData(data) - except cPickle.UnpicklingError: - wx.MessageBox("%s is not a sketch file." % self.filename, - "oops!", style=wx.OK|wx.ICON_EXCLAMATION) - - wildcard = "Sketch files (*.sketch)|*.sketch|All files (*.*)|*.*" - - def OnOpen(self, event): - dlg = wx.FileDialog(self, "Open sketch file...", os.getcwd(), - style=wx.OPEN, wildcard=self.wildcard) - if dlg.ShowModal() == wx.ID_OK: - self.filename = dlg.GetPath() - self.ReadFile() - self.SetTitle(self.title + ' -- ' + self.filename) - dlg.Destroy() - - def OnSave(self, event): - if not self.filename: - self.OnSaveAs(event) - else: - self.SaveFile() - - def OnSaveAs(self, event): - dlg = wx.FileDialog(self, "Save sketch as...", os.getcwd(), - style=wx.SAVE | wx.OVERWRITE_PROMPT, - wildcard = self.wildcard) - if dlg.ShowModal() == wx.ID_OK: - filename = dlg.GetPath() - if not os.path.splitext(filename)[1]: - filename = filename + '.sketch' - self.filename = filename - self.SaveFile() - self.SetTitle(self.title + ' -- ' + self.filename) - dlg.Destroy() - - def OnOtherColor(self, event): - dlg = wx.ColourDialog(frame) - dlg.GetColourData().SetChooseFull(True) - if dlg.ShowModal() == wx.ID_OK: - self.sketch.SetColor(dlg.GetColourData().GetColour()) - dlg.Destroy() - - -if __name__ == '__main__': - app = wx.PySimpleApp() - frame = SketchFrame(None) - frame.Show(True) - app.MainLoop()