[timeline] clearer position handling
This commit is contained in:
parent
641ca36b93
commit
5db069b14e
@ -26,18 +26,22 @@ class Window(QGraphicsRectItem):
|
||||
self._y = y
|
||||
|
||||
def setWindowX(self, newx):
|
||||
logging.debug("timeline.window: set position to %.3f", newx)
|
||||
r = self.rect()
|
||||
self.setRect(newx, r.y(), self._width, r.height())
|
||||
self.signals.windowMoved.emit(self.scenePos().x() + self.rect().width() /2, self._width)
|
||||
r = self.rect()
|
||||
self.signals.windowMoved.emit(r.left(), r.right())
|
||||
|
||||
def setWindowWidth(self, newwidth):
|
||||
logging.debug("timeline.window: update window widthto %.3f", newwidth)
|
||||
|
||||
self._width = newwidth
|
||||
r = self.rect()
|
||||
self.setRect(r.x(), r.y(), self._width, r.height())
|
||||
self.signals.windowMoved.emit(self.scenePos().x() + self.rect().width() /2, self._width)
|
||||
r = self.rect()
|
||||
self.signals.windowMoved.emit(r.left(), r.right())
|
||||
|
||||
def mouseMoveEvent(self, event):
|
||||
# print(event.scenePos())
|
||||
super().mouseMoveEvent(event)
|
||||
|
||||
def mousePressEvent(self, event):
|
||||
@ -52,8 +56,9 @@ class Window(QGraphicsRectItem):
|
||||
if r.x() > 1000 - self._width:
|
||||
self.setPos(1000 - self._width, self._y)
|
||||
if r.y() != self._y:
|
||||
self.setPos(self.scenePos().x(), self._y)
|
||||
self.signals.windowMoved.emit(self.scenePos().x() + self.rect().width() /2, self._width)
|
||||
self.setPos(self.scenePos().x(), self._y)
|
||||
r = self.rect()
|
||||
self.signals.windowMoved.emit(r.left(), r.right())
|
||||
super().mouseReleaseEvent(event)
|
||||
|
||||
def hoverEnterEvent(self, event):
|
||||
@ -182,13 +187,12 @@ class DetectionTimeline(QWidget):
|
||||
super().resizeEvent(event)
|
||||
self.fit_scene_to_view()
|
||||
|
||||
def on_windowMoved(self, x, w):
|
||||
def on_windowMoved(self, left, right):
|
||||
logging.debug("Timeline: Window moved to start x-position %.3f and end-x: %.3f", left, right)
|
||||
scene_width = self._scene.width()
|
||||
start_pos = x - w/2 + scene_width/2
|
||||
end_pos = x + w/2 + scene_width/2
|
||||
|
||||
self._rangeStart = np.round(start_pos / scene_width, 3)
|
||||
self._rangeStop = np.round(end_pos / scene_width, 3)
|
||||
self._rangeStart = np.round(left / scene_width, 3)
|
||||
self._rangeStop = np.round(right / scene_width, 3)
|
||||
logging.debug("Timeline: Updated positions start: %.3f end: %.3f", self.rangeStart, self.rangeStop)
|
||||
self.signals.windowMoved.emit(self._rangeStart, self._rangeStop)
|
||||
|
||||
def setWindowPos(self, newx: float):
|
||||
@ -219,21 +223,28 @@ class DetectionTimeline(QWidget):
|
||||
span = np.round(width * self.total_width)
|
||||
self._window.setWindowWidth(span)
|
||||
|
||||
def windowBounds(self):
|
||||
return self._rangeStart, self._rangeStop
|
||||
|
||||
|
||||
def main():
|
||||
def back(start_x):
|
||||
view.setWindowPos(start_x)
|
||||
print(view.windowBounds())
|
||||
|
||||
def fwd(start_x):
|
||||
view.setWindowPos(start_x)
|
||||
print(view.windowBounds())
|
||||
|
||||
def zero():
|
||||
view.setWindowPos(0.0)
|
||||
print(view.windowBounds())
|
||||
|
||||
import pickle
|
||||
import numpy as np
|
||||
from IPython import embed
|
||||
from PySide6.QtWidgets import QApplication, QPushButton, QHBoxLayout
|
||||
from fixtracks.info import PACKAGE_ROOT
|
||||
logging.basicConfig(level=logging.DEBUG, force=True)
|
||||
|
||||
datafile = PACKAGE_ROOT / "data/merged_small.pkl"
|
||||
with open(datafile, "rb") as f:
|
||||
|
Loading…
Reference in New Issue
Block a user