From c4ef95daf6eeae5e6a7d4e591bb96c44f8588249 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Mon, 1 Nov 2004 19:39:09 +0000 Subject: [PATCH] Use a MessagePanel instead of a MessageDialog for samples that may not be runnable in certain conditions git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30229 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- wxPython/demo/ActiveX_FlashWindow.py | 8 +- wxPython/demo/ActiveX_IEHtmlWindow.py | 8 +- wxPython/demo/ActiveX_PDFWindow.py | 8 +- wxPython/demo/DynamicSashWindow.py | 6 +- wxPython/demo/FloatBar.py | 2 +- wxPython/demo/GLCanvas.py | 4 +- wxPython/demo/Joystick.py | 10 +- wxPython/demo/Main.py | 54 ++++++++ wxPython/demo/PopupControl.py | 7 +- wxPython/demo/PopupWindow.py | 10 +- wxPython/demo/SplitTree.py | 6 +- wxPython/demo/Throbber.py | 9 +- wxPython/demo/ToggleButton.py | 8 +- wxPython/demo/XMLtreeview.py | 184 +++++++++++--------------- 14 files changed, 175 insertions(+), 149 deletions(-) diff --git a/wxPython/demo/ActiveX_FlashWindow.py b/wxPython/demo/ActiveX_FlashWindow.py index 14946614e5..f7d3ef4df3 100644 --- a/wxPython/demo/ActiveX_FlashWindow.py +++ b/wxPython/demo/ActiveX_FlashWindow.py @@ -68,10 +68,10 @@ def runTest(frame, nb, log): win = TestPanel(nb, log) return win else: - dlg = wx.MessageDialog(frame, 'This demo only works on MSW.', - 'Sorry', wx.OK | wx.ICON_INFORMATION) - dlg.ShowModal() - dlg.Destroy() + from Main import MessagePanel + win = MessagePanel(nb, 'This demo only works on Microsoft Windows.', + 'Sorry', wx.ICON_WARNING) + return win overview = """\ diff --git a/wxPython/demo/ActiveX_IEHtmlWindow.py b/wxPython/demo/ActiveX_IEHtmlWindow.py index 698489e04b..c1356e4deb 100644 --- a/wxPython/demo/ActiveX_IEHtmlWindow.py +++ b/wxPython/demo/ActiveX_IEHtmlWindow.py @@ -191,10 +191,10 @@ def runTest(frame, nb, log): win = TestPanel(nb, log, frame) return win else: - dlg = wx.MessageDialog(frame, 'This demo only works on Windows.', - 'Sorry', wx.OK | wx.ICON_INFORMATION) - dlg.ShowModal() - dlg.Destroy() + from Main import MessagePanel + win = MessagePanel(nb, 'This demo only works on Microsoft Windows.', + 'Sorry', wx.ICON_WARNING) + return win diff --git a/wxPython/demo/ActiveX_PDFWindow.py b/wxPython/demo/ActiveX_PDFWindow.py index 6281f3e1bd..c7c52aab62 100644 --- a/wxPython/demo/ActiveX_PDFWindow.py +++ b/wxPython/demo/ActiveX_PDFWindow.py @@ -67,10 +67,10 @@ def runTest(frame, nb, log): win = TestPanel(nb, log) return win else: - dlg = wx.MessageDialog(frame, 'This demo only works on MSW.', - 'Sorry', wx.OK | wx.ICON_INFORMATION) - dlg.ShowModal() - dlg.Destroy() + from Main import MessagePanel + win = MessagePanel(nb, 'This demo only works on Microsoft Windows.', + 'Sorry', wx.ICON_WARNING) + return win overview = """\ diff --git a/wxPython/demo/DynamicSashWindow.py b/wxPython/demo/DynamicSashWindow.py index ed28ede75f..b06438b6ee 100644 --- a/wxPython/demo/DynamicSashWindow.py +++ b/wxPython/demo/DynamicSashWindow.py @@ -92,8 +92,10 @@ class SimpleView(wx.Panel): def runTest(frame, nb, log): if wx.Platform == "__WXMAC__": - wx.MessageBox("This demo currently fails on the Mac. The problem is being looked into...", "Sorry") - return + from Main import MessagePanel + win = MessagePanel(nb, 'This demo currently fails on the Mac. The problem is being looked into...', + 'Sorry', wx.ICON_WARNING) + return win if 1: win = gizmos.DynamicSashWindow(nb, -1, style = wx.CLIP_CHILDREN diff --git a/wxPython/demo/FloatBar.py b/wxPython/demo/FloatBar.py index 1b7d7c9193..7e603aa9f5 100644 --- a/wxPython/demo/FloatBar.py +++ b/wxPython/demo/FloatBar.py @@ -93,7 +93,7 @@ class TestPanel(wx.Panel): if wx.Platform == "__WXMAC__": dlg = wx.MessageDialog( self, 'FloatBar does not work well on this platform.', - 'Sorry', wx.OK | wx.ICON_INFORMATION + 'Sorry', wx.OK | wx.ICON_WARNING ) dlg.ShowModal() dlg.Destroy() diff --git a/wxPython/demo/GLCanvas.py b/wxPython/demo/GLCanvas.py index e89b8e2bdc..5601305da8 100644 --- a/wxPython/demo/GLCanvas.py +++ b/wxPython/demo/GLCanvas.py @@ -53,7 +53,7 @@ class ButtonPanel(wx.Panel): if not haveGLCanvas: dlg = wx.MessageDialog(self, 'The GLCanvas class has not been included with this build of wxPython!', - 'Sorry', wx.OK | wx.ICON_INFORMATION) + 'Sorry', wx.OK | wx.ICON_WARNING) dlg.ShowModal() dlg.Destroy() @@ -61,7 +61,7 @@ class ButtonPanel(wx.Panel): dlg = wx.MessageDialog(self, 'The OpenGL package was not found. You can get it at\n' 'http://PyOpenGL.sourceforge.net/', - 'Sorry', wx.OK | wx.ICON_INFORMATION) + 'Sorry', wx.OK | wx.ICON_WARNING) dlg.ShowModal() dlg.Destroy() diff --git a/wxPython/demo/Joystick.py b/wxPython/demo/Joystick.py index 394b2ec09f..c94e215507 100644 --- a/wxPython/demo/Joystick.py +++ b/wxPython/demo/Joystick.py @@ -994,12 +994,10 @@ def runTest(frame, nb, log): win = JoystickDemoPanel(nb, log) return win else: - dlg = wx.MessageDialog( - frame, 'wx.Joystick is not available on this platform.', - 'Sorry', wx.OK | wx.ICON_INFORMATION - ) - dlg.ShowModal() - dlg.Destroy() + from Main import MessagePanel + win = MessagePanel(nb, 'wx.Joystick is not available on this platform.', + 'Sorry', wx.ICON_WARNING) + return win #---------------------------------------------------------------------------- diff --git a/wxPython/demo/Main.py b/wxPython/demo/Main.py index 8d46fc7e9b..2422a64436 100644 --- a/wxPython/demo/Main.py +++ b/wxPython/demo/Main.py @@ -265,6 +265,60 @@ class MyTP(wx.PyTipProvider): 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 diff --git a/wxPython/demo/PopupControl.py b/wxPython/demo/PopupControl.py index 6f3bf12894..3cb7230171 100644 --- a/wxPython/demo/PopupControl.py +++ b/wxPython/demo/PopupControl.py @@ -69,9 +69,10 @@ class TestPanel(wx.Panel): def runTest(frame, nb, log): if wx.Platform == "__WXMAC__": - wx.MessageBox("This demo currently fails on the Mac.", - "Sorry") - return + from Main import MessagePanel + win = MessagePanel(nb, 'This demo currently fails on the Mac.', + 'Sorry', wx.ICON_WARNING) + return win else: win = TestPanel(nb, log) return win diff --git a/wxPython/demo/PopupWindow.py b/wxPython/demo/PopupWindow.py index 49072ea403..b04ab04093 100644 --- a/wxPython/demo/PopupWindow.py +++ b/wxPython/demo/PopupWindow.py @@ -196,12 +196,10 @@ def runTest(frame, nb, log): win = TestPanel(nb, log) return win else: - dlg = wx.MessageDialog( - frame, 'wx.PopupWindow is not available on this platform.', - 'Sorry', wx.OK | wx.ICON_INFORMATION - ) - dlg.ShowModal() - dlg.Destroy() + from Main import MessagePanel + win = MessagePanel(nb, 'wx.PopupWindow is not available on this platform.', + 'Sorry', wx.ICON_WARNING) + return win #--------------------------------------------------------------------------- diff --git a/wxPython/demo/SplitTree.py b/wxPython/demo/SplitTree.py index 9f12a935bc..0a73acdacb 100644 --- a/wxPython/demo/SplitTree.py +++ b/wxPython/demo/SplitTree.py @@ -122,8 +122,10 @@ class TestPanel(wx.Panel): def runTest(frame, nb, log): if wx.Platform == "__WXMAC__": - wx.MessageBox("This demo currently fails on the Mac. The problem is being looked into...", "Sorry") - return + from Main import MessagePanel + win = MessagePanel(nb, 'This demo currently fails on the Mac. The problem is being looked into...', + 'Sorry', wx.ICON_WARNING) + return win win = TestPanel(nb, log) return win diff --git a/wxPython/demo/Throbber.py b/wxPython/demo/Throbber.py index f855a2dfac..3b6d38c81c 100644 --- a/wxPython/demo/Throbber.py +++ b/wxPython/demo/Throbber.py @@ -161,13 +161,8 @@ class TestPanel(wx.Panel): #---------------------------------------------------------------------- def runTest(frame, nb, log): - if wx.Platform == "__WXMAC__": - wx.MessageBox("This demo currently fails on the Mac.", - "Sorry") - return - else: - win = TestPanel(nb, log) - return win + win = TestPanel(nb, log) + return win #---------------------------------------------------------------------- diff --git a/wxPython/demo/ToggleButton.py b/wxPython/demo/ToggleButton.py index 74323f5103..f03dd7f4b7 100644 --- a/wxPython/demo/ToggleButton.py +++ b/wxPython/demo/ToggleButton.py @@ -34,10 +34,10 @@ def runTest(frame, nb, log): win = TestPanel(nb, log) return win else: - dlg = wx.MessageDialog(frame, 'wx.ToggleButton is not available on this platform.', - 'Sorry', wx.OK | wx.ICON_INFORMATION) - dlg.ShowModal() - dlg.Destroy() + from Main import MessagePanel + win = MessagePanel(nb, 'wx.ToggleButton is not available on this platform.', + 'Sorry', wx.ICON_WARNING) + return win #---------------------------------------------------------------------- diff --git a/wxPython/demo/XMLtreeview.py b/wxPython/demo/XMLtreeview.py index 91a624e179..90d4605c85 100644 --- a/wxPython/demo/XMLtreeview.py +++ b/wxPython/demo/XMLtreeview.py @@ -2,123 +2,99 @@ 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 #---------------------------------------------------------------------- -- 2.45.2