Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 1 | |
| 2 | /* =========================== Module Evt =========================== */ |
| 3 | |
| 4 | #include "Python.h" |
| 5 | |
| 6 | |
| 7 | |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 8 | #include "macglue.h" |
Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 9 | #include "pymactoolbox.h" |
Guido van Rossum | e26c263 | 1995-02-28 09:11:41 +0000 | [diff] [blame] | 10 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 11 | #ifdef WITHOUT_FRAMEWORKS |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 12 | #include <Events.h> |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 13 | #else |
| 14 | #include <Carbon/Carbon.h> |
| 15 | #endif |
| 16 | |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 17 | |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 18 | static PyObject *Evt_Error; |
| 19 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 20 | static PyObject *Evt_GetMouse(PyObject *_self, PyObject *_args) |
Jack Jansen | 21f9687 | 1998-02-20 16:02:09 +0000 | [diff] [blame] | 21 | { |
| 22 | PyObject *_res = NULL; |
| 23 | Point mouseLoc; |
| 24 | if (!PyArg_ParseTuple(_args, "")) |
| 25 | return NULL; |
| 26 | GetMouse(&mouseLoc); |
| 27 | _res = Py_BuildValue("O&", |
| 28 | PyMac_BuildPoint, mouseLoc); |
| 29 | return _res; |
| 30 | } |
| 31 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 32 | static PyObject *Evt_Button(PyObject *_self, PyObject *_args) |
Jack Jansen | 21f9687 | 1998-02-20 16:02:09 +0000 | [diff] [blame] | 33 | { |
| 34 | PyObject *_res = NULL; |
| 35 | Boolean _rv; |
| 36 | if (!PyArg_ParseTuple(_args, "")) |
| 37 | return NULL; |
| 38 | _rv = Button(); |
| 39 | _res = Py_BuildValue("b", |
| 40 | _rv); |
| 41 | return _res; |
| 42 | } |
| 43 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 44 | static PyObject *Evt_StillDown(PyObject *_self, PyObject *_args) |
Jack Jansen | 21f9687 | 1998-02-20 16:02:09 +0000 | [diff] [blame] | 45 | { |
| 46 | PyObject *_res = NULL; |
| 47 | Boolean _rv; |
| 48 | if (!PyArg_ParseTuple(_args, "")) |
| 49 | return NULL; |
| 50 | _rv = StillDown(); |
| 51 | _res = Py_BuildValue("b", |
| 52 | _rv); |
| 53 | return _res; |
| 54 | } |
| 55 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 56 | static PyObject *Evt_WaitMouseUp(PyObject *_self, PyObject *_args) |
Jack Jansen | 21f9687 | 1998-02-20 16:02:09 +0000 | [diff] [blame] | 57 | { |
| 58 | PyObject *_res = NULL; |
| 59 | Boolean _rv; |
| 60 | if (!PyArg_ParseTuple(_args, "")) |
| 61 | return NULL; |
| 62 | _rv = WaitMouseUp(); |
| 63 | _res = Py_BuildValue("b", |
| 64 | _rv); |
| 65 | return _res; |
| 66 | } |
| 67 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 68 | static PyObject *Evt_TickCount(PyObject *_self, PyObject *_args) |
Jack Jansen | 21f9687 | 1998-02-20 16:02:09 +0000 | [diff] [blame] | 69 | { |
| 70 | PyObject *_res = NULL; |
| 71 | UInt32 _rv; |
| 72 | if (!PyArg_ParseTuple(_args, "")) |
| 73 | return NULL; |
| 74 | _rv = TickCount(); |
| 75 | _res = Py_BuildValue("l", |
| 76 | _rv); |
| 77 | return _res; |
| 78 | } |
| 79 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 80 | static PyObject *Evt_GetCaretTime(PyObject *_self, PyObject *_args) |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 81 | { |
| 82 | PyObject *_res = NULL; |
Jack Jansen | 7d0bc83 | 1995-06-09 20:56:31 +0000 | [diff] [blame] | 83 | UInt32 _rv; |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 84 | if (!PyArg_ParseTuple(_args, "")) |
| 85 | return NULL; |
| 86 | _rv = GetCaretTime(); |
| 87 | _res = Py_BuildValue("l", |
| 88 | _rv); |
| 89 | return _res; |
| 90 | } |
| 91 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 92 | static PyObject *Evt_GetKeys(PyObject *_self, PyObject *_args) |
Jack Jansen | 21f9687 | 1998-02-20 16:02:09 +0000 | [diff] [blame] | 93 | { |
| 94 | PyObject *_res = NULL; |
| 95 | KeyMap theKeys__out__; |
| 96 | if (!PyArg_ParseTuple(_args, "")) |
| 97 | return NULL; |
| 98 | GetKeys(theKeys__out__); |
| 99 | _res = Py_BuildValue("s#", |
| 100 | (char *)&theKeys__out__, (int)sizeof(KeyMap)); |
| 101 | theKeys__error__: ; |
| 102 | return _res; |
| 103 | } |
| 104 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 105 | static PyObject *Evt_GetDblTime(PyObject *_self, PyObject *_args) |
Jack Jansen | 21f9687 | 1998-02-20 16:02:09 +0000 | [diff] [blame] | 106 | { |
| 107 | PyObject *_res = NULL; |
| 108 | UInt32 _rv; |
| 109 | if (!PyArg_ParseTuple(_args, "")) |
| 110 | return NULL; |
| 111 | _rv = GetDblTime(); |
| 112 | _res = Py_BuildValue("l", |
| 113 | _rv); |
| 114 | return _res; |
| 115 | } |
| 116 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 117 | static PyObject *Evt_SetEventMask(PyObject *_self, PyObject *_args) |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 118 | { |
| 119 | PyObject *_res = NULL; |
Jack Jansen | d40f3c6 | 1995-10-09 23:12:22 +0000 | [diff] [blame] | 120 | EventMask value; |
Jack Jansen | 0b13e7c | 2000-07-07 13:09:35 +0000 | [diff] [blame] | 121 | if (!PyArg_ParseTuple(_args, "H", |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 122 | &value)) |
| 123 | return NULL; |
| 124 | SetEventMask(value); |
| 125 | Py_INCREF(Py_None); |
| 126 | _res = Py_None; |
| 127 | return _res; |
| 128 | } |
| 129 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 130 | static PyObject *Evt_GetNextEvent(PyObject *_self, PyObject *_args) |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 131 | { |
| 132 | PyObject *_res = NULL; |
| 133 | Boolean _rv; |
Jack Jansen | d40f3c6 | 1995-10-09 23:12:22 +0000 | [diff] [blame] | 134 | EventMask eventMask; |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 135 | EventRecord theEvent; |
Jack Jansen | 0b13e7c | 2000-07-07 13:09:35 +0000 | [diff] [blame] | 136 | if (!PyArg_ParseTuple(_args, "H", |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 137 | &eventMask)) |
| 138 | return NULL; |
| 139 | _rv = GetNextEvent(eventMask, |
| 140 | &theEvent); |
| 141 | _res = Py_BuildValue("bO&", |
| 142 | _rv, |
| 143 | PyMac_BuildEventRecord, &theEvent); |
| 144 | return _res; |
| 145 | } |
| 146 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 147 | static PyObject *Evt_EventAvail(PyObject *_self, PyObject *_args) |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 148 | { |
| 149 | PyObject *_res = NULL; |
| 150 | Boolean _rv; |
Jack Jansen | d40f3c6 | 1995-10-09 23:12:22 +0000 | [diff] [blame] | 151 | EventMask eventMask; |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 152 | EventRecord theEvent; |
Jack Jansen | 0b13e7c | 2000-07-07 13:09:35 +0000 | [diff] [blame] | 153 | if (!PyArg_ParseTuple(_args, "H", |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 154 | &eventMask)) |
| 155 | return NULL; |
| 156 | _rv = EventAvail(eventMask, |
| 157 | &theEvent); |
| 158 | _res = Py_BuildValue("bO&", |
| 159 | _rv, |
| 160 | PyMac_BuildEventRecord, &theEvent); |
| 161 | return _res; |
| 162 | } |
| 163 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 164 | static PyObject *Evt_PostEvent(PyObject *_self, PyObject *_args) |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 165 | { |
| 166 | PyObject *_res = NULL; |
| 167 | OSErr _err; |
Jack Jansen | d40f3c6 | 1995-10-09 23:12:22 +0000 | [diff] [blame] | 168 | EventKind eventNum; |
Jack Jansen | 7d0bc83 | 1995-06-09 20:56:31 +0000 | [diff] [blame] | 169 | UInt32 eventMsg; |
Jack Jansen | 0b13e7c | 2000-07-07 13:09:35 +0000 | [diff] [blame] | 170 | if (!PyArg_ParseTuple(_args, "Hl", |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 171 | &eventNum, |
| 172 | &eventMsg)) |
| 173 | return NULL; |
| 174 | _err = PostEvent(eventNum, |
| 175 | eventMsg); |
| 176 | if (_err != noErr) return PyMac_Error(_err); |
| 177 | Py_INCREF(Py_None); |
| 178 | _res = Py_None; |
| 179 | return _res; |
| 180 | } |
| 181 | |
Jack Jansen | 74a1e63 | 2000-07-14 22:37:27 +0000 | [diff] [blame] | 182 | #if !TARGET_API_MAC_CARBON |
Jack Jansen | abf1703 | 2000-06-20 07:42:23 +0000 | [diff] [blame] | 183 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 184 | static PyObject *Evt_OSEventAvail(PyObject *_self, PyObject *_args) |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 185 | { |
| 186 | PyObject *_res = NULL; |
| 187 | Boolean _rv; |
Jack Jansen | d40f3c6 | 1995-10-09 23:12:22 +0000 | [diff] [blame] | 188 | EventMask mask; |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 189 | EventRecord theEvent; |
Jack Jansen | 0b13e7c | 2000-07-07 13:09:35 +0000 | [diff] [blame] | 190 | if (!PyArg_ParseTuple(_args, "H", |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 191 | &mask)) |
| 192 | return NULL; |
| 193 | _rv = OSEventAvail(mask, |
| 194 | &theEvent); |
| 195 | _res = Py_BuildValue("bO&", |
| 196 | _rv, |
| 197 | PyMac_BuildEventRecord, &theEvent); |
| 198 | return _res; |
| 199 | } |
Jack Jansen | abf1703 | 2000-06-20 07:42:23 +0000 | [diff] [blame] | 200 | #endif |
| 201 | |
Jack Jansen | 74a1e63 | 2000-07-14 22:37:27 +0000 | [diff] [blame] | 202 | #if !TARGET_API_MAC_CARBON |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 203 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 204 | static PyObject *Evt_GetOSEvent(PyObject *_self, PyObject *_args) |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 205 | { |
| 206 | PyObject *_res = NULL; |
| 207 | Boolean _rv; |
Jack Jansen | d40f3c6 | 1995-10-09 23:12:22 +0000 | [diff] [blame] | 208 | EventMask mask; |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 209 | EventRecord theEvent; |
Jack Jansen | 0b13e7c | 2000-07-07 13:09:35 +0000 | [diff] [blame] | 210 | if (!PyArg_ParseTuple(_args, "H", |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 211 | &mask)) |
| 212 | return NULL; |
| 213 | _rv = GetOSEvent(mask, |
| 214 | &theEvent); |
| 215 | _res = Py_BuildValue("bO&", |
| 216 | _rv, |
| 217 | PyMac_BuildEventRecord, &theEvent); |
| 218 | return _res; |
| 219 | } |
Jack Jansen | abf1703 | 2000-06-20 07:42:23 +0000 | [diff] [blame] | 220 | #endif |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 221 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 222 | static PyObject *Evt_FlushEvents(PyObject *_self, PyObject *_args) |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 223 | { |
| 224 | PyObject *_res = NULL; |
Jack Jansen | d40f3c6 | 1995-10-09 23:12:22 +0000 | [diff] [blame] | 225 | EventMask whichMask; |
| 226 | EventMask stopMask; |
Jack Jansen | 0b13e7c | 2000-07-07 13:09:35 +0000 | [diff] [blame] | 227 | if (!PyArg_ParseTuple(_args, "HH", |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 228 | &whichMask, |
| 229 | &stopMask)) |
| 230 | return NULL; |
| 231 | FlushEvents(whichMask, |
| 232 | stopMask); |
| 233 | Py_INCREF(Py_None); |
| 234 | _res = Py_None; |
| 235 | return _res; |
| 236 | } |
| 237 | |
Jack Jansen | 74a1e63 | 2000-07-14 22:37:27 +0000 | [diff] [blame] | 238 | #if !TARGET_API_MAC_CARBON |
Jack Jansen | abf1703 | 2000-06-20 07:42:23 +0000 | [diff] [blame] | 239 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 240 | static PyObject *Evt_SystemClick(PyObject *_self, PyObject *_args) |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 241 | { |
| 242 | PyObject *_res = NULL; |
Guido van Rossum | e26c263 | 1995-02-28 09:11:41 +0000 | [diff] [blame] | 243 | EventRecord theEvent; |
| 244 | WindowPtr theWindow; |
| 245 | if (!PyArg_ParseTuple(_args, "O&O&", |
| 246 | PyMac_GetEventRecord, &theEvent, |
| 247 | WinObj_Convert, &theWindow)) |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 248 | return NULL; |
Guido van Rossum | e26c263 | 1995-02-28 09:11:41 +0000 | [diff] [blame] | 249 | SystemClick(&theEvent, |
| 250 | theWindow); |
| 251 | Py_INCREF(Py_None); |
| 252 | _res = Py_None; |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 253 | return _res; |
| 254 | } |
Jack Jansen | abf1703 | 2000-06-20 07:42:23 +0000 | [diff] [blame] | 255 | #endif |
| 256 | |
Jack Jansen | 74a1e63 | 2000-07-14 22:37:27 +0000 | [diff] [blame] | 257 | #if !TARGET_API_MAC_CARBON |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 258 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 259 | static PyObject *Evt_SystemTask(PyObject *_self, PyObject *_args) |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 260 | { |
| 261 | PyObject *_res = NULL; |
| 262 | if (!PyArg_ParseTuple(_args, "")) |
| 263 | return NULL; |
| 264 | SystemTask(); |
| 265 | Py_INCREF(Py_None); |
| 266 | _res = Py_None; |
| 267 | return _res; |
| 268 | } |
Jack Jansen | abf1703 | 2000-06-20 07:42:23 +0000 | [diff] [blame] | 269 | #endif |
| 270 | |
Jack Jansen | 74a1e63 | 2000-07-14 22:37:27 +0000 | [diff] [blame] | 271 | #if !TARGET_API_MAC_CARBON |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 272 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 273 | static PyObject *Evt_SystemEvent(PyObject *_self, PyObject *_args) |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 274 | { |
| 275 | PyObject *_res = NULL; |
| 276 | Boolean _rv; |
| 277 | EventRecord theEvent; |
| 278 | if (!PyArg_ParseTuple(_args, "O&", |
| 279 | PyMac_GetEventRecord, &theEvent)) |
| 280 | return NULL; |
| 281 | _rv = SystemEvent(&theEvent); |
| 282 | _res = Py_BuildValue("b", |
| 283 | _rv); |
| 284 | return _res; |
| 285 | } |
Jack Jansen | abf1703 | 2000-06-20 07:42:23 +0000 | [diff] [blame] | 286 | #endif |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 287 | |
Jack Jansen | f7d5aa6 | 2000-12-10 23:43:49 +0000 | [diff] [blame] | 288 | #if TARGET_API_MAC_CARBON |
| 289 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 290 | static PyObject *Evt_GetGlobalMouse(PyObject *_self, PyObject *_args) |
Jack Jansen | f7d5aa6 | 2000-12-10 23:43:49 +0000 | [diff] [blame] | 291 | { |
| 292 | PyObject *_res = NULL; |
| 293 | Point globalMouse; |
| 294 | if (!PyArg_ParseTuple(_args, "")) |
| 295 | return NULL; |
| 296 | GetGlobalMouse(&globalMouse); |
| 297 | _res = Py_BuildValue("O&", |
| 298 | PyMac_BuildPoint, globalMouse); |
| 299 | return _res; |
| 300 | } |
| 301 | #endif |
| 302 | |
| 303 | #if TARGET_API_MAC_CARBON |
| 304 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 305 | static PyObject *Evt_GetCurrentKeyModifiers(PyObject *_self, PyObject *_args) |
Jack Jansen | f7d5aa6 | 2000-12-10 23:43:49 +0000 | [diff] [blame] | 306 | { |
| 307 | PyObject *_res = NULL; |
| 308 | UInt32 _rv; |
| 309 | if (!PyArg_ParseTuple(_args, "")) |
| 310 | return NULL; |
| 311 | _rv = GetCurrentKeyModifiers(); |
| 312 | _res = Py_BuildValue("l", |
| 313 | _rv); |
| 314 | return _res; |
| 315 | } |
| 316 | #endif |
| 317 | |
| 318 | #if TARGET_API_MAC_CARBON |
| 319 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 320 | static PyObject *Evt_CheckEventQueueForUserCancel(PyObject *_self, PyObject *_args) |
Jack Jansen | f7d5aa6 | 2000-12-10 23:43:49 +0000 | [diff] [blame] | 321 | { |
| 322 | PyObject *_res = NULL; |
| 323 | Boolean _rv; |
| 324 | if (!PyArg_ParseTuple(_args, "")) |
| 325 | return NULL; |
| 326 | _rv = CheckEventQueueForUserCancel(); |
| 327 | _res = Py_BuildValue("b", |
| 328 | _rv); |
| 329 | return _res; |
| 330 | } |
| 331 | #endif |
| 332 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 333 | static PyObject *Evt_WaitNextEvent(PyObject *_self, PyObject *_args) |
Jack Jansen | 91b5bed | 1998-09-17 15:28:58 +0000 | [diff] [blame] | 334 | { |
| 335 | PyObject *_res = NULL; |
| 336 | |
| 337 | Boolean _rv; |
| 338 | EventMask eventMask; |
| 339 | EventRecord theEvent; |
| 340 | UInt32 sleep; |
| 341 | Handle mouseregion = (Handle)0; |
| 342 | |
Jack Jansen | 4fb67f4 | 2000-07-24 19:59:17 +0000 | [diff] [blame] | 343 | if (!PyArg_ParseTuple(_args, "Hl|O&", |
Jack Jansen | 91b5bed | 1998-09-17 15:28:58 +0000 | [diff] [blame] | 344 | &eventMask, |
| 345 | &sleep, |
| 346 | OptResObj_Convert, &mouseregion)) |
| 347 | return NULL; |
| 348 | _rv = WaitNextEvent(eventMask, |
| 349 | &theEvent, |
| 350 | sleep, |
| 351 | (RgnHandle)mouseregion); |
| 352 | _res = Py_BuildValue("bO&", |
| 353 | _rv, |
| 354 | PyMac_BuildEventRecord, &theEvent); |
| 355 | return _res; |
| 356 | |
| 357 | } |
| 358 | |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 359 | static PyMethodDef Evt_methods[] = { |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 360 | {"GetMouse", (PyCFunction)Evt_GetMouse, 1, |
| 361 | "() -> (Point mouseLoc)"}, |
| 362 | {"Button", (PyCFunction)Evt_Button, 1, |
| 363 | "() -> (Boolean _rv)"}, |
| 364 | {"StillDown", (PyCFunction)Evt_StillDown, 1, |
| 365 | "() -> (Boolean _rv)"}, |
| 366 | {"WaitMouseUp", (PyCFunction)Evt_WaitMouseUp, 1, |
| 367 | "() -> (Boolean _rv)"}, |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 368 | {"TickCount", (PyCFunction)Evt_TickCount, 1, |
Jack Jansen | 7d0bc83 | 1995-06-09 20:56:31 +0000 | [diff] [blame] | 369 | "() -> (UInt32 _rv)"}, |
Jack Jansen | 21f9687 | 1998-02-20 16:02:09 +0000 | [diff] [blame] | 370 | {"GetCaretTime", (PyCFunction)Evt_GetCaretTime, 1, |
| 371 | "() -> (UInt32 _rv)"}, |
| 372 | {"GetKeys", (PyCFunction)Evt_GetKeys, 1, |
| 373 | "() -> (KeyMap theKeys)"}, |
| 374 | {"GetDblTime", (PyCFunction)Evt_GetDblTime, 1, |
| 375 | "() -> (UInt32 _rv)"}, |
| 376 | {"SetEventMask", (PyCFunction)Evt_SetEventMask, 1, |
| 377 | "(EventMask value) -> None"}, |
| 378 | {"GetNextEvent", (PyCFunction)Evt_GetNextEvent, 1, |
| 379 | "(EventMask eventMask) -> (Boolean _rv, EventRecord theEvent)"}, |
Jack Jansen | 21f9687 | 1998-02-20 16:02:09 +0000 | [diff] [blame] | 380 | {"EventAvail", (PyCFunction)Evt_EventAvail, 1, |
| 381 | "(EventMask eventMask) -> (Boolean _rv, EventRecord theEvent)"}, |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 382 | {"PostEvent", (PyCFunction)Evt_PostEvent, 1, |
Jack Jansen | d40f3c6 | 1995-10-09 23:12:22 +0000 | [diff] [blame] | 383 | "(EventKind eventNum, UInt32 eventMsg) -> None"}, |
Jack Jansen | abf1703 | 2000-06-20 07:42:23 +0000 | [diff] [blame] | 384 | |
Jack Jansen | 74a1e63 | 2000-07-14 22:37:27 +0000 | [diff] [blame] | 385 | #if !TARGET_API_MAC_CARBON |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 386 | {"OSEventAvail", (PyCFunction)Evt_OSEventAvail, 1, |
Jack Jansen | d40f3c6 | 1995-10-09 23:12:22 +0000 | [diff] [blame] | 387 | "(EventMask mask) -> (Boolean _rv, EventRecord theEvent)"}, |
Jack Jansen | abf1703 | 2000-06-20 07:42:23 +0000 | [diff] [blame] | 388 | #endif |
| 389 | |
Jack Jansen | 74a1e63 | 2000-07-14 22:37:27 +0000 | [diff] [blame] | 390 | #if !TARGET_API_MAC_CARBON |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 391 | {"GetOSEvent", (PyCFunction)Evt_GetOSEvent, 1, |
Jack Jansen | d40f3c6 | 1995-10-09 23:12:22 +0000 | [diff] [blame] | 392 | "(EventMask mask) -> (Boolean _rv, EventRecord theEvent)"}, |
Jack Jansen | abf1703 | 2000-06-20 07:42:23 +0000 | [diff] [blame] | 393 | #endif |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 394 | {"FlushEvents", (PyCFunction)Evt_FlushEvents, 1, |
Jack Jansen | d40f3c6 | 1995-10-09 23:12:22 +0000 | [diff] [blame] | 395 | "(EventMask whichMask, EventMask stopMask) -> None"}, |
Jack Jansen | abf1703 | 2000-06-20 07:42:23 +0000 | [diff] [blame] | 396 | |
Jack Jansen | 74a1e63 | 2000-07-14 22:37:27 +0000 | [diff] [blame] | 397 | #if !TARGET_API_MAC_CARBON |
Guido van Rossum | e26c263 | 1995-02-28 09:11:41 +0000 | [diff] [blame] | 398 | {"SystemClick", (PyCFunction)Evt_SystemClick, 1, |
| 399 | "(EventRecord theEvent, WindowPtr theWindow) -> None"}, |
Jack Jansen | abf1703 | 2000-06-20 07:42:23 +0000 | [diff] [blame] | 400 | #endif |
| 401 | |
Jack Jansen | 74a1e63 | 2000-07-14 22:37:27 +0000 | [diff] [blame] | 402 | #if !TARGET_API_MAC_CARBON |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 403 | {"SystemTask", (PyCFunction)Evt_SystemTask, 1, |
| 404 | "() -> None"}, |
Jack Jansen | abf1703 | 2000-06-20 07:42:23 +0000 | [diff] [blame] | 405 | #endif |
| 406 | |
Jack Jansen | 74a1e63 | 2000-07-14 22:37:27 +0000 | [diff] [blame] | 407 | #if !TARGET_API_MAC_CARBON |
Jack Jansen | b81cf9d | 1995-06-06 13:08:40 +0000 | [diff] [blame] | 408 | {"SystemEvent", (PyCFunction)Evt_SystemEvent, 1, |
| 409 | "(EventRecord theEvent) -> (Boolean _rv)"}, |
Jack Jansen | abf1703 | 2000-06-20 07:42:23 +0000 | [diff] [blame] | 410 | #endif |
Jack Jansen | f7d5aa6 | 2000-12-10 23:43:49 +0000 | [diff] [blame] | 411 | |
| 412 | #if TARGET_API_MAC_CARBON |
| 413 | {"GetGlobalMouse", (PyCFunction)Evt_GetGlobalMouse, 1, |
| 414 | "() -> (Point globalMouse)"}, |
| 415 | #endif |
| 416 | |
| 417 | #if TARGET_API_MAC_CARBON |
| 418 | {"GetCurrentKeyModifiers", (PyCFunction)Evt_GetCurrentKeyModifiers, 1, |
| 419 | "() -> (UInt32 _rv)"}, |
| 420 | #endif |
| 421 | |
| 422 | #if TARGET_API_MAC_CARBON |
| 423 | {"CheckEventQueueForUserCancel", (PyCFunction)Evt_CheckEventQueueForUserCancel, 1, |
| 424 | "() -> (Boolean _rv)"}, |
| 425 | #endif |
Jack Jansen | 91b5bed | 1998-09-17 15:28:58 +0000 | [diff] [blame] | 426 | {"WaitNextEvent", (PyCFunction)Evt_WaitNextEvent, 1, |
| 427 | "(EventMask eventMask, UInt32 sleep [,RegionHandle]) -> (Boolean _rv, EventRecord theEvent)"}, |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 428 | {NULL, NULL, 0} |
| 429 | }; |
| 430 | |
| 431 | |
| 432 | |
| 433 | |
Jack Jansen | fa77e1a | 2001-05-22 21:56:42 +0000 | [diff] [blame] | 434 | void initEvt(void) |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 435 | { |
| 436 | PyObject *m; |
| 437 | PyObject *d; |
| 438 | |
| 439 | |
| 440 | |
| 441 | |
| 442 | m = Py_InitModule("Evt", Evt_methods); |
| 443 | d = PyModule_GetDict(m); |
| 444 | Evt_Error = PyMac_GetOSErrException(); |
| 445 | if (Evt_Error == NULL || |
| 446 | PyDict_SetItemString(d, "Error", Evt_Error) != 0) |
Jack Jansen | f7d5aa6 | 2000-12-10 23:43:49 +0000 | [diff] [blame] | 447 | return; |
Guido van Rossum | 17448e2 | 1995-01-30 11:53:55 +0000 | [diff] [blame] | 448 | } |
| 449 | |
| 450 | /* ========================= End module Evt ========================= */ |
| 451 | |