Commit b5394066 authored by Jack Jansen's avatar Jack Jansen

Added support for cursors, and a way to get at the qd global 'arrow'

parent 7d1eba97
...@@ -40,6 +40,9 @@ extern int GrafObj_Convert(PyObject *, GrafPtr *); ...@@ -40,6 +40,9 @@ extern int GrafObj_Convert(PyObject *, GrafPtr *);
extern PyObject *BMObj_New(BitMapPtr); extern PyObject *BMObj_New(BitMapPtr);
extern int BMObj_Convert(PyObject *, BitMapPtr *); extern int BMObj_Convert(PyObject *, BitMapPtr *);
extern PyObject *PMObj_New(PixMapHandle);
extern int PMObj_Convert(PyObject *, PixMapHandle *);
extern PyObject *WinObj_WhichWindow(WindowPtr); extern PyObject *WinObj_WhichWindow(WindowPtr);
#include <QuickDraw.h> #include <QuickDraw.h>
...@@ -425,6 +428,28 @@ static PyObject *Qd_InitCursor(_self, _args) ...@@ -425,6 +428,28 @@ static PyObject *Qd_InitCursor(_self, _args)
return _res; 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) static PyObject *Qd_HideCursor(_self, _args)
PyObject *_self; PyObject *_self;
PyObject *_args; PyObject *_args;
...@@ -3131,6 +3156,8 @@ static PyMethodDef Qd_methods[] = { ...@@ -3131,6 +3156,8 @@ static PyMethodDef Qd_methods[] = {
"(Rect r) -> None"}, "(Rect r) -> None"},
{"InitCursor", (PyCFunction)Qd_InitCursor, 1, {"InitCursor", (PyCFunction)Qd_InitCursor, 1,
"() -> None"}, "() -> None"},
{"SetCursor", (PyCFunction)Qd_SetCursor, 1,
"(Cursor crsr) -> None"},
{"HideCursor", (PyCFunction)Qd_HideCursor, 1, {"HideCursor", (PyCFunction)Qd_HideCursor, 1,
"() -> None"}, "() -> None"},
{"ShowCursor", (PyCFunction)Qd_ShowCursor, 1, {"ShowCursor", (PyCFunction)Qd_ShowCursor, 1,
...@@ -3453,6 +3480,16 @@ void initQd() ...@@ -3453,6 +3480,16 @@ void initQd()
if (Qd_Error == NULL || if (Qd_Error == NULL ||
PyDict_SetItemString(d, "Error", Qd_Error) != 0) PyDict_SetItemString(d, "Error", Qd_Error) != 0)
Py_FatalError("can't initialize Qd.Error"); 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 ========================== */ /* ========================= End module Qd ========================== */
......
...@@ -57,6 +57,11 @@ f = Function(void, 'InitCursor', ...@@ -57,6 +57,11 @@ f = Function(void, 'InitCursor',
) )
functions.append(f) functions.append(f)
f = Function(void, 'SetCursor',
(Cursor_ptr, 'crsr', InMode),
)
functions.append(f)
f = Function(void, 'HideCursor', f = Function(void, 'HideCursor',
) )
functions.append(f) functions.append(f)
......
...@@ -87,7 +87,7 @@ class MyScanner(Scanner): ...@@ -87,7 +87,7 @@ class MyScanner(Scanner):
'ConstPatternParam', 'ConstPatternParam',
'Pattern_ptr', 'Pattern_ptr',
'Pattern', 'Pattern',
'Cursor_ptr', ## 'Cursor_ptr',
'DeviceLoopDrawingProcPtr', 'DeviceLoopDrawingProcPtr',
'DeviceLoopFlags', 'DeviceLoopFlags',
'FontInfo', 'FontInfo',
......
...@@ -45,6 +45,8 @@ GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj") ...@@ -45,6 +45,8 @@ GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj")
BitMap_ptr = OpaqueByValueType("BitMapPtr", "BMObj") BitMap_ptr = OpaqueByValueType("BitMapPtr", "BMObj")
RGBColor = OpaqueType('RGBColor', 'QdRGB') RGBColor = OpaqueType('RGBColor', 'QdRGB')
RGBColor_ptr = RGBColor RGBColor_ptr = RGBColor
Cursor = StructInputBufferType('Cursor')
Cursor_ptr = Cursor
includestuff = includestuff + """ includestuff = includestuff + """
#include <%s>""" % MACHEADERFILE + """ #include <%s>""" % MACHEADERFILE + """
...@@ -77,6 +79,17 @@ QdRGB_Convert(v, p_itself) ...@@ -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... ## not yet...
## ##
##class Region_ObjectDefinition(GlobalObjectDefinition): ##class Region_ObjectDefinition(GlobalObjectDefinition):
...@@ -147,7 +160,7 @@ class MyBMObjectDefinition(GlobalObjectDefinition): ...@@ -147,7 +160,7 @@ class MyBMObjectDefinition(GlobalObjectDefinition):
""") """)
# Create the generator groups and link them # 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') ##r_object = Region_ObjectDefinition('Region', 'QdRgn', 'RgnHandle')
##po_object = Polygon_ObjectDefinition('Polygon', 'QdPgn', 'PolyHandle') ##po_object = Polygon_ObjectDefinition('Polygon', 'QdPgn', 'PolyHandle')
##module.addobject(r_object) ##module.addobject(r_object)
......
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