annotate Lib/idlelib/ReplaceDialog.py @ 79675:c0a2294de787 2.7

Issue #16199: Backport 2to3 typo fix from 3.2.
author Chris Jerdonek <chris.jerdonek@gmail.com>
date Thu, 11 Oct 2012 16:15:46 -0700
parents 44c00de723b3
children edcfd18840cc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47183
b53604fad54b Tkinter rename reversal: remove tkinter package, adapt imports and docs.
Georg Brandl <georg@python.org>
parents: 47101
diff changeset
1 from Tkinter import *
60144
eab361617f6a #7092: Fix additional "-3" warnings in the idlelib package, and convert to absolute imports.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 47183
diff changeset
2
eab361617f6a #7092: Fix additional "-3" warnings in the idlelib package, and convert to absolute imports.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 47183
diff changeset
3 from idlelib import SearchEngine
eab361617f6a #7092: Fix additional "-3" warnings in the idlelib package, and convert to absolute imports.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 47183
diff changeset
4 from idlelib.SearchDialogBase import SearchDialogBase
78417
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
5 import re
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
6
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
7
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
8 def replace(text):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
9 root = text._root()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
10 engine = SearchEngine.get(root)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
11 if not hasattr(engine, "_replacedialog"):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
12 engine._replacedialog = ReplaceDialog(root, engine)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
13 dialog = engine._replacedialog
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
14 dialog.open(text)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
15
78417
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
16
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
17 class ReplaceDialog(SearchDialogBase):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
18
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
19 title = "Replace Dialog"
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
20 icon = "Replace"
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
21
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
22 def __init__(self, root, engine):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
23 SearchDialogBase.__init__(self, root, engine)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
24 self.replvar = StringVar(root)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
25
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
26 def open(self, text):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
27 SearchDialogBase.open(self, text)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
28 try:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
29 first = text.index("sel.first")
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
30 except TclError:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
31 first = None
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
32 try:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
33 last = text.index("sel.last")
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
34 except TclError:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
35 last = None
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
36 first = first or text.index("insert")
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
37 last = last or first
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
38 self.show_hit(first, last)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
39 self.ok = 1
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
40
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
41 def create_entries(self):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
42 SearchDialogBase.create_entries(self)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
43 self.replent = self.make_entry("Replace with:", self.replvar)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
44
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
45 def create_command_buttons(self):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
46 SearchDialogBase.create_command_buttons(self)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
47 self.make_button("Find", self.find_it)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
48 self.make_button("Replace", self.replace_it)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
49 self.make_button("Replace+Find", self.default_command, 1)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
50 self.make_button("Replace All", self.replace_all)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
51
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
52 def find_it(self, event=None):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
53 self.do_find(0)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
54
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
55 def replace_it(self, event=None):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
56 if self.do_find(self.ok):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
57 self.do_replace()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
58
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
59 def default_command(self, event=None):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
60 if self.do_find(self.ok):
78417
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
61 if self.do_replace(): # Only find next match if replace succeeded.
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
62 # A bad re can cause a it to fail.
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
63 self.do_find(0)
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
64
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
65 def _replace_expand(self, m, repl):
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
66 """ Helper function for expanding a regular expression
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
67 in the replace field, if needed. """
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
68 if self.engine.isre():
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
69 try:
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
70 new = m.expand(repl)
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
71 except re.error:
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
72 self.engine.report_error(repl, 'Invalid Replace Expression')
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
73 new = None
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
74 else:
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
75 new = repl
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
76 return new
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
77
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
78 def replace_all(self, event=None):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
79 prog = self.engine.getprog()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
80 if not prog:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
81 return
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
82 repl = self.replvar.get()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
83 text = self.text
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
84 res = self.engine.search_text(text, prog)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
85 if not res:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
86 text.bell()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
87 return
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
88 text.tag_remove("sel", "1.0", "end")
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
89 text.tag_remove("hit", "1.0", "end")
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
90 line = res[0]
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
91 col = res[1].start()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
92 if self.engine.iswrap():
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
93 line = 1
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
94 col = 0
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
95 ok = 1
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
96 first = last = None
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
97 # XXX ought to replace circular instead of top-to-bottom when wrapping
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
98 text.undo_block_start()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
99 while 1:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
100 res = self.engine.search_forward(text, prog, line, col, 0, ok)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
101 if not res:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
102 break
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
103 line, m = res
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
104 chars = text.get("%d.0" % line, "%d.0" % (line+1))
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
105 orig = m.group()
78417
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
106 new = self._replace_expand(m, repl)
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
107 if new is None:
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
108 break
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
109 i, j = m.span()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
110 first = "%d.%d" % (line, i)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
111 last = "%d.%d" % (line, j)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
112 if new == orig:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
113 text.mark_set("insert", last)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
114 else:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
115 text.mark_set("insert", first)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
116 if first != last:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
117 text.delete(first, last)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
118 if new:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
119 text.insert(first, new)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
120 col = i + len(new)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
121 ok = 0
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
122 text.undo_block_stop()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
123 if first and last:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
124 self.show_hit(first, last)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
125
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
126 def do_find(self, ok=0):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
127 if not self.engine.getprog():
25311
bd3b92dc940a Merge Py Idle changes:
Kurt B. Kaiser <kbk@shore.net>
parents: 25262
diff changeset
128 return False
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
129 text = self.text
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
130 res = self.engine.search_text(text, None, ok)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
131 if not res:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
132 text.bell()
25311
bd3b92dc940a Merge Py Idle changes:
Kurt B. Kaiser <kbk@shore.net>
parents: 25262
diff changeset
133 return False
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
134 line, m = res
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
135 i, j = m.span()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
136 first = "%d.%d" % (line, i)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
137 last = "%d.%d" % (line, j)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
138 self.show_hit(first, last)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
139 self.ok = 1
25311
bd3b92dc940a Merge Py Idle changes:
Kurt B. Kaiser <kbk@shore.net>
parents: 25262
diff changeset
140 return True
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
141
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
142 def do_replace(self):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
143 prog = self.engine.getprog()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
144 if not prog:
25311
bd3b92dc940a Merge Py Idle changes:
Kurt B. Kaiser <kbk@shore.net>
parents: 25262
diff changeset
145 return False
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
146 text = self.text
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
147 try:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
148 first = pos = text.index("sel.first")
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
149 last = text.index("sel.last")
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
150 except TclError:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
151 pos = None
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
152 if not pos:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
153 first = last = pos = text.index("insert")
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
154 line, col = SearchEngine.get_line_col(pos)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
155 chars = text.get("%d.0" % line, "%d.0" % (line+1))
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
156 m = prog.match(chars, col)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
157 if not prog:
25311
bd3b92dc940a Merge Py Idle changes:
Kurt B. Kaiser <kbk@shore.net>
parents: 25262
diff changeset
158 return False
78417
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
159 new = self._replace_expand(m, self.replvar.get())
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
160 if new is None:
44c00de723b3 Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 60144
diff changeset
161 return False
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
162 text.mark_set("insert", first)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
163 text.undo_block_start()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
164 if m.group():
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
165 text.delete(first, last)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
166 if new:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
167 text.insert(first, new)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
168 text.undo_block_stop()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
169 self.show_hit(first, text.index("insert"))
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
170 self.ok = 0
25311
bd3b92dc940a Merge Py Idle changes:
Kurt B. Kaiser <kbk@shore.net>
parents: 25262
diff changeset
171 return True
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
172
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
173 def show_hit(self, first, last):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
174 text = self.text
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
175 text.mark_set("insert", first)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
176 text.tag_remove("sel", "1.0", "end")
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
177 text.tag_add("sel", first, last)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
178 text.tag_remove("hit", "1.0", "end")
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
179 if first == last:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
180 text.tag_add("hit", first)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
181 else:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
182 text.tag_add("hit", first, last)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
183 text.see("insert")
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
184 text.update_idletasks()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
185
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
186 def close(self, event=None):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
187 SearchDialogBase.close(self, event)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
188 self.text.tag_remove("hit", "1.0", "end")