mirror of https://github.com/python/cpython
bpo-22703: IDLE: Improve Code Context and Zoom Height menu labels (GH-11214)
The Code Context menu label now toggles between Show/Hide Code Context. The Zoom Height menu now toggles between Zoom/Restore Height. Zoom Height has moved from the Window menu to the Options menu. https://bugs.python.org/issue22703
This commit is contained in:
parent
87667c54c6
commit
c1b4b0f616
|
@ -275,7 +275,12 @@ Configure IDLE
|
||||||
menu. For more, see
|
menu. For more, see
|
||||||
:ref:`Setting preferences <preferences>` under Help and preferences.
|
:ref:`Setting preferences <preferences>` under Help and preferences.
|
||||||
|
|
||||||
Code Context (toggle)(Editor Window only)
|
Zoom/Restore Height
|
||||||
|
Toggles the window between normal size and maximum height. The initial size
|
||||||
|
defaults to 40 lines by 80 chars unless changed on the General tab of the
|
||||||
|
Configure IDLE dialog.
|
||||||
|
|
||||||
|
Show/Hide Code Context (Editor Window only)
|
||||||
Open a pane at the top of the edit window which shows the block context
|
Open a pane at the top of the edit window which shows the block context
|
||||||
of the code which has scrolled above the top of the window. See
|
of the code which has scrolled above the top of the window. See
|
||||||
:ref:`Code Context <code-context>` in the Editing and Navigation section below.
|
:ref:`Code Context <code-context>` in the Editing and Navigation section below.
|
||||||
|
@ -283,13 +288,8 @@ Code Context (toggle)(Editor Window only)
|
||||||
Window menu (Shell and Editor)
|
Window menu (Shell and Editor)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Zoom Height
|
Lists the names of all open windows; select one to bring it to the foreground
|
||||||
Toggles the window between normal size and maximum height. The initial size
|
(deiconifying it if necessary).
|
||||||
defaults to 40 lines by 80 chars unless changed on the General tab of the
|
|
||||||
Configure IDLE dialog.
|
|
||||||
|
|
||||||
The rest of this menu lists the names of all open windows; select one to bring
|
|
||||||
it to the foreground (deiconifying it if necessary).
|
|
||||||
|
|
||||||
Help menu (Shell and Editor)
|
Help menu (Shell and Editor)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
@ -3,6 +3,11 @@ Released on 2019-10-20?
|
||||||
======================================
|
======================================
|
||||||
|
|
||||||
|
|
||||||
|
bpo-22703: Improve the Code Context and Zoom Height menu labels.
|
||||||
|
The Code Context menu label now toggles between Show/Hide Code Context.
|
||||||
|
The Zoom Height menu now toggles between Zoom/Restore Height.
|
||||||
|
Zoom Height has moved from the Window menu to the Options menu.
|
||||||
|
|
||||||
bpo-35521: Document the editor code context feature.
|
bpo-35521: Document the editor code context feature.
|
||||||
Add some internal references within the IDLE doc.
|
Add some internal references within the IDLE doc.
|
||||||
|
|
||||||
|
|
|
@ -122,9 +122,13 @@ class CodeContext:
|
||||||
# thus ensuring that it will appear directly above text_frame.
|
# thus ensuring that it will appear directly above text_frame.
|
||||||
self.context.pack(side=TOP, fill=X, expand=False,
|
self.context.pack(side=TOP, fill=X, expand=False,
|
||||||
before=self.editwin.text_frame)
|
before=self.editwin.text_frame)
|
||||||
|
menu_status = 'Hide'
|
||||||
else:
|
else:
|
||||||
self.context.destroy()
|
self.context.destroy()
|
||||||
self.context = None
|
self.context = None
|
||||||
|
menu_status = 'Show'
|
||||||
|
self.editwin.update_menu_label(menu='options', index='* Code Context',
|
||||||
|
label=f'{menu_status} Code Context')
|
||||||
return "break"
|
return "break"
|
||||||
|
|
||||||
def get_context(self, new_topvisible, stopline=1, stopindent=0):
|
def get_context(self, new_topvisible, stopline=1, stopindent=0):
|
||||||
|
|
|
@ -446,6 +446,11 @@ class EditorWindow(object):
|
||||||
menu.delete(self.wmenu_end+1, end)
|
menu.delete(self.wmenu_end+1, end)
|
||||||
window.add_windows_to_menu(menu)
|
window.add_windows_to_menu(menu)
|
||||||
|
|
||||||
|
def update_menu_label(self, menu, index, label):
|
||||||
|
"Update label for menu item at index ."
|
||||||
|
menuitem = self.menudict[menu]
|
||||||
|
menuitem.entryconfig(index, label=label)
|
||||||
|
|
||||||
def handle_yview(self, event, *args):
|
def handle_yview(self, event, *args):
|
||||||
"Handle scrollbar."
|
"Handle scrollbar."
|
||||||
if event == 'moveto':
|
if event == 'moveto':
|
||||||
|
|
|
@ -40,6 +40,10 @@ class DummyEditwin:
|
||||||
self.top = root
|
self.top = root
|
||||||
self.text_frame = frame
|
self.text_frame = frame
|
||||||
self.text = text
|
self.text = text
|
||||||
|
self.label = ''
|
||||||
|
|
||||||
|
def update_menu_label(self, **kwargs):
|
||||||
|
self.label = kwargs['label']
|
||||||
|
|
||||||
|
|
||||||
class CodeContextTest(unittest.TestCase):
|
class CodeContextTest(unittest.TestCase):
|
||||||
|
@ -127,10 +131,12 @@ class CodeContextTest(unittest.TestCase):
|
||||||
eq(cc.context['fg'], cc.colors['foreground'])
|
eq(cc.context['fg'], cc.colors['foreground'])
|
||||||
eq(cc.context['bg'], cc.colors['background'])
|
eq(cc.context['bg'], cc.colors['background'])
|
||||||
eq(cc.context.get('1.0', 'end-1c'), '')
|
eq(cc.context.get('1.0', 'end-1c'), '')
|
||||||
|
eq(cc.editwin.label, 'Hide Code Context')
|
||||||
|
|
||||||
# Toggle off.
|
# Toggle off.
|
||||||
eq(toggle(), 'break')
|
eq(toggle(), 'break')
|
||||||
self.assertIsNone(cc.context)
|
self.assertIsNone(cc.context)
|
||||||
|
eq(cc.editwin.label, 'Show Code Context')
|
||||||
|
|
||||||
def test_get_context(self):
|
def test_get_context(self):
|
||||||
eq = self.assertEqual
|
eq = self.assertEqual
|
||||||
|
|
|
@ -94,11 +94,12 @@ menudefs = [
|
||||||
|
|
||||||
('options', [
|
('options', [
|
||||||
('Configure _IDLE', '<<open-config-dialog>>'),
|
('Configure _IDLE', '<<open-config-dialog>>'),
|
||||||
('_Code Context', '<<toggle-code-context>>'),
|
None,
|
||||||
|
('Show _Code Context', '<<toggle-code-context>>'),
|
||||||
|
('Zoom Height', '<<zoom-height>>'),
|
||||||
]),
|
]),
|
||||||
|
|
||||||
('window', [
|
('window', [
|
||||||
('Zoom Height', '<<zoom-height>>'),
|
|
||||||
]),
|
]),
|
||||||
|
|
||||||
('help', [
|
('help', [
|
||||||
|
|
|
@ -13,7 +13,10 @@ class ZoomHeight:
|
||||||
|
|
||||||
def zoom_height_event(self, event=None):
|
def zoom_height_event(self, event=None):
|
||||||
top = self.editwin.top
|
top = self.editwin.top
|
||||||
zoom_height(top)
|
zoomed = zoom_height(top)
|
||||||
|
menu_status = 'Restore' if zoomed else 'Zoom'
|
||||||
|
self.editwin.update_menu_label(menu='options', index='* Height',
|
||||||
|
label=f'{menu_status} Height')
|
||||||
return "break"
|
return "break"
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,6 +49,7 @@ def zoom_height(top):
|
||||||
else:
|
else:
|
||||||
newgeom = "%dx%d+%d+%d" % (width, newheight, x, newy)
|
newgeom = "%dx%d+%d+%d" % (width, newheight, x, newy)
|
||||||
top.wm_geometry(newgeom)
|
top.wm_geometry(newgeom)
|
||||||
|
return newgeom != ""
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
The Code Context menu label now toggles between Show/Hide Code Context.
|
||||||
|
The Zoom Height menu now toggles between Zoom/Restore Height.
|
||||||
|
Zoom Height has moved from the Window menu to the Options menu.
|
Loading…
Reference in New Issue