# Sample extension: zoom a window to maximum height



import re

import sys

import macosxSupport



class ZoomHeight:



    menudefs = [

        ('windows', [

            ('_Zoom Height', '<<zoom-height>>'),

         ])

    ]



    def __init__(self, editwin):

        self.editwin = editwin



    def zoom_height_event(self, event):

        top = self.editwin.top

        zoom_height(top)



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 macosxSupport.runningAsOSXApp():

        # 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)

