diff options
author | Terry Jan Reedy <tjreedy@udel.edu> | 2016-05-17 19:58:02 -0400 |
---|---|---|
committer | Terry Jan Reedy <tjreedy@udel.edu> | 2016-05-17 19:58:02 -0400 |
commit | fdec2a3424ad48a2f1d94362c2e4c6e493895986 (patch) | |
tree | 3fbfa6549d454db4b3192fd8cd311d674ccbfdfc /Lib/idlelib/ReplaceDialog.py | |
parent | c359af153039fa6c2fadd5b88c4eb0db325692c8 (diff) | |
download | cpython-git-fdec2a3424ad48a2f1d94362c2e4c6e493895986.tar.gz |
Issue #21676: test IDLE replace dialog. Original patch by Saimadhav Heblikar.
Diffstat (limited to 'Lib/idlelib/ReplaceDialog.py')
-rw-r--r-- | Lib/idlelib/ReplaceDialog.py | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/Lib/idlelib/ReplaceDialog.py b/Lib/idlelib/ReplaceDialog.py index 2665a1c630..f2ea22e7f7 100644 --- a/Lib/idlelib/ReplaceDialog.py +++ b/Lib/idlelib/ReplaceDialog.py @@ -1,3 +1,8 @@ +"""Replace dialog for IDLE. Inherits SearchDialogBase for GUI. +Uses idlelib.SearchEngine for search capability. +Defines various replace related functions like replace, replace all, +replace+find. +""" from tkinter import * from idlelib import SearchEngine @@ -6,6 +11,8 @@ import re def replace(text): + """Returns a singleton ReplaceDialog instance.The single dialog + saves user entries and preferences across instances.""" root = text._root() engine = SearchEngine.get(root) if not hasattr(engine, "_replacedialog"): @@ -24,6 +31,7 @@ class ReplaceDialog(SearchDialogBase): self.replvar = StringVar(root) def open(self, text): + """Display the replace dialog""" SearchDialogBase.open(self, text) try: first = text.index("sel.first") @@ -39,6 +47,7 @@ class ReplaceDialog(SearchDialogBase): self.ok = 1 def create_entries(self): + """Create label and text entry widgets""" SearchDialogBase.create_entries(self) self.replent = self.make_entry("Replace with:", self.replvar)[0] @@ -57,9 +66,10 @@ class ReplaceDialog(SearchDialogBase): self.do_replace() def default_command(self, event=None): + "Replace and find next." if self.do_find(self.ok): - if self.do_replace(): # Only find next match if replace succeeded. - # A bad re can cause it to fail. + if self.do_replace(): # Only find next match if replace succeeded. + # A bad re can cause it to fail. self.do_find(0) def _replace_expand(self, m, repl): @@ -77,6 +87,7 @@ class ReplaceDialog(SearchDialogBase): return new def replace_all(self, event=None): + """Replace all instances of patvar with replvar in text""" prog = self.engine.getprog() if not prog: return @@ -173,6 +184,8 @@ class ReplaceDialog(SearchDialogBase): return True def show_hit(self, first, last): + """Highlight text from 'first' to 'last'. + 'first', 'last' - Text indices""" text = self.text text.mark_set("insert", first) text.tag_remove("sel", "1.0", "end") @@ -189,11 +202,13 @@ class ReplaceDialog(SearchDialogBase): SearchDialogBase.close(self, event) self.text.tag_remove("hit", "1.0", "end") -def _replace_dialog(parent): - root = Tk() - root.title("Test ReplaceDialog") + +def _replace_dialog(parent): # htest # + """htest wrapper function""" + box = Toplevel(parent) + box.title("Test ReplaceDialog") width, height, x, y = list(map(int, re.split('[x+]', parent.geometry()))) - root.geometry("+%d+%d"%(x, y + 150)) + box.geometry("+%d+%d"%(x, y + 150)) # mock undo delegator methods def undo_block_start(): @@ -202,20 +217,25 @@ def _replace_dialog(parent): def undo_block_stop(): pass - text = Text(root) + text = Text(box, inactiveselectbackground='gray') text.undo_block_start = undo_block_start text.undo_block_stop = undo_block_stop text.pack() - text.insert("insert","This is a sample string.\n"*10) + text.insert("insert","This is a sample sTring\nPlus MORE.") + text.focus_set() def show_replace(): text.tag_add(SEL, "1.0", END) replace(text) text.tag_remove(SEL, "1.0", END) - button = Button(root, text="Replace", command=show_replace) + button = Button(box, text="Replace", command=show_replace) button.pack() if __name__ == '__main__': + import unittest + unittest.main('idlelib.idle_test.test_replacedialog', + verbosity=2, exit=False) + from idlelib.idle_test.htest import run run(_replace_dialog) |