mirror of https://github.com/python/cpython
80 lines
1.8 KiB
Python
80 lines
1.8 KiB
Python
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()
|