Import Upstream version 2.7.18

This commit is contained in:
geos_one
2025-08-15 16:28:06 +02:00
commit ba1f69ab39
4521 changed files with 1778434 additions and 0 deletions

View File

@@ -0,0 +1,559 @@
/* ========================== Module _Evt =========================== */
#include "Python.h"
#ifndef __LP64__
#include "pymactoolbox.h"
/* Macro to test whether a weak-loaded CFM function exists */
#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
PyErr_SetString(PyExc_NotImplementedError, \
"Not available in this shared library/OS version"); \
return NULL; \
}} while(0)
#include <Carbon/Carbon.h>
static PyObject *Evt_Error;
static PyObject *Evt_GetMouse(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
Point mouseLoc;
#ifndef GetMouse
PyMac_PRECHECK(GetMouse);
#endif
if (!PyArg_ParseTuple(_args, ""))
return NULL;
GetMouse(&mouseLoc);
_res = Py_BuildValue("O&",
PyMac_BuildPoint, mouseLoc);
return _res;
}
static PyObject *Evt_Button(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
Boolean _rv;
#ifndef Button
PyMac_PRECHECK(Button);
#endif
if (!PyArg_ParseTuple(_args, ""))
return NULL;
_rv = Button();
_res = Py_BuildValue("b",
_rv);
return _res;
}
static PyObject *Evt_StillDown(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
Boolean _rv;
#ifndef StillDown
PyMac_PRECHECK(StillDown);
#endif
if (!PyArg_ParseTuple(_args, ""))
return NULL;
_rv = StillDown();
_res = Py_BuildValue("b",
_rv);
return _res;
}
static PyObject *Evt_WaitMouseUp(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
Boolean _rv;
#ifndef WaitMouseUp
PyMac_PRECHECK(WaitMouseUp);
#endif
if (!PyArg_ParseTuple(_args, ""))
return NULL;
_rv = WaitMouseUp();
_res = Py_BuildValue("b",
_rv);
return _res;
}
static PyObject *Evt_GetCaretTime(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
UInt32 _rv;
#ifndef GetCaretTime
PyMac_PRECHECK(GetCaretTime);
#endif
if (!PyArg_ParseTuple(_args, ""))
return NULL;
_rv = GetCaretTime();
_res = Py_BuildValue("l",
_rv);
return _res;
}
static PyObject *Evt_GetKeys(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
KeyMap theKeys__out__;
#ifndef GetKeys
PyMac_PRECHECK(GetKeys);
#endif
if (!PyArg_ParseTuple(_args, ""))
return NULL;
GetKeys(theKeys__out__);
_res = Py_BuildValue("s#",
(char *)&theKeys__out__, (int)sizeof(KeyMap));
return _res;
}
static PyObject *Evt_GetDblTime(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
UInt32 _rv;
#ifndef GetDblTime
PyMac_PRECHECK(GetDblTime);
#endif
if (!PyArg_ParseTuple(_args, ""))
return NULL;
_rv = GetDblTime();
_res = Py_BuildValue("l",
_rv);
return _res;
}
static PyObject *Evt_SetEventMask(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
EventMask value;
#ifndef SetEventMask
PyMac_PRECHECK(SetEventMask);
#endif
if (!PyArg_ParseTuple(_args, "H",
&value))
return NULL;
SetEventMask(value);
Py_INCREF(Py_None);
_res = Py_None;
return _res;
}
static PyObject *Evt_GetNextEvent(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
Boolean _rv;
EventMask eventMask;
EventRecord theEvent;
#ifndef GetNextEvent
PyMac_PRECHECK(GetNextEvent);
#endif
if (!PyArg_ParseTuple(_args, "H",
&eventMask))
return NULL;
_rv = GetNextEvent(eventMask,
&theEvent);
_res = Py_BuildValue("bO&",
_rv,
PyMac_BuildEventRecord, &theEvent);
return _res;
}
static PyObject *Evt_EventAvail(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
Boolean _rv;
EventMask eventMask;
EventRecord theEvent;
#ifndef EventAvail
PyMac_PRECHECK(EventAvail);
#endif
if (!PyArg_ParseTuple(_args, "H",
&eventMask))
return NULL;
_rv = EventAvail(eventMask,
&theEvent);
_res = Py_BuildValue("bO&",
_rv,
PyMac_BuildEventRecord, &theEvent);
return _res;
}
static PyObject *Evt_PostEvent(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
OSErr _err;
EventKind eventNum;
UInt32 eventMsg;
#ifndef PostEvent
PyMac_PRECHECK(PostEvent);
#endif
if (!PyArg_ParseTuple(_args, "Hl",
&eventNum,
&eventMsg))
return NULL;
_err = PostEvent(eventNum,
eventMsg);
if (_err != noErr) return PyMac_Error(_err);
Py_INCREF(Py_None);
_res = Py_None;
return _res;
}
static PyObject *Evt_FlushEvents(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
EventMask whichMask;
EventMask stopMask;
#ifndef FlushEvents
PyMac_PRECHECK(FlushEvents);
#endif
if (!PyArg_ParseTuple(_args, "HH",
&whichMask,
&stopMask))
return NULL;
FlushEvents(whichMask,
stopMask);
Py_INCREF(Py_None);
_res = Py_None;
return _res;
}
static PyObject *Evt_GetGlobalMouse(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
Point globalMouse;
#ifndef GetGlobalMouse
PyMac_PRECHECK(GetGlobalMouse);
#endif
if (!PyArg_ParseTuple(_args, ""))
return NULL;
GetGlobalMouse(&globalMouse);
_res = Py_BuildValue("O&",
PyMac_BuildPoint, globalMouse);
return _res;
}
static PyObject *Evt_GetCurrentKeyModifiers(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
UInt32 _rv;
#ifndef GetCurrentKeyModifiers
PyMac_PRECHECK(GetCurrentKeyModifiers);
#endif
if (!PyArg_ParseTuple(_args, ""))
return NULL;
_rv = GetCurrentKeyModifiers();
_res = Py_BuildValue("l",
_rv);
return _res;
}
static PyObject *Evt_CheckEventQueueForUserCancel(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
Boolean _rv;
#ifndef CheckEventQueueForUserCancel
PyMac_PRECHECK(CheckEventQueueForUserCancel);
#endif
if (!PyArg_ParseTuple(_args, ""))
return NULL;
_rv = CheckEventQueueForUserCancel();
_res = Py_BuildValue("b",
_rv);
return _res;
}
static PyObject *Evt_KeyScript(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
short code;
#ifndef KeyScript
PyMac_PRECHECK(KeyScript);
#endif
if (!PyArg_ParseTuple(_args, "h",
&code))
return NULL;
KeyScript(code);
Py_INCREF(Py_None);
_res = Py_None;
return _res;
}
static PyObject *Evt_IsCmdChar(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
Boolean _rv;
EventRecord event;
short test;
#ifndef IsCmdChar
PyMac_PRECHECK(IsCmdChar);
#endif
if (!PyArg_ParseTuple(_args, "O&h",
PyMac_GetEventRecord, &event,
&test))
return NULL;
_rv = IsCmdChar(&event,
test);
_res = Py_BuildValue("b",
_rv);
return _res;
}
static PyObject *Evt_LMGetKeyThresh(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
SInt16 _rv;
#ifndef LMGetKeyThresh
PyMac_PRECHECK(LMGetKeyThresh);
#endif
if (!PyArg_ParseTuple(_args, ""))
return NULL;
_rv = LMGetKeyThresh();
_res = Py_BuildValue("h",
_rv);
return _res;
}
static PyObject *Evt_LMSetKeyThresh(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
SInt16 value;
#ifndef LMSetKeyThresh
PyMac_PRECHECK(LMSetKeyThresh);
#endif
if (!PyArg_ParseTuple(_args, "h",
&value))
return NULL;
LMSetKeyThresh(value);
Py_INCREF(Py_None);
_res = Py_None;
return _res;
}
static PyObject *Evt_LMGetKeyRepThresh(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
SInt16 _rv;
#ifndef LMGetKeyRepThresh
PyMac_PRECHECK(LMGetKeyRepThresh);
#endif
if (!PyArg_ParseTuple(_args, ""))
return NULL;
_rv = LMGetKeyRepThresh();
_res = Py_BuildValue("h",
_rv);
return _res;
}
static PyObject *Evt_LMSetKeyRepThresh(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
SInt16 value;
#ifndef LMSetKeyRepThresh
PyMac_PRECHECK(LMSetKeyRepThresh);
#endif
if (!PyArg_ParseTuple(_args, "h",
&value))
return NULL;
LMSetKeyRepThresh(value);
Py_INCREF(Py_None);
_res = Py_None;
return _res;
}
static PyObject *Evt_LMGetKbdLast(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
UInt8 _rv;
#ifndef LMGetKbdLast
PyMac_PRECHECK(LMGetKbdLast);
#endif
if (!PyArg_ParseTuple(_args, ""))
return NULL;
_rv = LMGetKbdLast();
_res = Py_BuildValue("b",
_rv);
return _res;
}
static PyObject *Evt_LMSetKbdLast(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
UInt8 value;
#ifndef LMSetKbdLast
PyMac_PRECHECK(LMSetKbdLast);
#endif
if (!PyArg_ParseTuple(_args, "b",
&value))
return NULL;
LMSetKbdLast(value);
Py_INCREF(Py_None);
_res = Py_None;
return _res;
}
static PyObject *Evt_LMGetKbdType(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
UInt8 _rv;
#ifndef LMGetKbdType
PyMac_PRECHECK(LMGetKbdType);
#endif
if (!PyArg_ParseTuple(_args, ""))
return NULL;
_rv = LMGetKbdType();
_res = Py_BuildValue("b",
_rv);
return _res;
}
static PyObject *Evt_LMSetKbdType(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
UInt8 value;
#ifndef LMSetKbdType
PyMac_PRECHECK(LMSetKbdType);
#endif
if (!PyArg_ParseTuple(_args, "b",
&value))
return NULL;
LMSetKbdType(value);
Py_INCREF(Py_None);
_res = Py_None;
return _res;
}
static PyObject *Evt_TickCount(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
UInt32 _rv;
#ifndef TickCount
PyMac_PRECHECK(TickCount);
#endif
if (!PyArg_ParseTuple(_args, ""))
return NULL;
_rv = TickCount();
_res = Py_BuildValue("l",
_rv);
return _res;
}
static PyObject *Evt_WaitNextEvent(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
Boolean _rv;
EventMask eventMask;
EventRecord theEvent;
UInt32 sleep;
Handle mouseregion = (Handle)0;
if (!PyArg_ParseTuple(_args, "Hl|O&",
&eventMask,
&sleep,
OptResObj_Convert, &mouseregion))
return NULL;
_rv = WaitNextEvent(eventMask,
&theEvent,
sleep,
(RgnHandle)mouseregion);
_res = Py_BuildValue("bO&",
_rv,
PyMac_BuildEventRecord, &theEvent);
return _res;
}
static PyMethodDef Evt_methods[] = {
{"GetMouse", (PyCFunction)Evt_GetMouse, 1,
PyDoc_STR("() -> (Point mouseLoc)")},
{"Button", (PyCFunction)Evt_Button, 1,
PyDoc_STR("() -> (Boolean _rv)")},
{"StillDown", (PyCFunction)Evt_StillDown, 1,
PyDoc_STR("() -> (Boolean _rv)")},
{"WaitMouseUp", (PyCFunction)Evt_WaitMouseUp, 1,
PyDoc_STR("() -> (Boolean _rv)")},
{"GetCaretTime", (PyCFunction)Evt_GetCaretTime, 1,
PyDoc_STR("() -> (UInt32 _rv)")},
{"GetKeys", (PyCFunction)Evt_GetKeys, 1,
PyDoc_STR("() -> (KeyMap theKeys)")},
{"GetDblTime", (PyCFunction)Evt_GetDblTime, 1,
PyDoc_STR("() -> (UInt32 _rv)")},
{"SetEventMask", (PyCFunction)Evt_SetEventMask, 1,
PyDoc_STR("(EventMask value) -> None")},
{"GetNextEvent", (PyCFunction)Evt_GetNextEvent, 1,
PyDoc_STR("(EventMask eventMask) -> (Boolean _rv, EventRecord theEvent)")},
{"EventAvail", (PyCFunction)Evt_EventAvail, 1,
PyDoc_STR("(EventMask eventMask) -> (Boolean _rv, EventRecord theEvent)")},
{"PostEvent", (PyCFunction)Evt_PostEvent, 1,
PyDoc_STR("(EventKind eventNum, UInt32 eventMsg) -> None")},
{"FlushEvents", (PyCFunction)Evt_FlushEvents, 1,
PyDoc_STR("(EventMask whichMask, EventMask stopMask) -> None")},
{"GetGlobalMouse", (PyCFunction)Evt_GetGlobalMouse, 1,
PyDoc_STR("() -> (Point globalMouse)")},
{"GetCurrentKeyModifiers", (PyCFunction)Evt_GetCurrentKeyModifiers, 1,
PyDoc_STR("() -> (UInt32 _rv)")},
{"CheckEventQueueForUserCancel", (PyCFunction)Evt_CheckEventQueueForUserCancel, 1,
PyDoc_STR("() -> (Boolean _rv)")},
{"KeyScript", (PyCFunction)Evt_KeyScript, 1,
PyDoc_STR("(short code) -> None")},
{"IsCmdChar", (PyCFunction)Evt_IsCmdChar, 1,
PyDoc_STR("(EventRecord event, short test) -> (Boolean _rv)")},
{"LMGetKeyThresh", (PyCFunction)Evt_LMGetKeyThresh, 1,
PyDoc_STR("() -> (SInt16 _rv)")},
{"LMSetKeyThresh", (PyCFunction)Evt_LMSetKeyThresh, 1,
PyDoc_STR("(SInt16 value) -> None")},
{"LMGetKeyRepThresh", (PyCFunction)Evt_LMGetKeyRepThresh, 1,
PyDoc_STR("() -> (SInt16 _rv)")},
{"LMSetKeyRepThresh", (PyCFunction)Evt_LMSetKeyRepThresh, 1,
PyDoc_STR("(SInt16 value) -> None")},
{"LMGetKbdLast", (PyCFunction)Evt_LMGetKbdLast, 1,
PyDoc_STR("() -> (UInt8 _rv)")},
{"LMSetKbdLast", (PyCFunction)Evt_LMSetKbdLast, 1,
PyDoc_STR("(UInt8 value) -> None")},
{"LMGetKbdType", (PyCFunction)Evt_LMGetKbdType, 1,
PyDoc_STR("() -> (UInt8 _rv)")},
{"LMSetKbdType", (PyCFunction)Evt_LMSetKbdType, 1,
PyDoc_STR("(UInt8 value) -> None")},
{"TickCount", (PyCFunction)Evt_TickCount, 1,
PyDoc_STR("() -> (UInt32 _rv)")},
{"WaitNextEvent", (PyCFunction)Evt_WaitNextEvent, 1,
PyDoc_STR("(EventMask eventMask, UInt32 sleep [,RegionHandle]) -> (Boolean _rv, EventRecord theEvent)")},
{NULL, NULL, 0}
};
#else /* __LP64__ */
static PyMethodDef Evt_methods[] = {
{NULL, NULL, 0}
};
#endif /* __LP64__ */
void init_Evt(void)
{
PyObject *m;
#ifndef __LP64__
PyObject *d;
#endif /* __LP64__ */
m = Py_InitModule("_Evt", Evt_methods);
#ifndef __LP64__
d = PyModule_GetDict(m);
Evt_Error = PyMac_GetOSErrException();
if (Evt_Error == NULL ||
PyDict_SetItemString(d, "Error", Evt_Error) != 0)
return;
#endif /* __LP64__ */
}
/* ======================== End module _Evt ========================= */

