annotate Lib/idlelib/SearchDialog.py @ 80661:94de77bd0b4b 2.7

Issue #16194: document imp.load_dynamic problems when read several extension modules from the same binary object file.
author Andrew Svetlov <andrew.svetlov@gmail.com>
date Thu, 29 Nov 2012 19:51:28 +0200
parents eab361617f6a
children 73de0794ae71
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 *
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
2
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
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
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
5
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
6 def _setup(text):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
7 root = text._root()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
8 engine = SearchEngine.get(root)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
9 if not hasattr(engine, "_searchdialog"):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
10 engine._searchdialog = SearchDialog(root, engine)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
11 return engine._searchdialog
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
12
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
13 def find(text):
26068
868ff0dfabd2 By default when getting the search menu, the currently highligted
Chui Tey <chui.tey@advdata.com.au>
parents: 25313
diff changeset
14 pat = text.get("sel.first", "sel.last")
868ff0dfabd2 By default when getting the search menu, the currently highligted
Chui Tey <chui.tey@advdata.com.au>
parents: 25313
diff changeset
15 return _setup(text).open(text,pat)
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
16
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
17 def find_again(text):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
18 return _setup(text).find_again(text)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
19
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
20 def find_selection(text):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
21 return _setup(text).find_selection(text)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
22
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
23 class SearchDialog(SearchDialogBase):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
24
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
25 def create_widgets(self):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
26 f = SearchDialogBase.create_widgets(self)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
27 self.make_button("Find", self.default_command, 1)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
28
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
29 def default_command(self, event=None):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
30 if not self.engine.getprog():
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
31 return
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
32 if self.find_again(self.text):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
33 self.close()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
34
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
35 def find_again(self, text):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
36 if not self.engine.getpat():
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
37 self.open(text)
25313
92a3d897e819 Merge Py Idle changes:
Kurt B. Kaiser <kbk@shore.net>
parents: 13975
diff changeset
38 return False
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
39 if not self.engine.getprog():
25313
92a3d897e819 Merge Py Idle changes:
Kurt B. Kaiser <kbk@shore.net>
parents: 13975
diff changeset
40 return False
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
41 res = self.engine.search_text(text)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
42 if res:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
43 line, m = res
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
44 i, j = m.span()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
45 first = "%d.%d" % (line, i)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
46 last = "%d.%d" % (line, j)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
47 try:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
48 selfirst = text.index("sel.first")
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
49 sellast = text.index("sel.last")
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
50 if selfirst == first and sellast == last:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
51 text.bell()
25313
92a3d897e819 Merge Py Idle changes:
Kurt B. Kaiser <kbk@shore.net>
parents: 13975
diff changeset
52 return False
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
53 except TclError:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
54 pass
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
55 text.tag_remove("sel", "1.0", "end")
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
56 text.tag_add("sel", first, last)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
57 text.mark_set("insert", self.engine.isback() and first or last)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
58 text.see("insert")
25313
92a3d897e819 Merge Py Idle changes:
Kurt B. Kaiser <kbk@shore.net>
parents: 13975
diff changeset
59 return True
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
60 else:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
61 text.bell()
25313
92a3d897e819 Merge Py Idle changes:
Kurt B. Kaiser <kbk@shore.net>
parents: 13975
diff changeset
62 return False
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
63
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
64 def find_selection(self, text):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
65 pat = text.get("sel.first", "sel.last")
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
66 if pat:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
67 self.engine.setcookedpat(pat)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
68 return self.find_again(text)