def GetTip(self):
return "This is my tip"
+#---------------------------------------------------------------------------
+# A class to be used to simply display a message in the demo pane
+# rather than running the sample itself.
+
+class MessagePanel(wx.Panel):
+ def __init__(self, parent, message, caption='', flags=0):
+ wx.Panel.__init__(self, parent)
+
+ # Make widgets
+ if flags:
+ artid = None
+ if flags & wx.ICON_EXCLAMATION:
+ artid = wx.ART_WARNING
+ elif flags & wx.ICON_ERROR:
+ artid = wx.ART_ERROR
+ elif flags & wx.ICON_QUESTION:
+ artid = wx.ART_QUESTION
+ elif flags & wx.ICON_INFORMATION:
+ artid = wx.ART_INFORMATION
+
+ if artid is not None:
+ bmp = wx.ArtProvider.GetBitmap(artid, wx.ART_MESSAGE_BOX, (32,32))
+ icon = wx.StaticBitmap(self, -1, bmp)
+ else:
+ icon = (32,32) # make a spacer instead
+
+ if caption:
+ caption = wx.StaticText(self, -1, caption)
+ caption.SetFont(wx.Font(28, wx.SWISS, wx.NORMAL, wx.BOLD))
+
+ message = wx.StaticText(self, -1, message)
+
+ # add to sizers for layout
+ tbox = wx.BoxSizer(wx.VERTICAL)
+ if caption:
+ tbox.Add(caption)
+ tbox.Add((10,10))
+ tbox.Add(message)
+
+ hbox = wx.BoxSizer(wx.HORIZONTAL)
+ hbox.Add((10,10), 1)
+ hbox.Add(icon)
+ hbox.Add((10,10))
+ hbox.Add(tbox)
+ hbox.Add((10,10), 1)
+
+ box = wx.BoxSizer(wx.VERTICAL)
+ box.Add((10,10), 1)
+ box.Add(hbox, 0, wx.EXPAND)
+ box.Add((10,10), 2)
+
+ self.SetSizer(box)
+
+
#---------------------------------------------------------------------------
# A class to be used to display source code in the demo. Try using the
import sys
import wx
-py2 = sys.version[0] == '2'
-
-try:
- if py2:
- from xml.parsers import expat
- parsermodule = expat
- else:
- from xml.parsers import pyexpat
- parsermodule = pyexpat
- haveXML = True
-except ImportError:
- haveXML = False
+from xml.parsers import expat
#----------------------------------------------------------------------
-if not haveXML:
- def runTest(frame, nb, log):
- dlg = wx.MessageDialog(
- frame, 'This demo requires the XML package. '
- 'See http://www.python.org/sigs/xml-sig/',
- 'Sorry', wx.OK | wx.ICON_INFORMATION
- )
-
- dlg.ShowModal()
- dlg.Destroy()
-
-else:
-
- class XMLTree(wx.TreeCtrl):
- def __init__(self, parent, ID):
- wx.TreeCtrl.__init__(self, parent, ID)
- self._root = self.AddRoot("Root")
- self.nodeStack = [self._root]
-
- # Trees need an image list to do DnD...
- self.il = wx.ImageList(16,16)
- self.SetImageList(self.il)
-
- # event handlers for DnD
- self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnBeginDrag)
- self.Bind(wx.EVT_TREE_END_DRAG, self.OnEndDrag)
-
-
- def OnBeginDrag(self, event):
- item = event.GetItem()
-
- if item != self.GetRootItem():
- self.draggingItem = item
- event.Allow() # if DnD of this item is okay Allow it.
-
- def IsDescendant(self, firstItem, secondItem):
- "Recursive check if firstItem is a descendant of a secondItem."
- if firstItem == self._root:
- return False
- parentItem = self.GetItemParent(firstItem)
- if parentItem == secondItem:
- return True
- else:
- return self.IsDescendant(parentItem, secondItem)
-
- def OnEndDrag(self, evt):
- itemSrc = self.draggingItem
- itemDst = evt.GetItem()
- self.draggingItem = None
-
- if not itemDst.IsOk():
- print "Can't drag to here..."
- return
-
- if self.IsDescendant(itemDst, itemSrc):
- print "Can't move item to its descendant"
- return
-
- # For this simple example just take the text of the source item
- # and append it to the destination item. In real life you would
- # possibly want to copy subtrees...
- text = self.GetItemText(itemSrc)
- self.AppendItem(itemDst, text)
- self.Delete(itemSrc)
-
-
- # Define a handler for start element events
- def StartElement(self, name, attrs ):
- if py2:
- name = name.encode()
+class XMLTree(wx.TreeCtrl):
+ def __init__(self, parent, ID):
+ wx.TreeCtrl.__init__(self, parent, ID)
+ self._root = self.AddRoot("Root")
+ self.nodeStack = [self._root]
+
+ # Trees need an image list to do DnD...
+ self.il = wx.ImageList(16,16)
+ self.SetImageList(self.il)
+
+ # event handlers for DnD
+ self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnBeginDrag)
+ self.Bind(wx.EVT_TREE_END_DRAG, self.OnEndDrag)
+
+
+ def OnBeginDrag(self, event):
+ item = event.GetItem()
+
+ if item != self.GetRootItem():
+ self.draggingItem = item
+ event.Allow() # if DnD of this item is okay Allow it.
+
+ def IsDescendant(self, firstItem, secondItem):
+ "Recursive check if firstItem is a descendant of a secondItem."
+ if firstItem == self._root:
+ return False
+ parentItem = self.GetItemParent(firstItem)
+ if parentItem == secondItem:
+ return True
+ else:
+ return self.IsDescendant(parentItem, secondItem)
- id = self.AppendItem(self.nodeStack[-1], name)
- self.nodeStack.append(id)
+ def OnEndDrag(self, evt):
+ itemSrc = self.draggingItem
+ itemDst = evt.GetItem()
+ self.draggingItem = None
- def EndElement(self, name ):
- self.nodeStack = self.nodeStack[:-1]
+ if not itemDst.IsOk():
+ print "Can't drag to here..."
+ return
- def CharacterData(self, data ):
- if data.strip():
- if py2:
- data = data.encode()
+ if self.IsDescendant(itemDst, itemSrc):
+ print "Can't move item to its descendant"
+ return
+
+ # For this simple example just take the text of the source item
+ # and append it to the destination item. In real life you would
+ # possibly want to copy subtrees...
+ text = self.GetItemText(itemSrc)
+ self.AppendItem(itemDst, text)
+ self.Delete(itemSrc)
+
+
+ # Define a handler for start element events
+ def StartElement(self, name, attrs ):
+ if py2:
+ name = name.encode()
+
+ id = self.AppendItem(self.nodeStack[-1], name)
+ self.nodeStack.append(id)
+
+ def EndElement(self, name ):
+ self.nodeStack = self.nodeStack[:-1]
+
+ def CharacterData(self, data ):
+ if data.strip():
+ if py2:
+ data = data.encode()
- self.AppendItem(self.nodeStack[-1], data)
+ self.AppendItem(self.nodeStack[-1], data)
- def LoadTree(self, filename):
- # Create a parser
- Parser = parsermodule.ParserCreate()
+ def LoadTree(self, filename):
+ # Create a parser
+ Parser = expat.ParserCreate()
- # Tell the parser what the start element handler is
- Parser.StartElementHandler = self.StartElement
- Parser.EndElementHandler = self.EndElement
- Parser.CharacterDataHandler = self.CharacterData
+ # Tell the parser what the start element handler is
+ Parser.StartElementHandler = self.StartElement
+ Parser.EndElementHandler = self.EndElement
+ Parser.CharacterDataHandler = self.CharacterData
- # Parse the XML File
- ParserStatus = Parser.Parse(open(filename,'r').read(), 1)
+ # Parse the XML File
+ ParserStatus = Parser.Parse(open(filename,'r').read(), 1)
- def runTest(frame, nb, log):
- win = XMLTree(nb, -1)
- win.LoadTree("paper.xml")
- return win
+def runTest(frame, nb, log):
+ win = XMLTree(nb, -1)
+ win.LoadTree("paper.xml")
+ return win
#----------------------------------------------------------------------