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