[tracks] add way to flag many detections in one go

This commit is contained in:
Jan Grewe 2025-02-26 09:24:20 +01:00
parent 4ef6143d14
commit 0c5e5629b7
2 changed files with 16 additions and 3 deletions

View File

@ -4,7 +4,7 @@ import numpy as np
from PySide6.QtCore import Qt, Signal, QSize
from PySide6.QtGui import QFont
from PySide6.QtWidgets import QWidget, QLabel, QPushButton, QSizePolicy
from PySide6.QtWidgets import QGridLayout, QVBoxLayout
from PySide6.QtWidgets import QGridLayout, QVBoxLayout, QApplication
from fixtracks.utils.styles import pushBtnStyle
@ -15,6 +15,7 @@ class SelectionControls(QWidget):
assignTwo = Signal()
assignOther = Signal()
accept = Signal()
accept_until = Signal()
unaccept = Signal()
delete = Signal()
revertall = Signal()
@ -102,7 +103,7 @@ class SelectionControls(QWidget):
acceptBtn.setFont(font)
acceptBtn.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
acceptBtn.setStyleSheet(pushBtnStyle("darkgray"))
acceptBtn.setToolTip(f"Accept assignments of current selection as TRUE")
acceptBtn.setToolTip(f"Accept assignments of current selection as TRUE, Hold shift while clicking to accept all until here.")
acceptBtn.clicked.connect(self.on_Accept)
unacceptBtn = QPushButton("un-accept")
@ -210,7 +211,12 @@ class SelectionControls(QWidget):
def on_Accept(self):
logging.debug("SelectionControl: accept AssignmentBtn")
self.accept.emit()
modifiers = QApplication.keyboardModifiers()
if modifiers == Qt.KeyboardModifier.ShiftModifier:
logging.debug("Shift key was pressed during accept")
self.accept_until.emit()
else:
self.accept.emit()
def on_Unaccept(self):
logging.debug("SelectionControl: revoke user assignmentBtn")

View File

@ -74,6 +74,7 @@ class FixTracks(QWidget):
self._controls_widget.fwd.connect(self.on_forward)
self._controls_widget.back.connect(self.on_backward)
self._controls_widget.accept.connect(self.on_setUserFlag)
self._controls_widget.accept_until.connect(self.on_setUserFlagsUntil)
self._controls_widget.unaccept.connect(self.on_unsetUserFlag)
self._controls_widget.delete.connect(self.on_deleteDetection)
self._controls_widget.revertall.connect(self.on_revertUserFlags)
@ -267,6 +268,12 @@ class FixTracks(QWidget):
self._timeline.update()
self.update()
def on_setUserFlagsUntil(self):
self._data.setSelectionRange("frame", 0, self._currentWindowPos + self._currentWindowWidth)
self._data.setUserLabeledStatus(True)
self._timeline.update()
self.update()
def on_unsetUserFlag(self):
logging.debug("Tracks:unsetUserFlag")
self._data.setUserLabeledStatus(False)