Commit 6785df78 authored by Jack Jansen's avatar Jack Jansen

First step in porting MacPython modules to OSX/unix: break all references...

First step in porting MacPython modules to OSX/unix: break all references between modules except for the obj_New() and obj_Convert() routines, the PyArg_Parse and Py_BuildValue helpers.

And these can now be vectored through glue routines (by defining USE_TOOLBOX_OBJECT_GLUE) which will do the necessary imports, whereupon the module's init routine will tell the glue routine about the real conversion routine address and everything is fine again.
parent 25a209cf
...@@ -11,6 +11,14 @@ ...@@ -11,6 +11,14 @@
#include <AppleEvents.h> #include <AppleEvents.h>
#include <AEObjects.h> #include <AEObjects.h>
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_AEDesc_New(AEDesc *);
extern int _AEDesc_Convert(PyObject *, AEDesc *);
#define AEDesc_New _AEDesc_New
#define AEDesc_Convert _AEDesc_Convert
#endif
static pascal OSErr GenericEventHandler(); /* Forward */ static pascal OSErr GenericEventHandler(); /* Forward */
AEEventHandlerUPP upp_GenericEventHandler; AEEventHandlerUPP upp_GenericEventHandler;
...@@ -1331,6 +1339,8 @@ void initAE() ...@@ -1331,6 +1339,8 @@ void initAE()
upp_AEIdleProc = NewAEIdleProc(AEIdleProc); upp_AEIdleProc = NewAEIdleProc(AEIdleProc);
upp_GenericEventHandler = NewAEEventHandlerProc(GenericEventHandler); upp_GenericEventHandler = NewAEEventHandlerProc(GenericEventHandler);
PyMac_INIT_TOOLBOX_OBJECT_NEW(AEDesc_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(AEDesc_Convert);
m = Py_InitModule("AE", AE_methods); m = Py_InitModule("AE", AE_methods);
......
...@@ -85,6 +85,14 @@ includestuff = includestuff + """ ...@@ -85,6 +85,14 @@ includestuff = includestuff + """
#include <AppleEvents.h> #include <AppleEvents.h>
#include <AEObjects.h> #include <AEObjects.h>
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_AEDesc_New(AEDesc *);
extern int _AEDesc_Convert(PyObject *, AEDesc *);
#define AEDesc_New _AEDesc_New
#define AEDesc_Convert _AEDesc_Convert
#endif
static pascal OSErr GenericEventHandler(); /* Forward */ static pascal OSErr GenericEventHandler(); /* Forward */
AEEventHandlerUPP upp_GenericEventHandler; AEEventHandlerUPP upp_GenericEventHandler;
...@@ -138,6 +146,8 @@ GenericEventHandler(const AppleEvent *request, AppleEvent *reply, unsigned long ...@@ -138,6 +146,8 @@ GenericEventHandler(const AppleEvent *request, AppleEvent *reply, unsigned long
initstuff = initstuff + """ initstuff = initstuff + """
upp_AEIdleProc = NewAEIdleProc(AEIdleProc); upp_AEIdleProc = NewAEIdleProc(AEIdleProc);
upp_GenericEventHandler = NewAEEventHandlerProc(GenericEventHandler); upp_GenericEventHandler = NewAEEventHandlerProc(GenericEventHandler);
PyMac_INIT_TOOLBOX_OBJECT_NEW(AEDesc_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(AEDesc_Convert);
""" """
module = MacModule('AE', 'AE', includestuff, finalstuff, initstuff) module = MacModule('AE', 'AE', includestuff, finalstuff, initstuff)
......
...@@ -9,6 +9,17 @@ ...@@ -9,6 +9,17 @@
#include "pymactoolbox.h" #include "pymactoolbox.h"
#include <Components.h> #include <Components.h>
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_CmpObj_New(Component);
extern int _CmpObj_Convert(PyObject *, Component *);
extern PyObject *_CmpInstObj_New(ComponentInstance);
extern int _CmpInstObj_Convert(PyObject *, ComponentInstance *);
#define CmpObj_New _CmpObj_New
#define CmpObj_Convert _CmpObj_Convert
#define CmpInstObj_New _CmpInstObj_New
#define CmpInstObj_Convert _CmpInstObj_Convert
#endif
/* /*
** Parse/generate ComponentDescriptor records ** Parse/generate ComponentDescriptor records
...@@ -825,6 +836,11 @@ void initCm() ...@@ -825,6 +836,11 @@ void initCm()
PyMac_INIT_TOOLBOX_OBJECT_NEW(CmpObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CmpObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(CmpInstObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CmpInstObj_Convert);
m = Py_InitModule("Cm", Cm_methods); m = Py_InitModule("Cm", Cm_methods);
d = PyModule_GetDict(m); d = PyModule_GetDict(m);
......
...@@ -22,6 +22,17 @@ from macsupport import * ...@@ -22,6 +22,17 @@ from macsupport import *
includestuff = includestuff + """ includestuff = includestuff + """
#include <%s>""" % MACHEADERFILE + """ #include <%s>""" % MACHEADERFILE + """
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_CmpObj_New(Component);
extern int _CmpObj_Convert(PyObject *, Component *);
extern PyObject *_CmpInstObj_New(ComponentInstance);
extern int _CmpInstObj_Convert(PyObject *, ComponentInstance *);
#define CmpObj_New _CmpObj_New
#define CmpObj_Convert _CmpObj_Convert
#define CmpInstObj_New _CmpInstObj_New
#define CmpInstObj_Convert _CmpInstObj_Convert
#endif
/* /*
** Parse/generate ComponentDescriptor records ** Parse/generate ComponentDescriptor records
...@@ -52,6 +63,13 @@ CmpDesc_Convert(v, p_itself) ...@@ -52,6 +63,13 @@ CmpDesc_Convert(v, p_itself)
""" """
initstuff = initstuff + """
PyMac_INIT_TOOLBOX_OBJECT_NEW(CmpObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CmpObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(CmpInstObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CmpInstObj_Convert);
"""
ComponentDescription = OpaqueType('ComponentDescription', 'CmpDesc') ComponentDescription = OpaqueType('ComponentDescription', 'CmpDesc')
Component = OpaqueByValueType('Component', C_OBJECTPREFIX) Component = OpaqueByValueType('Component', C_OBJECTPREFIX)
ComponentInstance = OpaqueByValueType('ComponentInstance', CI_OBJECTPREFIX) ComponentInstance = OpaqueByValueType('ComponentInstance', CI_OBJECTPREFIX)
......
...@@ -13,6 +13,14 @@ ...@@ -13,6 +13,14 @@
#include <ControlDefinitions.h> #include <ControlDefinitions.h>
#endif #endif
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_CtlObj_New(ControlHandle);
extern int _CtlObj_Convert(PyObject *, ControlHandle *);
#define CtlObj_New _CtlObj_New
#define CtlObj_Convert _CtlObj_Convert
#endif
staticforward PyObject *CtlObj_WhichControl(ControlHandle); staticforward PyObject *CtlObj_WhichControl(ControlHandle);
#define as_Control(h) ((ControlHandle)h) #define as_Control(h) ((ControlHandle)h)
...@@ -2925,6 +2933,8 @@ void initCtl() ...@@ -2925,6 +2933,8 @@ void initCtl()
myidleproc_upp = NewControlUserPaneIdleProc(myidleproc); myidleproc_upp = NewControlUserPaneIdleProc(myidleproc);
myhittestproc_upp = NewControlUserPaneHitTestProc(myhittestproc); myhittestproc_upp = NewControlUserPaneHitTestProc(myhittestproc);
mytrackingproc_upp = NewControlUserPaneTrackingProc(mytrackingproc); mytrackingproc_upp = NewControlUserPaneTrackingProc(mytrackingproc);
PyMac_INIT_TOOLBOX_OBJECT_NEW(CtlObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CtlObj_Convert);
m = Py_InitModule("Ctl", Ctl_methods); m = Py_InitModule("Ctl", Ctl_methods);
......
...@@ -54,6 +54,14 @@ includestuff = includestuff + """ ...@@ -54,6 +54,14 @@ includestuff = includestuff + """
#include <ControlDefinitions.h> #include <ControlDefinitions.h>
#endif #endif
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_CtlObj_New(ControlHandle);
extern int _CtlObj_Convert(PyObject *, ControlHandle *);
#define CtlObj_New _CtlObj_New
#define CtlObj_Convert _CtlObj_Convert
#endif
staticforward PyObject *CtlObj_WhichControl(ControlHandle); staticforward PyObject *CtlObj_WhichControl(ControlHandle);
#define as_Control(h) ((ControlHandle)h) #define as_Control(h) ((ControlHandle)h)
...@@ -316,6 +324,8 @@ mydrawproc_upp = NewControlUserPaneDrawProc(mydrawproc); ...@@ -316,6 +324,8 @@ mydrawproc_upp = NewControlUserPaneDrawProc(mydrawproc);
myidleproc_upp = NewControlUserPaneIdleProc(myidleproc); myidleproc_upp = NewControlUserPaneIdleProc(myidleproc);
myhittestproc_upp = NewControlUserPaneHitTestProc(myhittestproc); myhittestproc_upp = NewControlUserPaneHitTestProc(myhittestproc);
mytrackingproc_upp = NewControlUserPaneTrackingProc(mytrackingproc); mytrackingproc_upp = NewControlUserPaneTrackingProc(mytrackingproc);
PyMac_INIT_TOOLBOX_OBJECT_NEW(CtlObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CtlObj_Convert);
""" """
class MyObjectDefinition(ObjectIdentityMixin, GlobalObjectDefinition): class MyObjectDefinition(ObjectIdentityMixin, GlobalObjectDefinition):
......
...@@ -9,6 +9,15 @@ ...@@ -9,6 +9,15 @@
#include "pymactoolbox.h" #include "pymactoolbox.h"
#include <Dialogs.h> #include <Dialogs.h>
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_DlgObj_New(DialogRef);
extern PyObject *_DlgObj_WhichDialog(DialogRef);
extern int _DlgObj_Convert(PyObject *, DialogRef *);
#define DlgObj_New _DlgObj_New
#define DlgObj_WhichDialog _DlgObj_WhichDialog
#define DlgObj_Convert _DlgObj_Convert
#endif
#if !ACCESSOR_CALLS_ARE_FUNCTIONS #if !ACCESSOR_CALLS_ARE_FUNCTIONS
#define GetDialogTextEditHandle(dlg) (((DialogPeek)(dlg))->textH) #define GetDialogTextEditHandle(dlg) (((DialogPeek)(dlg))->textH)
...@@ -1468,7 +1477,7 @@ static PyMethodDef Dlg_methods[] = { ...@@ -1468,7 +1477,7 @@ static PyMethodDef Dlg_methods[] = {
/* Return the WindowPtr corresponding to a DialogObject */ /* Return the WindowPtr corresponding to a DialogObject */
#if 0
WindowPtr WindowPtr
DlgObj_ConvertToWindow(self) DlgObj_ConvertToWindow(self)
PyObject *self; PyObject *self;
...@@ -1477,6 +1486,7 @@ DlgObj_ConvertToWindow(self) ...@@ -1477,6 +1486,7 @@ DlgObj_ConvertToWindow(self)
return GetDialogWindow(((DialogObject *)self)->ob_itself); return GetDialogWindow(((DialogObject *)self)->ob_itself);
return NULL; return NULL;
} }
#endif
/* Return the object corresponding to the dialog, or None */ /* Return the object corresponding to the dialog, or None */
PyObject * PyObject *
...@@ -1516,6 +1526,10 @@ void initDlg() ...@@ -1516,6 +1526,10 @@ void initDlg()
PyMac_INIT_TOOLBOX_OBJECT_NEW(DlgObj_New);
PyMac_INIT_TOOLBOX_OBJECT_NEW(DlgObj_WhichDialog);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DlgObj_Convert);
m = Py_InitModule("Dlg", Dlg_methods); m = Py_InitModule("Dlg", Dlg_methods);
d = PyModule_GetDict(m); d = PyModule_GetDict(m);
......
...@@ -32,6 +32,15 @@ EventMask = Type("EventMask", "H") ...@@ -32,6 +32,15 @@ EventMask = Type("EventMask", "H")
includestuff = includestuff + """ includestuff = includestuff + """
#include <Dialogs.h> #include <Dialogs.h>
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_DlgObj_New(DialogRef);
extern PyObject *_DlgObj_WhichDialog(DialogRef);
extern int _DlgObj_Convert(PyObject *, DialogRef *);
#define DlgObj_New _DlgObj_New
#define DlgObj_WhichDialog _DlgObj_WhichDialog
#define DlgObj_Convert _DlgObj_Convert
#endif
#if !ACCESSOR_CALLS_ARE_FUNCTIONS #if !ACCESSOR_CALLS_ARE_FUNCTIONS
#define GetDialogTextEditHandle(dlg) (((DialogPeek)(dlg))->textH) #define GetDialogTextEditHandle(dlg) (((DialogPeek)(dlg))->textH)
...@@ -139,7 +148,7 @@ extern PyMethodChain WinObj_chain; ...@@ -139,7 +148,7 @@ extern PyMethodChain WinObj_chain;
finalstuff = finalstuff + """ finalstuff = finalstuff + """
/* Return the WindowPtr corresponding to a DialogObject */ /* Return the WindowPtr corresponding to a DialogObject */
#if 0
WindowPtr WindowPtr
DlgObj_ConvertToWindow(self) DlgObj_ConvertToWindow(self)
PyObject *self; PyObject *self;
...@@ -148,6 +157,7 @@ DlgObj_ConvertToWindow(self) ...@@ -148,6 +157,7 @@ DlgObj_ConvertToWindow(self)
return GetDialogWindow(((DialogObject *)self)->ob_itself); return GetDialogWindow(((DialogObject *)self)->ob_itself);
return NULL; return NULL;
} }
#endif
/* Return the object corresponding to the dialog, or None */ /* Return the object corresponding to the dialog, or None */
PyObject * PyObject *
...@@ -180,6 +190,12 @@ DlgObj_WhichDialog(d) ...@@ -180,6 +190,12 @@ DlgObj_WhichDialog(d)
} }
""" """
initstuff = initstuff + """
PyMac_INIT_TOOLBOX_OBJECT_NEW(DlgObj_New);
PyMac_INIT_TOOLBOX_OBJECT_NEW(DlgObj_WhichDialog);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DlgObj_Convert);
"""
# Define a class which specializes our object definition # Define a class which specializes our object definition
class MyObjectDefinition(GlobalObjectDefinition): class MyObjectDefinition(GlobalObjectDefinition):
......
...@@ -19,6 +19,14 @@ DragInputUPP dragglue_InputUPP; ...@@ -19,6 +19,14 @@ DragInputUPP dragglue_InputUPP;
DragDrawingUPP dragglue_DrawingUPP; DragDrawingUPP dragglue_DrawingUPP;
#endif #endif
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_DragObj_New(DragRef);
extern int _DragObj_Convert(PyObject *, DragRef *);
#define DragObj_New _DragObj_New
#define DragObj_Convert _DragObj_Convert
#endif
static PyObject *Drag_Error; static PyObject *Drag_Error;
/* ---------------------- Object type DragObj ----------------------- */ /* ---------------------- Object type DragObj ----------------------- */
...@@ -1040,6 +1048,9 @@ void initDrag() ...@@ -1040,6 +1048,9 @@ void initDrag()
PyMac_INIT_TOOLBOX_OBJECT_NEW(DragObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DragObj_Convert);
m = Py_InitModule("Drag", Drag_methods); m = Py_InitModule("Drag", Drag_methods);
d = PyModule_GetDict(m); d = PyModule_GetDict(m);
......
...@@ -54,6 +54,14 @@ DragSendDataUPP dragglue_SendDataUPP; ...@@ -54,6 +54,14 @@ DragSendDataUPP dragglue_SendDataUPP;
DragInputUPP dragglue_InputUPP; DragInputUPP dragglue_InputUPP;
DragDrawingUPP dragglue_DrawingUPP; DragDrawingUPP dragglue_DrawingUPP;
#endif #endif
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_DragObj_New(DragRef);
extern int _DragObj_Convert(PyObject *, DragRef *);
#define DragObj_New _DragObj_New
#define DragObj_Convert _DragObj_Convert
#endif
""" """
finalstuff = finalstuff + """ finalstuff = finalstuff + """
...@@ -153,6 +161,11 @@ dragglue_Drawing(xxxx ...@@ -153,6 +161,11 @@ dragglue_Drawing(xxxx
""" """
initstuff = initstuff + """
PyMac_INIT_TOOLBOX_OBJECT_NEW(DragObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DragObj_Convert);
"""
variablestuff = """ variablestuff = """
dragglue_TrackingHandlerUPP = NewDragTrackingHandlerProc(dragglue_TrackingHandler); dragglue_TrackingHandlerUPP = NewDragTrackingHandlerProc(dragglue_TrackingHandler);
dragglue_ReceiveHandlerUPP = NewDragReceiveHandlerProc(dragglue_ReceiveHandler); dragglue_ReceiveHandlerUPP = NewDragReceiveHandlerProc(dragglue_ReceiveHandler);
......
...@@ -10,6 +10,15 @@ ...@@ -10,6 +10,15 @@
#include <Lists.h> #include <Lists.h>
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_ListObj_New(ListHandle);
extern int _ListObj_Convert(PyObject *, ListHandle *);
#define ListObj_New _ListObj_New
#define ListObj_Convert _ListObj_Convert
#endif
#if !ACCESSOR_CALLS_ARE_FUNCTIONS #if !ACCESSOR_CALLS_ARE_FUNCTIONS
#define GetListPort(list) ((CGrafPtr)(*(list))->port) #define GetListPort(list) ((CGrafPtr)(*(list))->port)
#define GetListVerticalScrollBar(list) ((*(list))->vScroll) #define GetListVerticalScrollBar(list) ((*(list))->vScroll)
...@@ -1066,6 +1075,9 @@ void initList() ...@@ -1066,6 +1075,9 @@ void initList()
PyMac_INIT_TOOLBOX_OBJECT_NEW(ListObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ListObj_Convert);
m = Py_InitModule("List", List_methods); m = Py_InitModule("List", List_methods);
d = PyModule_GetDict(m); d = PyModule_GetDict(m);
......
...@@ -37,6 +37,15 @@ CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj") ...@@ -37,6 +37,15 @@ CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj")
includestuff = includestuff + """ includestuff = includestuff + """
#include <%s>""" % MACHEADERFILE + """ #include <%s>""" % MACHEADERFILE + """
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_ListObj_New(ListHandle);
extern int _ListObj_Convert(PyObject *, ListHandle *);
#define ListObj_New _ListObj_New
#define ListObj_Convert _ListObj_Convert
#endif
#if !ACCESSOR_CALLS_ARE_FUNCTIONS #if !ACCESSOR_CALLS_ARE_FUNCTIONS
#define GetListPort(list) ((CGrafPtr)(*(list))->port) #define GetListPort(list) ((CGrafPtr)(*(list))->port)
#define GetListVerticalScrollBar(list) ((*(list))->vScroll) #define GetListVerticalScrollBar(list) ((*(list))->vScroll)
...@@ -66,6 +75,11 @@ includestuff = includestuff + """ ...@@ -66,6 +75,11 @@ includestuff = includestuff + """
#define as_Resource(lh) ((Handle)lh) #define as_Resource(lh) ((Handle)lh)
""" """
initstuff = initstuff + """
PyMac_INIT_TOOLBOX_OBJECT_NEW(ListObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ListObj_Convert);
"""
class ListMethodGenerator(MethodGenerator): class ListMethodGenerator(MethodGenerator):
"""Similar to MethodGenerator, but has self as last argument""" """Similar to MethodGenerator, but has self as last argument"""
......
...@@ -11,6 +11,15 @@ ...@@ -11,6 +11,15 @@
#include <Devices.h> /* Defines OpenDeskAcc in universal headers */ #include <Devices.h> /* Defines OpenDeskAcc in universal headers */
#include <Menus.h> #include <Menus.h>
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_MenuObj_New(MenuHandle);
extern int _MenuObj_Convert(PyObject *, MenuHandle *);
#define MenuObj_New _MenuObj_New
#define MenuObj_Convert _MenuObj_Convert
#endif
#if !ACCESSOR_CALLS_ARE_FUNCTIONS #if !ACCESSOR_CALLS_ARE_FUNCTIONS
#define GetMenuID(menu) ((*(menu))->menuID) #define GetMenuID(menu) ((*(menu))->menuID)
#define GetMenuWidth(menu) ((*(menu))->menuWidth) #define GetMenuWidth(menu) ((*(menu))->menuWidth)
...@@ -2780,6 +2789,9 @@ void initMenu() ...@@ -2780,6 +2789,9 @@ void initMenu()
PyMac_INIT_TOOLBOX_OBJECT_NEW(MenuObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MenuObj_Convert);
m = Py_InitModule("Menu", Menu_methods); m = Py_InitModule("Menu", Menu_methods);
d = PyModule_GetDict(m); d = PyModule_GetDict(m);
......
...@@ -39,6 +39,15 @@ includestuff = includestuff + """ ...@@ -39,6 +39,15 @@ includestuff = includestuff + """
#include <Devices.h> /* Defines OpenDeskAcc in universal headers */ #include <Devices.h> /* Defines OpenDeskAcc in universal headers */
#include <%s>""" % MACHEADERFILE + """ #include <%s>""" % MACHEADERFILE + """
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_MenuObj_New(MenuHandle);
extern int _MenuObj_Convert(PyObject *, MenuHandle *);
#define MenuObj_New _MenuObj_New
#define MenuObj_Convert _MenuObj_Convert
#endif
#if !ACCESSOR_CALLS_ARE_FUNCTIONS #if !ACCESSOR_CALLS_ARE_FUNCTIONS
#define GetMenuID(menu) ((*(menu))->menuID) #define GetMenuID(menu) ((*(menu))->menuID)
#define GetMenuWidth(menu) ((*(menu))->menuWidth) #define GetMenuWidth(menu) ((*(menu))->menuWidth)
...@@ -53,6 +62,11 @@ includestuff = includestuff + """ ...@@ -53,6 +62,11 @@ includestuff = includestuff + """
#define as_Resource(h) ((Handle)h) #define as_Resource(h) ((Handle)h)
""" """
initstuff = initstuff + """
PyMac_INIT_TOOLBOX_OBJECT_NEW(MenuObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MenuObj_Convert);
"""
class MyObjectDefinition(GlobalObjectDefinition): class MyObjectDefinition(GlobalObjectDefinition):
pass pass
......
...@@ -10,6 +10,22 @@ ...@@ -10,6 +10,22 @@
#include <QuickDraw.h> #include <QuickDraw.h>
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_GrafObj_New(GrafPtr);
extern int _GrafObj_Convert(PyObject *, GrafPtr *);
extern PyObject *_BMObj_New(BitMapPtr);
extern int _BMObj_Convert(PyObject *, BitMapPtr *);
extern PyObject *_QdRGB_New(RGBColorPtr);
extern int _QdRGB_Convert(PyObject *, RGBColorPtr *);
#define GrafObj_New _GrafObj_New
#define GrafObj_Convert _GrafObj_Convert
#define BMObj_New _BMObj_New
#define BMObj_Convert _BMObj_Convert
#define QdRGB_New _QdRGB_New
#define QdRGB_Convert _QdRGB_Convert
#endif
#if !ACCESSOR_CALLS_ARE_FUNCTIONS #if !ACCESSOR_CALLS_ARE_FUNCTIONS
#define GetPortBitMapForCopyBits(port) ((const struct BitMap *)&((GrafPort *)(port))->portBits) #define GetPortBitMapForCopyBits(port) ((const struct BitMap *)&((GrafPort *)(port))->portBits)
#define GetPortPixMap(port) (((CGrafPtr)(port))->portPixMap) #define GetPortPixMap(port) (((CGrafPtr)(port))->portPixMap)
...@@ -144,6 +160,16 @@ GrafObj_Convert(v, p_itself) ...@@ -144,6 +160,16 @@ GrafObj_Convert(v, p_itself)
PyObject *v; PyObject *v;
GrafPtr *p_itself; GrafPtr *p_itself;
{ {
#if 1
{
WindowRef win;
if (WinObj_Convert(v, &win) && v) {
*p_itself = (GrafPtr)GetWindowPort(win);
return 1;
}
PyErr_Clear();
}
#else
if (DlgObj_Check(v)) { if (DlgObj_Check(v)) {
DialogRef dlg = (DialogRef)((GrafPortObject *)v)->ob_itself; DialogRef dlg = (DialogRef)((GrafPortObject *)v)->ob_itself;
*p_itself = (GrafPtr)GetWindowPort(GetDialogWindow(dlg)); *p_itself = (GrafPtr)GetWindowPort(GetDialogWindow(dlg));
...@@ -154,6 +180,7 @@ GrafObj_Convert(v, p_itself) ...@@ -154,6 +180,7 @@ GrafObj_Convert(v, p_itself)
*p_itself = (GrafPtr)GetWindowPort(win); *p_itself = (GrafPtr)GetWindowPort(win);
return 1; return 1;
} }
#endif
if (!GrafObj_Check(v)) if (!GrafObj_Check(v))
{ {
PyErr_SetString(PyExc_TypeError, "GrafPort required"); PyErr_SetString(PyExc_TypeError, "GrafPort required");
...@@ -6194,6 +6221,13 @@ void initQd() ...@@ -6194,6 +6221,13 @@ void initQd()
PyMac_INIT_TOOLBOX_OBJECT_NEW(BMObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(BMObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(GrafObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(GrafObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(QdRGB_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(QdRGB_Convert);
m = Py_InitModule("Qd", Qd_methods); m = Py_InitModule("Qd", Qd_methods);
d = PyModule_GetDict(m); d = PyModule_GetDict(m);
......
...@@ -63,6 +63,22 @@ PenState_ptr = StructInputBufferType('PenState') ...@@ -63,6 +63,22 @@ PenState_ptr = StructInputBufferType('PenState')
includestuff = includestuff + """ includestuff = includestuff + """
#include <%s>""" % MACHEADERFILE + """ #include <%s>""" % MACHEADERFILE + """
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_GrafObj_New(GrafPtr);
extern int _GrafObj_Convert(PyObject *, GrafPtr *);
extern PyObject *_BMObj_New(BitMapPtr);
extern int _BMObj_Convert(PyObject *, BitMapPtr *);
extern PyObject *_QdRGB_New(RGBColorPtr);
extern int _QdRGB_Convert(PyObject *, RGBColorPtr *);
#define GrafObj_New _GrafObj_New
#define GrafObj_Convert _GrafObj_Convert
#define BMObj_New _BMObj_New
#define BMObj_Convert _BMObj_Convert
#define QdRGB_New _QdRGB_New
#define QdRGB_Convert _QdRGB_Convert
#endif
#if !ACCESSOR_CALLS_ARE_FUNCTIONS #if !ACCESSOR_CALLS_ARE_FUNCTIONS
#define GetPortBitMapForCopyBits(port) ((const struct BitMap *)&((GrafPort *)(port))->portBits) #define GetPortBitMapForCopyBits(port) ((const struct BitMap *)&((GrafPort *)(port))->portBits)
#define GetPortPixMap(port) (((CGrafPtr)(port))->portPixMap) #define GetPortPixMap(port) (((CGrafPtr)(port))->portPixMap)
...@@ -201,6 +217,15 @@ variablestuff = """ ...@@ -201,6 +217,15 @@ variablestuff = """
} }
""" """
initstuff = initstuff + """
PyMac_INIT_TOOLBOX_OBJECT_NEW(BMObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(BMObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(GrafObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(GrafObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(QdRGB_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(QdRGB_Convert);
"""
## not yet... ## not yet...
## ##
##class Region_ObjectDefinition(GlobalObjectDefinition): ##class Region_ObjectDefinition(GlobalObjectDefinition):
...@@ -219,6 +244,16 @@ class MyGRObjectDefinition(GlobalObjectDefinition): ...@@ -219,6 +244,16 @@ class MyGRObjectDefinition(GlobalObjectDefinition):
def outputCheckNewArg(self): def outputCheckNewArg(self):
Output("if (itself == NULL) return PyMac_Error(resNotFound);") Output("if (itself == NULL) return PyMac_Error(resNotFound);")
def outputCheckConvertArg(self): def outputCheckConvertArg(self):
Output("#if 1")
OutLbrace()
Output("WindowRef win;")
OutLbrace("if (WinObj_Convert(v, &win) && v)")
Output("*p_itself = (GrafPtr)GetWindowPort(win);")
Output("return 1;")
OutRbrace()
Output("PyErr_Clear();")
OutRbrace()
Output("#else")
OutLbrace("if (DlgObj_Check(v))") OutLbrace("if (DlgObj_Check(v))")
Output("DialogRef dlg = (DialogRef)((GrafPortObject *)v)->ob_itself;") Output("DialogRef dlg = (DialogRef)((GrafPortObject *)v)->ob_itself;")
Output("*p_itself = (GrafPtr)GetWindowPort(GetDialogWindow(dlg));") Output("*p_itself = (GrafPtr)GetWindowPort(GetDialogWindow(dlg));")
...@@ -229,6 +264,7 @@ class MyGRObjectDefinition(GlobalObjectDefinition): ...@@ -229,6 +264,7 @@ class MyGRObjectDefinition(GlobalObjectDefinition):
Output("*p_itself = (GrafPtr)GetWindowPort(win);") Output("*p_itself = (GrafPtr)GetWindowPort(win);")
Output("return 1;") Output("return 1;")
OutRbrace() OutRbrace()
Output("#endif")
def outputGetattrHook(self): def outputGetattrHook(self):
Output("#if !ACCESSOR_CALLS_ARE_FUNCTIONS") Output("#if !ACCESSOR_CALLS_ARE_FUNCTIONS")
Output(""" Output("""
......
...@@ -10,6 +10,14 @@ ...@@ -10,6 +10,14 @@
#include <QDOffscreen.h> #include <QDOffscreen.h>
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_GWorldObj_New(GWorldPtr);
extern int _GWorldObj_Convert(PyObject *, GWorldPtr *);
#define GWorldObj_New _GWorldObj_New
#define GWorldObj_Convert _GWorldObj_Convert
#endif
#define as_GrafPtr(gworld) ((GrafPtr)(gworld)) #define as_GrafPtr(gworld) ((GrafPtr)(gworld))
...@@ -622,6 +630,9 @@ void initQdoffs() ...@@ -622,6 +630,9 @@ void initQdoffs()
PyMac_INIT_TOOLBOX_OBJECT_NEW(GWorldObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(GWorldObj_Convert);
m = Py_InitModule("Qdoffs", Qdoffs_methods); m = Py_InitModule("Qdoffs", Qdoffs_methods);
d = PyModule_GetDict(m); d = PyModule_GetDict(m);
......
...@@ -36,10 +36,22 @@ QDErr = OSErrType("QDErr", 'h') ...@@ -36,10 +36,22 @@ QDErr = OSErrType("QDErr", 'h')
includestuff = includestuff + """ includestuff = includestuff + """
#include <%s>""" % MACHEADERFILE + """ #include <%s>""" % MACHEADERFILE + """
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_GWorldObj_New(GWorldPtr);
extern int _GWorldObj_Convert(PyObject *, GWorldPtr *);
#define GWorldObj_New _GWorldObj_New
#define GWorldObj_Convert _GWorldObj_Convert
#endif
#define as_GrafPtr(gworld) ((GrafPtr)(gworld)) #define as_GrafPtr(gworld) ((GrafPtr)(gworld))
""" """
initstuff = initstuff + """
PyMac_INIT_TOOLBOX_OBJECT_NEW(GWorldObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(GWorldObj_Convert);
"""
class MyObjectDefinition(GlobalObjectDefinition): class MyObjectDefinition(GlobalObjectDefinition):
def outputCheckNewArg(self): def outputCheckNewArg(self):
......
...@@ -10,6 +10,33 @@ ...@@ -10,6 +10,33 @@
#include <Movies.h> #include <Movies.h>
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_TrackObj_New(Track);
extern int _TrackObj_Convert(PyObject *, Track *);
extern PyObject *_MovieObj_New(Movie);
extern int _MovieObj_Convert(PyObject *, Movie *);
extern PyObject *_MovieCtlObj_New(MovieController);
extern int _MovieCtlObj_Convert(PyObject *, MovieController *);
extern PyObject *_TimeBaseObj_New(TimeBase);
extern int _TimeBaseObj_Convert(PyObject *, TimeBase *);
extern PyObject *_UserDataObj_New(UserData);
extern int _UserDataObj_Convert(PyObject *, UserData *);
extern PyObject *_MediaObj_New(Media);
extern int _MediaObj_Convert(PyObject *, Media *);
#define TrackObj_New _TrackObj_New
#define TrackObj_Convert _TrackObj_Convert
#define MovieObj_New _MovieObj_New
#define MovieObj_Convert _MovieObj_Convert
#define MovieCtlObj_New _MovieCtlObj_New
#define MovieCtlObj_Convert _MovieCtlObj_Convert
#define TimeBaseObj_New _TimeBaseObj_New
#define TimeBaseObj_Convert _TimeBaseObj_Convert
#define UserDataObj_New _UserDataObj_New
#define UserDataObj_Convert _UserDataObj_Convert
#define MediaObj_New _MediaObj_New
#define MediaObj_Convert _MediaObj_Convert
#endif
/* Macro to allow us to GetNextInterestingTime without duration */ /* Macro to allow us to GetNextInterestingTime without duration */
#define GetMediaNextInterestingTimeOnly(media, flags, time, rate, rv) GetMediaNextInterestingTime(media, flags, time, rate, rv, NULL) #define GetMediaNextInterestingTimeOnly(media, flags, time, rate, rv) GetMediaNextInterestingTime(media, flags, time, rate, rv, NULL)
...@@ -9160,6 +9187,19 @@ void initQt() ...@@ -9160,6 +9187,19 @@ void initQt()
PyMac_INIT_TOOLBOX_OBJECT_NEW(TrackObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TrackObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(MovieObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MovieObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(MovieCtlObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MovieCtlObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(TimeBaseObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TimeBaseObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(UserDataObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(UserDataObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(MediaObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MediaObj_Convert);
m = Py_InitModule("Qt", Qt_methods); m = Py_InitModule("Qt", Qt_methods);
d = PyModule_GetDict(m); d = PyModule_GetDict(m);
......
...@@ -26,6 +26,33 @@ from macsupport import * ...@@ -26,6 +26,33 @@ from macsupport import *
includestuff = includestuff + """ includestuff = includestuff + """
#include <%s>""" % MACHEADERFILE + """ #include <%s>""" % MACHEADERFILE + """
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_TrackObj_New(Track);
extern int _TrackObj_Convert(PyObject *, Track *);
extern PyObject *_MovieObj_New(Movie);
extern int _MovieObj_Convert(PyObject *, Movie *);
extern PyObject *_MovieCtlObj_New(MovieController);
extern int _MovieCtlObj_Convert(PyObject *, MovieController *);
extern PyObject *_TimeBaseObj_New(TimeBase);
extern int _TimeBaseObj_Convert(PyObject *, TimeBase *);
extern PyObject *_UserDataObj_New(UserData);
extern int _UserDataObj_Convert(PyObject *, UserData *);
extern PyObject *_MediaObj_New(Media);
extern int _MediaObj_Convert(PyObject *, Media *);
#define TrackObj_New _TrackObj_New
#define TrackObj_Convert _TrackObj_Convert
#define MovieObj_New _MovieObj_New
#define MovieObj_Convert _MovieObj_Convert
#define MovieCtlObj_New _MovieCtlObj_New
#define MovieCtlObj_Convert _MovieCtlObj_Convert
#define TimeBaseObj_New _TimeBaseObj_New
#define TimeBaseObj_Convert _TimeBaseObj_Convert
#define UserDataObj_New _UserDataObj_New
#define UserDataObj_Convert _UserDataObj_Convert
#define MediaObj_New _MediaObj_New
#define MediaObj_Convert _MediaObj_Convert
#endif
/* Macro to allow us to GetNextInterestingTime without duration */ /* Macro to allow us to GetNextInterestingTime without duration */
#define GetMediaNextInterestingTimeOnly(media, flags, time, rate, rv) \ #define GetMediaNextInterestingTimeOnly(media, flags, time, rate, rv) \
...@@ -65,6 +92,21 @@ QtTimeRecord_Convert(v, p_itself) ...@@ -65,6 +92,21 @@ QtTimeRecord_Convert(v, p_itself)
"""
initstuff = initstuff + """
PyMac_INIT_TOOLBOX_OBJECT_NEW(TrackObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TrackObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(MovieObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MovieObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(MovieCtlObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MovieCtlObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(TimeBaseObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TimeBaseObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(UserDataObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(UserDataObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(MediaObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MediaObj_Convert);
""" """
# Our (opaque) objects # Our (opaque) objects
......
...@@ -11,6 +11,17 @@ ...@@ -11,6 +11,17 @@
#include <Resources.h> #include <Resources.h>
#include <string.h> #include <string.h>
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_ResObj_New(Handle);
extern int _ResObj_Convert(PyObject *, Handle *);
extern PyObject *_OptResObj_New(Handle);
extern int _OptResObj_Convert(PyObject *, Handle *);
#define ResObj_New _ResObj_New
#define ResObj_Convert _ResObj_Convert
#define OptResObj_New _OptResObj_New
#define OptResObj_Convert _OptResObj_Convert
#endif
/* Function to dispose a resource, with a "normal" calling sequence */ /* Function to dispose a resource, with a "normal" calling sequence */
static void static void
PyMac_AutoDisposeHandle(Handle h) PyMac_AutoDisposeHandle(Handle h)
...@@ -1678,6 +1689,10 @@ void initRes() ...@@ -1678,6 +1689,10 @@ void initRes()
PyMac_INIT_TOOLBOX_OBJECT_NEW(ResObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ResObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(OptResObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(OptResObj_Convert);
m = Py_InitModule("Res", Res_methods); m = Py_InitModule("Res", Res_methods);
......
...@@ -26,6 +26,17 @@ includestuff = includestuff + """ ...@@ -26,6 +26,17 @@ includestuff = includestuff + """
#include <Resources.h> #include <Resources.h>
#include <string.h> #include <string.h>
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_ResObj_New(Handle);
extern int _ResObj_Convert(PyObject *, Handle *);
extern PyObject *_OptResObj_New(Handle);
extern int _OptResObj_Convert(PyObject *, Handle *);
#define ResObj_New _ResObj_New
#define ResObj_Convert _ResObj_Convert
#define OptResObj_New _OptResObj_New
#define OptResObj_Convert _OptResObj_Convert
#endif
/* Function to dispose a resource, with a "normal" calling sequence */ /* Function to dispose a resource, with a "normal" calling sequence */
static void static void
PyMac_AutoDisposeHandle(Handle h) PyMac_AutoDisposeHandle(Handle h)
...@@ -75,6 +86,10 @@ OptResObj_Convert(v, p_itself) ...@@ -75,6 +86,10 @@ OptResObj_Convert(v, p_itself)
""" """
initstuff = initstuff + """ initstuff = initstuff + """
PyMac_INIT_TOOLBOX_OBJECT_NEW(ResObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ResObj_Convert);
PyMac_INIT_TOOLBOX_OBJECT_NEW(OptResObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(OptResObj_Convert);
""" """
module = MacModule('Res', 'Res', includestuff, finalstuff, initstuff) module = MacModule('Res', 'Res', includestuff, finalstuff, initstuff)
......
...@@ -10,6 +10,14 @@ ...@@ -10,6 +10,14 @@
#include <TextEdit.h> #include <TextEdit.h>
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_TEObj_New(TEHandle);
extern int _TEObj_Convert(PyObject *, TEHandle *);
#define TEObj_New _TEObj_New
#define TEObj_Convert _TEObj_Convert
#endif
#define as_TE(h) ((TEHandle)h) #define as_TE(h) ((TEHandle)h)
#define as_Resource(teh) ((Handle)teh) #define as_Resource(teh) ((Handle)teh)
...@@ -1105,6 +1113,9 @@ void initTE() ...@@ -1105,6 +1113,9 @@ void initTE()
PyMac_INIT_TOOLBOX_OBJECT_NEW(TEObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TEObj_Convert);
m = Py_InitModule("TE", TE_methods); m = Py_InitModule("TE", TE_methods);
d = PyModule_GetDict(m); d = PyModule_GetDict(m);
......
...@@ -34,6 +34,14 @@ TextStyle_ptr = TextStyle ...@@ -34,6 +34,14 @@ TextStyle_ptr = TextStyle
includestuff = includestuff + """ includestuff = includestuff + """
#include <%s>""" % MACHEADERFILE + """ #include <%s>""" % MACHEADERFILE + """
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_TEObj_New(TEHandle);
extern int _TEObj_Convert(PyObject *, TEHandle *);
#define TEObj_New _TEObj_New
#define TEObj_Convert _TEObj_Convert
#endif
#define as_TE(h) ((TEHandle)h) #define as_TE(h) ((TEHandle)h)
#define as_Resource(teh) ((Handle)teh) #define as_Resource(teh) ((Handle)teh)
...@@ -65,6 +73,11 @@ TextStyle_Convert(v, p_itself) ...@@ -65,6 +73,11 @@ TextStyle_Convert(v, p_itself)
} }
""" """
initstuff = initstuff + """
PyMac_INIT_TOOLBOX_OBJECT_NEW(TEObj_New);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TEObj_Convert);
"""
class TEMethodGenerator(OSErrMethodGenerator): class TEMethodGenerator(OSErrMethodGenerator):
"""Similar to MethodGenerator, but has self as last argument""" """Similar to MethodGenerator, but has self as last argument"""
......
...@@ -10,6 +10,16 @@ ...@@ -10,6 +10,16 @@
#include <Windows.h> #include <Windows.h>
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_WinObj_New(WindowRef);
extern PyObject *_WinObj_WhichWindow(WindowRef);
extern int _WinObj_Convert(PyObject *, WindowRef *);
#define WinObj_New _WinObj_New
#define WinObj_WhichWindow _WinObj_WhichWindow
#define WinObj_Convert _WinObj_Convert
#endif
#if !ACCESSOR_CALLS_ARE_FUNCTIONS #if !ACCESSOR_CALLS_ARE_FUNCTIONS
/* Carbon calls that we emulate in classic mode */ /* Carbon calls that we emulate in classic mode */
#define GetWindowSpareFlag(win) (((CWindowPeek)(win))->spareFlag) #define GetWindowSpareFlag(win) (((CWindowPeek)(win))->spareFlag)
...@@ -65,10 +75,21 @@ WinObj_Convert(v, p_itself) ...@@ -65,10 +75,21 @@ WinObj_Convert(v, p_itself)
PyObject *v; PyObject *v;
WindowPtr *p_itself; WindowPtr *p_itself;
{ {
#if 1
{
DialogRef dlg;
if (DlgObj_Convert(v, &dlg) && dlg) {
*p_itself = GetDialogWindow(dlg);
return 1;
}
PyErr_Clear();
}
#else
if (DlgObj_Check(v)) { if (DlgObj_Check(v)) {
*p_itself = DlgObj_ConvertToWindow(v); *p_itself = DlgObj_ConvertToWindow(v);
return 1; return 1;
} }
#endif
if (v == Py_None) { *p_itself = NULL; return 1; } if (v == Py_None) { *p_itself = NULL; return 1; }
if (PyInt_Check(v)) { *p_itself = (WindowPtr)PyInt_AsLong(v); return 1; } if (PyInt_Check(v)) { *p_itself = (WindowPtr)PyInt_AsLong(v); return 1; }
...@@ -3057,6 +3078,10 @@ void initWin() ...@@ -3057,6 +3078,10 @@ void initWin()
PyMac_INIT_TOOLBOX_OBJECT_NEW(WinObj_New);
PyMac_INIT_TOOLBOX_OBJECT_NEW(WinObj_WhichWindow);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(WinObj_Convert);
m = Py_InitModule("Win", Win_methods); m = Py_InitModule("Win", Win_methods);
d = PyModule_GetDict(m); d = PyModule_GetDict(m);
......
...@@ -56,6 +56,16 @@ PropertyTag = OSTypeType("PropertyTag") ...@@ -56,6 +56,16 @@ PropertyTag = OSTypeType("PropertyTag")
includestuff = includestuff + """ includestuff = includestuff + """
#include <%s>""" % MACHEADERFILE + """ #include <%s>""" % MACHEADERFILE + """
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject *_WinObj_New(WindowRef);
extern PyObject *_WinObj_WhichWindow(WindowRef);
extern int _WinObj_Convert(PyObject *, WindowRef *);
#define WinObj_New _WinObj_New
#define WinObj_WhichWindow _WinObj_WhichWindow
#define WinObj_Convert _WinObj_Convert
#endif
#if !ACCESSOR_CALLS_ARE_FUNCTIONS #if !ACCESSOR_CALLS_ARE_FUNCTIONS
/* Carbon calls that we emulate in classic mode */ /* Carbon calls that we emulate in classic mode */
#define GetWindowSpareFlag(win) (((CWindowPeek)(win))->spareFlag) #define GetWindowSpareFlag(win) (((CWindowPeek)(win))->spareFlag)
...@@ -103,6 +113,12 @@ WinObj_WhichWindow(w) ...@@ -103,6 +113,12 @@ WinObj_WhichWindow(w)
} }
""" """
initstuff = initstuff + """
PyMac_INIT_TOOLBOX_OBJECT_NEW(WinObj_New);
PyMac_INIT_TOOLBOX_OBJECT_NEW(WinObj_WhichWindow);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(WinObj_Convert);
"""
class MyObjectDefinition(GlobalObjectDefinition): class MyObjectDefinition(GlobalObjectDefinition):
def outputCheckNewArg(self): def outputCheckNewArg(self):
Output("if (itself == NULL) return PyMac_Error(resNotFound);") Output("if (itself == NULL) return PyMac_Error(resNotFound);")
...@@ -118,10 +134,21 @@ class MyObjectDefinition(GlobalObjectDefinition): ...@@ -118,10 +134,21 @@ class MyObjectDefinition(GlobalObjectDefinition):
Output("it->ob_freeit = PyMac_AutoDisposeWindow;") Output("it->ob_freeit = PyMac_AutoDisposeWindow;")
OutRbrace() OutRbrace()
def outputCheckConvertArg(self): def outputCheckConvertArg(self):
Output("#if 1")
OutLbrace()
Output("DialogRef dlg;")
OutLbrace("if (DlgObj_Convert(v, &dlg) && dlg)")
Output("*p_itself = GetDialogWindow(dlg);")
Output("return 1;")
OutRbrace()
Output("PyErr_Clear();")
OutRbrace()
Output("#else")
OutLbrace("if (DlgObj_Check(v))") OutLbrace("if (DlgObj_Check(v))")
Output("*p_itself = DlgObj_ConvertToWindow(v);") Output("*p_itself = DlgObj_ConvertToWindow(v);")
Output("return 1;") Output("return 1;")
OutRbrace() OutRbrace()
Output("#endif")
Out(""" Out("""
if (v == Py_None) { *p_itself = NULL; return 1; } if (v == Py_None) { *p_itself = NULL; return 1; }
if (PyInt_Check(v)) { *p_itself = (WindowPtr)PyInt_AsLong(v); return 1; } if (PyInt_Check(v)) { *p_itself = (WindowPtr)PyInt_AsLong(v); return 1; }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment