mirror of
https://github.com/wxWidgets/Phoenix.git
synced 2026-01-04 11:00:07 +01:00
208 lines
7.1 KiB
Python
208 lines
7.1 KiB
Python
#!/usr/bin/env python
|
|
|
|
import wx
|
|
|
|
import os
|
|
import sys
|
|
import random
|
|
|
|
try:
|
|
dirName = os.path.dirname(os.path.abspath(__file__))
|
|
except:
|
|
dirName = os.path.dirname(os.path.abspath(sys.argv[0]))
|
|
|
|
sys.path.append(os.path.split(dirName)[0])
|
|
|
|
try:
|
|
from agw import genericmessagedialog as GMD
|
|
except ImportError: # if it's not there locally, try the wxPython lib.
|
|
import wx.lib.agw.genericmessagedialog as GMD
|
|
|
|
import images
|
|
|
|
|
|
_msg = "This is the about dialog of GenericMessageDialog demo.\n\n" + \
|
|
"Author: Andrea Gavana @ 07 Oct 2008\n\n" + \
|
|
"Please report any bugs/requests of improvements\n" + \
|
|
"to me at the following addresses:\n\n" + \
|
|
"andrea.gavana@gmail.com\n" + "andrea.gavana@maerskoil.com\n\n" + \
|
|
"Welcome to wxPython " + wx.VERSION_STRING + "!!"
|
|
|
|
|
|
ART_ICONS = []
|
|
for d in dir(wx):
|
|
if d.startswith('ART_'):
|
|
if not eval('wx.%s'%d).endswith(b'_C'):
|
|
ART_ICONS.append(eval('wx.%s'%d))
|
|
|
|
|
|
class GenericMessageDialogDemo(wx.Panel):
|
|
|
|
def __init__(self, parent, log):
|
|
|
|
wx.Panel.__init__(self, parent)
|
|
|
|
self.log = log
|
|
|
|
self.mainPanel = wx.Panel(self)
|
|
self.buttonSizer_staticbox = wx.StaticBox(self.mainPanel, -1, "Buttons Styles")
|
|
self.ok = wx.CheckBox(self.mainPanel, -1, "wx.OK")
|
|
self.yes_no = wx.CheckBox(self.mainPanel, -1, "wx.YES_NO")
|
|
self.cancel = wx.CheckBox(self.mainPanel, -1, "wx.CANCEL")
|
|
self.yes = wx.CheckBox(self.mainPanel, -1, "wx.YES")
|
|
self.no = wx.CheckBox(self.mainPanel, -1, "wx.NO")
|
|
self.no_default = wx.CheckBox(self.mainPanel, -1, "wx.NO_DEFAULT")
|
|
self.help = wx.CheckBox(self.mainPanel, -1, "wx.HELP")
|
|
self.dialogStyles = wx.RadioBox(self.mainPanel, -1, "Dialog Styles",
|
|
choices=["wx.ICON_INFORMATION", "wx.ICON_WARNING",
|
|
"wx.ICON_EXCLAMATION", "wx.ICON_ERROR",
|
|
"wx.ICON_QUESTION"],
|
|
majorDimension=5, style=wx.RA_SPECIFY_ROWS)
|
|
self.buttonKinds = wx.RadioBox(self.mainPanel, -1, "Button Kind",
|
|
choices=["Themed buttons", "AquaButtons",
|
|
"GradientButtons"],
|
|
majorDimension=3, style=wx.RA_SPECIFY_ROWS)
|
|
|
|
self.useExtended = wx.CheckBox(self.mainPanel, -1, "Add extended message")
|
|
self.customIcons = wx.CheckBox(self.mainPanel, -1, "Use custom icons")
|
|
|
|
self.showDialog = wx.Button(self.mainPanel, -1, "Show GenericMessageDialog")
|
|
|
|
self.SetProperties()
|
|
self.DoLayout()
|
|
|
|
self.Bind(wx.EVT_BUTTON, self.OnShowDialog, self.showDialog)
|
|
self.Bind(wx.EVT_CHECKBOX, self.OnCheckBox)
|
|
|
|
|
|
def SetProperties(self):
|
|
|
|
self.ok.SetValue(1)
|
|
self.dialogStyles.SetSelection(0)
|
|
self.showDialog.SetDefault()
|
|
|
|
|
|
def DoLayout(self):
|
|
|
|
frameSizer = wx.BoxSizer(wx.VERTICAL)
|
|
panelSizer = wx.BoxSizer(wx.VERTICAL)
|
|
mainSizer = wx.BoxSizer(wx.HORIZONTAL)
|
|
buttonSizer = wx.StaticBoxSizer(self.buttonSizer_staticbox, wx.VERTICAL)
|
|
|
|
buttonSizer.Add(self.ok, 0, wx.LEFT|wx.RIGHT|wx.TOP, 5)
|
|
buttonSizer.Add((0, 2), 0, 0, 0)
|
|
buttonSizer.Add(self.yes_no, 0, wx.LEFT|wx.RIGHT, 5)
|
|
buttonSizer.Add((0, 2), 0, 0, 0)
|
|
buttonSizer.Add(self.cancel, 0, wx.LEFT|wx.RIGHT, 5)
|
|
buttonSizer.Add((0, 2), 0, 0, 0)
|
|
buttonSizer.Add(self.yes, 0, wx.LEFT|wx.RIGHT, 5)
|
|
buttonSizer.Add((0, 2), 0, 0, 0)
|
|
buttonSizer.Add(self.no, 0, wx.LEFT|wx.RIGHT, 5)
|
|
buttonSizer.Add((0, 2), 0, 0, 0)
|
|
buttonSizer.Add(self.no_default, 0, wx.LEFT|wx.RIGHT, 5)
|
|
buttonSizer.Add((0, 2), 0, 0, 0)
|
|
buttonSizer.Add(self.help, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM, 5)
|
|
mainSizer.Add(buttonSizer, 0, wx.ALL, 5)
|
|
mainSizer.Add(self.buttonKinds, 0, wx.ALL, 5)
|
|
mainSizer.Add(self.dialogStyles, 0, wx.ALL, 5)
|
|
mainSizer.Add((10, 0), 0, 0, 0)
|
|
mainSizer.Add(self.showDialog, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 10)
|
|
mainSizer.Add((10, 0), 0, 0, 0)
|
|
|
|
panelSizer.Add(mainSizer, 1, wx.EXPAND)
|
|
panelSizer.Add(self.useExtended, 0, wx.ALL, 15)
|
|
panelSizer.Add(self.customIcons, 0, wx.LEFT|wx.RIGHT, 15)
|
|
panelSizer.Add((0, 0), 1, wx.ALL, 10)
|
|
|
|
self.mainPanel.SetSizer(panelSizer)
|
|
|
|
frameSizer.Add(self.mainPanel, 1, wx.EXPAND)
|
|
self.SetSizer(frameSizer)
|
|
frameSizer.Layout()
|
|
|
|
|
|
def OnCheckBox(self, event):
|
|
|
|
obj = event.GetEventObject()
|
|
|
|
if obj in [self.useExtended, self.customIcons]:
|
|
event.Skip()
|
|
return
|
|
|
|
widgets = [self.yes, self.yes_no, self.no, self.no_default]
|
|
if not event.IsChecked():
|
|
return
|
|
|
|
if obj == self.ok:
|
|
for checks in widgets:
|
|
checks.SetValue(0)
|
|
elif obj in widgets:
|
|
self.ok.SetValue(0)
|
|
|
|
|
|
def OnShowDialog(self, event):
|
|
|
|
btnStyle = 0
|
|
for child in self.mainPanel.GetChildren():
|
|
if isinstance(child, wx.CheckBox) and child not in [self.useExtended, self.customIcons]:
|
|
if child.GetValue():
|
|
btnStyle |= eval(child.GetLabel())
|
|
|
|
dlgStyle = eval(self.dialogStyles.GetStringSelection())
|
|
buttonKind = self.buttonKinds.GetSelection()
|
|
|
|
if buttonKind == 1:
|
|
# Aquabuttons
|
|
dlgStyle += GMD.GMD_USE_AQUABUTTONS
|
|
elif buttonKind == 2:
|
|
# GradientButtons
|
|
dlgStyle += GMD.GMD_USE_GRADIENTBUTTONS
|
|
|
|
if self.useExtended:
|
|
extended = _msg
|
|
message = "This is the main message!"
|
|
else:
|
|
extended = ""
|
|
message = _msg
|
|
|
|
dlg = GMD.GenericMessageDialog(self, message,
|
|
"A Nice Message Box",
|
|
btnStyle | dlgStyle)
|
|
|
|
if self.customIcons.GetValue():
|
|
b1, b2, b3 = [random.randint(0, len(ART_ICONS)-1) for i in range(3)]
|
|
b4, b5 = [random.randint(0, len(ART_ICONS)-1) for i in range(2)]
|
|
|
|
yes = wx.ArtProvider.GetBitmap(ART_ICONS[b1], wx.ART_OTHER, (16, 16))
|
|
no = wx.ArtProvider.GetBitmap(ART_ICONS[b2], wx.ART_OTHER, (16, 16))
|
|
cancel = wx.ArtProvider.GetBitmap(ART_ICONS[b3], wx.ART_OTHER, (16, 16))
|
|
ok = wx.ArtProvider.GetBitmap(ART_ICONS[b4], wx.ART_OTHER, (16, 16))
|
|
help = wx.ArtProvider.GetBitmap(ART_ICONS[b5], wx.ART_OTHER, (16, 16))
|
|
|
|
dlg.SetYesNoCancelBitmaps(yes, no, cancel)
|
|
dlg.SetOKBitmap(ok)
|
|
dlg.SetHelpBitmap(help)
|
|
|
|
dlg.SetExtendedMessage(extended)
|
|
dlg.SetIcon(images.Mondrian.GetIcon())
|
|
dlg.ShowModal()
|
|
dlg.Destroy()
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def runTest(frame, nb, log):
|
|
win = GenericMessageDialogDemo(nb, log)
|
|
return win
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
overview = GMD.__doc__
|
|
|
|
if __name__ == '__main__':
|
|
import sys,os
|
|
import run
|
|
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
|
|
|
|
|