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