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)