"""MovieInWindow converted to python

Jack Jansen, CWI, December 1995
"""

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() # Was: 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, d1, d2 = Qt.NewMovieFromFile(movieResRef, 0, QuickTime.newMovieActive)
	return movie
	
if __name__ == '__main__':
	main()
	
