| """MovieInWindow 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 | |
| import os | |
| def main(): | |
| # skip the toolbox initializations, already done | |
| # XXXX Should use gestalt here to check for quicktime version | |
| Qt.EnterMovies() | |
| # Get the movie file | |
| if len(sys.argv) > 1: | |
| filename = sys.argv[1] | |
| else: | |
| filename = EasyDialogs.AskFileForOpen() # Was: QuickTime.MovieFileType | |
| if not filename: | |
| sys.exit(0) | |
| # Open the window | |
| bounds = (175, 75, 175+160, 75+120) | |
| theWindow = Win.NewCWindow(bounds, os.path.split(filename)[1], 1, 0, -1, 0, 0) | |
| Qd.SetPort(theWindow) | |
| # XXXX Needed? SetGWorld((CGrafPtr)theWindow, nil) | |
| playMovieInWindow(theWindow, filename, theWindow.GetWindowPort().GetPortBounds()) | |
| def playMovieInWindow(theWindow, theFile, movieBox): | |
| """Play a movie in a window""" | |
| # XXXX Needed? SetGWorld((CGrafPtr)theWindow, nil); | |
| # Get the movie | |
| theMovie = loadMovie(theFile) | |
| # Set where we want it | |
| theMovie.SetMovieBox(movieBox) | |
| # Start at the beginning | |
| theMovie.GoToBeginningOfMovie() | |
| # Give a little time to preroll | |
| theMovie.MoviesTask(0) | |
| # Start playing | |
| theMovie.StartMovie() | |
| while not theMovie.IsMovieDone() and not Evt.Button(): | |
| theMovie.MoviesTask(0) | |
| 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() |