"""VerySimplePlayer converted to python Jack Jansen, CWI, December 1995 """ from Carbon import Qt from Carbon import QuickTime from Carbon import Qd from Carbon import QuickDraw from Carbon import Evt from Carbon import Events from Carbon import Win from Carbon import Windows from Carbon import File import EasyDialogs import sys # XXXX maxbounds = (40, 40, 1000, 1000) def main(): print 'hello world' # XXXX # skip the toolbox initializations, already done # XXXX Should use gestalt here to check for quicktime version Qt.EnterMovies() # Get the movie file fss = EasyDialogs.AskFileForOpen(wanted=File.FSSpec) # Was: QuickTime.MovieFileType if not fss: sys.exit(0) # Open the window bounds = (175, 75, 175+160, 75+120) theWindow = Win.NewCWindow(bounds, fss.as_tuple()[2], 0, 0, -1, 1, 0) # XXXX Needed? SetGWorld((CGrafPtr)theWindow, nil) Qd.SetPort(theWindow) # Get the movie theMovie = loadMovie(fss) # Relocate to (0, 0) bounds = theMovie.GetMovieBox() bounds = 0, 0, bounds[2]-bounds[0], bounds[3]-bounds[1] theMovie.SetMovieBox(bounds) # Create a controller theController = theMovie.NewMovieController(bounds, QuickTime.mcTopLeftMovie) # Get movie size and update window parameters rv, bounds = theController.MCGetControllerBoundsRect() theWindow.SizeWindow(bounds[2], bounds[3], 0) # XXXX or [3] [2]? Qt.AlignWindow(theWindow, 0) theWindow.ShowWindow() # XXXX MCDoAction(theController, mcActionSetGrowBoxBounds, &maxBounds) theController.MCDoAction(QuickTime.mcActionSetKeysEnabled, '1') # XXXX MCSetActionFilterWithRefCon(theController, movieControllerEventFilter, (long)theWindow) done = 0 while not done: gotone, evt = Evt.WaitNextEvent(0xffff, 0) (what, message, when, where, modifiers) = evt ## print what, message, when, where, modifiers # XXXX if theController.MCIsPlayerEvent(evt): continue if what == Events.mouseDown: part, whichWindow = Win.FindWindow(where) if part == Windows.inGoAway: done = whichWindow.TrackGoAway(where) elif part == Windows.inDrag: Qt.DragAlignedWindow(whichWindow, where, (0, 0, 4000, 4000)) elif what == Events.updateEvt: whichWindow = Win.WhichWindow(message) if not whichWindow: # Probably the console window. Print something, hope it helps. print 'update' else: Qd.SetPort(whichWindow) whichWindow.BeginUpdate() Qd.EraseRect(whichWindow.GetWindowPort().GetPortBounds()) whichWindow.EndUpdate() def loadMovie(theFile): """Load a movie given an fsspec. Return the movie object""" movieResRef = Qt.OpenMovieFile(theFile, 1) movie, d1, d2 = Qt.NewMovieFromFile(movieResRef, 0, QuickTime.newMovieActive) return movie if __name__ == '__main__': main()