]> granicus.if.org Git - python/commitdiff
Today's Carbon Toolbox addition: CarbonEvt.TrackMouseLocation() and friends.
authorJust van Rossum <just@letterror.com>
Tue, 8 Jan 2002 11:49:31 +0000 (11:49 +0000)
committerJust van Rossum <just@letterror.com>
Tue, 8 Jan 2002 11:49:31 +0000 (11:49 +0000)
Mac/Modules/carbonevt/CarbonEvtscan.py
Mac/Modules/carbonevt/CarbonEvtsupport.py
Mac/Modules/carbonevt/_CarbonEvtmodule.c

index 37faa5467bb6d321396c6c1423179d977f946807..353919658a1bbc37f29488f6cd5dd11961c248e1 100644 (file)
@@ -63,9 +63,9 @@ class CarbonEvents_Scanner(Scanner_OSX):
                return [
                        "sHandler",
                        "MacCreateEvent",
-                       "TrackMouseLocationWithOptions",
-                       "TrackMouseLocation",
-                       "TrackMouseRegion",
+#                      "TrackMouseLocationWithOptions",
+#                      "TrackMouseLocation",
+#                      "TrackMouseRegion",
                        "RegisterToolboxObjectClass",
                        "UnregisterToolboxObjectClass",
                        "ProcessHICommand",
index 8ed13eb09ad61f9985f606c4885100517d212948..cbaca2a4613cb7c56dd731f96ff6d36d79b27035 100644 (file)
@@ -68,6 +68,11 @@ class EventHandlerRefMethod(OSErrMethodGenerator):
                OutRbrace()
 
 
+RgnHandle = OpaqueByValueType("RgnHandle", "ResObj")
+GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj")
+MouseTrackingResult = UInt16
+
+
 includestuff = r"""
 #ifdef WITHOUT_FRAMEWORKS
 #include <CarbonEvents.h>
index 8488a2f378fc4420a50f13715ff5edd8f74a339a..2099cffb3615f6860f06714e1329c152a5cbb34e 100755 (executable)
@@ -1390,6 +1390,78 @@ static PyObject *CarbonEvents_GetCurrentEventTime(PyObject *_self, PyObject *_ar
        return _res;
 }
 
+static PyObject *CarbonEvents_TrackMouseLocation(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       GrafPtr inPort;
+       Point outPt;
+       UInt16 outResult;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             GrafObj_Convert, &inPort))
+               return NULL;
+       _err = TrackMouseLocation(inPort,
+                                 &outPt,
+                                 &outResult);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&H",
+                            PyMac_BuildPoint, outPt,
+                            outResult);
+       return _res;
+}
+
+static PyObject *CarbonEvents_TrackMouseLocationWithOptions(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       GrafPtr inPort;
+       OptionBits inOptions;
+       double inTimeout;
+       Point outPt;
+       UInt32 outModifiers;
+       UInt16 outResult;
+       if (!PyArg_ParseTuple(_args, "O&ld",
+                             GrafObj_Convert, &inPort,
+                             &inOptions,
+                             &inTimeout))
+               return NULL;
+       _err = TrackMouseLocationWithOptions(inPort,
+                                            inOptions,
+                                            inTimeout,
+                                            &outPt,
+                                            &outModifiers,
+                                            &outResult);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&lH",
+                            PyMac_BuildPoint, outPt,
+                            outModifiers,
+                            outResult);
+       return _res;
+}
+
+static PyObject *CarbonEvents_TrackMouseRegion(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       GrafPtr inPort;
+       RgnHandle inRegion;
+       Boolean ioWasInRgn;
+       UInt16 outResult;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             GrafObj_Convert, &inPort,
+                             ResObj_Convert, &inRegion))
+               return NULL;
+       _err = TrackMouseRegion(inPort,
+                               inRegion,
+                               &ioWasInRgn,
+                               &outResult);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("bH",
+                            ioWasInRgn,
+                            outResult);
+       return _res;
+}
+
 static PyObject *CarbonEvents_GetLastUserEventTime(PyObject *_self, PyObject *_args)
 {
        PyObject *_res = NULL;
@@ -1718,6 +1790,12 @@ static PyMethodDef CarbonEvents_methods[] = {
         "() -> (EventQueueRef _rv)"},
        {"GetCurrentEventTime", (PyCFunction)CarbonEvents_GetCurrentEventTime, 1,
         "() -> (double _rv)"},
+       {"TrackMouseLocation", (PyCFunction)CarbonEvents_TrackMouseLocation, 1,
+        "(GrafPtr inPort) -> (Point outPt, UInt16 outResult)"},
+       {"TrackMouseLocationWithOptions", (PyCFunction)CarbonEvents_TrackMouseLocationWithOptions, 1,
+        "(GrafPtr inPort, OptionBits inOptions, double inTimeout) -> (Point outPt, UInt32 outModifiers, UInt16 outResult)"},
+       {"TrackMouseRegion", (PyCFunction)CarbonEvents_TrackMouseRegion, 1,
+        "(GrafPtr inPort, RgnHandle inRegion) -> (Boolean ioWasInRgn, UInt16 outResult)"},
        {"GetLastUserEventTime", (PyCFunction)CarbonEvents_GetLastUserEventTime, 1,
         "() -> (double _rv)"},
        {"GetWindowEventTarget", (PyCFunction)CarbonEvents_GetWindowEventTarget, 1,