summaryrefslogtreecommitdiffstats
path: root/Mac/Modules/qt/qtsupport.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Modules/qt/qtsupport.py')
-rw-r--r--Mac/Modules/qt/qtsupport.py128
1 files changed, 116 insertions, 12 deletions
diff --git a/Mac/Modules/qt/qtsupport.py b/Mac/Modules/qt/qtsupport.py
index 5c29b75..ef5cac7 100644
--- a/Mac/Modules/qt/qtsupport.py
+++ b/Mac/Modules/qt/qtsupport.py
@@ -7,7 +7,7 @@ import string
# Declarations that change for each manager
MACHEADERFILE = 'Movies.h' # The Apple header file
-MODNAME = 'qt' # The name of the module
+MODNAME = 'Qt' # The name of the module
OBJECTNAME = 'Movie' # The basic name of the objects used here
# The following is *usually* unchanged but may still require tuning
@@ -23,9 +23,59 @@ from macsupport import *
includestuff = includestuff + """
#include <%s>""" % MACHEADERFILE + """
+
+/* Exported by Cmmodule.c: */
+extern PyObject *CmpObj_New(Component);
+extern int CmpObj_Convert(PyObject *, Component *);
+extern PyObject *CmpInstObj_New(ComponentInstance);
+extern int CmpInstObj_Convert(PyObject *, ComponentInstance *);
+
+/* Exported by Qdmodule.c: */
+extern PyObject *QdRGB_New(RGBColor *);
+extern int QdRGB_Convert(PyObject *, RGBColor *);
+
+/* Our own, used before defined: */
+staticforward PyObject *TrackObj_New(Track);
+staticforward int TrackObj_Convert(PyObject *, Track *);
+staticforward PyObject *MovieObj_New(Movie);
+staticforward int MovieObj_Convert(PyObject *, Movie *);
+
+
"""
-Movie = OpaqueByValueType(OBJECTTYPE, OBJECTPREFIX)
+# Our (opaque) objects
+Movie = OpaqueByValueType('Movie', 'MovieObj')
+Track = OpaqueByValueType('Track', 'TrackObj')
+Media = OpaqueByValueType('Media', 'MediaObj')
+UserData = OpaqueByValueType('UserData', 'UserDataObj')
+TimeBase = OpaqueByValueType('TimeBase', 'TimeBaseObj')
+
+# Other opaque objects
+Component = OpaqueByValueType('Component', 'CmpObj')
+MediaHandlerComponent = OpaqueByValueType('MediaHandlerComponent', 'CmpObj')
+DataHandlerComponent = OpaqueByValueType('DataHandlerComponent', 'CmpObj')
+
+ComponentInstance = OpaqueByValueType('ComponentInstance', 'CmpInstObj')
+MediaHandler = OpaqueByValueType('MediaHandler', 'CmpInstObj')
+DataHandler = OpaqueByValueType('DataHandler', 'CmpInstObj')
+# XXXX The next one should really be a full-fledged object here, but the
+# type is sometimes specified as MovieController and some times as
+# ComponentInstance.
+MovieController = OpaqueByValueType('MovieController', 'CmpInstObj')
+
+RgnHandle = OpaqueByValueType("RgnHandle", "ResObj")
+PicHandle = OpaqueByValueType("PicHandle", "ResObj")
+CTabHandle = OpaqueByValueType("CTabHandle", "ResObj")
+PixMapHandle = OpaqueByValueType("PixMapHandle", "ResObj")
+SampleDescriptionHandle = OpaqueByValueType("SampleDescriptionHandle", "ResObj")
+TEHandle = OpaqueByValueType("TEHandle", "ResObj")
+# Silly Apple, passing an OStype by reference...
+OSType_ptr = OpaqueType("OSType", "PyMac_BuildOSType", "PyMac_GetOSType")
+
+RGBColor = OpaqueType("RGBColor", "QdRGB")
+RGBColor_ptr = OpaqueType("RGBColor", "QdRGB")
+
+# Non-opaque types, mostly integer-ish
TimeValue = Type("TimeValue", "l")
TimeScale = Type("TimeScale", "l")
TimeBaseFlags = Type("TimeBaseFlags", "l")
@@ -38,12 +88,13 @@ movieFlattenFlagsEnum = Type("movieFlattenFlagsEnum", "l")
dataRefAttributesFlags = Type("dataRefAttributesFlags", "l")
playHintsEnum = Type("playHintsEnum", "l")
mediaHandlerFlagsEnum = Type("mediaHandlerFlagsEnum", "l")
-
-RgnHandle = OpaqueByValueType("RgnHandle", "ResObj")
-PicHandle = OpaqueByValueType("PicHandle", "ResObj")
+ComponentResult = Type("ComponentResult", "l")
+HandlerError = Type("HandlerError", "l")
+Ptr = InputOnlyType("Ptr", "s")
+StringPtr = InputOnlyType("StringPtr", "s")
-class MyObjectDefinition(GlobalObjectDefinition):
+class MovieObjectDefinition(GlobalObjectDefinition):
def outputCheckNewArg(self):
Output("""if (itself == NULL) {
PyErr_SetString(Qt_Error,"Cannot create null Movie");
@@ -52,26 +103,79 @@ class MyObjectDefinition(GlobalObjectDefinition):
def outputFreeIt(self, itselfname):
Output("DisposeMovie(%s);", itselfname)
+class TrackObjectDefinition(GlobalObjectDefinition):
+ def outputCheckNewArg(self):
+ Output("""if (itself == NULL) {
+ PyErr_SetString(Qt_Error,"Cannot create null Track");
+ return NULL;
+ }""")
+ def outputFreeIt(self, itselfname):
+ Output("DisposeMovieTrack(%s);", itselfname)
+
+class MediaObjectDefinition(GlobalObjectDefinition):
+ def outputCheckNewArg(self):
+ Output("""if (itself == NULL) {
+ PyErr_SetString(Qt_Error,"Cannot create null Media");
+ return NULL;
+ }""")
+ def outputFreeIt(self, itselfname):
+ Output("DisposeTrackMedia(%s);", itselfname)
+
+class UserDataObjectDefinition(GlobalObjectDefinition):
+ def outputCheckNewArg(self):
+ Output("""if (itself == NULL) {
+ PyErr_SetString(Qt_Error,"Cannot create null UserData");
+ return NULL;
+ }""")
+ def outputFreeIt(self, itselfname):
+ Output("DisposeUserData(%s);", itselfname)
+
+class TimeBaseObjectDefinition(GlobalObjectDefinition):
+ def outputCheckNewArg(self):
+ Output("""if (itself == NULL) {
+ PyErr_SetString(Qt_Error,"Cannot create null TimeBase");
+ return NULL;
+ }""")
+ def outputFreeIt(self, itselfname):
+ Output("DisposeTimeBase(%s);", itselfname)
+
# From here on it's basically all boiler plate...
# Create the generator groups and link them
module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
-object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE)
-module.addobject(object)
+Movie_object = MovieObjectDefinition('Movie', 'MovieObj', 'Movie')
+Track_object = TrackObjectDefinition('Track', 'TrackObj', 'Track')
+Media_object = MediaObjectDefinition('Media', 'MediaObj', 'Media')
+UserData_object = UserDataObjectDefinition('UserData', 'UserDataObj', 'UserData')
+TimeBase_object = TimeBaseObjectDefinition('TimeBase', 'TimeBaseObj', 'TimeBase')
+
+module.addobject(TimeBase_object)
+module.addobject(UserData_object)
+module.addobject(Media_object)
+module.addobject(Track_object)
+module.addobject(Movie_object)
# Create the generator classes used to populate the lists
-Function = FunctionGenerator
-Method = MethodGenerator
+Function = OSErrFunctionGenerator
+Method = OSErrMethodGenerator
# Create and populate the lists
functions = []
-methods = []
+TimeBase_methods = []
+UserData_methods = []
+Media_methods = []
+Track_methods = []
+Movie_methods = []
execfile(INPUTFILE)
# 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)
-for f in methods: object.add(f)
+for f in TimeBase_methods: TimeBase_object.add(f)
+for f in UserData_methods: UserData_object.add(f)
+for f in Media_methods: Media_object.add(f)
+for f in Track_methods: Track_object.add(f)
+for f in Movie_methods: Movie_object.add(f)
# generate output (open the output file as late as possible)
SetOutputFileName(OUTPUTFILE)