mirror of
https://github.com/python/cpython.git
synced 2025-08-03 00:23:06 +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 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)
|
||||||
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[] = {
|
||||||
"(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()
|
||||||
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',
|
||||||
)
|
)
|
||||||
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):
|
||||||
'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")
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
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):
|
||||||
""")
|
""")
|
||||||
|
|
||||||
# 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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue