# Create and set a help provider. Normally you would do this in
# the app's OnInit as it must be done before any SetHelpText calls.
provider = wx.SimpleHelpProvider()
-wx.HelpProvider_Set(provider)
+wx.HelpProvider.Set(provider)
#---------------------------------------------------------------------------
class TestDialog(wx.Dialog):
def __init__(
self, parent, ID, title, size=wx.DefaultSize, pos=wx.DefaultPosition,
- style=wx.DEFAULT_DIALOG_STYLE
+ style=wx.DEFAULT_DIALOG_STYLE,
+ useMetal=False,
):
# Instead of calling wx.Dialog.__init__ we precreate the dialog
# so we can set an extra style that must be set before
- # creation, and then we create the GUI dialog using the Create
+ # creation, and then we create the GUI object using the Create
# method.
pre = wx.PreDialog()
pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)
# This next step is the most important, it turns this Python
# object into the real wrapper of the dialog (instead of pre)
# as far as the wxPython extension is concerned.
- self.this = pre.this
+ self.PostCreate(pre)
+
+ # This extra style can be set after the UI object has been created.
+ if 'wxMac' in wx.PlatformInfo and useMetal:
+ self.SetExtraStyle(wx.DIALOG_EX_METAL)
+
# Now continue with the normal construction of the dialog
# contents
text.SetHelpText("Here's some help text for field #1")
box.Add(text, 1, wx.ALIGN_CENTRE|wx.ALL, 5)
- sizer.AddSizer(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
+ sizer.Add(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
box = wx.BoxSizer(wx.HORIZONTAL)
text.SetHelpText("Here's some help text for field #2")
box.Add(text, 1, wx.ALIGN_CENTRE|wx.ALL, 5)
- sizer.AddSizer(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
+ sizer.Add(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
line = wx.StaticLine(self, -1, size=(20,-1), style=wx.LI_HORIZONTAL)
sizer.Add(line, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.TOP, 5)
- box = wx.BoxSizer(wx.HORIZONTAL)
-
+ btnsizer = wx.StdDialogButtonSizer()
+
if wx.Platform != "__WXMSW__":
btn = wx.ContextHelpButton(self)
- box.Add(btn, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
-
- btn = wx.Button(self, wx.ID_OK, " OK ")
- btn.SetDefault()
+ btnsizer.AddButton(btn)
+
+ btn = wx.Button(self, wx.ID_OK)
btn.SetHelpText("The OK button completes the dialog")
- box.Add(btn, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
+ btn.SetDefault()
+ btnsizer.AddButton(btn)
- btn = wx.Button(self, wx.ID_CANCEL, " Cancel ")
+ btn = wx.Button(self, wx.ID_CANCEL)
btn.SetHelpText("The Cancel button cnacels the dialog. (Cool, huh?)")
- box.Add(btn, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
+ btnsizer.AddButton(btn)
+ btnsizer.Realize()
- sizer.Add(box, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
+ sizer.Add(btnsizer, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
self.SetSizer(sizer)
- self.SetAutoLayout(True)
sizer.Fit(self)
#---------------------------------------------------------------------------
-def runTest(frame, nb, log):
- win = TestDialog(frame, -1, "This is a Dialog", size=(350, 200),
- #style = wxCAPTION | wxSYSTEM_MENU | wxTHICK_FRAME
- style = wx.DEFAULT_DIALOG_STYLE
- )
- win.CenterOnScreen()
- val = win.ShowModal()
+class TestPanel(wx.Panel):
+ def __init__(self, parent, log):
+ self.log = log
+ wx.Panel.__init__(self, parent, -1)
+
+ b = wx.Button(self, -1, "Create and Show a custom Dialog", (50,50))
+ self.Bind(wx.EVT_BUTTON, self.OnButton, b)
+
+ if 'wxMac' in wx.PlatformInfo:
+ self.cb = wx.CheckBox(self, -1, "Set Metal appearance", (50,90))
+
+
+ def OnButton(self, evt):
+ useMetal = False
+ if 'wxMac' in wx.PlatformInfo:
+ useMetal = self.cb.IsChecked()
+
+ dlg = TestDialog(self, -1, "Sample Dialog", size=(350, 200),
+ #style=wxCAPTION | wxSYSTEM_MENU | wxTHICK_FRAME,
+ style=wx.DEFAULT_DIALOG_STYLE,
+ useMetal=useMetal,
+ )
+ dlg.CenterOnScreen()
+
+ # this does not return until the dialog is closed.
+ val = dlg.ShowModal()
- if val == wx.ID_OK:
- log.WriteText("You pressed OK\n")
- else:
- log.WriteText("You pressed Cancel\n")
+ if val == wx.ID_OK:
+ self.log.WriteText("You pressed OK\n")
+ else:
+ self.log.WriteText("You pressed Cancel\n")
+
+ dlg.Destroy()
+
+
+#---------------------------------------------------------------------------
- win.Destroy()
+def runTest(frame, nb, log):
+ win = TestPanel(nb, log)
+ return win
#---------------------------------------------------------------------------
if __name__ == '__main__':
import sys,os
import run
- run.main(['', os.path.basename(sys.argv[0])])
+ run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])