]> git.saurik.com Git - wxWidgets.git/blame - wxPython/demo/wxFindReplaceDialog.py
Updated the description of wx.PopupTransientWindow
[wxWidgets.git] / wxPython / demo / wxFindReplaceDialog.py
CommitLineData
8fa876ca
RD
1# 11/17/2003 - Jeff Grimmett (grimmtooth@softhome.net)
2#
3# o Updated for wx namespace
4#
5# 11/28/2003 - Jeff Grimmett (grimmtooth@softhome.net)
6#
7# o Changed the event binding slightly.
8# o There are issues with the GetReplaceText() method of the
9# FindDialogEvent. Must be retested when this is fixed.
10#
11
12import wx
0122b7e3
RD
13
14#---------------------------------------------------------------------------
15
8fa876ca 16class TestPanel(wx.Panel):
0122b7e3 17 def __init__(self, parent, log):
8fa876ca 18 wx.Panel.__init__(self, parent, -1)
0122b7e3
RD
19 self.log = log
20
8fa876ca
RD
21 b = wx.Button(self, -1, "Show Find Dialog", (25, 50))
22 self.Bind(wx.EVT_BUTTON, self.OnShowFind, b)
23
24 b = wx.Button(self, -1, "Show Find && Replace Dialog", (25, 90))
25 self.Bind(wx.EVT_BUTTON, self.OnShowFindReplace, b)
0122b7e3 26
0122b7e3 27
8fa876ca
RD
28 # jg - 11/28/03 - corrected a long standing issue here where
29 # EVT_COMMAND_FIND_* was being used for these event binders
30 # instead of the actual event IDs shown below. As a result,
31 # onFind() was never showing the appropriate type. I guess
32 # nobody really paid much attention to that little
33 # debugging window :-)
34 #
35 self.Bind(wx.EVT_FIND, self.OnFind)
36 self.Bind(wx.EVT_FIND_NEXT, self.OnFind)
37 self.Bind(wx.EVT_FIND_REPLACE, self.OnFind)
38 self.Bind(wx.EVT_FIND_REPLACE_ALL, self.OnFind)
39 self.Bind(wx.EVT_FIND_CLOSE, self.OnFindClose)
0122b7e3
RD
40
41
42 def OnShowFind(self, evt):
8fa876ca
RD
43 data = wx.FindReplaceData()
44 dlg = wx.FindReplaceDialog(self, data, "Find")
0122b7e3 45 dlg.data = data # save a reference to it...
1e4a197e 46 dlg.Show(True)
0122b7e3
RD
47
48
49 def OnShowFindReplace(self, evt):
8fa876ca
RD
50 data = wx.FindReplaceData()
51 dlg = wx.FindReplaceDialog(self, data, "Find & Replace", wx.FR_REPLACEDIALOG)
0122b7e3 52 dlg.data = data # save a reference to it...
1e4a197e 53 dlg.Show(True)
0122b7e3
RD
54
55
56 def OnFind(self, evt):
57 map = {
8fa876ca
RD
58 wx.wxEVT_COMMAND_FIND : "FIND",
59 wx.wxEVT_COMMAND_FIND_NEXT : "FIND_NEXT",
60 wx.wxEVT_COMMAND_FIND_REPLACE : "REPLACE",
61 wx.wxEVT_COMMAND_FIND_REPLACE_ALL : "REPLACE_ALL",
0122b7e3 62 }
8fa876ca 63
0122b7e3 64 et = evt.GetEventType()
8fa876ca
RD
65
66 #print evt.GetReplaceString()
0122b7e3 67
8fa876ca 68 if et in map:
0122b7e3 69 evtType = map[et]
8fa876ca 70 else:
0122b7e3
RD
71 evtType = "**Unknown Event Type**"
72
8fa876ca
RD
73 #>> Todo: the GetReplaceString() method is broken. Has to be
74 # fixed.
75 if et == wx.EVT_COMMAND_FIND_REPLACE or et == wx.EVT_COMMAND_FIND_REPLACE_ALL:
76 replaceTxt = "Replace text: %s" % evt.GetReplaceString()
0122b7e3
RD
77 else:
78 replaceTxt = ""
79
80 self.log.write("%s -- Find text: %s %s Flags: %d \n" %
81 (evtType, evt.GetFindString(), replaceTxt, evt.GetFlags()))
82
83
84 def OnFindClose(self, evt):
8fa876ca 85 self.log.write("FindReplaceDialog closing...\n")
0122b7e3
RD
86 evt.GetDialog().Destroy()
87
88#---------------------------------------------------------------------------
89
90def runTest(frame, nb, log):
91 win = TestPanel(nb, log)
92 return win
93
94#---------------------------------------------------------------------------
95
96
97
98
99overview = """\
8fa876ca
RD
100FindReplaceDialog is a standard modeless dialog which is used to allow the user
101to search for some text (and possibly replace it with something else). The actual
102searching is supposed to be done in the owner window which is the parent of this
103dialog. Note that it means that unlike for the other standard dialogs this one
104<u>must have a parent window</u>. Also note that there is no way to use this
105dialog in a modal way; <b>it is always, by design and implementation, modeless</b>.
106
107FileReplaceDialog requires the use of <b>FindReplaceData</b>. This holds the
108data for the dialog. It is used to initialize the dialog with the default values
109and will keep the last values from the dialog when it is closed. It is also
110updated each time a FindDialogEvent is generated so instead of using the
111FindDialogEvent methods you can also directly query this object. <b>Care must be
112taken not to use this object after the dialog is destroyed.</b> The data within
113will be invalid after the parent dialog is destroyed.
0122b7e3 114"""
1fded56b
RD
115
116
117
118
119if __name__ == '__main__':
120 import sys,os
121 import run
122 run.main(['', os.path.basename(sys.argv[0])])
123