Пример #1
0
    def mouseMoveEvent(self, event):

        dx = 1.0*(event.x() - self._mousePos.x())/self.camera.m[0]
        dy = 1.0*(event.y() - self._mousePos.y())/self.camera.m[0]

        GLView.mouseMoveEvent(self, event)

        if event.buttons() & QtCore.Qt.LeftButton:

            nodesMoved = False

            # move selected nodes...

            selectedClips = filter(lambda i: i._selected, self.scene.clips)
            nodesMoved = bool(selectedClips)

            if (self.extendLeft is None) and (self.extendRight is None):
                for n in selectedClips:
                    n.start_frame = int(n.start_frame+dx)
                    n.end_frame = int(n.end_frame+dx)
            else:
                if self.extendLeft:
                    sel = self.extendLeft

                    sel.start_frame += dx
                    sel.in_frame += dx

                    if sel.in_frame < 0:
                        ddx = sel.in_frame
                        sel.in_frame = 0
                        sel.end_frame += ddx

                    #elif self.start_frame > self.stop_frame:

                    self.playhead = int(sel.start_frame)

                elif self.extendRight:
                    sel = self.extendRight
                    sel.end_frame += dx
                    sel.out_frame += dx

                    if sel.out_frame > sel.producer.get_length()-sel.in_frame:
                        sel.end_frame -= dx
                        sel.out_frame -= dx

                    self.playhead = int(sel.end_frame)

            if nodesMoved:
                c = selectedClips[0]
                k, v = c.getData()

                self.parameters.setData(c, k, v)

                self.scene.generate_mlt()
                self.updateImage()

            if not nodesMoved:

                if (self.extendLeft is None) and (self.extendRight is None):
                    ph = self.camera.qt_to_opengl(event.pos())
                    self.playhead = ph.x()

                self.updateImage()

        else:
            self.setCursor(QtCore.Qt.ArrowCursor)
            p = self.camera.qt_to_opengl(event.pos())
            selectedClips = filter(lambda i: i._selected, self.scene.clips)
            for c in selectedClips:
                if c.inside(p.x(), p.y()):
                    if p.x()-c.start_frame in range(0, 15):
                        self.setCursor(self.cursorLeft)
                    elif c.end_frame-p.x() in range(0, 15):
                        self.setCursor(self.cursorRight)
                    else:
                        self.setCursor(QtCore.Qt.ArrowCursor)