mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			119 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| import Qd
 | |
| import Win
 | |
| import Qt, QuickTime
 | |
| import W
 | |
| import macfs
 | |
| import Evt, Events
 | |
| 
 | |
| _moviesinitialized = 0
 | |
| 
 | |
| def EnterMovies():
 | |
| 	global _moviesinitialized
 | |
| 	if not _moviesinitialized:
 | |
| 		Qt.EnterMovies()
 | |
| 		_moviesinitialized = 1
 | |
| 
 | |
| class Movie(W.Widget):
 | |
| 	
 | |
| 	def __init__(self, possize):
 | |
| 		EnterMovies()
 | |
| 		self.movie = None
 | |
| 		self.running = 0
 | |
| 		W.Widget.__init__(self, possize)
 | |
| 	
 | |
| 	def adjust(self, oldbounds):
 | |
| 		self.SetPort()
 | |
| 		Win.InvalRect(oldbounds)
 | |
| 		Win.InvalRect(self._bounds)
 | |
| 		self.calcmoviebox()
 | |
| 	
 | |
| 	def set(self, path_or_fss, start = 0):
 | |
| 		self.SetPort()
 | |
| 		if self.movie:
 | |
| 			#Win.InvalRect(self.movie.GetMovieBox())
 | |
| 			Qd.PaintRect(self.movie.GetMovieBox())
 | |
| 		if type(path_or_fss) == type(''):
 | |
| 			path = path_or_fss
 | |
| 			fss = macfs.FSSpec(path)
 | |
| 		else:
 | |
| 			path = path_or_fss.as_pathname()
 | |
| 			fss = path_or_fss
 | |
| 		self.movietitle = os.path.basename(path)
 | |
| 		movieResRef = Qt.OpenMovieFile(fss, 1)
 | |
| 		self.movie, dummy, dummy = Qt.NewMovieFromFile(movieResRef, 0, QuickTime.newMovieActive)
 | |
| 		self.moviebox = self.movie.GetMovieBox()
 | |
| 		self.calcmoviebox()
 | |
| 		Qd.ObscureCursor()	# XXX does this work at all?
 | |
| 		self.movie.GoToBeginningOfMovie()
 | |
| 		if start:
 | |
| 			self.movie.StartMovie()
 | |
| 			self.running = 1
 | |
| 		else:
 | |
| 			self.running = 0
 | |
| 			self.movie.MoviesTask(0)
 | |
| 	
 | |
| 	def get(self):
 | |
| 		return self.movie
 | |
| 	
 | |
| 	def getmovietitle(self):
 | |
| 		return self.movietitle
 | |
| 	
 | |
| 	def start(self):
 | |
| 		if self.movie:
 | |
| 			Qd.ObscureCursor()
 | |
| 			self.movie.StartMovie()
 | |
| 			self.running = 1
 | |
| 	
 | |
| 	def stop(self):
 | |
| 		if self.movie:
 | |
| 			self.movie.StopMovie()
 | |
| 			self.running = 0
 | |
| 	
 | |
| 	def rewind(self):
 | |
| 		if self.movie:
 | |
| 			self.movie.GoToBeginningOfMovie()
 | |
| 	
 | |
| 	def calcmoviebox(self):
 | |
| 		if not self.movie:
 | |
| 			return
 | |
| 		ml, mt, mr, mb = self.moviebox
 | |
| 		wl, wt, wr, wb = widgetbox = self._bounds
 | |
| 		mheight = mb - mt
 | |
| 		mwidth = mr - ml
 | |
| 		wheight = wb - wt
 | |
| 		wwidth = wr - wl
 | |
| 		if (mheight * 2 < wheight) and (mwidth * 2 < wwidth):
 | |
| 			scale = 2
 | |
| 		elif mheight > wheight or mwidth > wwidth:
 | |
| 			scale = min(float(wheight) / mheight, float(wwidth) / mwidth)
 | |
| 		else:
 | |
| 			scale = 1
 | |
| 		mwidth, mheight = mwidth * scale, mheight * scale
 | |
| 		ml, mt = wl + (wwidth - mwidth) / 2, wt + (wheight - mheight) / 2
 | |
| 		mr, mb = ml + mwidth, mt + mheight
 | |
| 		self.movie.SetMovieBox((ml, mt, mr, mb))
 | |
| 	
 | |
| 	def idle(self, *args):
 | |
| 		if self.movie:
 | |
| 			if not self.movie.IsMovieDone() and self.running:
 | |
| 				Qd.ObscureCursor()
 | |
| 				while 1:
 | |
| 					self.movie.MoviesTask(0)
 | |
| 					gotone, event = Evt.EventAvail(Events.everyEvent)
 | |
| 					if gotone or self.movie.IsMovieDone():
 | |
| 						break
 | |
| 			elif self.running:
 | |
| 				box = self.movie.GetMovieBox()
 | |
| 				self.SetPort()
 | |
| 				Win.InvalRect(box)
 | |
| 				self.movie = None
 | |
| 				self.running = 0
 | |
| 	
 | |
| 	def draw(self, visRgn = None):
 | |
| 		if self._visible:
 | |
| 			Qd.PaintRect(self._bounds)
 | |
| 			if self.movie:
 | |
| 				self.movie.UpdateMovie()
 | |
| 				self.movie.MoviesTask(0)
 | |
| 
 | 
