diff options
author | Andrew Svetlov <andrew.svetlov@gmail.com> | 2012-11-01 20:44:06 (GMT) |
---|---|---|
committer | Andrew Svetlov <andrew.svetlov@gmail.com> | 2012-11-01 20:44:06 (GMT) |
commit | e2af5098295c97aae8802d8dc7c332bd75e6ab89 (patch) | |
tree | c6d5e954f7e6df92facd3902325ea9109dacb11a /Lib/idlelib/PyShell.py | |
parent | 129f57bc51c129babdb96e12ef1f0e0bc47aa582 (diff) | |
parent | d183767ca4786c00d84e284ad6c89fa3c154bad2 (diff) | |
download | cpython-e2af5098295c97aae8802d8dc7c332bd75e6ab89.zip cpython-e2af5098295c97aae8802d8dc7c332bd75e6ab89.tar.gz cpython-e2af5098295c97aae8802d8dc7c332bd75e6ab89.tar.bz2 |
Merge issue #1207589: Add Cut/Copy/Paste items to IDLE right click Context Menu
Patch by Todd Rovito.
Diffstat (limited to 'Lib/idlelib/PyShell.py')
-rw-r--r-- | Lib/idlelib/PyShell.py | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index 50d6182..3b78f38 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -117,8 +117,14 @@ class PyShellEditorWindow(EditorWindow): old_hook() self.io.set_filename_change_hook(filename_changed_hook) - rmenu_specs = [("Set Breakpoint", "<<set-breakpoint-here>>"), - ("Clear Breakpoint", "<<clear-breakpoint-here>>")] + rmenu_specs = [ + ("Cut", "<<cut>>", "rmenu_check_cut"), + ("Copy", "<<copy>>", "rmenu_check_copy"), + ("Paste", "<<paste>>", "rmenu_check_paste"), + (None, None, None), + ("Set Breakpoint", "<<set-breakpoint-here>>", None), + ("Clear Breakpoint", "<<clear-breakpoint-here>>", None) + ] def set_breakpoint(self, lineno): text = self.text @@ -1256,6 +1262,19 @@ class PyShell(OutputWindow): raise KeyboardInterrupt return count + def rmenu_check_cut(self): + try: + if self.text.compare('sel.first', '<', 'iomark'): + return 'disabled' + except TclError: # no selection, so the index 'sel.first' doesn't exist + return 'disabled' + return super().rmenu_check_cut() + + def rmenu_check_paste(self): + if self.text.compare('insert','<','iomark'): + return 'disabled' + return super().rmenu_check_paste() + class PseudoFile(object): def __init__(self, shell, tags, encoding=None): |