示例#1
0
    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"),
        ))
示例#2
0
    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