diff options
Diffstat (limited to 'Mac')
-rw-r--r-- | Mac/Modules/qd/Qdmodule.c | 37 | ||||
-rw-r--r-- | Mac/Modules/qd/qdgen.py | 5 | ||||
-rw-r--r-- | Mac/Modules/qd/qdscan.py | 2 | ||||
-rw-r--r-- | Mac/Modules/qd/qdsupport.py | 15 |
4 files changed, 57 insertions, 2 deletions
diff --git a/Mac/Modules/qd/Qdmodule.c b/Mac/Modules/qd/Qdmodule.c index b076aa4..a9f1865 100644 --- a/Mac/Modules/qd/Qdmodule.c +++ b/Mac/Modules/qd/Qdmodule.c @@ -40,6 +40,9 @@ extern int GrafObj_Convert(PyObject *, GrafPtr *); extern PyObject *BMObj_New(BitMapPtr); extern int BMObj_Convert(PyObject *, BitMapPtr *); +extern PyObject *PMObj_New(PixMapHandle); +extern int PMObj_Convert(PyObject *, PixMapHandle *); + extern PyObject *WinObj_WhichWindow(WindowPtr); #include <QuickDraw.h> @@ -425,6 +428,28 @@ static PyObject *Qd_InitCursor(_self, _args) return _res; } +static PyObject *Qd_SetCursor(_self, _args) + PyObject *_self; + PyObject *_args; +{ + PyObject *_res = NULL; + Cursor *crsr__in__; + int crsr__in_len__; + if (!PyArg_ParseTuple(_args, "s#", + (char **)&crsr__in__, &crsr__in_len__)) + return NULL; + if (crsr__in_len__ != sizeof(Cursor)) + { + PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Cursor)"); + goto crsr__error__; + } + SetCursor(crsr__in__); + Py_INCREF(Py_None); + _res = Py_None; + crsr__error__: ; + return _res; +} + static PyObject *Qd_HideCursor(_self, _args) PyObject *_self; PyObject *_args; @@ -3131,6 +3156,8 @@ static PyMethodDef Qd_methods[] = { "(Rect r) -> None"}, {"InitCursor", (PyCFunction)Qd_InitCursor, 1, "() -> None"}, + {"SetCursor", (PyCFunction)Qd_SetCursor, 1, + "(Cursor crsr) -> None"}, {"HideCursor", (PyCFunction)Qd_HideCursor, 1, "() -> None"}, {"ShowCursor", (PyCFunction)Qd_ShowCursor, 1, @@ -3453,6 +3480,16 @@ void initQd() if (Qd_Error == NULL || PyDict_SetItemString(d, "Error", Qd_Error) != 0) Py_FatalError("can't initialize Qd.Error"); + + { + PyObject *o; + + o = PyString_FromStringAndSize((char *)&qd.arrow, sizeof(qd.arrow)); + if (o == NULL || PyDict_SetItemString(d, "arrow", o) != 0) + Py_FatalError("can't initialize Qd.arrow"); + } + + } /* ========================= End module Qd ========================== */ diff --git a/Mac/Modules/qd/qdgen.py b/Mac/Modules/qd/qdgen.py index 4410b82..105eab7 100644 --- a/Mac/Modules/qd/qdgen.py +++ b/Mac/Modules/qd/qdgen.py @@ -57,6 +57,11 @@ f = Function(void, 'InitCursor', ) functions.append(f) +f = Function(void, 'SetCursor', + (Cursor_ptr, 'crsr', InMode), +) +functions.append(f) + f = Function(void, 'HideCursor', ) functions.append(f) diff --git a/Mac/Modules/qd/qdscan.py b/Mac/Modules/qd/qdscan.py index 1d28ecf..013f6b1 100644 --- a/Mac/Modules/qd/qdscan.py +++ b/Mac/Modules/qd/qdscan.py @@ -87,7 +87,7 @@ class MyScanner(Scanner): 'ConstPatternParam', 'Pattern_ptr', 'Pattern', - 'Cursor_ptr', +## 'Cursor_ptr', 'DeviceLoopDrawingProcPtr', 'DeviceLoopFlags', 'FontInfo', diff --git a/Mac/Modules/qd/qdsupport.py b/Mac/Modules/qd/qdsupport.py index 7768f31..387ee9c 100644 --- a/Mac/Modules/qd/qdsupport.py +++ b/Mac/Modules/qd/qdsupport.py @@ -45,6 +45,8 @@ GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj") BitMap_ptr = OpaqueByValueType("BitMapPtr", "BMObj") RGBColor = OpaqueType('RGBColor', 'QdRGB') RGBColor_ptr = RGBColor +Cursor = StructInputBufferType('Cursor') +Cursor_ptr = Cursor includestuff = includestuff + """ #include <%s>""" % MACHEADERFILE + """ @@ -77,6 +79,17 @@ QdRGB_Convert(v, p_itself) } """ + +variablestuff = """ +{ + PyObject *o; + + o = PyString_FromStringAndSize((char *)&qd.arrow, sizeof(qd.arrow)); + if (o == NULL || PyDict_SetItemString(d, "arrow", o) != 0) + Py_FatalError("can't initialize Qd.arrow"); +} +""" + ## not yet... ## ##class Region_ObjectDefinition(GlobalObjectDefinition): @@ -147,7 +160,7 @@ class MyBMObjectDefinition(GlobalObjectDefinition): """) # Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) +module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff, variablestuff) ##r_object = Region_ObjectDefinition('Region', 'QdRgn', 'RgnHandle') ##po_object = Polygon_ObjectDefinition('Polygon', 'QdPgn', 'PolyHandle') ##module.addobject(r_object) |