Home | History | Annotate | Download | only in quicktime
      1 """VerySimplePlayer converted to python
      2 
      3 Jack Jansen, CWI, December 1995
      4 """
      5 
      6 from Carbon import Qt
      7 from Carbon import QuickTime
      8 from Carbon import Qd
      9 from Carbon import QuickDraw
     10 from Carbon import Evt
     11 from Carbon import Events
     12 from Carbon import Win
     13 from Carbon import Windows
     14 from Carbon import File
     15 import EasyDialogs
     16 import sys
     17 
     18 # XXXX maxbounds = (40, 40, 1000, 1000)
     19 
     20 def main():
     21     print 'hello world' # XXXX
     22     # skip the toolbox initializations, already done
     23     # XXXX Should use gestalt here to check for quicktime version
     24     Qt.EnterMovies()
     25 
     26     # Get the movie file
     27     fss = EasyDialogs.AskFileForOpen(wanted=File.FSSpec) # Was: QuickTime.MovieFileType
     28     if not fss:
     29         sys.exit(0)
     30 
     31     # Open the window
     32     bounds = (175, 75, 175+160, 75+120)
     33     theWindow = Win.NewCWindow(bounds, fss.as_tuple()[2], 0, 0, -1, 1, 0)
     34     # XXXX Needed? SetGWorld((CGrafPtr)theWindow, nil)
     35     Qd.SetPort(theWindow)
     36 
     37     # Get the movie
     38     theMovie = loadMovie(fss)
     39 
     40     # Relocate to (0, 0)
     41     bounds = theMovie.GetMovieBox()
     42     bounds = 0, 0, bounds[2]-bounds[0], bounds[3]-bounds[1]
     43     theMovie.SetMovieBox(bounds)
     44 
     45     # Create a controller
     46     theController = theMovie.NewMovieController(bounds, QuickTime.mcTopLeftMovie)
     47 
     48     # Get movie size and update window parameters
     49     rv, bounds = theController.MCGetControllerBoundsRect()
     50     theWindow.SizeWindow(bounds[2], bounds[3], 0)   # XXXX or [3] [2]?
     51     Qt.AlignWindow(theWindow, 0)
     52     theWindow.ShowWindow()
     53 
     54     # XXXX MCDoAction(theController, mcActionSetGrowBoxBounds, &maxBounds)
     55     theController.MCDoAction(QuickTime.mcActionSetKeysEnabled, '1')
     56 
     57     # XXXX MCSetActionFilterWithRefCon(theController, movieControllerEventFilter, (long)theWindow)
     58 
     59     done = 0
     60     while not done:
     61         gotone, evt = Evt.WaitNextEvent(0xffff, 0)
     62         (what, message, when, where, modifiers) = evt
     63 ##              print what, message, when, where, modifiers # XXXX
     64 
     65         if theController.MCIsPlayerEvent(evt):
     66             continue
     67 
     68         if what == Events.mouseDown:
     69             part, whichWindow = Win.FindWindow(where)
     70             if part == Windows.inGoAway:
     71                 done = whichWindow.TrackGoAway(where)
     72             elif part == Windows.inDrag:
     73                 Qt.DragAlignedWindow(whichWindow, where, (0, 0, 4000, 4000))
     74         elif what == Events.updateEvt:
     75             whichWindow = Win.WhichWindow(message)
     76             if not whichWindow:
     77                 # Probably the console window. Print something, hope it helps.
     78                 print 'update'
     79             else:
     80                 Qd.SetPort(whichWindow)
     81                 whichWindow.BeginUpdate()
     82                 Qd.EraseRect(whichWindow.GetWindowPort().GetPortBounds())
     83                 whichWindow.EndUpdate()
     84 
     85 def loadMovie(theFile):
     86     """Load a movie given an fsspec. Return the movie object"""
     87     movieResRef = Qt.OpenMovieFile(theFile, 1)
     88     movie, d1, d2 = Qt.NewMovieFromFile(movieResRef, 0, QuickTime.newMovieActive)
     89     return movie
     90 
     91 if __name__ == '__main__':
     92     main()
     93