equal
deleted
inserted
replaced
|
1 # Sample extension: zoom a window to maximum height |
|
2 |
|
3 import re |
|
4 import sys |
|
5 import macosxSupport |
|
6 |
|
7 class ZoomHeight: |
|
8 |
|
9 menudefs = [ |
|
10 ('windows', [ |
|
11 ('_Zoom Height', '<<zoom-height>>'), |
|
12 ]) |
|
13 ] |
|
14 |
|
15 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 |
|
22 def 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 |
|
33 |
|
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 |
|
41 else: |
|
42 #newy = 24 |
|
43 newy = 0 |
|
44 #newheight = newheight - 96 |
|
45 newheight = newheight - 88 |
|
46 if height >= newheight: |
|
47 newgeom = "" |
|
48 else: |
|
49 newgeom = "%dx%d+%d+%d" % (width, newheight, x, newy) |
|
50 top.wm_geometry(newgeom) |