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 *);
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 ========================== */
......
......@@ -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)
......
......@@ -87,7 +87,7 @@ class MyScanner(Scanner):
'ConstPatternParam',
'Pattern_ptr',
'Pattern',
'Cursor_ptr',
## 'Cursor_ptr',
'DeviceLoopDrawingProcPtr',
'DeviceLoopFlags',
'FontInfo',
......
......@@ -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)
......
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