View File

@@ -0,0 +1,9 @@
f = Function(void, 'SystemClick',
(EventRecord_ptr, 'theEvent', InMode),
(WindowPtr, 'theWindow', InMode),
)
functions.append(f)
f = Function(UInt32, 'TickCount',
)
functions.append(f)

View File

@@ -0,0 +1,80 @@
# Scan an Apple header file, generating a Python file of generator calls.
import sys
from bgenlocations import TOOLBOXDIR, BGENDIR
sys.path.append(BGENDIR)
from scantools import Scanner
LONG = "Events"
SHORT = "evt"
OBJECT = "NOTUSED"
def main():
input = LONG + ".h"
output = SHORT + "gen.py"
defsoutput = TOOLBOXDIR + LONG + ".py"
scanner = MyScanner(input, output, defsoutput)
scanner.scan()
scanner.close()
print "=== Testing definitions output code ==="
execfile(defsoutput, {}, {})
print "=== Done scanning and generating, now importing the generated code... ==="
exec "import " + SHORT + "support"
print "=== Done. It's up to you to compile it now! ==="
class MyScanner(Scanner):
def destination(self, type, name, arglist):
classname = "Function"
listname = "functions"
if arglist:
t, n, m = arglist[0]
# This is non-functional today
if t == OBJECT and m == "InMode":
classname = "Method"
listname = "methods"
return classname, listname
def makeblacklistnames(self):
return [
"KeyTranslate",
"GetEventMask", # I cannot seem to find this routine...
"WaitNextEvent", # Manually generated because of optional region
# Constants with funny definitions
"osEvtMessageMask",
# OS8 calls
'SystemEvent',
'SystemTask',
'SystemClick',
'GetOSEvent',
'OSEventAvail',
]
def makeblacklisttypes(self):
return [
"EvQElPtr", "QHdrPtr"
]
def makerepairinstructions(self):
return [
([("void_ptr", "*", "InMode"), ("long", "*", "InMode")],
[("InBuffer", "*", "*")]),
([("void", "*", "OutMode"), ("long", "*", "InMode"),
("long", "*", "OutMode")],
[("VarVarOutBuffer", "*", "InOutMode")]),
([("void", "wStorage", "OutMode")],
[("NullStorage", "*", "InMode")]),
# GetKeys
([('KeyMap', 'theKeys', 'InMode')],
[('*', '*', 'OutMode')]),
# GetTicker
([('unsigned long', '*', '*')],
[('unsigned_long', '*', '*')]),
]
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,92 @@
# This script generates a Python interface for an Apple Macintosh Manager.
# It uses the "bgen" package to generate C code.
# The function specifications are generated by scanning the mamager's header file,
# using the "scantools" package (customized for this particular manager).
import string
# Declarations that change for each manager
MACHEADERFILE = 'Events.h' # The Apple header file
MODNAME = '_Evt' # The name of the module
OBJECTNAME = 'Event' # The basic name of the objects used here
KIND = 'Record' # Usually 'Ptr' or 'Handle'
# The following is *usually* unchanged but may still require tuning
MODPREFIX = 'Evt' # The prefix for module-wide routines
OBJECTTYPE = OBJECTNAME + KIND # The C type used to represent them
OBJECTPREFIX = MODPREFIX + 'Obj' # The prefix for object methods
INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
OUTPUTFILE = MODNAME + "module.c" # The file generated by this program
from macsupport import *
# Create the type objects
#WindowPeek = OpaqueByValueType("WindowPeek", OBJECTPREFIX)
RgnHandle = FakeType("(RgnHandle)0")
# XXXX Should be next, but this will break a lot of code...
# RgnHandle = OpaqueByValueType("RgnHandle", "OptResObj")
KeyMap = ArrayOutputBufferType("KeyMap")
##MacOSEventKind = Type("MacOSEventKind", "h") # Old-style
##MacOSEventMask = Type("MacOSEventMask", "h") # Old-style
EventMask = Type("EventMask", "H")
EventKind = Type("EventKind", "H")
includestuff = includestuff + """
#include <Carbon/Carbon.h>
"""
# From here on it's basically all boiler plate...
# Create the generator groups and link them
module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
# Create the generator classes used to populate the lists
Function = OSErrWeakLinkFunctionGenerator
##Method = OSErrWeakLinkMethodGenerator
# Create and populate the lists
functions = []
execfile(INPUTFILE)
# Move TickCount here, for convenience
f = Function(UInt32, 'TickCount',
)
functions.append(f)
# add the populated lists to the generator groups
# (in a different wordl the scan program would generate this)
for f in functions: module.add(f)
WaitNextEvent_body = """
Boolean _rv;
EventMask eventMask;
EventRecord theEvent;
UInt32 sleep;
Handle mouseregion = (Handle)0;
if (!PyArg_ParseTuple(_args, "Hl|O&",
&eventMask,
&sleep,
OptResObj_Convert, &mouseregion))
return NULL;
_rv = WaitNextEvent(eventMask,
&theEvent,
sleep,
(RgnHandle)mouseregion);
_res = Py_BuildValue("bO&",
_rv,
PyMac_BuildEventRecord, &theEvent);
return _res;
"""
f = ManualGenerator("WaitNextEvent", WaitNextEvent_body);
f.docstring = lambda: "(EventMask eventMask, UInt32 sleep [,RegionHandle]) -> (Boolean _rv, EventRecord theEvent)"
module.add(f)
# generate output (open the output file as late as possible)
SetOutputFileName(OUTPUTFILE)
module.generate()