mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
Added support for cursors, and a way to get at the qd global 'arrow'
This commit is contained in:
parent
7d1eba9783
commit
b539406643
4 changed files with 57 additions and 2 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue