98 lines
2.6 KiB
Python
98 lines
2.6 KiB
Python
import tkSimpleDialog
|
|
|
|
###$ event <<find>>
|
|
###$ win <Control-f>
|
|
###$ unix <Control-u><Control-u><Control-s>
|
|
|
|
###$ event <<find-again>>
|
|
###$ win <Control-g>
|
|
###$ win <F3>
|
|
###$ unix <Control-u><Control-s>
|
|
|
|
###$ event <<find-selection>>
|
|
###$ win <Control-F3>
|
|
###$ unix <Control-s>
|
|
|
|
###$ event <<find-in-files>>
|
|
###$ win <Alt-F3>
|
|
|
|
###$ event <<replace>>
|
|
###$ win <Control-h>
|
|
|
|
###$ event <<goto-line>>
|
|
###$ win <Alt-g>
|
|
###$ unix <Alt-g>
|
|
|
|
class SearchBinding:
|
|
|
|
windows_keydefs = {
|
|
'<<find-again>>': ['<Control-g>', '<F3>'],
|
|
'<<find-in-files>>': ['<Alt-F3>'],
|
|
'<<find-selection>>': ['<Control-F3>'],
|
|
'<<find>>': ['<Control-f>'],
|
|
'<<replace>>': ['<Control-h>'],
|
|
'<<goto-line>>': ['<Alt-g>'],
|
|
}
|
|
|
|
unix_keydefs = {
|
|
'<<find-again>>': ['<Control-u><Control-s>'],
|
|
'<<find-in-files>>': ['<Alt-s>', '<Meta-s>'],
|
|
'<<find-selection>>': ['<Control-s>'],
|
|
'<<find>>': ['<Control-u><Control-u><Control-s>'],
|
|
'<<replace>>': ['<Control-r>'],
|
|
'<<goto-line>>': ['<Alt-g>', '<Meta-g>'],
|
|
}
|
|
|
|
menudefs = [
|
|
('edit', [
|
|
None,
|
|
('_Find...', '<<find>>'),
|
|
('Find a_gain', '<<find-again>>'),
|
|
('Find _selection', '<<find-selection>>'),
|
|
('Find in Files...', '<<find-in-files>>'),
|
|
('R_eplace...', '<<replace>>'),
|
|
('Go to _line', '<<goto-line>>'),
|
|
]),
|
|
]
|
|
|
|
def __init__(self, editwin):
|
|
self.editwin = editwin
|
|
|
|
def find_event(self, event):
|
|
import SearchDialog
|
|
SearchDialog.find(self.editwin.text)
|
|
return "break"
|
|
|
|
def find_again_event(self, event):
|
|
import SearchDialog
|
|
SearchDialog.find_again(self.editwin.text)
|
|
return "break"
|
|
|
|
def find_selection_event(self, event):
|
|
import SearchDialog
|
|
SearchDialog.find_selection(self.editwin.text)
|
|
return "break"
|
|
|
|
def find_in_files_event(self, event):
|
|
import GrepDialog
|
|
GrepDialog.grep(self.editwin.text, self.editwin.io, self.editwin.flist)
|
|
return "break"
|
|
|
|
def replace_event(self, event):
|
|
import ReplaceDialog
|
|
ReplaceDialog.replace(self.editwin.text)
|
|
return "break"
|
|
|
|
def goto_line_event(self, event):
|
|
text = self.editwin.text
|
|
lineno = tkSimpleDialog.askinteger("Goto",
|
|
"Go to line number:",
|
|
parent=text)
|
|
if lineno is None:
|
|
return "break"
|
|
if lineno <= 0:
|
|
text.bell()
|
|
return "break"
|
|
text.mark_set("insert", "%d.0" % lineno)
|
|
text.see("insert")
|