X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/031787ded79a23035fa8d00020f1a7ee3b4b13c9..61940a7061d0b5d5122b1e1e939cfa2d72596999:/wxPython/demo/wxDialog.py diff --git a/wxPython/demo/wxDialog.py b/wxPython/demo/wxDialog.py index a46db26119..263c2cfb50 100644 --- a/wxPython/demo/wxDialog.py +++ b/wxPython/demo/wxDialog.py @@ -1,72 +1,137 @@ +# 11/15/2003 - Jeff Grimmett (grimmtooth@softhome.net) +# +# o Updated for wx namespace +# -from wxPython.wx import * +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) -def runTest(frame, nb, log): - win = wxDialog(frame, -1, "This is a wxDialog", size=wxSize(350, 200)) +#--------------------------------------------------------------------------- + +class TestDialog(wx.Dialog): + def __init__( + self, parent, ID, title, size=wx.DefaultSize, pos=wx.DefaultPosition, + style=wx.DEFAULT_DIALOG_STYLE + ): + + # Instead of calling wxDialog.__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 + # method. + pre = wx.PreDialog() + pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP) + pre.Create(parent, ID, title, pos, size, style) - sizer = wxBoxSizer(wxVERTICAL) + # 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 - label = wxStaticText(win, -1, "This is a wxDialog") - sizer.Add(label, 0, wxALIGN_CENTRE|wxALL, 5) + # Now continue with the normal construction of the dialog + # contents + sizer = wx.BoxSizer(wx.VERTICAL) - box = wxBoxSizer(wxHORIZONTAL) + label = wx.StaticText(self, -1, "This is a wxDialog") + label.SetHelpText("This is the help text for the label") + sizer.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5) - label = wxStaticText(win, -1, "Field #1:") - box.Add(label, 0, wxALIGN_CENTRE|wxALL, 5) + box = wx.BoxSizer(wx.HORIZONTAL) - text = wxTextCtrl(win, -1, "", size=(80,-1)) - box.Add(text, 1, wxALIGN_CENTRE|wxALL, 5) + label = wx.StaticText(self, -1, "Field #1:") + label.SetHelpText("This is the help text for the label") + box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5) - sizer.AddSizer(box, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5) + text = wx.TextCtrl(self, -1, "", size=(80,-1)) + text.SetHelpText("Here's some help text for field #1") + box.Add(text, 1, wx.ALIGN_CENTRE|wx.ALL, 5) - box = wxBoxSizer(wxHORIZONTAL) + sizer.AddSizer(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) - label = wxStaticText(win, -1, "Field #2:") - box.Add(label, 0, wxALIGN_CENTRE|wxALL, 5) + box = wx.BoxSizer(wx.HORIZONTAL) - text = wxTextCtrl(win, -1, "", size=(80,-1)) - box.Add(text, 1, wxALIGN_CENTRE|wxALL, 5) + label = wx.StaticText(self, -1, "Field #2:") + label.SetHelpText("This is the help text for the label") + box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5) - sizer.AddSizer(box, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5) + text = wx.TextCtrl(self, -1, "", size=(80,-1)) + text.SetHelpText("Here's some help text for field #2") + box.Add(text, 1, wx.ALIGN_CENTRE|wx.ALL, 5) - line = wxStaticLine(win, -1, size=(20,-1), style=wxLI_HORIZONTAL) - sizer.Add(line, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP, 5) + sizer.AddSizer(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) - box = wxBoxSizer(wxHORIZONTAL) + 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) - btn = wxButton(win, wxID_OK, " OK ") - btn.SetDefault() - box.Add(btn, 0, wxALIGN_CENTRE|wxALL, 5) + box = wx.BoxSizer(wx.HORIZONTAL) - btn = wxButton(win, wxID_CANCEL, " Cancel ") - box.Add(btn, 0, wxALIGN_CENTRE|wxALL, 5) + if wx.Platform != "__WXMSW__": + btn = wx.ContextHelpButton(self) + box.Add(btn, 0, wx.ALIGN_CENTRE|wx.ALL, 5) - sizer.AddSizer(box, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5) + btn = wx.Button(self, wx.ID_OK, " OK ") + btn.SetDefault() + btn.SetHelpText("The OK button completes the dialog") + box.Add(btn, 0, wx.ALIGN_CENTRE|wx.ALL, 5) - win.SetSizer(sizer) - win.SetAutoLayout(true) - sizer.Fit(win) + btn = wx.Button(self, wx.ID_CANCEL, " Cancel ") + btn.SetHelpText("The Cancel button cnacels the dialog. (Cool, huh?)") + box.Add(btn, 0, wx.ALIGN_CENTRE|wx.ALL, 5) + + sizer.Add(box, 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() - if val == wxID_OK: + + if val == wx.ID_OK: log.WriteText("You pressed OK\n") else: log.WriteText("You pressed Cancel\n") + win.Destroy() -#--------------------------------------------------------------------------- - +#--------------------------------------------------------------------------- +overview = """\ +wxPython offers quite a few general purpose dialogs for useful data input from +the user; they are all based on the wx.Dialog class, which you can also subclass +to create custom dialogs to suit your needs. +The Dialog class, in addition to dialog-like behaviors, also supports the full +wxWindows layout featureset, which means that you can incorporate sizers or +layout constraints as needed to achieve the look and feel desired. It even supports +context-sensitive help, which is illustrated in this example. +The example is very simple; in real world situations, a dialog that had input +fields such as this would no doubt be required to deliver those values back to +the calling function. The Dialog class supports data retrieval in this manner. +However, the data must be retrieved prior to the dialog being destroyed. +The example shown here is modal; non-modal dialogs are possible as well. +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])]) -overview = """\ -"""