]> git.saurik.com Git - wxWidgets.git/blame - wxPython/demo/Dialog.py
fixes for unicode build, return values from event handlers (via
[wxWidgets.git] / wxPython / demo / Dialog.py
CommitLineData
cf694132 1
8fa876ca 2import wx
cf694132
RD
3
4#---------------------------------------------------------------------------
1e4a197e
RD
5# Create and set a help provider. Normally you would do this in
6# the app's OnInit as it must be done before any SetHelpText calls.
8fa876ca
RD
7provider = wx.SimpleHelpProvider()
8wx.HelpProvider_Set(provider)
031787de 9
1e4a197e
RD
10#---------------------------------------------------------------------------
11
8fa876ca
RD
12class TestDialog(wx.Dialog):
13 def __init__(
14 self, parent, ID, title, size=wx.DefaultSize, pos=wx.DefaultPosition,
15 style=wx.DEFAULT_DIALOG_STYLE
16 ):
1e4a197e 17
95bfd958 18 # Instead of calling wx.Dialog.__init__ we precreate the dialog
8fa876ca 19 # so we can set an extra style that must be set before
1e4a197e
RD
20 # creation, and then we create the GUI dialog using the Create
21 # method.
8fa876ca
RD
22 pre = wx.PreDialog()
23 pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)
1e4a197e
RD
24 pre.Create(parent, ID, title, pos, size, style)
25
26 # This next step is the most important, it turns this Python
27 # object into the real wrapper of the dialog (instead of pre)
28 # as far as the wxPython extension is concerned.
8fa876ca 29 self.this = pre.this
1e4a197e
RD
30
31 # Now continue with the normal construction of the dialog
32 # contents
8fa876ca 33 sizer = wx.BoxSizer(wx.VERTICAL)
1e4a197e 34
95bfd958 35 label = wx.StaticText(self, -1, "This is a wx.Dialog")
1e4a197e 36 label.SetHelpText("This is the help text for the label")
8fa876ca 37 sizer.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
1e4a197e 38
8fa876ca 39 box = wx.BoxSizer(wx.HORIZONTAL)
1e4a197e 40
8fa876ca 41 label = wx.StaticText(self, -1, "Field #1:")
1e4a197e 42 label.SetHelpText("This is the help text for the label")
8fa876ca 43 box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
031787de 44
8fa876ca 45 text = wx.TextCtrl(self, -1, "", size=(80,-1))
1e4a197e 46 text.SetHelpText("Here's some help text for field #1")
8fa876ca 47 box.Add(text, 1, wx.ALIGN_CENTRE|wx.ALL, 5)
031787de 48
8fa876ca 49 sizer.AddSizer(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
031787de 50
8fa876ca 51 box = wx.BoxSizer(wx.HORIZONTAL)
031787de 52
8fa876ca 53 label = wx.StaticText(self, -1, "Field #2:")
1e4a197e 54 label.SetHelpText("This is the help text for the label")
8fa876ca 55 box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
031787de 56
8fa876ca 57 text = wx.TextCtrl(self, -1, "", size=(80,-1))
1e4a197e 58 text.SetHelpText("Here's some help text for field #2")
8fa876ca 59 box.Add(text, 1, wx.ALIGN_CENTRE|wx.ALL, 5)
031787de 60
8fa876ca 61 sizer.AddSizer(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
031787de 62
8fa876ca
RD
63 line = wx.StaticLine(self, -1, size=(20,-1), style=wx.LI_HORIZONTAL)
64 sizer.Add(line, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.TOP, 5)
031787de 65
8fa876ca 66 box = wx.BoxSizer(wx.HORIZONTAL)
031787de 67
8fa876ca
RD
68 if wx.Platform != "__WXMSW__":
69 btn = wx.ContextHelpButton(self)
70 box.Add(btn, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
031787de 71
8fa876ca 72 btn = wx.Button(self, wx.ID_OK, " OK ")
1e4a197e
RD
73 btn.SetDefault()
74 btn.SetHelpText("The OK button completes the dialog")
8fa876ca 75 box.Add(btn, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
031787de 76
8fa876ca
RD
77 btn = wx.Button(self, wx.ID_CANCEL, " Cancel ")
78 btn.SetHelpText("The Cancel button cnacels the dialog. (Cool, huh?)")
79 box.Add(btn, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
031787de 80
8fa876ca 81 sizer.Add(box, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
031787de 82
1e4a197e
RD
83 self.SetSizer(sizer)
84 self.SetAutoLayout(True)
85 sizer.Fit(self)
031787de 86
1e4a197e
RD
87#---------------------------------------------------------------------------
88
89def runTest(frame, nb, log):
8fa876ca 90 win = TestDialog(frame, -1, "This is a Dialog", size=(350, 200),
1e4a197e 91 #style = wxCAPTION | wxSYSTEM_MENU | wxTHICK_FRAME
8fa876ca 92 style = wx.DEFAULT_DIALOG_STYLE
1e4a197e
RD
93 )
94 win.CenterOnScreen()
cf694132 95 val = win.ShowModal()
8fa876ca
RD
96
97 if val == wx.ID_OK:
cf694132
RD
98 log.WriteText("You pressed OK\n")
99 else:
100 log.WriteText("You pressed Cancel\n")
8fa876ca 101
2f0f3b0f 102 win.Destroy()
cf694132
RD
103
104
cf694132 105
8fa876ca 106#---------------------------------------------------------------------------
cf694132
RD
107
108
8fa876ca
RD
109overview = """\
110wxPython offers quite a few general purpose dialogs for useful data input from
111the user; they are all based on the wx.Dialog class, which you can also subclass
112to create custom dialogs to suit your needs.
cf694132 113
8fa876ca
RD
114The Dialog class, in addition to dialog-like behaviors, also supports the full
115wxWindows layout featureset, which means that you can incorporate sizers or
116layout constraints as needed to achieve the look and feel desired. It even supports
117context-sensitive help, which is illustrated in this example.
cf694132 118
8fa876ca
RD
119The example is very simple; in real world situations, a dialog that had input
120fields such as this would no doubt be required to deliver those values back to
121the calling function. The Dialog class supports data retrieval in this manner.
122<b>However, the data must be retrieved prior to the dialog being destroyed.</b>
123The example shown here is <i>modal</i>; non-modal dialogs are possible as well.
cf694132 124
8fa876ca 125See the documentation for the <code>Dialog</code> class for more details.
cf694132 126
8fa876ca 127"""
cf694132 128
1e4a197e
RD
129if __name__ == '__main__':
130 import sys,os
131 import run
8eca4fef 132 run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
cf694132 133