[timeline] add position label
This commit is contained in:
parent
cdfc2069c8
commit
4f18387c2f
@ -2,7 +2,8 @@ import logging
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from PySide6.QtCore import Qt
|
from PySide6.QtCore import Qt
|
||||||
from PySide6.QtWidgets import QWidget, QVBoxLayout, QSizePolicy, QGraphicsView, QGraphicsScene, QGraphicsItem, QGraphicsRectItem, QGraphicsLineItem
|
from PySide6.QtWidgets import QWidget, QVBoxLayout, QSizePolicy, QLabel
|
||||||
|
from PySide6.QtWidgets import QGraphicsView, QGraphicsScene, QGraphicsItem, QGraphicsRectItem, QGraphicsLineItem
|
||||||
from PySide6.QtCore import Qt, QRectF, QRectF
|
from PySide6.QtCore import Qt, QRectF, QRectF
|
||||||
from PySide6.QtGui import QBrush, QColor, QPen, QFont
|
from PySide6.QtGui import QBrush, QColor, QPen, QFont
|
||||||
|
|
||||||
@ -107,6 +108,9 @@ class DetectionTimeline(QWidget):
|
|||||||
self._view = QGraphicsView()
|
self._view = QGraphicsView()
|
||||||
# self._view.setRenderHints(QPainter.RenderHint.Antialiasing | QPainter.RenderHint.SmoothPixmapTransform);
|
# self._view.setRenderHints(QPainter.RenderHint.Antialiasing | QPainter.RenderHint.SmoothPixmapTransform);
|
||||||
self._view.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
self._view.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
||||||
|
self._view.setScene(self._scene)
|
||||||
|
self._view.fitInView(self._scene.sceneRect(), aspectRadioMode=Qt.AspectRatioMode.KeepAspectRatio)
|
||||||
|
self.fit_scene_to_view()
|
||||||
|
|
||||||
t1_label = self._scene.addText("track 1", font)
|
t1_label = self._scene.addText("track 1", font)
|
||||||
t1_label.setDefaultTextColor(self._t1_pen.color())
|
t1_label.setDefaultTextColor(self._t1_pen.color())
|
||||||
@ -120,17 +124,19 @@ class DetectionTimeline(QWidget):
|
|||||||
other_label.setDefaultTextColor(self._other_pen.color())
|
other_label.setDefaultTextColor(self._other_pen.color())
|
||||||
other_label.setPos(0, 30)
|
other_label.setPos(0, 30)
|
||||||
|
|
||||||
self._view.setScene(self._scene)
|
self._position_label = QLabel("")
|
||||||
self._view.fitInView(self._scene.sceneRect(), aspectRadioMode=Qt.AspectRatioMode.KeepAspectRatio)
|
f = self._position_label.font()
|
||||||
|
f.setPointSize(9)
|
||||||
|
self._position_label.setFont(f)
|
||||||
|
|
||||||
layout = QVBoxLayout()
|
layout = QVBoxLayout()
|
||||||
layout.addWidget(self._view)
|
layout.addWidget(self._view)
|
||||||
|
layout.addWidget(self._position_label, Qt.AlignmentFlag.AlignRight)
|
||||||
self.setLayout(layout)
|
self.setLayout(layout)
|
||||||
|
|
||||||
if self._data is not None:
|
if self._data is not None:
|
||||||
self.draw_coverage()
|
self.draw_coverage()
|
||||||
self.fit_scene_to_view()
|
# self.setMaximumHeight(100)
|
||||||
self.setMaximumHeight(100)
|
|
||||||
# self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
|
# self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
|
||||||
|
|
||||||
def setDetectionData(self, data):
|
def setDetectionData(self, data):
|
||||||
@ -172,6 +178,11 @@ class DetectionTimeline(QWidget):
|
|||||||
if t2_coverage[i]: self._scene.addLine(pos[i], 17, pos[i], 32., pen=self._t2_pen)
|
if t2_coverage[i]: self._scene.addLine(pos[i], 17, pos[i], 32., pen=self._t2_pen)
|
||||||
if other_coverage[i]: self._scene.addLine(pos[i], 34, pos[i], 49., pen=self._other_pen)
|
if other_coverage[i]: self._scene.addLine(pos[i], 34, pos[i], 49., pen=self._other_pen)
|
||||||
|
|
||||||
|
def updatePosition(self):
|
||||||
|
start = np.round(self._rangeStart * 100, 1)
|
||||||
|
stop = np.round(self._rangeStop * 100, 1)
|
||||||
|
self._position_label.setText(f"Current position: {start}% to {stop}% of data.")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def rangeStart(self):
|
def rangeStart(self):
|
||||||
return self._rangeStart
|
return self._rangeStart
|
||||||
@ -194,6 +205,7 @@ class DetectionTimeline(QWidget):
|
|||||||
self._rangeStart = np.round(self._window.sceneBoundingRect().left() / scene_width, 3)
|
self._rangeStart = np.round(self._window.sceneBoundingRect().left() / scene_width, 3)
|
||||||
self._rangeStop = np.round(self._window.sceneBoundingRect().right() / scene_width, 3)
|
self._rangeStop = np.round(self._window.sceneBoundingRect().right() / scene_width, 3)
|
||||||
logging.debug("Timeline: WindowUpdated positions start: %.3f end: %.3f", self.rangeStart, self.rangeStop)
|
logging.debug("Timeline: WindowUpdated positions start: %.3f end: %.3f", self.rangeStart, self.rangeStop)
|
||||||
|
self.updatePosition()
|
||||||
self.signals.windowMoved.emit()
|
self.signals.windowMoved.emit()
|
||||||
|
|
||||||
def setWindowPos(self, newx: float):
|
def setWindowPos(self, newx: float):
|
||||||
|
Loading…
Reference in New Issue
Block a user