]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/samples/wxPIA_book/Chapter-06/example7.py
move wxPython to new trunk
[wxWidgets.git] / wxPython / samples / wxPIA_book / Chapter-06 / example7.py
diff --git a/wxPython/samples/wxPIA_book/Chapter-06/example7.py b/wxPython/samples/wxPIA_book/Chapter-06/example7.py
deleted file mode 100644 (file)
index 74f91ac..0000000
+++ /dev/null
@@ -1,331 +0,0 @@
-import wx
-import wx.html
-import cPickle
-import os
-from wx.lib import buttons
-
-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)
-        wx.EVT_MOTION(self.sketch, self.OnSketchMotion)
-        self.initStatusBar()
-        self.createMenuBar()
-        self.createToolBar()
-        self.createPanel()
-
-    def createPanel(self):
-        controlPanel = ControlPanel(self, -1, self.sketch)
-        box = wx.BoxSizer(wx.HORIZONTAL)
-        box.Add(controlPanel, 0, wx.EXPAND)
-        box.Add(self.sketch, 1, wx.EXPAND)
-        self.SetSizer(box)
-
-    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))),
-                    ("", "", ""),
-                    ("About...", "Show about window", self.OnAbout),
-                    ("&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(self)
-        dlg.GetColourData().SetChooseFull(True)
-        if dlg.ShowModal() == wx.ID_OK:
-            self.sketch.SetColor(dlg.GetColourData().GetColour())
-        dlg.Destroy()
-
-    def OnAbout(self, event):
-        dlg = SketchAbout(self)
-        dlg.ShowModal()
-        dlg.Destroy()
-
-
-class SketchAbout(wx.Dialog):
-    text = '''
-<html>
-<body bgcolor="#ACAA60">
-<center><table bgcolor="#455481" width="100%" cellspacing="0"
-cellpadding="0" border="1">
-<tr>
-    <td align="center"><h1>Sketch!</h1></td>
-</tr>
-</table>
-</center>
-<p><b>Sketch</b> is a demonstration program for <b>wxPython In Action</b>
-Chapter 7.  It is based on the SuperDoodle demo included with wxPython,
-available at http://www.wxpython.org/
-</p>
-
-<p><b>SuperDoodle</b> and <b>wxPython</b> are brought to you by
-<b>Robin Dunn</b> and <b>Total Control Software</b>, Copyright
-&copy; 1997-2006.</p>
-</body>
-</html>
-'''
-
-    def __init__(self, parent):
-        wx.Dialog.__init__(self, parent, -1, 'About Sketch',
-                          size=(440, 400) )
-
-        html = wx.html.HtmlWindow(self)
-        html.SetPage(self.text)
-        button = wx.Button(self, wx.ID_OK, "Okay")
-
-        sizer = wx.BoxSizer(wx.VERTICAL)
-        sizer.Add(html, 1, wx.EXPAND|wx.ALL, 5)
-        sizer.Add(button, 0, wx.ALIGN_CENTER|wx.ALL, 5)
-
-        self.SetSizer(sizer)
-        self.Layout()
-
-
-
-class ControlPanel(wx.Panel):
-
-    BMP_SIZE = 16
-    BMP_BORDER = 3
-    NUM_COLS = 4
-    SPACING = 4
-
-    colorList = ('Black', 'Yellow', 'Red', 'Green', 'Blue', 'Purple',
-              'Brown', 'Aquamarine', 'Forest Green', 'Light Blue',
-              'Goldenrod', 'Cyan', 'Orange', 'Navy', 'Dark Grey',
-              'Light Grey')
-    maxThickness = 16
-
-    def __init__(self, parent, ID, sketch):
-        wx.Panel.__init__(self, parent, ID, style=wx.RAISED_BORDER)
-        self.sketch = sketch
-        buttonSize = (self.BMP_SIZE + 2 * self.BMP_BORDER,
-                      self.BMP_SIZE + 2 * self.BMP_BORDER)
-        colorGrid = self.createColorGrid(parent, buttonSize)
-        thicknessGrid = self.createThicknessGrid(buttonSize)
-        self.layout(colorGrid, thicknessGrid)
-
-    def createColorGrid(self, parent, buttonSize):
-        self.colorMap = {}
-        self.colorButtons = {}
-        colorGrid = wx.GridSizer(cols=self.NUM_COLS, hgap=2, vgap=2)
-        for eachColor in self.colorList:
-            bmp = parent.MakeBitmap(eachColor)
-            b = buttons.GenBitmapToggleButton(self, -1, bmp, size=buttonSize)
-            b.SetBezelWidth(1)
-            b.SetUseFocusIndicator(False)
-            self.Bind(wx.EVT_BUTTON, self.OnSetColour, b)
-            colorGrid.Add(b, 0)
-            self.colorMap[b.GetId()] = eachColor
-            self.colorButtons[eachColor] = b
-        self.colorButtons[self.colorList[0]].SetToggle(True)
-        return colorGrid
-
-    def createThicknessGrid(self, buttonSize):
-        self.thicknessIdMap = {}
-        self.thicknessButtons = {}
-        thicknessGrid = wx.GridSizer(cols=self.NUM_COLS, hgap=2, vgap=2)
-        for x in range(1, self.maxThickness + 1):
-            b = buttons.GenToggleButton(self, -1, str(x), size=buttonSize)
-            b.SetBezelWidth(1)
-            b.SetUseFocusIndicator(False)
-            self.Bind(wx.EVT_BUTTON, self.OnSetThickness, b)
-            thicknessGrid.Add(b, 0)
-            self.thicknessIdMap[b.GetId()] = x
-            self.thicknessButtons[x] = b
-        self.thicknessButtons[1].SetToggle(True)
-        return thicknessGrid
-
-    def layout(self, colorGrid, thicknessGrid):
-        box = wx.BoxSizer(wx.VERTICAL)
-        box.Add(colorGrid, 0, wx.ALL, self.SPACING)
-        box.Add(thicknessGrid, 0, wx.ALL, self.SPACING)
-        self.SetSizer(box)
-        box.Fit(self)
-
-    def OnSetColour(self, event):
-        color = self.colorMap[event.GetId()]
-        if color != self.sketch.color and self.sketch.color in self.colorButtons:
-            self.colorButtons[self.sketch.color].SetToggle(False)
-        self.sketch.SetColor(color)
-
-    def OnSetThickness(self, event):
-        thickness = self.thicknessIdMap[event.GetId()]
-        if thickness != self.sketch.thickness:
-            self.thicknessButtons[self.sketch.thickness].SetToggle(False)
-        self.sketch.SetThickness(thickness)
-
-
-class SketchApp(wx.App):
-
-    def OnInit(self):
-        bmp = wx.Image("splash.png").ConvertToBitmap()
-        wx.SplashScreen(bmp, wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT,
-                1000, None, -1)
-        wx.Yield()
-
-        frame = SketchFrame(None)
-        frame.Show(True)
-        self.SetTopWindow(frame)
-        return True
-
-if __name__ == '__main__':
-    app = SketchApp(False)
-    app.MainLoop()