From 0437e890414cd6b34e7ab74d03ba3eab90e29bcb Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 21 Feb 1995 20:56:21 +0000 Subject: fix bug in filterproc interface --- Mac/Lib/test/tdlg.py | 35 +++++++++++++++++++++++++---------- Mac/Modules/dlg/Dlgmodule.c | 2 +- Mac/Modules/dlg/dlggen.py | 27 +-------------------------- Mac/Modules/dlg/dlgsupport.py | 2 +- 4 files changed, 28 insertions(+), 38 deletions(-) diff --git a/Mac/Lib/test/tdlg.py b/Mac/Lib/test/tdlg.py index f234a70..d6fdd97 100644 --- a/Mac/Lib/test/tdlg.py +++ b/Mac/Lib/test/tdlg.py @@ -1,15 +1,30 @@ -# This program requires that a DLOG resource with ID=128 exists. -# You can make one with ResEdit if necessary. +# Function to display a message and wait for the user to hit OK. +# This uses a DLOG resource with ID=256 which is part of the standard +# Python library. +# The ID can be overridden by passing a second parameter. -from Res import * from Dlg import * +from Events import * +import string -ires = 128 +ID = 256 -def filter(*args): print 'filter:', args +def f(d, event): + what, message, when, where, modifiers = event + if what == keyDown and modifiers & cmdKey and \ + string.lower(chr(message & charCodeMask)) == 'o': + return 1 -d = GetNewDialog(ires, -1) -while 1: - n = ModalDialog(filter) - print 'item:', n - if n == 1: break +def message(str = "Hello, world!", id = ID): + d = GetNewDialog(id, -1) + tp, h, rect = d.GetDItem(2) + SetIText(h, str) + while 1: + n = ModalDialog(f) + if n == 1: break + +def test(): + message() + +if __name__ == '__main__': + test() diff --git a/Mac/Modules/dlg/Dlgmodule.c b/Mac/Modules/dlg/Dlgmodule.c index 0cd9dbb..b297e1c 100644 --- a/Mac/Modules/dlg/Dlgmodule.c +++ b/Mac/Modules/dlg/Dlgmodule.c @@ -55,7 +55,7 @@ static pascal Boolean Dlg_UnivFilterProc(DialogPtr dialog, if (callback == NULL) return 0; /* Default behavior */ Dlg_FilterProc_callback = NULL; /* We'll restore it when call successful */ - args = Py_BuildValue("O&s#", DlgObj_New, dialog, event, (int)sizeof(EventRecord)); + args = Py_BuildValue("O&O&", WinObj_WhichWindow, dialog, PyMac_BuildEventRecord, event); if (args == NULL) res = NULL; else { diff --git a/Mac/Modules/dlg/dlggen.py b/Mac/Modules/dlg/dlggen.py index ea64ab7..bd65cd0 100644 --- a/Mac/Modules/dlg/dlggen.py +++ b/Mac/Modules/dlg/dlggen.py @@ -20,16 +20,6 @@ f = Function(DialogPtr, 'GetNewDialog', ) functions.append(f) -f = Function(void, 'CouldDialog', - (short, 'dialogID', InMode), -) -functions.append(f) - -f = Function(void, 'FreeDialog', - (short, 'dialogID', InMode), -) -functions.append(f) - f = Function(void, 'ParamText', (ConstStr255Param, 'param0', InMode), (ConstStr255Param, 'param1', InMode), @@ -61,12 +51,6 @@ f = Method(void, 'DrawDialog', ) methods.append(f) -f = Method(void, 'UpdtDialog', - (DialogPtr, 'theDialog', InMode), - (RgnHandle, 'updateRgn', InMode), -) -methods.append(f) - f = Method(void, 'UpdateDialog', (DialogPtr, 'theDialog', InMode), (RgnHandle, 'updateRgn', InMode), @@ -97,16 +81,6 @@ f = Function(short, 'CautionAlert', ) functions.append(f) -f = Function(void, 'CouldAlert', - (short, 'alertID', InMode), -) -functions.append(f) - -f = Function(void, 'FreeAlert', - (short, 'alertID', InMode), -) -functions.append(f) - f = Method(void, 'GetDItem', (DialogPtr, 'theDialog', InMode), (short, 'itemNo', InMode), @@ -222,3 +196,4 @@ f = Method(void, 'ShortenDITL', (short, 'numberItems', InMode), ) methods.append(f) + diff --git a/Mac/Modules/dlg/dlgsupport.py b/Mac/Modules/dlg/dlgsupport.py index 1eb5576..d3491fe 100644 --- a/Mac/Modules/dlg/dlgsupport.py +++ b/Mac/Modules/dlg/dlgsupport.py @@ -40,7 +40,7 @@ static pascal Boolean Dlg_UnivFilterProc(DialogPtr dialog, if (callback == NULL) return 0; /* Default behavior */ Dlg_FilterProc_callback = NULL; /* We'll restore it when call successful */ - args = Py_BuildValue("O&s#", DlgObj_New, dialog, event, (int)sizeof(EventRecord)); + args = Py_BuildValue("O&O&", WinObj_WhichWindow, dialog, PyMac_BuildEventRecord, event); if (args == NULL) res = NULL; else { -- cgit v0.12