| """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() |