PageRenderTime 51ms CodeModel.GetById 30ms app.highlight 4ms RepoModel.GetById 16ms app.codeStats 0ms

/Lib/idlelib/ZoomHeight.py

http://unladen-swallow.googlecode.com/
Python | 50 lines | 36 code | 8 blank | 6 comment | 4 complexity | 813f631e76785d8a4bf1cdf027eed391 MD5 | raw file
 1# Sample extension: zoom a window to maximum height
 2
 3import re
 4import sys
 5import macosxSupport
 6
 7class 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
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
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)