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
This commit is contained in:
@@ -68,10 +68,10 @@ def runTest(frame, nb, log):
|
|||||||
win = TestPanel(nb, log)
|
win = TestPanel(nb, log)
|
||||||
return win
|
return win
|
||||||
else:
|
else:
|
||||||
dlg = wx.MessageDialog(frame, 'This demo only works on MSW.',
|
from Main import MessagePanel
|
||||||
'Sorry', wx.OK | wx.ICON_INFORMATION)
|
win = MessagePanel(nb, 'This demo only works on Microsoft Windows.',
|
||||||
dlg.ShowModal()
|
'Sorry', wx.ICON_WARNING)
|
||||||
dlg.Destroy()
|
return win
|
||||||
|
|
||||||
|
|
||||||
overview = """\
|
overview = """\
|
||||||
|
@@ -191,10 +191,10 @@ def runTest(frame, nb, log):
|
|||||||
win = TestPanel(nb, log, frame)
|
win = TestPanel(nb, log, frame)
|
||||||
return win
|
return win
|
||||||
else:
|
else:
|
||||||
dlg = wx.MessageDialog(frame, 'This demo only works on Windows.',
|
from Main import MessagePanel
|
||||||
'Sorry', wx.OK | wx.ICON_INFORMATION)
|
win = MessagePanel(nb, 'This demo only works on Microsoft Windows.',
|
||||||
dlg.ShowModal()
|
'Sorry', wx.ICON_WARNING)
|
||||||
dlg.Destroy()
|
return win
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -67,10 +67,10 @@ def runTest(frame, nb, log):
|
|||||||
win = TestPanel(nb, log)
|
win = TestPanel(nb, log)
|
||||||
return win
|
return win
|
||||||
else:
|
else:
|
||||||
dlg = wx.MessageDialog(frame, 'This demo only works on MSW.',
|
from Main import MessagePanel
|
||||||
'Sorry', wx.OK | wx.ICON_INFORMATION)
|
win = MessagePanel(nb, 'This demo only works on Microsoft Windows.',
|
||||||
dlg.ShowModal()
|
'Sorry', wx.ICON_WARNING)
|
||||||
dlg.Destroy()
|
return win
|
||||||
|
|
||||||
|
|
||||||
overview = """\
|
overview = """\
|
||||||
|
@@ -92,8 +92,10 @@ class SimpleView(wx.Panel):
|
|||||||
|
|
||||||
def runTest(frame, nb, log):
|
def runTest(frame, nb, log):
|
||||||
if wx.Platform == "__WXMAC__":
|
if wx.Platform == "__WXMAC__":
|
||||||
wx.MessageBox("This demo currently fails on the Mac. The problem is being looked into...", "Sorry")
|
from Main import MessagePanel
|
||||||
return
|
win = MessagePanel(nb, 'This demo currently fails on the Mac. The problem is being looked into...',
|
||||||
|
'Sorry', wx.ICON_WARNING)
|
||||||
|
return win
|
||||||
|
|
||||||
if 1:
|
if 1:
|
||||||
win = gizmos.DynamicSashWindow(nb, -1, style = wx.CLIP_CHILDREN
|
win = gizmos.DynamicSashWindow(nb, -1, style = wx.CLIP_CHILDREN
|
||||||
|
@@ -93,7 +93,7 @@ class TestPanel(wx.Panel):
|
|||||||
if wx.Platform == "__WXMAC__":
|
if wx.Platform == "__WXMAC__":
|
||||||
dlg = wx.MessageDialog(
|
dlg = wx.MessageDialog(
|
||||||
self, 'FloatBar does not work well on this platform.',
|
self, 'FloatBar does not work well on this platform.',
|
||||||
'Sorry', wx.OK | wx.ICON_INFORMATION
|
'Sorry', wx.OK | wx.ICON_WARNING
|
||||||
)
|
)
|
||||||
dlg.ShowModal()
|
dlg.ShowModal()
|
||||||
dlg.Destroy()
|
dlg.Destroy()
|
||||||
|
@@ -53,7 +53,7 @@ class ButtonPanel(wx.Panel):
|
|||||||
if not haveGLCanvas:
|
if not haveGLCanvas:
|
||||||
dlg = wx.MessageDialog(self,
|
dlg = wx.MessageDialog(self,
|
||||||
'The GLCanvas class has not been included with this build of wxPython!',
|
'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.ShowModal()
|
||||||
dlg.Destroy()
|
dlg.Destroy()
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ class ButtonPanel(wx.Panel):
|
|||||||
dlg = wx.MessageDialog(self,
|
dlg = wx.MessageDialog(self,
|
||||||
'The OpenGL package was not found. You can get it at\n'
|
'The OpenGL package was not found. You can get it at\n'
|
||||||
'http://PyOpenGL.sourceforge.net/',
|
'http://PyOpenGL.sourceforge.net/',
|
||||||
'Sorry', wx.OK | wx.ICON_INFORMATION)
|
'Sorry', wx.OK | wx.ICON_WARNING)
|
||||||
dlg.ShowModal()
|
dlg.ShowModal()
|
||||||
dlg.Destroy()
|
dlg.Destroy()
|
||||||
|
|
||||||
|
@@ -994,12 +994,10 @@ def runTest(frame, nb, log):
|
|||||||
win = JoystickDemoPanel(nb, log)
|
win = JoystickDemoPanel(nb, log)
|
||||||
return win
|
return win
|
||||||
else:
|
else:
|
||||||
dlg = wx.MessageDialog(
|
from Main import MessagePanel
|
||||||
frame, 'wx.Joystick is not available on this platform.',
|
win = MessagePanel(nb, 'wx.Joystick is not available on this platform.',
|
||||||
'Sorry', wx.OK | wx.ICON_INFORMATION
|
'Sorry', wx.ICON_WARNING)
|
||||||
)
|
return win
|
||||||
dlg.ShowModal()
|
|
||||||
dlg.Destroy()
|
|
||||||
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
@@ -265,6 +265,60 @@ class MyTP(wx.PyTipProvider):
|
|||||||
def GetTip(self):
|
def GetTip(self):
|
||||||
return "This is my tip"
|
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
|
# A class to be used to display source code in the demo. Try using the
|
||||||
|
@@ -69,9 +69,10 @@ class TestPanel(wx.Panel):
|
|||||||
|
|
||||||
def runTest(frame, nb, log):
|
def runTest(frame, nb, log):
|
||||||
if wx.Platform == "__WXMAC__":
|
if wx.Platform == "__WXMAC__":
|
||||||
wx.MessageBox("This demo currently fails on the Mac.",
|
from Main import MessagePanel
|
||||||
"Sorry")
|
win = MessagePanel(nb, 'This demo currently fails on the Mac.',
|
||||||
return
|
'Sorry', wx.ICON_WARNING)
|
||||||
|
return win
|
||||||
else:
|
else:
|
||||||
win = TestPanel(nb, log)
|
win = TestPanel(nb, log)
|
||||||
return win
|
return win
|
||||||
|
@@ -196,12 +196,10 @@ def runTest(frame, nb, log):
|
|||||||
win = TestPanel(nb, log)
|
win = TestPanel(nb, log)
|
||||||
return win
|
return win
|
||||||
else:
|
else:
|
||||||
dlg = wx.MessageDialog(
|
from Main import MessagePanel
|
||||||
frame, 'wx.PopupWindow is not available on this platform.',
|
win = MessagePanel(nb, 'wx.PopupWindow is not available on this platform.',
|
||||||
'Sorry', wx.OK | wx.ICON_INFORMATION
|
'Sorry', wx.ICON_WARNING)
|
||||||
)
|
return win
|
||||||
dlg.ShowModal()
|
|
||||||
dlg.Destroy()
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@@ -122,8 +122,10 @@ class TestPanel(wx.Panel):
|
|||||||
|
|
||||||
def runTest(frame, nb, log):
|
def runTest(frame, nb, log):
|
||||||
if wx.Platform == "__WXMAC__":
|
if wx.Platform == "__WXMAC__":
|
||||||
wx.MessageBox("This demo currently fails on the Mac. The problem is being looked into...", "Sorry")
|
from Main import MessagePanel
|
||||||
return
|
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)
|
win = TestPanel(nb, log)
|
||||||
return win
|
return win
|
||||||
|
@@ -161,13 +161,8 @@ class TestPanel(wx.Panel):
|
|||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
def runTest(frame, nb, log):
|
def runTest(frame, nb, log):
|
||||||
if wx.Platform == "__WXMAC__":
|
win = TestPanel(nb, log)
|
||||||
wx.MessageBox("This demo currently fails on the Mac.",
|
return win
|
||||||
"Sorry")
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
win = TestPanel(nb, log)
|
|
||||||
return win
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
@@ -34,10 +34,10 @@ def runTest(frame, nb, log):
|
|||||||
win = TestPanel(nb, log)
|
win = TestPanel(nb, log)
|
||||||
return win
|
return win
|
||||||
else:
|
else:
|
||||||
dlg = wx.MessageDialog(frame, 'wx.ToggleButton is not available on this platform.',
|
from Main import MessagePanel
|
||||||
'Sorry', wx.OK | wx.ICON_INFORMATION)
|
win = MessagePanel(nb, 'wx.ToggleButton is not available on this platform.',
|
||||||
dlg.ShowModal()
|
'Sorry', wx.ICON_WARNING)
|
||||||
dlg.Destroy()
|
return win
|
||||||
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
|
@@ -2,123 +2,99 @@
|
|||||||
import sys
|
import sys
|
||||||
import wx
|
import wx
|
||||||
|
|
||||||
py2 = sys.version[0] == '2'
|
from xml.parsers import expat
|
||||||
|
|
||||||
try:
|
|
||||||
if py2:
|
|
||||||
from xml.parsers import expat
|
|
||||||
parsermodule = expat
|
|
||||||
else:
|
|
||||||
from xml.parsers import pyexpat
|
|
||||||
parsermodule = pyexpat
|
|
||||||
haveXML = True
|
|
||||||
except ImportError:
|
|
||||||
haveXML = False
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
if not haveXML:
|
class XMLTree(wx.TreeCtrl):
|
||||||
def runTest(frame, nb, log):
|
def __init__(self, parent, ID):
|
||||||
dlg = wx.MessageDialog(
|
wx.TreeCtrl.__init__(self, parent, ID)
|
||||||
frame, 'This demo requires the XML package. '
|
self._root = self.AddRoot("Root")
|
||||||
'See http://www.python.org/sigs/xml-sig/',
|
self.nodeStack = [self._root]
|
||||||
'Sorry', wx.OK | wx.ICON_INFORMATION
|
|
||||||
)
|
|
||||||
|
|
||||||
dlg.ShowModal()
|
# Trees need an image list to do DnD...
|
||||||
dlg.Destroy()
|
self.il = wx.ImageList(16,16)
|
||||||
|
self.SetImageList(self.il)
|
||||||
|
|
||||||
else:
|
# event handlers for DnD
|
||||||
|
self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnBeginDrag)
|
||||||
class XMLTree(wx.TreeCtrl):
|
self.Bind(wx.EVT_TREE_END_DRAG, self.OnEndDrag)
|
||||||
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):
|
def OnBeginDrag(self, event):
|
||||||
item = event.GetItem()
|
item = event.GetItem()
|
||||||
|
|
||||||
if item != self.GetRootItem():
|
if item != self.GetRootItem():
|
||||||
self.draggingItem = item
|
self.draggingItem = item
|
||||||
event.Allow() # if DnD of this item is okay Allow it.
|
event.Allow() # if DnD of this item is okay Allow it.
|
||||||
|
|
||||||
def IsDescendant(self, firstItem, secondItem):
|
def IsDescendant(self, firstItem, secondItem):
|
||||||
"Recursive check if firstItem is a descendant of a secondItem."
|
"Recursive check if firstItem is a descendant of a secondItem."
|
||||||
if firstItem == self._root:
|
if firstItem == self._root:
|
||||||
return False
|
return False
|
||||||
parentItem = self.GetItemParent(firstItem)
|
parentItem = self.GetItemParent(firstItem)
|
||||||
if parentItem == secondItem:
|
if parentItem == secondItem:
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return self.IsDescendant(parentItem, secondItem)
|
return self.IsDescendant(parentItem, secondItem)
|
||||||
|
|
||||||
def OnEndDrag(self, evt):
|
def OnEndDrag(self, evt):
|
||||||
itemSrc = self.draggingItem
|
itemSrc = self.draggingItem
|
||||||
itemDst = evt.GetItem()
|
itemDst = evt.GetItem()
|
||||||
self.draggingItem = None
|
self.draggingItem = None
|
||||||
|
|
||||||
if not itemDst.IsOk():
|
if not itemDst.IsOk():
|
||||||
print "Can't drag to here..."
|
print "Can't drag to here..."
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.IsDescendant(itemDst, itemSrc):
|
if self.IsDescendant(itemDst, itemSrc):
|
||||||
print "Can't move item to its descendant"
|
print "Can't move item to its descendant"
|
||||||
return
|
return
|
||||||
|
|
||||||
# For this simple example just take the text of the source item
|
# For this simple example just take the text of the source item
|
||||||
# and append it to the destination item. In real life you would
|
# and append it to the destination item. In real life you would
|
||||||
# possibly want to copy subtrees...
|
# possibly want to copy subtrees...
|
||||||
text = self.GetItemText(itemSrc)
|
text = self.GetItemText(itemSrc)
|
||||||
self.AppendItem(itemDst, text)
|
self.AppendItem(itemDst, text)
|
||||||
self.Delete(itemSrc)
|
self.Delete(itemSrc)
|
||||||
|
|
||||||
|
|
||||||
# Define a handler for start element events
|
# Define a handler for start element events
|
||||||
def StartElement(self, name, attrs ):
|
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:
|
if py2:
|
||||||
name = name.encode()
|
data = data.encode()
|
||||||
|
|
||||||
id = self.AppendItem(self.nodeStack[-1], name)
|
self.AppendItem(self.nodeStack[-1], data)
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
||||||
def LoadTree(self, filename):
|
def LoadTree(self, filename):
|
||||||
# Create a parser
|
# Create a parser
|
||||||
Parser = parsermodule.ParserCreate()
|
Parser = expat.ParserCreate()
|
||||||
|
|
||||||
# Tell the parser what the start element handler is
|
# Tell the parser what the start element handler is
|
||||||
Parser.StartElementHandler = self.StartElement
|
Parser.StartElementHandler = self.StartElement
|
||||||
Parser.EndElementHandler = self.EndElement
|
Parser.EndElementHandler = self.EndElement
|
||||||
Parser.CharacterDataHandler = self.CharacterData
|
Parser.CharacterDataHandler = self.CharacterData
|
||||||
|
|
||||||
# Parse the XML File
|
# Parse the XML File
|
||||||
ParserStatus = Parser.Parse(open(filename,'r').read(), 1)
|
ParserStatus = Parser.Parse(open(filename,'r').read(), 1)
|
||||||
|
|
||||||
|
|
||||||
def runTest(frame, nb, log):
|
def runTest(frame, nb, log):
|
||||||
win = XMLTree(nb, -1)
|
win = XMLTree(nb, -1)
|
||||||
win.LoadTree("paper.xml")
|
win.LoadTree("paper.xml")
|
||||||
return win
|
return win
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user