From: Guido van Rossum Date: Tue, 7 Mar 2000 18:51:49 +0000 (+0000) Subject: Override the Undo delegator to forbid any changes before the I/O mark. X-Git-Tag: v1.6a1~258 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9de988315a3ac8b87a9881d8d2ebf38d19671442;p=thirdparty%2FPython%2Fcpython.git Override the Undo delegator to forbid any changes before the I/O mark. It beeps if you try to insert or delete before the "iomark" mark. This makes the shell less confusing for newbies. --- diff --git a/Tools/idle/PyShell.py b/Tools/idle/PyShell.py index 6e2673833ac7..cbd7d66bee2e 100644 --- a/Tools/idle/PyShell.py +++ b/Tools/idle/PyShell.py @@ -15,6 +15,7 @@ import tkMessageBox from EditorWindow import EditorWindow, fixwordbreaks from FileList import FileList from ColorDelegator import ColorDelegator +from UndoDelegator import UndoDelegator from OutputWindow import OutputWindow from IdleConf import idleconf import idlever @@ -127,6 +128,28 @@ class ModifiedColorDelegator(ColorDelegator): }) +class ModifiedUndoDelegator(UndoDelegator): + + # Forbid insert/delete before the I/O mark + + def insert(self, index, chars, tags=None): + try: + if self.delegate.compare(index, "<", "iomark"): + self.delegate.bell() + return + except TclError: + pass + UndoDelegator.insert(self, index, chars, tags) + + def delete(self, index1, index2=None): + try: + if self.delegate.compare(index1, "<", "iomark"): + self.delegate.bell() + return + except TclError: + pass + UndoDelegator.delete(self, index1, index2) + class ModifiedInterpreter(InteractiveInterpreter): def __init__(self, tkconsole): @@ -264,6 +287,7 @@ class PyShell(OutputWindow): # Override classes ColorDelegator = ModifiedColorDelegator + UndoDelegator = ModifiedUndoDelegator # Override menu bar specs menu_specs = PyShellEditorWindow.menu_specs[:]