from Dlg import * from Events import * from Evt import * from List import * from Qd import * import Res import string import MacOS ID = 513 def dodialog(items): print 'This is to create a window' # # Create the dialog # d = GetNewDialog(ID, -1) # # Create the list and fill it # tp, h, rect = d.GetDialogItem(2) rect = rect[0], rect[1], rect[2]-15, rect[3]-15 # Space for scrollbars length = (len(items)+1) / 2 list = LNew(rect, (0, 0, 2, length), (0, 0), 0, d, 0, 1, 1, 1) for i in range(len(items)): list.LSetCell(items[i], (i%2, i/2)) # # Draw it. # list.LSetDrawingMode(1) list.LUpdate(self.wid.GetWindowPort().visRgn) # # Do the (modeless) dialog # while 1: ok, ev = WaitNextEvent(0xffff, 10) if not ok: # No event. continue (what, message, when, where, modifiers) = ev if what == updateEvt: # XXXX We just always update our list (sigh...) SetPort(window) list.LUpdate(self.wid.GetWindowPort().visRgn) if IsDialogEvent(ev): # It is a dialog event. See if it's ours. ok, window, item = DialogSelect(ev) if ok: if window == d: # Yes, it is ours. if item == 1: # OK button break elif item == 2: # List (what, message, when, where, modifiers) = ev SetPort(window) if what == mouseDown: local = GlobalToLocal(where) list.LClick(local, modifiers) else: print 'Unexpected item hit' else: print 'Unexpected dialog hit' else: MacOS.HandleEvent(ev) sel = [] for i in range(len(items)): ok, dummycell = list.LGetSelect(0, (i%2, i/2)) if ok: sel.append(list.LGetCell(256, (i%2, i/2))) print 'Your selection:', sel def test(): import os, sys Res.OpenResFile('tlist_dialog.rsrc') dodialog(os.listdir(':')) sys.exit(1) if __name__ == '__main__': test()