| 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") |