]> granicus.if.org Git - python/commitdiff
Added support for cursors, and a way to get at the qd global 'arrow'
authorJack Jansen <jack.jansen@cwi.nl>
Fri, 5 Jan 1996 18:06:41 +0000 (18:06 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Fri, 5 Jan 1996 18:06:41 +0000 (18:06 +0000)
Mac/Modules/qd/Qdmodule.c
Mac/Modules/qd/qdgen.py
Mac/Modules/qd/qdscan.py
Mac/Modules/qd/qdsupport.py

index b076aa48e842c4182a92b684099719234ff18aea..a9f18651f7f7ca6345cc66e1cba6fe0c1b8359ae 100644 (file)
@@ -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 ========================== */
index 4410b82cb2910cf82e65770c22afcd47309f8973..105eab79f3052cf7921892437fee1aac9c181fef 100644 (file)
@@ -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)
index 1d28ecf4d16a331b2228be8b48b93592eb661517..013f6b12d440c351bce0e96d6fcca826ab94103f 100644 (file)
@@ -87,7 +87,7 @@ class MyScanner(Scanner):
                        'ConstPatternParam',
                        'Pattern_ptr',
                        'Pattern',
-                       'Cursor_ptr',
+##                     'Cursor_ptr',
                        'DeviceLoopDrawingProcPtr',
                        'DeviceLoopFlags',
                        'FontInfo',
index 7768f319b637f05b2b4b299d503acb9840a3ee13..387ee9ccbcb1dcede1b593fe59a835e4fac5d0d4 100644 (file)
@@ -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)