symbian-qemu-0.9.1-12/python-2.6.1/Mac/Demo/quicktime/MovieInWindow.py
author Gareth Stockwell <gareth.stockwell@accenture.com>
Fri, 24 Sep 2010 12:07:03 +0100
branchgraphics-phase-3
changeset 115 7fc47a6656f3
parent 1 2fb8b9db1c86
permissions -rw-r--r--
Removed syborg-graphicswrapper model library This has been moved to the adapt/graphics.simulator package - see changeset 563aa0c4cea3.

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