def windowbounds(preferredsize, minsize=None): "Return sensible window bounds" global _windowcounter if len(preferredsize) == 4: bounds = l, t, r, b = preferredsize desktopRgn = Win.GetGrayRgn() tempRgn = Qd.NewRgn() Qd.RectRgn(tempRgn, bounds) union = Qd.UnionRgn(tempRgn, desktopRgn, tempRgn) equal = Qd.EqualRgn(tempRgn, desktopRgn) Qd.DisposeRgn(tempRgn) if equal: return bounds else: preferredsize = r - l, b - t if not minsize: minsize = preferredsize minwidth, minheight = minsize width, height = preferredsize sl, st, sr, sb = screenbounds = Qd.InsetRect( Qd.GetQDGlobalsScreenBits().bounds, 4, 4) l, t = getnextwindowpos() if (l + width) > sr: _windowcounter = 0 l, t = getnextwindowpos() r = l + width b = t + height if (t + height) > sb: b = sb if (b - t) < minheight: b = t + minheight return l, t, r, b
while 1: n = ModalDialog(None) if n == 1: return default if n == 2: return 1 if n == 3: return 0 if n == 4: return -1 return try: screenbounds = Qd.GetQDGlobalsScreenBits().bounds except AttributeError: raise ImportError('QuickDraw APIs not available') screenbounds = (screenbounds[0] + 4, screenbounds[1] + 4, screenbounds[2] - 4, screenbounds[3] - 4) kControlProgressBarIndeterminateTag = 'inde' class ProgressBar: def __init__(self, title='Working...', maxval=0, label='', id=263): self.w = None self.d = None _initialize() self.d = GetNewDialog(id, -1) self.w = self.d.GetDialogWindow()
def getwindowbounds(self, size, minsize=None): screenbounds = sl, st, sr, sb = Qd.GetQDGlobalsScreenBits().bounds w, h = size l = sl + (sr - sl - w) / 2 t = st + (sb - st - h) / 3 return l, t, l + w, t + h