def testMediaControl(self): def onSeek(time): self.messageTester.setMessageReceived( widget.MediaControl.SEEK_MOTION) root = self.loadEmptyScene() self.node = widget.MediaControl(size=(160, 30), parent=root) self.messageTester = MessageTester(self.node, [ widget.MediaControl.PLAY_CLICKED, widget.MediaControl.PAUSE_CLICKED, widget.MediaControl.SEEK_PRESSED, widget.MediaControl.SEEK_RELEASED ], self) self.node.subscribe(widget.MediaControl.SEEK_MOTION, onSeek) self.start(True, ( lambda: self.compareImage("testMediaControl1"), lambda: self.node.setDuration(60 * 1000), lambda: self.compareImage("testMediaControl2"), lambda: self.node.setTime(30 * 1000), lambda: self.compareImage("testMediaControl3"), lambda: self.node.setTime(60 * 1000), lambda: self.compareImage("testMediaControl4"), lambda: self.node.play(), lambda: self.compareImage("testMediaControl5"), lambda: self.node.pause(), lambda: self.compareImage("testMediaControl4"), self.messageTester.reset, lambda: self._sendMouseEvent(avg.Event.CURSOR_DOWN, 1, 1), lambda: self._sendMouseEvent(avg.Event.CURSOR_UP, 1, 1), lambda: self.messageTester.assertState([ widget.MediaControl.PLAY_CLICKED, ]), lambda: self._sendMouseEvent(avg.Event.CURSOR_DOWN, 1, 1), lambda: self._sendMouseEvent(avg.Event.CURSOR_UP, 1, 1), lambda: self.messageTester.assertState([ widget.MediaControl.PAUSE_CLICKED, ]), lambda: self.node.setTime(0), lambda: self._sendMouseEvent(avg.Event.CURSOR_DOWN, 56, 5), lambda: self.messageTester.assertState( [widget.MediaControl.SEEK_PRESSED]), lambda: self._sendMouseEvent(avg.Event.CURSOR_MOTION, 150, 5), lambda: self.messageTester.assertState([ widget.MediaControl.SEEK_MOTION, ]), lambda: self.compareImage("testMediaControl6"), lambda: self._sendMouseEvent(avg.Event.CURSOR_UP, 150, 5), lambda: self.messageTester.assertState([ widget.MediaControl.SEEK_RELEASED, ]), lambda: self.compareImage("testMediaControl4"), ))
def onInit(self): self.node.play() mediaSize = self.node.getMediaSize() canvasSize = self.size sizeRatio = min(mediaSize.x / canvasSize.x, mediaSize.y / canvasSize.y) self.node.size /= sizeRatio self.node.x = (self.width - self.node.width) / 2 self.node.y = (self.height - self.node.height) / 2 self.node.subscribe(avg.VideoNode.END_OF_FILE, self.onEOF) if self.node.hasAlpha(): self.__makeAlphaBackground() self.appendChild(self.node) self.curFrameWords = avg.WordsNode(parent=self, pos=(10, 10), fontsize=10) self.framesQueuedWords = avg.WordsNode(parent=self, pos=(10, 22), fontsize=10) controlPos = ((self.width - VideoPlayer.CONTROL_WIDTH) / 2, self.height - 25) self.videoControl = widget.MediaControl( pos=controlPos, size=(VideoPlayer.CONTROL_WIDTH, 20), duration=self.node.getDuration(), parent=self) self.videoControl.play() self.videoControl.subscribe(widget.MediaControl.PLAY_CLICKED, self.onPlay) self.videoControl.subscribe(widget.MediaControl.PAUSE_CLICKED, self.onPause) self.videoControl.subscribe(widget.MediaControl.SEEK_PRESSED, self.onSeekStart) self.videoControl.subscribe(widget.MediaControl.SEEK_RELEASED, self.onSeekEnd) self.videoControl.subscribe(widget.MediaControl.SEEK_MOTION, self.onSeek) self.isSeeking = False self.isPaused = False