mirror of
https://github.com/python/cpython.git
synced 2025-07-25 12:14:38 +00:00

About 10 IDLE features were implemented as supposedly optional extensions. Their different behavior could be confusing or worse for users and not good for maintenance. Hence the conversion. The main difference for users is that user configurable key bindings for builtin features are now handled uniformly. Now, editing a binding in a keyset only affects its value in the keyset. All bindings are defined together in the system-specific default keysets in config- extensions.def. All custom keysets are saved as a whole in config- extension.cfg. All take effect as soon as one clicks Apply or Ok. The affected events are '<<force-open-completions>>', '<<expand-word>>', '<<force-open-calltip>>', '<<flash-paren>>', '<<format-paragraph>>', '<<run-module>>', '<<check-module>>', and '<<zoom-height>>'. Any (global) customizations made before 3.6.3 will not affect their keyset- specific customization after 3.6.3. and vice versa. Inital patch by Charles Wohlganger, revised by Terry Jan Reedy.
48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
"Zoom a window to maximum height."
|
|
|
|
import re
|
|
import sys
|
|
|
|
from idlelib import macosx
|
|
|
|
|
|
class ZoomHeight:
|
|
|
|
def __init__(self, editwin):
|
|
self.editwin = editwin
|
|
|
|
def zoom_height_event(self, event):
|
|
top = self.editwin.top
|
|
zoom_height(top)
|
|
return "break"
|
|
|
|
|
|
def zoom_height(top):
|
|
geom = top.wm_geometry()
|
|
m = re.match(r"(\d+)x(\d+)\+(-?\d+)\+(-?\d+)", geom)
|
|
if not m:
|
|
top.bell()
|
|
return
|
|
width, height, x, y = map(int, m.groups())
|
|
newheight = top.winfo_screenheight()
|
|
if sys.platform == 'win32':
|
|
newy = 0
|
|
newheight = newheight - 72
|
|
|
|
elif macosx.isAquaTk():
|
|
# The '88' below is a magic number that avoids placing the bottom
|
|
# of the window below the panel on my machine. I don't know how
|
|
# to calculate the correct value for this with tkinter.
|
|
newy = 22
|
|
newheight = newheight - newy - 88
|
|
|
|
else:
|
|
#newy = 24
|
|
newy = 0
|
|
#newheight = newheight - 96
|
|
newheight = newheight - 88
|
|
if height >= newheight:
|
|
newgeom = ""
|
|
else:
|
|
newgeom = "%dx%d+%d+%d" % (width, newheight, x, newy)
|
|
top.wm_geometry(newgeom)
|