blob: 83ca3a69709332c7276fd1b5cbe6fcd112773b4f [file] [log] [blame]
David Scherer7aced172000-08-15 01:13:23 +00001# Sample extension: zoom a window to maximum height
2
3import re
4import sys
Thomas Wouters0e3f5912006-08-11 14:57:12 +00005import macosxSupport
David Scherer7aced172000-08-15 01:13:23 +00006
7class ZoomHeight:
8
9 menudefs = [
10 ('windows', [
11 ('_Zoom Height', '<<zoom-height>>'),
12 ])
13 ]
Kurt B. Kaiser6655e4b2002-12-31 16:03:23 +000014
David Scherer7aced172000-08-15 01:13:23 +000015 def __init__(self, editwin):
16 self.editwin = editwin
17
18 def zoom_height_event(self, event):
19 top = self.editwin.top
20 zoom_height(top)
21
22def zoom_height(top):
23 geom = top.wm_geometry()
24 m = re.match(r"(\d+)x(\d+)\+(-?\d+)\+(-?\d+)", geom)
25 if not m:
26 top.bell()
27 return
28 width, height, x, y = map(int, m.groups())
29 newheight = top.winfo_screenheight()
30 if sys.platform == 'win32':
31 newy = 0
32 newheight = newheight - 72
Thomas Wouters0e3f5912006-08-11 14:57:12 +000033
34 elif macosxSupport.runningAsOSXApp():
35 # The '88' below is a magic number that avoids placing the bottom
36 # of the window below the panel on my machine. I don't know how
37 # to calculate the correct value for this with tkinter.
38 newy = 22
39 newheight = newheight - newy - 88
40
David Scherer7aced172000-08-15 01:13:23 +000041 else:
Kurt B. Kaiserd0e29262002-12-20 01:22:01 +000042 #newy = 24
43 newy = 0
44 #newheight = newheight - 96
Kurt B. Kaiser6655e4b2002-12-31 16:03:23 +000045 newheight = newheight - 88
David Scherer7aced172000-08-15 01:13:23 +000046 if height >= newheight:
47 newgeom = ""
48 else:
49 newgeom = "%dx%d+%d+%d" % (width, newheight, x, newy)
50 top.wm_geometry(newgeom)