cpython/Mac/Demo/quicktime/MovieInWindow.py

72 lines
1.6 KiB
Python

"""MovieInWindow converted to python
Jack Jansen, CWI, December 1995
"""
import addpack
addpack.addpack(':Tools:bgen:qt')
addpack.addpack(':Tools:bgen:qd')
addpack.addpack(':Tools:bgen:evt')
addpack.addpack(':Tools:bgen:win')
import Qt
import QuickTime
import Qd
import QuickDraw
import Evt
import Events
import Win
import Windows
import macfs
import sys
def main():
# skip the toolbox initializations, already done
# XXXX Should use gestalt here to check for quicktime version
Qt.EnterMovies()
# Get the movie file
fss, ok = macfs.StandardGetFile(QuickTime.MovieFileType)
if not ok:
sys.exit(0)
# Open the window
bounds = (175, 75, 175+160, 75+120)
theWindow = Win.NewCWindow(bounds, fss.as_tuple()[2], 1, 0, -1, 0, 0)
Qd.SetPort(theWindow)
# XXXX Needed? SetGWorld((CGrafPtr)theWindow, nil)
playMovieInWindow(theWindow, fss, theWindow.GetWindowPort().portRect)
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, dummy = Qt.NewMovieFromFile(movieResRef, QuickTime.newMovieActive)
return movie
if __name__ == '__main__':
main()