[timeline] fix window updating, redrawing

This commit is contained in:
Jan Grewe 2025-02-21 11:01:26 +01:00
parent c231b52876
commit dc4833e825

View File

@ -1,11 +1,11 @@
import logging import logging
import numpy as np import numpy as np
import pandas as pd
from PySide6.QtCore import Qt from PySide6.QtCore import Qt
from PySide6.QtWidgets import QWidget, QVBoxLayout, QSizePolicy, QLabel from PySide6.QtWidgets import QWidget, QVBoxLayout, QSizePolicy, QLabel
from PySide6.QtWidgets import QGraphicsView, QGraphicsScene, QGraphicsItem, QGraphicsRectItem, QGraphicsLineItem from PySide6.QtWidgets import QGraphicsView, QGraphicsScene, QGraphicsItem, QGraphicsRectItem, QGraphicsLineItem, QGraphicsEllipseItem
from PySide6.QtCore import Qt, QRectF, QRectF from PySide6.QtCore import Qt, QRectF, QRectF
from PySide6.QtGui import QBrush, QColor, QPen, QFont, QPainter from PySide6.QtGui import QBrush, QColor, QPen, QFont
from fixtracks.utils.signals import DetectionTimelineSignals from fixtracks.utils.signals import DetectionTimelineSignals
from fixtracks.utils.trackingdata import TrackingData from fixtracks.utils.trackingdata import TrackingData
@ -57,7 +57,7 @@ class Window(QGraphicsRectItem):
self._width = newwidth self._width = newwidth
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.paint() self.update()
self.signals.windowMoved.emit() self.signals.windowMoved.emit()
def mouseMoveEvent(self, event): def mouseMoveEvent(self, event):
@ -158,13 +158,15 @@ class DetectionTimeline(QWidget):
# self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed) # self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
def setData(self, data:TrackingData): def setData(self, data:TrackingData):
logging.debug("Timeline: setData!")
self._data = data self._data = data
for i in self._scene.items(): for i in self._scene.items():
if isinstance(i, QGraphicsLineItem): if isinstance(i, (QGraphicsLineItem, QGraphicsEllipseItem)):
self._scene.removeItem(i) self._scene.removeItem(i)
self.draw_coverage() self.draw_coverage()
def draw_coverage(self): def draw_coverage(self):
logging.debug("Timeline: drawCoverage!")
if isinstance(self._data, TrackingData): if isinstance(self._data, TrackingData):
maxframe = np.max(self._data["frame"]) maxframe = np.max(self._data["frame"])
bins = np.linspace(0, maxframe, self._stepCount) bins = np.linspace(0, maxframe, self._stepCount)