diff --git a/Mac/Lib/toolbox/QuickTime.py b/Mac/Lib/toolbox/QuickTime.py
new file mode 100644
index 0000000..f4e0259
--- /dev/null
+++ b/Mac/Lib/toolbox/QuickTime.py
@@ -0,0 +1,234 @@
+# Generated from 'Sap:CodeWarrior7:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Movies.h'
+
+MovieFileType = 'MooV'
+MediaHandlerType = 'mhlr'
+DataHandlerType = 'dhlr'
+VideoMediaType = 'vide'
+SoundMediaType = 'soun'
+TextMediaType = 'text'
+BaseMediaType = 'gnrc'
+MPEGMediaType = 'MPEG'
+MusicMediaType = 'musi'
+TimeCodeMediaType = 'tmcd'
+HandleDataHandlerSubType = 'hndl'
+VisualMediaCharacteristic = 'eyes'
+AudioMediaCharacteristic = 'ears'
+DoTheRightThing = 0
+dfDontDisplay = 1 << 0
+dfDontAutoScale = 1 << 1
+dfClipToTextBox = 1 << 2
+dfUseMovieBGColor = 1 << 3
+dfShrinkTextBoxToFit = 1 << 4
+dfScrollIn = 1 << 5
+dfScrollOut = 1 << 6
+dfHorizScroll = 1 << 7
+dfReverseScroll = 1 << 8
+dfContinuousScroll = 1 << 9
+dfFlowHoriz = 1 << 10
+dfDropShadow = 1 << 12
+dfAntiAlias = 1 << 13
+dfKeyedText = 1 << 14
+dfInverseHilite = 1 << 15
+searchTextDontGoToFoundTime = 1L << 16
+searchTextDontHiliteFoundText = 1L << 17
+searchTextOneTrackOnly = 1L << 18
+searchTextEnabledTracksOnly = 1L << 19
+movieProgressOpen = 0
+movieProgressUpdatePercent = 1
+movieProgressClose = 2
+progressOpFlatten = 1
+mediaQualityDraft = 0x0000
+mediaQualityNormal = 0x0040
+mediaQualityBetter = 0x0080
+mediaQualityBest = 0x00C0
+loopTimeBase = 1
+palindromeLoopTimeBase = 2
+maintainTimeBaseZero = 4
+triggerTimeFwd = 0x0001
+triggerTimeBwd = 0x0002
+triggerTimeEither = 0x0003
+triggerRateLT = 0x0004
+triggerRateGT = 0x0008
+triggerRateEqual = 0x0010
+triggerRateChange = 0
+triggerAtStart = 0x0001
+triggerAtStop = 0x0002
+timeBaseBeforeStartTime = 1
+timeBaseAfterStopTime = 2
+callBackAtTime = 1
+callBackAtRate = 2
+callBackAtTimeJump = 3
+callBackAtExtremes = 4
+callBackAtInterrupt = 0x8000
+callBackAtDeferredTask = 0x4000
+qtcbNeedsRateChanges = 1
+qtcbNeedsTimeChanges = 2
+qtcbNeedsStartStopChanges = 4
+keepInRam = 1 << 0
+unkeepInRam = 1 << 1
+flushFromRam = 1 << 2
+loadForwardTrackEdits = 1 << 3
+loadBackwardTrackEdits = 1 << 4
+newMovieActive = 1 << 0
+newMovieDontResolveDataRefs = 1 << 1
+newMovieDontAskUnresolvedDataRefs = 1 << 2
+newMovieDontAutoAlternates = 1 << 3
+trackUsageInMovie = 1 << 1
+trackUsageInPreview = 1 << 2
+trackUsageInPoster = 1 << 3
+mediaSampleNotSync = 1 << 0
+mediaSampleShadowSync = 1 << 1
+pasteInParallel = 1
+showUserSettingsDialog = 2
+movieToFileOnlyExport = 4
+nextTimeMediaSample = 1 << 0
+nextTimeMediaEdit = 1 << 1
+nextTimeTrackEdit = 1 << 2
+nextTimeSyncSample = 1 << 3
+nextTimeEdgeOK = 1 << 14
+nextTimeIgnoreActiveSegment = 1 << 15
+createMovieFileDeleteCurFile = 1L << 31
+createMovieFileDontCreateMovie = 1L << 30
+createMovieFileDontOpenFile = 1L << 29
+flattenAddMovieToDataFork = 1L << 0
+flattenActiveTracksOnly = 1L << 2
+flattenDontInterleaveFlatten = 1L << 3
+movieInDataForkResID = -1
+mcTopLeftMovie = 1 << 0
+mcScaleMovieToFit = 1 << 1
+mcWithBadge = 1 << 2
+mcNotVisible = 1 << 3
+mcWithFrame = 1 << 4
+movieScrapDontZeroScrap = 1 << 0
+movieScrapOnlyPutMovie = 1 << 1
+dataRefSelfReference = 1 << 0
+dataRefWasNotResolved = 1 << 1
+hintsScrubMode = 1 << 0
+hintsLoop = 1 << 1
+hintsDontPurge = 1 << 2
+hintsUseScreenBuffer = 1 << 5
+hintsAllowInterlace = 1 << 6
+hintsUseSoundInterp = 1 << 7
+hintsHighQuality = 1 << 8
+hintsPalindrome = 1 << 9
+hintsInactive = 1 << 11
+mediaHandlerFlagBaseClient = 1
+movieTrackMediaType = 1 << 0
+movieTrackCharacteristic = 1 << 1
+movieTrackEnabledOnly = 1 << 2
+movieDrawingCallWhenChanged = 0
+movieDrawingCallAlways = 1
+txtProcDefaultDisplay = 0
+txtProcDontDisplay = 1
+txtProcDoDisplay = 2
+findTextEdgeOK = 1 << 0
+findTextCaseSensitive = 1 << 1
+findTextReverseSearch = 1 << 2
+findTextWrapAround = 1 << 3
+findTextUseOffset = 1 << 4
+dropShadowOffsetType = 'drpo'
+dropShadowTranslucencyType = 'drpt'
+preloadAlways = 1L << 0
+preloadOnlyIfEnabled = 1L << 1
+MovieControllerComponentType = 'play'
+mcActionIdle = 1
+mcActionDraw = 2
+mcActionActivate = 3
+mcActionDeactivate = 4
+mcActionMouseDown = 5
+mcActionKey = 6
+mcActionPlay = 8
+mcActionGoToTime = 12
+mcActionSetVolume = 14
+mcActionGetVolume = 15
+mcActionStep = 18
+mcActionSetLooping = 21
+mcActionGetLooping = 22
+mcActionSetLoopIsPalindrome = 23
+mcActionGetLoopIsPalindrome = 24
+mcActionSetGrowBoxBounds = 25
+mcActionControllerSizeChanged = 26
+mcActionSetSelectionBegin = 29
+mcActionSetSelectionDuration = 30
+mcActionSetKeysEnabled = 32
+mcActionGetKeysEnabled = 33
+mcActionSetPlaySelection = 34
+mcActionGetPlaySelection = 35
+mcActionSetUseBadge = 36
+mcActionGetUseBadge = 37
+mcActionSetFlags = 38
+mcActionGetFlags = 39
+mcActionSetPlayEveryFrame = 40
+mcActionGetPlayEveryFrame = 41
+mcActionGetPlayRate = 42
+mcActionShowBalloon = 43
+mcActionBadgeClick = 44
+mcActionMovieClick = 45
+mcActionSuspend = 46
+mcActionResume = 47
+mcActionSetControllerKeysEnabled = 48
+mcActionGetTimeSliderRect = 49
+mcActionMovieEdited = 50
+mcActionGetDragEnabled = 51
+mcActionSetDragEnabled = 52
+mcFlagSuppressMovieFrame = 1 << 0
+mcFlagSuppressStepButtons = 1 << 1
+mcFlagSuppressSpeakerButton = 1 << 2
+mcFlagsUseWindowPalette = 1 << 3
+mcFlagsDontInvalidate = 1 << 4
+mcPositionDontInvalidate = 1 << 5
+mcInfoUndoAvailable = 1 << 0
+mcInfoCutAvailable = 1 << 1
+mcInfoCopyAvailable = 1 << 2
+mcInfoPasteAvailable = 1 << 3
+mcInfoClearAvailable = 1 << 4
+mcInfoHasSound = 1 << 5
+mcInfoIsPlaying = 1 << 6
+mcInfoIsLooping = 1 << 7
+mcInfoIsInPalindrome = 1 << 8
+mcInfoEditingEnabled = 1 << 9
+mcMenuUndo = 1
+mcMenuCut = 3
+mcMenuCopy = 4
+mcMenuPaste = 5
+mcMenuClear = 6
+kMCSetMovieSelect = 0x2
+kMCGetIndMovieSelect = 0x5
+kMCRemoveMovieSelect = 0x6
+kMCIsPlayerEventSelect = 0x7
+kMCSetActionFilterSelect = 0x8
+kMCDoActionSelect = 0x9
+kMCSetControllerAttachedSelect = 0xA
+kMCIsControllerAttachedSelect = 0xB
+kMCSetControllerPortSelect = 0xC
+kMCGetControllerPortSelect = 0xD
+kMCSetVisibleSelect = 0xE
+kMCGetVisibleSelect = 0xF
+kMCGetControllerBoundsRectSelect = 0x10
+kMCSetControllerBoundsRectSelect = 0x11
+kMCGetControllerBoundsRgnSelect = 0x12
+kMCGetWindowRgnSelect = 0x13
+kMCMovieChangedSelect = 0x14
+kMCSetDurationSelect = 0x15
+kMCGetCurrentTimeSelect = 0x16
+kMCNewAttachedControllerSelect = 0x17
+kMCDrawSelect = 0x18
+kMCActivateSelect = 0x19
+kMCIdleSelect = 0x1A
+kMCKeySelect = 0x1B
+kMCClickSelect = 0x1C
+kMCEnableEditingSelect = 0x1D
+kMCIsEditingEnabledSelect = 0x1E
+kMCCopySelect = 0x1F
+kMCCutSelect = 0x20
+kMCPasteSelect = 0x21
+kMCClearSelect = 0x22
+kMCUndoSelect = 0x23
+kMCPositionControllerSelect = 0x24
+kMCGetControllerInfoSelect = 0x25
+kMCSetClipSelect = 0x28
+kMCGetClipSelect = 0x29
+kMCDrawBadgeSelect = 0x2A
+kMCSetUpEditMenuSelect = 0x2B
+kMCGetMenuStringSelect = 0x2C
+kMCSetActionFilterWithRefConSelect = 0x2D
diff --git a/Mac/Modules/qt/qtgen.py b/Mac/Modules/qt/qtgen.py
new file mode 100644
index 0000000..5b9e5a7
--- /dev/null
+++ b/Mac/Modules/qt/qtgen.py
@@ -0,0 +1,949 @@
+# Generated from 'Sap:CodeWarrior7:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Movies.h'
+
+f = Function(OSErr, 'EnterMovies',
+)
+functions.append(f)
+
+f = Function(void, 'ExitMovies',
+)
+functions.append(f)
+
+f = Function(OSErr, 'GetMoviesError',
+)
+functions.append(f)
+
+f = Function(void, 'ClearMoviesStickyError',
+)
+functions.append(f)
+
+f = Function(OSErr, 'GetMoviesStickyError',
+)
+functions.append(f)
+
+f = Method(void, 'MoviesTask',
+    (Movie, 'theMovie', InMode),
+    (long, 'maxMilliSecToUse', InMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'PrerollMovie',
+    (Movie, 'theMovie', InMode),
+    (TimeValue, 'time', InMode),
+    (Fixed, 'Rate', InMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'LoadMovieIntoRam',
+    (Movie, 'theMovie', InMode),
+    (TimeValue, 'time', InMode),
+    (TimeValue, 'duration', InMode),
+    (long, 'flags', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMovieActive',
+    (Movie, 'theMovie', InMode),
+    (Boolean, 'active', InMode),
+)
+methods.append(f)
+
+f = Method(Boolean, 'GetMovieActive',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'StartMovie',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'StopMovie',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'GoToBeginningOfMovie',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'GoToEndOfMovie',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(Boolean, 'IsMovieDone',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(Boolean, 'GetMoviePreviewMode',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMoviePreviewMode',
+    (Movie, 'theMovie', InMode),
+    (Boolean, 'usePreview', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'ShowMoviePoster',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(PicHandle, 'GetMoviePict',
+    (Movie, 'theMovie', InMode),
+    (TimeValue, 'time', InMode),
+)
+methods.append(f)
+
+f = Method(PicHandle, 'GetMoviePosterPict',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'UpdateMovie',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'GetMovieBox',
+    (Movie, 'theMovie', InMode),
+    (Rect, 'boxRect', OutMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMovieBox',
+    (Movie, 'theMovie', InMode),
+    (Rect_ptr, 'boxRect', InMode),
+)
+methods.append(f)
+
+f = Method(RgnHandle, 'GetMovieDisplayClipRgn',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMovieDisplayClipRgn',
+    (Movie, 'theMovie', InMode),
+    (RgnHandle, 'theClip', InMode),
+)
+methods.append(f)
+
+f = Method(RgnHandle, 'GetMovieClipRgn',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMovieClipRgn',
+    (Movie, 'theMovie', InMode),
+    (RgnHandle, 'theClip', InMode),
+)
+methods.append(f)
+
+f = Method(RgnHandle, 'GetMovieDisplayBoundsRgn',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(RgnHandle, 'GetMovieBoundsRgn',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Function(Movie, 'NewMovie',
+    (long, 'flags', InMode),
+)
+functions.append(f)
+
+f = Method(OSErr, 'PutMovieIntoHandle',
+    (Movie, 'theMovie', InMode),
+    (Handle, 'publicMovie', InMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'PutMovieIntoDataFork',
+    (Movie, 'theMovie', InMode),
+    (short, 'fRefNum', InMode),
+    (long, 'offset', InMode),
+    (long, 'maxSize', InMode),
+)
+methods.append(f)
+
+f = Method(TimeScale, 'GetMovieTimeScale',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMovieTimeScale',
+    (Movie, 'theMovie', InMode),
+    (TimeScale, 'timeScale', InMode),
+)
+methods.append(f)
+
+f = Method(TimeValue, 'GetMovieDuration',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(Fixed, 'GetMovieRate',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMovieRate',
+    (Movie, 'theMovie', InMode),
+    (Fixed, 'rate', InMode),
+)
+methods.append(f)
+
+f = Method(Fixed, 'GetMoviePreferredRate',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMoviePreferredRate',
+    (Movie, 'theMovie', InMode),
+    (Fixed, 'rate', InMode),
+)
+methods.append(f)
+
+f = Method(short, 'GetMoviePreferredVolume',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMoviePreferredVolume',
+    (Movie, 'theMovie', InMode),
+    (short, 'volume', InMode),
+)
+methods.append(f)
+
+f = Method(short, 'GetMovieVolume',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMovieVolume',
+    (Movie, 'theMovie', InMode),
+    (short, 'volume', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'GetMoviePreviewTime',
+    (Movie, 'theMovie', InMode),
+    (TimeValue, 'previewTime', OutMode),
+    (TimeValue, 'previewDuration', OutMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMoviePreviewTime',
+    (Movie, 'theMovie', InMode),
+    (TimeValue, 'previewTime', InMode),
+    (TimeValue, 'previewDuration', InMode),
+)
+methods.append(f)
+
+f = Method(TimeValue, 'GetMoviePosterTime',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMoviePosterTime',
+    (Movie, 'theMovie', InMode),
+    (TimeValue, 'posterTime', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'GetMovieSelection',
+    (Movie, 'theMovie', InMode),
+    (TimeValue, 'selectionTime', OutMode),
+    (TimeValue, 'selectionDuration', OutMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMovieSelection',
+    (Movie, 'theMovie', InMode),
+    (TimeValue, 'selectionTime', InMode),
+    (TimeValue, 'selectionDuration', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMovieActiveSegment',
+    (Movie, 'theMovie', InMode),
+    (TimeValue, 'startTime', InMode),
+    (TimeValue, 'duration', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'GetMovieActiveSegment',
+    (Movie, 'theMovie', InMode),
+    (TimeValue, 'startTime', OutMode),
+    (TimeValue, 'duration', OutMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMovieTimeValue',
+    (Movie, 'theMovie', InMode),
+    (TimeValue, 'newtime', InMode),
+)
+methods.append(f)
+
+f = Method(long, 'GetMovieTrackCount',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetAutoTrackAlternatesEnabled',
+    (Movie, 'theMovie', InMode),
+    (Boolean, 'enable', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'SelectMovieAlternates',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'InsertMovieSegment',
+    (Movie, 'srcMovie', InMode),
+    (Movie, 'dstMovie', InMode),
+    (TimeValue, 'srcIn', InMode),
+    (TimeValue, 'srcDuration', InMode),
+    (TimeValue, 'dstIn', InMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'InsertEmptyMovieSegment',
+    (Movie, 'dstMovie', InMode),
+    (TimeValue, 'dstIn', InMode),
+    (TimeValue, 'dstDuration', InMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'DeleteMovieSegment',
+    (Movie, 'theMovie', InMode),
+    (TimeValue, 'startTime', InMode),
+    (TimeValue, 'duration', InMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'ScaleMovieSegment',
+    (Movie, 'theMovie', InMode),
+    (TimeValue, 'startTime', InMode),
+    (TimeValue, 'oldDuration', InMode),
+    (TimeValue, 'newDuration', InMode),
+)
+methods.append(f)
+
+f = Method(Movie, 'CutMovieSelection',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(Movie, 'CopyMovieSelection',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'PasteMovieSelection',
+    (Movie, 'theMovie', InMode),
+    (Movie, 'src', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'AddMovieSelection',
+    (Movie, 'theMovie', InMode),
+    (Movie, 'src', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'ClearMovieSelection',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Function(OSErr, 'PasteHandleIntoMovie',
+    (Handle, 'h', InMode),
+    (OSType, 'handleType', InMode),
+    (Movie, 'theMovie', InMode),
+    (long, 'flags', InMode),
+    (ComponentInstance, 'userComp', InMode),
+)
+functions.append(f)
+
+f = Method(OSErr, 'CopyMovieSettings',
+    (Movie, 'srcMovie', InMode),
+    (Movie, 'dstMovie', InMode),
+)
+methods.append(f)
+
+f = Method(long, 'GetMovieDataSize',
+    (Movie, 'theMovie', InMode),
+    (TimeValue, 'startTime', InMode),
+    (TimeValue, 'duration', InMode),
+)
+methods.append(f)
+
+f = Method(Boolean, 'PtInMovie',
+    (Movie, 'theMovie', InMode),
+    (Point, 'pt', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetMovieLanguage',
+    (Movie, 'theMovie', InMode),
+    (long, 'language', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'GetMovieNextInterestingTime',
+    (Movie, 'theMovie', InMode),
+    (short, 'interestingTimeFlags', InMode),
+    (short, 'numMediaTypes', InMode),
+    (OSType_ptr, 'whichMediaTypes', InMode),
+    (TimeValue, 'time', InMode),
+    (Fixed, 'rate', InMode),
+    (TimeValue, 'interestingTime', OutMode),
+    (TimeValue, 'interestingDuration', OutMode),
+)
+methods.append(f)
+
+f = Function(OSErr, 'CreateMovieFile',
+    (FSSpec_ptr, 'fileSpec', InMode),
+    (OSType, 'creator', InMode),
+    (ScriptCode, 'scriptTag', InMode),
+    (long, 'createMovieFileFlags', InMode),
+    (short, 'resRefNum', OutMode),
+    (Movie, 'newmovie', OutMode),
+)
+functions.append(f)
+
+f = Function(OSErr, 'OpenMovieFile',
+    (FSSpec_ptr, 'fileSpec', InMode),
+    (short, 'resRefNum', OutMode),
+    (SInt8, 'permission', InMode),
+)
+functions.append(f)
+
+f = Function(OSErr, 'CloseMovieFile',
+    (short, 'resRefNum', InMode),
+)
+functions.append(f)
+
+f = Function(OSErr, 'DeleteMovieFile',
+    (FSSpec_ptr, 'fileSpec', InMode),
+)
+functions.append(f)
+
+f = Function(OSErr, 'NewMovieFromFile',
+    (Movie, 'theMovie', OutMode),
+    (short, 'resRefNum', InMode),
+    (short, 'resId', OutMode),
+    (StringPtr, 'resName', InMode),
+    (short, 'newMovieFlags', InMode),
+    (Boolean, 'dataRefWasChanged', OutMode),
+)
+functions.append(f)
+
+f = Function(OSErr, 'NewMovieFromHandle',
+    (Movie, 'theMovie', OutMode),
+    (Handle, 'h', InMode),
+    (short, 'newMovieFlags', InMode),
+    (Boolean, 'dataRefWasChanged', OutMode),
+)
+functions.append(f)
+
+f = Function(OSErr, 'NewMovieFromDataFork',
+    (Movie, 'theMovie', OutMode),
+    (short, 'fRefNum', InMode),
+    (long, 'fileOffset', InMode),
+    (short, 'newMovieFlags', InMode),
+    (Boolean, 'dataRefWasChanged', OutMode),
+)
+functions.append(f)
+
+f = Function(OSErr, 'NewMovieFromUserProc',
+    (Movie, 'm', OutMode),
+    (short, 'flags', InMode),
+    (Boolean, 'dataRefWasChanged', OutMode),
+    (GetMovieUPP, 'getProc', InMode),
+    (void, 'refCon', OutMode),
+    (Handle, 'defaultDataRef', InMode),
+    (OSType, 'dataRefType', InMode),
+)
+functions.append(f)
+
+f = Method(OSErr, 'AddMovieResource',
+    (Movie, 'theMovie', InMode),
+    (short, 'resRefNum', InMode),
+    (short, 'resId', OutMode),
+    (ConstStr255Param, 'resName', InMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'UpdateMovieResource',
+    (Movie, 'theMovie', InMode),
+    (short, 'resRefNum', InMode),
+    (short, 'resId', InMode),
+    (ConstStr255Param, 'resName', InMode),
+)
+methods.append(f)
+
+f = Function(OSErr, 'RemoveMovieResource',
+    (short, 'resRefNum', InMode),
+    (short, 'resId', InMode),
+)
+functions.append(f)
+
+f = Method(Boolean, 'HasMovieChanged',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'ClearMovieChanged',
+    (Movie, 'theMovie', InMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'SetMovieDefaultDataRef',
+    (Movie, 'theMovie', InMode),
+    (Handle, 'dataRef', InMode),
+    (OSType, 'dataRefType', InMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'GetMovieDefaultDataRef',
+    (Movie, 'theMovie', InMode),
+    (Handle, 'dataRef', OutMode),
+    (OSType, 'dataRefType', OutMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'SetMovieColorTable',
+    (Movie, 'theMovie', InMode),
+    (CTabHandle, 'ctab', InMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'GetMovieColorTable',
+    (Movie, 'theMovie', InMode),
+    (CTabHandle, 'ctab', OutMode),
+)
+methods.append(f)
+
+f = Method(void, 'FlattenMovie',
+    (Movie, 'theMovie', InMode),
+    (long, 'movieFlattenFlags', InMode),
+    (FSSpec_ptr, 'theFile', InMode),
+    (OSType, 'creator', InMode),
+    (ScriptCode, 'scriptTag', InMode),
+    (long, 'createMovieFileFlags', InMode),
+    (short, 'resId', OutMode),
+    (ConstStr255Param, 'resName', InMode),
+)
+methods.append(f)
+
+f = Method(Movie, 'FlattenMovieData',
+    (Movie, 'theMovie', InMode),
+    (long, 'movieFlattenFlags', InMode),
+    (FSSpec_ptr, 'theFile', InMode),
+    (OSType, 'creator', InMode),
+    (ScriptCode, 'scriptTag', InMode),
+    (long, 'createMovieFileFlags', InMode),
+)
+methods.append(f)
+
+f = Function(HandlerError, 'GetVideoMediaGraphicsMode',
+    (MediaHandler, 'mh', InMode),
+    (long, 'graphicsMode', OutMode),
+    (RGBColor, 'opColor', OutMode),
+)
+functions.append(f)
+
+f = Function(HandlerError, 'SetVideoMediaGraphicsMode',
+    (MediaHandler, 'mh', InMode),
+    (long, 'graphicsMode', InMode),
+    (RGBColor_ptr, 'opColor', InMode),
+)
+functions.append(f)
+
+f = Function(HandlerError, 'GetSoundMediaBalance',
+    (MediaHandler, 'mh', InMode),
+    (short, 'balance', OutMode),
+)
+functions.append(f)
+
+f = Function(HandlerError, 'SetSoundMediaBalance',
+    (MediaHandler, 'mh', InMode),
+    (short, 'balance', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'AddTextSample',
+    (MediaHandler, 'mh', InMode),
+    (Ptr, 'text', InMode),
+    (unsigned_long, 'size', InMode),
+    (short, 'fontNumber', InMode),
+    (short, 'fontSize', InMode),
+    (short, 'textFace', InMode),
+    (RGBColor, 'textColor', OutMode),
+    (RGBColor, 'backColor', OutMode),
+    (short, 'textJustification', InMode),
+    (Rect, 'textBox', OutMode),
+    (long, 'displayFlags', InMode),
+    (TimeValue, 'scrollDelay', InMode),
+    (short, 'hiliteStart', InMode),
+    (short, 'hiliteEnd', InMode),
+    (RGBColor, 'rgbHiliteColor', OutMode),
+    (TimeValue, 'duration', InMode),
+    (TimeValue, 'sampleTime', OutMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'AddTESample',
+    (MediaHandler, 'mh', InMode),
+    (TEHandle, 'hTE', InMode),
+    (RGBColor, 'backColor', OutMode),
+    (short, 'textJustification', InMode),
+    (Rect, 'textBox', OutMode),
+    (long, 'displayFlags', InMode),
+    (TimeValue, 'scrollDelay', InMode),
+    (short, 'hiliteStart', InMode),
+    (short, 'hiliteEnd', InMode),
+    (RGBColor, 'rgbHiliteColor', OutMode),
+    (TimeValue, 'duration', InMode),
+    (TimeValue, 'sampleTime', OutMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'AddHiliteSample',
+    (MediaHandler, 'mh', InMode),
+    (short, 'hiliteStart', InMode),
+    (short, 'hiliteEnd', InMode),
+    (RGBColor, 'rgbHiliteColor', OutMode),
+    (TimeValue, 'duration', InMode),
+    (TimeValue, 'sampleTime', OutMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'FindNextText',
+    (MediaHandler, 'mh', InMode),
+    (Ptr, 'text', InMode),
+    (long, 'size', InMode),
+    (short, 'findFlags', InMode),
+    (TimeValue, 'startTime', InMode),
+    (TimeValue, 'foundTime', OutMode),
+    (TimeValue, 'foundDuration', OutMode),
+    (long, 'offset', OutMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'HiliteTextSample',
+    (MediaHandler, 'mh', InMode),
+    (TimeValue, 'sampleTime', InMode),
+    (short, 'hiliteStart', InMode),
+    (short, 'hiliteEnd', InMode),
+    (RGBColor, 'rgbHiliteColor', OutMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'SetTextSampleData',
+    (MediaHandler, 'mh', InMode),
+    (void, 'data', OutMode),
+    (OSType, 'dataType', InMode),
+)
+functions.append(f)
+
+f = Method(void, 'GetPosterBox',
+    (Movie, 'theMovie', InMode),
+    (Rect, 'boxRect', OutMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetPosterBox',
+    (Movie, 'theMovie', InMode),
+    (Rect_ptr, 'boxRect', InMode),
+)
+methods.append(f)
+
+f = Method(RgnHandle, 'GetMovieSegmentDisplayBoundsRgn',
+    (Movie, 'theMovie', InMode),
+    (TimeValue, 'time', InMode),
+    (TimeValue, 'duration', InMode),
+)
+methods.append(f)
+
+f = Method(ComponentInstance, 'NewMovieController',
+    (Movie, 'theMovie', InMode),
+    (Rect_ptr, 'movieRect', InMode),
+    (long, 'someFlags', InMode),
+)
+methods.append(f)
+
+f = Function(void, 'DisposeMovieController',
+    (ComponentInstance, 'mc', InMode),
+)
+functions.append(f)
+
+f = Method(void, 'ShowMovieInformation',
+    (Movie, 'theMovie', InMode),
+    (ModalFilterUPP, 'filterProc', InMode),
+    (long, 'refCon', InMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'PutMovieOnScrap',
+    (Movie, 'theMovie', InMode),
+    (long, 'movieScrapFlags', InMode),
+)
+methods.append(f)
+
+f = Function(Movie, 'NewMovieFromScrap',
+    (long, 'newMovieFlags', InMode),
+)
+functions.append(f)
+
+f = Method(void, 'SetMoviePlayHints',
+    (Movie, 'theMovie', InMode),
+    (long, 'flags', InMode),
+    (long, 'flagsMask', InMode),
+)
+methods.append(f)
+
+f = Function(ComponentResult, 'MCSetMovie',
+    (MovieController, 'mc', InMode),
+    (Movie, 'theMovie', InMode),
+    (WindowPtr, 'movieWindow', InMode),
+    (Point, 'where', InMode),
+)
+functions.append(f)
+
+f = Function(Movie, 'MCGetIndMovie',
+    (MovieController, 'mc', InMode),
+    (short, 'index', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCRemoveMovie',
+    (MovieController, 'mc', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCIsPlayerEvent',
+    (MovieController, 'mc', InMode),
+    (EventRecord_ptr, 'e', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCDoAction',
+    (MovieController, 'mc', InMode),
+    (short, 'action', InMode),
+    (void, 'params', OutMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCSetControllerAttached',
+    (MovieController, 'mc', InMode),
+    (Boolean, 'attach', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCIsControllerAttached',
+    (MovieController, 'mc', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCSetVisible',
+    (MovieController, 'mc', InMode),
+    (Boolean, 'visible', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCGetVisible',
+    (MovieController, 'mc', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCGetControllerBoundsRect',
+    (MovieController, 'mc', InMode),
+    (Rect, 'bounds', OutMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCSetControllerBoundsRect',
+    (MovieController, 'mc', InMode),
+    (Rect_ptr, 'bounds', InMode),
+)
+functions.append(f)
+
+f = Function(RgnHandle, 'MCGetControllerBoundsRgn',
+    (MovieController, 'mc', InMode),
+)
+functions.append(f)
+
+f = Function(RgnHandle, 'MCGetWindowRgn',
+    (MovieController, 'mc', InMode),
+    (WindowPtr, 'w', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCMovieChanged',
+    (MovieController, 'mc', InMode),
+    (Movie, 'm', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCSetDuration',
+    (MovieController, 'mc', InMode),
+    (TimeValue, 'duration', InMode),
+)
+functions.append(f)
+
+f = Function(TimeValue, 'MCGetCurrentTime',
+    (MovieController, 'mc', InMode),
+    (TimeScale, 'scale', OutMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCNewAttachedController',
+    (MovieController, 'mc', InMode),
+    (Movie, 'theMovie', InMode),
+    (WindowPtr, 'w', InMode),
+    (Point, 'where', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCDraw',
+    (MovieController, 'mc', InMode),
+    (WindowPtr, 'w', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCActivate',
+    (MovieController, 'mc', InMode),
+    (WindowPtr, 'w', InMode),
+    (Boolean, 'activate', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCIdle',
+    (MovieController, 'mc', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCKey',
+    (MovieController, 'mc', InMode),
+    (SInt8, 'key', InMode),
+    (long, 'modifiers', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCClick',
+    (MovieController, 'mc', InMode),
+    (WindowPtr, 'w', InMode),
+    (Point, 'where', InMode),
+    (long, 'when', InMode),
+    (long, 'modifiers', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCEnableEditing',
+    (MovieController, 'mc', InMode),
+    (Boolean, 'enabled', InMode),
+)
+functions.append(f)
+
+f = Function(long, 'MCIsEditingEnabled',
+    (MovieController, 'mc', InMode),
+)
+functions.append(f)
+
+f = Function(Movie, 'MCCopy',
+    (MovieController, 'mc', InMode),
+)
+functions.append(f)
+
+f = Function(Movie, 'MCCut',
+    (MovieController, 'mc', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCPaste',
+    (MovieController, 'mc', InMode),
+    (Movie, 'srcMovie', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCClear',
+    (MovieController, 'mc', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCUndo',
+    (MovieController, 'mc', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCPositionController',
+    (MovieController, 'mc', InMode),
+    (Rect_ptr, 'movieRect', InMode),
+    (Rect_ptr, 'controllerRect', InMode),
+    (long, 'someFlags', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCGetControllerInfo',
+    (MovieController, 'mc', InMode),
+    (long, 'someFlags', OutMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCSetClip',
+    (MovieController, 'mc', InMode),
+    (RgnHandle, 'theClip', InMode),
+    (RgnHandle, 'movieClip', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCGetClip',
+    (MovieController, 'mc', InMode),
+    (RgnHandle, 'theClip', OutMode),
+    (RgnHandle, 'movieClip', OutMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCDrawBadge',
+    (MovieController, 'mc', InMode),
+    (RgnHandle, 'movieRgn', InMode),
+    (RgnHandle, 'badgeRgn', OutMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCSetUpEditMenu',
+    (MovieController, 'mc', InMode),
+    (long, 'modifiers', InMode),
+    (MenuHandle, 'mh', InMode),
+)
+functions.append(f)
+
+f = Function(ComponentResult, 'MCGetMenuString',
+    (MovieController, 'mc', InMode),
+    (long, 'modifiers', InMode),
+    (short, 'item', InMode),
+    (Str255, 'aString', InMode),
+)
+functions.append(f)
+
+f = Function(OSErr, 'QueueSyncTask',
+    (QTSyncTaskPtr, 'task', InMode),
+)
+functions.append(f)
+
+f = Function(OSErr, 'DequeueSyncTask',
+    (QTSyncTaskPtr, 'qElem', InMode),
+)
+functions.append(f)
+
diff --git a/Mac/Modules/qt/qtscan.py b/Mac/Modules/qt/qtscan.py
new file mode 100644
index 0000000..4a715d6
--- /dev/null
+++ b/Mac/Modules/qt/qtscan.py
@@ -0,0 +1,78 @@
+# Scan an Apple header file, generating a Python file of generator calls.
+
+import addpack
+addpack.addpack(':tools:bgen:bgen')
+from scantools import Scanner
+
+LONG = "QuickTime"
+SHORT = "qt"
+OBJECT = "Movie"
+
+def main():
+	input = "Movies.h"
+	output = SHORT + "gen.py"
+	defsoutput = LONG + ".py"
+	scanner = MyScanner(input, output, defsoutput)
+	scanner.scan()
+	scanner.close()
+	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]
+			if t == OBJECT and m == "InMode":
+				classname = "Method"
+				listname = "methods"
+		return classname, listname
+
+	def makeblacklistnames(self):
+		return [
+			"DisposeMovie",		# Done on python-object disposal
+			"GetMovieCreationTime",	# type "unsigned long" in C, inparseable
+			"GetMovieModificationTime",	# Ditto
+			]
+
+	def makeblacklisttypes(self):
+		return [
+			"MoviesErrorUPP",
+			"Track",	# XXXX To be done in the future
+			"Media",
+			"UserData",
+			"TimeBase",
+			"QTCallBack",
+			"Component",
+			"TimeRecord",
+			"TimeRecord_ptr",
+			"TrackEditState",
+			"MovieEditState",
+			"MoviePreviewCallOutUPP",
+			"CGrafPtr",
+			"GDHandle",
+			"MovieDrawingCompleteUPP",
+			"PixMapHandle",
+			"MatrixRecord",
+			"MatrixRecord_ptr",
+			"QTCallBackUPP",
+			"TextMediaUPP",
+			"MovieProgressUPP",
+			"MovieRgnCoverUPP",
+			"MCActionFilterUPP",
+			"MCActionFilterWithRefConUPP",
+			"SampleDescription",
+			"SoundDescription",
+			"TextDescription",
+			"MusicDescription",
+			]
+
+	def makerepairinstructions(self):
+		return [
+			]
+			
+if __name__ == "__main__":
+	main()
diff --git a/Mac/Modules/qt/qtsupport.py b/Mac/Modules/qt/qtsupport.py
new file mode 100644
index 0000000..5c29b75
--- /dev/null
+++ b/Mac/Modules/qt/qtsupport.py
@@ -0,0 +1,79 @@
+# 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 = 'Movies.h'		# The Apple header file
+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
+MODPREFIX = MODNAME			# The prefix for module-wide routines
+OBJECTTYPE = "Movie"		# 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
+
+includestuff = includestuff + """
+#include <%s>""" % MACHEADERFILE + """
+"""
+
+Movie = OpaqueByValueType(OBJECTTYPE, OBJECTPREFIX)
+TimeValue = Type("TimeValue", "l")
+TimeScale = Type("TimeScale", "l")
+TimeBaseFlags = Type("TimeBaseFlags", "l")
+QTCallBackFlags = Type("QTCallBackFlags", "h")
+TimeBaseStatus = Type("TimeBaseStatus", "l")
+QTCallBackType = Type("QTCallBackType", "h")
+nextTimeFlagsEnum = Type("nextTimeFlagsEnum", "h")
+createMovieFileFlagsEnum = Type("createMovieFileFlagsEnum", "l")
+movieFlattenFlagsEnum = Type("movieFlattenFlagsEnum", "l")
+dataRefAttributesFlags = Type("dataRefAttributesFlags", "l")
+playHintsEnum = Type("playHintsEnum", "l")
+mediaHandlerFlagsEnum = Type("mediaHandlerFlagsEnum", "l")
+
+RgnHandle = OpaqueByValueType("RgnHandle", "ResObj")
+PicHandle = OpaqueByValueType("PicHandle", "ResObj")
+
+
+class MyObjectDefinition(GlobalObjectDefinition):
+	def outputCheckNewArg(self):
+		Output("""if (itself == NULL) {
+					PyErr_SetString(Qt_Error,"Cannot create null Movie");
+					return NULL;
+				}""")
+	def outputFreeIt(self, itselfname):
+		Output("DisposeMovie(%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)
+
+# Create the generator classes used to populate the lists
+Function = FunctionGenerator
+Method = MethodGenerator
+
+# Create and populate the lists
+functions = []
+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)
+
+# generate output (open the output file as late as possible)
+SetOutputFileName(OUTPUTFILE)
+module.generate()
+
