blob: d73db13df59423db2d74f58e1351801202cedced [file] [log] [blame]
Guido van Rossum3b4ca0d1998-10-10 18:48:31 +00001import tkSimpleDialog
Guido van Rossum504b0bf1999-01-02 21:28:54 +00002
3###$ event <<find>>
4###$ win <Control-f>
5###$ unix <Control-u><Control-u><Control-s>
6
7###$ event <<find-again>>
8###$ win <Control-g>
9###$ win <F3>
10###$ unix <Control-u><Control-s>
11
12###$ event <<find-selection>>
13###$ win <Control-F3>
14###$ unix <Control-s>
15
16###$ event <<find-in-files>>
17###$ win <Alt-F3>
18
19###$ event <<replace>>
20###$ win <Control-h>
21
22###$ event <<goto-line>>
23###$ win <Alt-g>
24###$ unix <Alt-g>
Guido van Rossum3b4ca0d1998-10-10 18:48:31 +000025
26class SearchBinding:
Guido van Rossum3b4ca0d1998-10-10 18:48:31 +000027
Guido van Rossum504b0bf1999-01-02 21:28:54 +000028 windows_keydefs = {
29 '<<find-again>>': ['<Control-g>', '<F3>'],
30 '<<find-in-files>>': ['<Alt-F3>'],
31 '<<find-selection>>': ['<Control-F3>'],
32 '<<find>>': ['<Control-f>'],
33 '<<replace>>': ['<Control-h>'],
34 '<<goto-line>>': ['<Alt-g>'],
35 }
36
37 unix_keydefs = {
38 '<<find-again>>': ['<Control-u><Control-s>'],
39 '<<find-selection>>': ['<Control-s>'],
40 '<<find>>': ['<Control-u><Control-u><Control-s>'],
41 '<<goto-line>>': ['<Alt-g>', '<Meta-g>'],
42 }
43
44 menudefs = [
45 ('edit', [
46 None,
47 ('_Find...', '<<find>>'),
48 ('Find a_gain', '<<find-again>>'),
49 ('Find _selection', '<<find-selection>>'),
50 ('Find in Files...', '<<find-in-files>>'),
51 ('R_eplace...', '<<replace>>'),
52 ('Go to _line', '<<goto-line>>'),
53 ]),
54 ]
55
56 def __init__(self, editwin):
57 self.editwin = editwin
58
59 def find_event(self, event):
60 import SearchDialog
61 SearchDialog.find(self.editwin.text)
62 return "break"
63
64 def find_again_event(self, event):
65 import SearchDialog
66 SearchDialog.find_again(self.editwin.text)
67 return "break"
68
69 def find_selection_event(self, event):
70 import SearchDialog
71 SearchDialog.find_selection(self.editwin.text)
72 return "break"
73
74 def find_in_files_event(self, event):
75 import GrepDialog
76 GrepDialog.grep(self.editwin.text, self.editwin.io, self.editwin.flist)
77 return "break"
78
79 def replace_event(self, event):
80 import ReplaceDialog
81 ReplaceDialog.replace(self.editwin.text)
82 return "break"
83
84 def goto_line_event(self, event):
85 print event
86 text = self.editwin.text
87 lineno = tkSimpleDialog.askinteger("Goto",
88 "Go to line number:",
89 parent=text)
90 if lineno is None:
91 return "break"
92 if lineno <= 0:
93 text.bell()
94 return "break"
95 text.mark_set("insert", "%d.0" % lineno)
96 text.see("insert")