2003-12-09 01:23:28 +00:00
|
|
|
# 11/17/2003 - Jeff Grimmett (grimmtooth@softhome.net)
|
|
|
|
#
|
|
|
|
# o Updated for wx namespace
|
|
|
|
#
|
|
|
|
# 11/28/2003 - Jeff Grimmett (grimmtooth@softhome.net)
|
|
|
|
#
|
|
|
|
# o Changed the event binding slightly.
|
|
|
|
# o There are issues with the GetReplaceText() method of the
|
|
|
|
# FindDialogEvent. Must be retested when this is fixed.
|
|
|
|
#
|
|
|
|
|
|
|
|
import wx
|
2001-10-12 23:26:38 +00:00
|
|
|
|
|
|
|
#---------------------------------------------------------------------------
|
|
|
|
|
2003-12-09 01:23:28 +00:00
|
|
|
class TestPanel(wx.Panel):
|
2001-10-12 23:26:38 +00:00
|
|
|
def __init__(self, parent, log):
|
2003-12-09 01:23:28 +00:00
|
|
|
wx.Panel.__init__(self, parent, -1)
|
2001-10-12 23:26:38 +00:00
|
|
|
self.log = log
|
|
|
|
|
2003-12-09 01:23:28 +00:00
|
|
|
b = wx.Button(self, -1, "Show Find Dialog", (25, 50))
|
|
|
|
self.Bind(wx.EVT_BUTTON, self.OnShowFind, b)
|
|
|
|
|
|
|
|
b = wx.Button(self, -1, "Show Find && Replace Dialog", (25, 90))
|
|
|
|
self.Bind(wx.EVT_BUTTON, self.OnShowFindReplace, b)
|
2001-10-12 23:26:38 +00:00
|
|
|
|
|
|
|
|
2003-12-09 01:23:28 +00:00
|
|
|
# jg - 11/28/03 - corrected a long standing issue here where
|
|
|
|
# EVT_COMMAND_FIND_* was being used for these event binders
|
|
|
|
# instead of the actual event IDs shown below. As a result,
|
|
|
|
# onFind() was never showing the appropriate type. I guess
|
|
|
|
# nobody really paid much attention to that little
|
|
|
|
# debugging window :-)
|
|
|
|
#
|
|
|
|
self.Bind(wx.EVT_FIND, self.OnFind)
|
|
|
|
self.Bind(wx.EVT_FIND_NEXT, self.OnFind)
|
|
|
|
self.Bind(wx.EVT_FIND_REPLACE, self.OnFind)
|
|
|
|
self.Bind(wx.EVT_FIND_REPLACE_ALL, self.OnFind)
|
|
|
|
self.Bind(wx.EVT_FIND_CLOSE, self.OnFindClose)
|
2001-10-12 23:26:38 +00:00
|
|
|
|
|
|
|
|
|
|
|
def OnShowFind(self, evt):
|
2003-12-09 01:23:28 +00:00
|
|
|
data = wx.FindReplaceData()
|
|
|
|
dlg = wx.FindReplaceDialog(self, data, "Find")
|
2001-10-12 23:26:38 +00:00
|
|
|
dlg.data = data # save a reference to it...
|
2003-03-25 06:35:27 +00:00
|
|
|
dlg.Show(True)
|
2001-10-12 23:26:38 +00:00
|
|
|
|
|
|
|
|
|
|
|
def OnShowFindReplace(self, evt):
|
2003-12-09 01:23:28 +00:00
|
|
|
data = wx.FindReplaceData()
|
|
|
|
dlg = wx.FindReplaceDialog(self, data, "Find & Replace", wx.FR_REPLACEDIALOG)
|
2001-10-12 23:26:38 +00:00
|
|
|
dlg.data = data # save a reference to it...
|
2003-03-25 06:35:27 +00:00
|
|
|
dlg.Show(True)
|
2001-10-12 23:26:38 +00:00
|
|
|
|
|
|
|
|
|
|
|
def OnFind(self, evt):
|
|
|
|
map = {
|
2003-12-09 01:23:28 +00:00
|
|
|
wx.wxEVT_COMMAND_FIND : "FIND",
|
|
|
|
wx.wxEVT_COMMAND_FIND_NEXT : "FIND_NEXT",
|
|
|
|
wx.wxEVT_COMMAND_FIND_REPLACE : "REPLACE",
|
|
|
|
wx.wxEVT_COMMAND_FIND_REPLACE_ALL : "REPLACE_ALL",
|
2001-10-12 23:26:38 +00:00
|
|
|
}
|
2003-12-09 01:23:28 +00:00
|
|
|
|
2001-10-12 23:26:38 +00:00
|
|
|
et = evt.GetEventType()
|
2003-12-09 01:23:28 +00:00
|
|
|
|
|
|
|
if et in map:
|
2001-10-12 23:26:38 +00:00
|
|
|
evtType = map[et]
|
2003-12-09 01:23:28 +00:00
|
|
|
else:
|
2001-10-12 23:26:38 +00:00
|
|
|
evtType = "**Unknown Event Type**"
|
|
|
|
|
2003-12-09 01:23:28 +00:00
|
|
|
#>> Todo: the GetReplaceString() method is broken. Has to be
|
|
|
|
# fixed.
|
|
|
|
if et == wx.EVT_COMMAND_FIND_REPLACE or et == wx.EVT_COMMAND_FIND_REPLACE_ALL:
|
|
|
|
replaceTxt = "Replace text: %s" % evt.GetReplaceString()
|
2001-10-12 23:26:38 +00:00
|
|
|
else:
|
|
|
|
replaceTxt = ""
|
|
|
|
|
2004-01-13 03:17:17 +00:00
|
|
|
self.log.write("%s -- Find text: %s Replace text: %s Flags: %d \n" %
|
2001-10-12 23:26:38 +00:00
|
|
|
(evtType, evt.GetFindString(), replaceTxt, evt.GetFlags()))
|
|
|
|
|
|
|
|
|
|
|
|
def OnFindClose(self, evt):
|
2003-12-09 01:23:28 +00:00
|
|
|
self.log.write("FindReplaceDialog closing...\n")
|
2001-10-12 23:26:38 +00:00
|
|
|
evt.GetDialog().Destroy()
|
|
|
|
|
|
|
|
#---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
def runTest(frame, nb, log):
|
|
|
|
win = TestPanel(nb, log)
|
|
|
|
return win
|
|
|
|
|
|
|
|
#---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
overview = """\
|
2003-12-09 01:23:28 +00:00
|
|
|
FindReplaceDialog is a standard modeless dialog which is used to allow the user
|
|
|
|
to search for some text (and possibly replace it with something else). The actual
|
|
|
|
searching is supposed to be done in the owner window which is the parent of this
|
|
|
|
dialog. Note that it means that unlike for the other standard dialogs this one
|
|
|
|
<u>must have a parent window</u>. Also note that there is no way to use this
|
|
|
|
dialog in a modal way; <b>it is always, by design and implementation, modeless</b>.
|
|
|
|
|
|
|
|
FileReplaceDialog requires the use of <b>FindReplaceData</b>. This holds the
|
|
|
|
data for the dialog. It is used to initialize the dialog with the default values
|
|
|
|
and will keep the last values from the dialog when it is closed. It is also
|
|
|
|
updated each time a FindDialogEvent is generated so instead of using the
|
|
|
|
FindDialogEvent methods you can also directly query this object. <b>Care must be
|
|
|
|
taken not to use this object after the dialog is destroyed.</b> The data within
|
|
|
|
will be invalid after the parent dialog is destroyed.
|
2001-10-12 23:26:38 +00:00
|
|
|
"""
|
2003-07-02 23:13:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
import sys,os
|
|
|
|
import run
|
2004-03-05 00:06:33 +00:00
|
|
|
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
|
2003-07-02 23:13:10 +00:00
|
|
|
|