X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/299647acac7960652aadb008775429c1f8ea9b8d..c58ba15f083aa287c17fe40501f0a53b16cf685a:/wxPython/demo/Dialog.py diff --git a/wxPython/demo/Dialog.py b/wxPython/demo/Dialog.py index 263c2cfb50..7bb49f85bc 100644 --- a/wxPython/demo/Dialog.py +++ b/wxPython/demo/Dialog.py @@ -1,7 +1,3 @@ -# 11/15/2003 - Jeff Grimmett (grimmtooth@softhome.net) -# -# o Updated for wx namespace -# import wx @@ -9,19 +5,20 @@ import wx # 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 wxDialog.__init__ we precreate the dialog + # 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) @@ -30,13 +27,18 @@ class TestDialog(wx.Dialog): # 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 sizer = wx.BoxSizer(wx.VERTICAL) - label = wx.StaticText(self, -1, "This is a wxDialog") + label = wx.StaticText(self, -1, "This is a wx.Dialog") label.SetHelpText("This is the help text for the label") sizer.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5) @@ -50,7 +52,7 @@ class TestDialog(wx.Dialog): 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) @@ -62,49 +64,75 @@ class TestDialog(wx.Dialog): 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 #--------------------------------------------------------------------------- @@ -133,5 +161,5 @@ See the documentation for the Dialog class for more details. 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:])