/Mac/Demo/quicktime/VerySimplePlayer.py
http://unladen-swallow.googlecode.com/ · Python · 92 lines · 57 code · 16 blank · 19 comment · 10 complexity · e4daf3591ae6ab34842d30af4f556b62 MD5 · raw file
- """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()