From 9de988315a3ac8b87a9881d8d2ebf38d19671442 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 7 Mar 2000 18:51:49 +0000 Subject: 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. --- Tools/idle/PyShell.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Tools/idle/PyShell.py b/Tools/idle/PyShell.py index 6e26738..cbd7d66 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[:] -- cgit v0.12