From 5db069b14e77c94db67be5a7d74c8fe62e6acce2 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Thu, 30 Jan 2025 11:50:06 +0100 Subject: [PATCH] [timeline] clearer position handling --- fixtracks/widgets/detectiontimeline.py | 35 +++++++++++++++++--------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/fixtracks/widgets/detectiontimeline.py b/fixtracks/widgets/detectiontimeline.py index 2bd9354..3a168f9 100644 --- a/fixtracks/widgets/detectiontimeline.py +++ b/fixtracks/widgets/detectiontimeline.py @@ -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: