diff --git a/Lib/idlelib/AutoExpand.py b/Lib/idlelib/AutoExpand.py index 88018305fc2..9e93d57d652 100644 --- a/Lib/idlelib/AutoExpand.py +++ b/Lib/idlelib/AutoExpand.py @@ -9,7 +9,7 @@ class AutoExpand: menudefs = [ ('edit', [ - ('E_xpand word', '<>'), + ('E_xpand Word', '<>'), ]), ] diff --git a/Lib/idlelib/Bindings.py b/Lib/idlelib/Bindings.py index ee81bac7fb8..b177a5ed451 100644 --- a/Lib/idlelib/Bindings.py +++ b/Lib/idlelib/Bindings.py @@ -55,13 +55,16 @@ menudefs = [ ('run',[ ('Python Shell', '<>'), ]), - ('debug', [ + ('shell', [ + ('_View Last Restart', '<>'), + ('_Restart Shell', '<>'), + None, ('_Go to File/Line', '<>'), - ('_Stack Viewer', '<>'), ('!_Debugger', '<>'), + ('_Stack Viewer', '<>'), ('!_Auto-open Stack Viewer', '<>' ), ]), - ('settings', [ + ('options', [ ('_Configure Idle...', '<>'), None, ('Revert to _Default Settings', '<>'), @@ -69,7 +72,6 @@ menudefs = [ ('help', [ ('_IDLE Help...', '<>'), ('Python _Documentation...', '<>'), - ('_Advice...', '<>'), ('View IDLE _Readme...', '<>'), None, ('_About IDLE...', '<>'), diff --git a/Lib/idlelib/EditorWindow.py b/Lib/idlelib/EditorWindow.py index 96a894a4b55..47256dc6280 100644 --- a/Lib/idlelib/EditorWindow.py +++ b/Lib/idlelib/EditorWindow.py @@ -60,6 +60,7 @@ class EditorWindow: 'recent-files.lst') self.vbar = vbar = Scrollbar(top, name='vbar') self.text_frame = text_frame = Frame(top) + self.width = idleConf.GetOption('main','EditorWindow','width') self.text = text = Text(text_frame, name='text', padx=5, wrap='none', foreground=idleConf.GetHighlight(currentTheme, 'normal',fgBg='fg'), @@ -71,7 +72,7 @@ class EditorWindow: 'hilite',fgBg='bg'), insertbackground=idleConf.GetHighlight(currentTheme, 'cursor',fgBg='fg'), - width=idleConf.GetOption('main','EditorWindow','width'), + width=self.width, height=idleConf.GetOption('main','EditorWindow','height') ) self.createmenubar() @@ -84,7 +85,6 @@ class EditorWindow: text.bind("<>", self.paste) text.bind("<>", self.center_insert_event) text.bind("<>", self.help_dialog) - text.bind("<>", self.good_advice) text.bind("<>", self.view_readme) text.bind("<>", self.python_docs) text.bind("<>", self.about_dialog) @@ -213,7 +213,7 @@ class EditorWindow: ("edit", "_Edit"), ("format", "F_ormat"), ("run", "_Run"), - ("settings", "_Settings"), + ("options", "_Options"), ("windows", "_Windows"), ("help", "_Help"), ] @@ -277,9 +277,6 @@ class EditorWindow: def config_dialog(self, event=None): configDialog.ConfigDialog(self.top,'Settings') - def good_advice(self, event=None): - tkMessageBox.showinfo('Advice', "Don't Panic!", master=self.text) - def view_readme(self, event=None): fn=os.path.join(os.path.abspath(os.path.dirname(__file__)),'README.txt') textView.TextViewer(self.top,'IDLEfork - README',fn) @@ -666,6 +663,13 @@ class EditorWindow: text = self.text return int(float(text.index(mark))) + def get_geometry(self): + "Return (width, height, x, y)" + geom = self.top.wm_geometry() + m = re.match(r"(\d+)x(\d+)\+(-?\d+)\+(-?\d+)", geom) + tuple = (map(int, m.groups())) + return tuple + def close_event(self, event): self.close() diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index 61143594fb3..77e4cf1e01c 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -366,6 +366,12 @@ class ModifiedInterpreter(InteractiveInterpreter): self.spawn_subprocess() self.rpcclt.accept() self.transfer_path() + # annotate restart in shell window and mark it + console = self.tkconsole + halfbar = ((int(console.width) - 16) // 2) * '=' + console.write(halfbar + ' RESTART ' + halfbar) + console.text.mark_set("restart", "end-1c") + console.text.mark_gravity("restart", "left") # restart remote debugger if debug: gui = RemoteDebugger.restart_subprocess_debugger(self.rpcclt) @@ -652,8 +658,8 @@ class PyShell(OutputWindow): menu_specs = [ ("file", "_File"), ("edit", "_Edit"), - ("debug", "_Debug"), - ("settings", "_Settings"), + ("shell", "_Shell"), + ("options", "_Options"), ("windows", "_Windows"), ("help", "_Help"), ] @@ -687,6 +693,8 @@ class PyShell(OutputWindow): text.bind("<>", self.toggle_debugger) text.bind("<>", self.flist.open_shell) text.bind("<>", self.toggle_jit_stack_viewer) + text.bind("<>", self.view_restart_mark) + text.bind("<>", self.restart_shell) # self.save_stdout = sys.stdout self.save_stderr = sys.stderr @@ -727,7 +735,7 @@ class PyShell(OutputWindow): db = self.interp.getdebugger() self.setvar("<>", not not db) - def toggle_jit_stack_viewer( self, event=None): + def toggle_jit_stack_viewer(self, event=None): pass # All we need is the variable def close_debugger(self): @@ -1024,6 +1032,14 @@ class PyShell(OutputWindow): from StackViewer import StackBrowser sv = StackBrowser(self.root, self.flist) + def view_restart_mark(self, event=None): + self.text.see("iomark") + self.text.see("restart") + + def restart_shell(self, event=None): + self.interp.restart_subprocess() + self.showprompt() + def showprompt(self): self.resetoutput() try: diff --git a/Lib/idlelib/config-keys.def b/Lib/idlelib/config-keys.def index 821ee120182..ff4debc809c 100644 --- a/Lib/idlelib/config-keys.def +++ b/Lib/idlelib/config-keys.def @@ -10,7 +10,7 @@ [IDLE Classic Windows] copy= cut= -paste= +paste= beginning-of-line= center-insert= close-all-windows= @@ -22,6 +22,7 @@ python-context-help= history-next= history-previous= interrupt-execution= +view-restart= open-class-browser= open-module= open-new-window= @@ -67,6 +68,7 @@ end-of-file= history-next= history-previous= interrupt-execution= +view-restart= open-class-browser= open-module= open-new-window= @@ -116,6 +118,7 @@ python-context-help= history-next= history-previous= interrupt-execution= +view-restart= open-class-browser= open-module= open-new-window= diff --git a/Lib/idlelib/configHandler.py b/Lib/idlelib/configHandler.py index 71558a8f6d5..cf2b6dbc826 100644 --- a/Lib/idlelib/configHandler.py +++ b/Lib/idlelib/configHandler.py @@ -508,6 +508,7 @@ class IdleConf: '<>': [''], '<>': [''], '<>': [''], + '<>': [''], '<>': [''], '<>': [''], '<>': [''], diff --git a/Lib/idlelib/help.txt b/Lib/idlelib/help.txt index dfba6c0caf2..5d4acd0f888 100644 --- a/Lib/idlelib/help.txt +++ b/Lib/idlelib/help.txt @@ -1,4 +1,4 @@ -[See end for ** TIPS ] +[See end for ** TIPS on using IDLE] Click on the dotted line at the top of a menu to "tear it off": a separate window containing the menu is created. @@ -11,7 +11,7 @@ File Menu: Open Module... -- open an existing module (searches sys.path) Class Browser -- show classes and methods in current file Path Browser -- show sys.path directories, modules, classes - and methods + and methods --- Save -- save current window to the associated file (unsaved windows have a * before and after the window title) @@ -64,7 +64,18 @@ Run Menu (only in Edit window): Check Module -- Run a syntax check on the module Run Script -- Execute the current file in the __main__ namespace -Settings Menu: +Shell Menu (only in Shell window): + + View Last Restart -- Scroll the shell window to the last restart + Restart Shell -- Restart the interpreter with a fresh environment + --- + Go to File/Line -- look around the insert point for a filename + and linenumber, open the file, and show the line + Debugger (toggle) -- Run commands in the shell under the debugger + Stack Viewer -- show the stack traceback of the last exception + Auto-open Stack Viewer (toggle) -- Open stack viewer on traceback + +Options Menu: Configure IDLE -- Open a configuration dialog. Fonts, indentation, keybindings, and color themes may be altered. @@ -81,20 +92,11 @@ Windows Menu: select one to bring it to the foreground (deiconifying it if necessary). -Debug Menu (in the Python Shell window only): - - Go to File/Line -- look around the insert point for a filename - and linenumber, open the file, and show the line - Stack Viewer -- show the stack traceback of the last exception - Debugger (toggle) -- Run commands in the shell under the debugger - Auto-open Stack Viewer (toggle) -- Open stack viewer on traceback - Help Menu: IDLE Help -- Display this file Python Documentation -- Access local Python documentation, if installed. Otherwise access python.org. - Advice -- Emergency Only! IDLE Readme -- Background discussion and change details --- About IDLE --- Version, copyright, license, credits