[shortcuts] add keyboard shortcuts

This commit is contained in:
Jan Grewe 2025-01-29 08:34:23 +01:00
parent 216be7b1e5
commit 344b919f0f
2 changed files with 36 additions and 2 deletions

View File

@ -1,6 +1,7 @@
import logging import logging
from PySide6.QtWidgets import QWidget, QStackedLayout, QSizePolicy from PySide6.QtWidgets import QWidget, QStackedLayout, QSizePolicy, QHBoxLayout, QPushButton
from PySide6.QtCore import Qt from PySide6.QtCore import Qt, QSize
from PySide6.QtGui import QIcon
from fixtracks.widgets.tracks import FixTracks from fixtracks.widgets.tracks import FixTracks
from fixtracks.widgets.detectionmerge import MergeDetections from fixtracks.widgets.detectionmerge import MergeDetections
@ -15,6 +16,7 @@ class CentralWidget(QWidget):
self._tw = TasksWidget(darkmode) self._tw = TasksWidget(darkmode)
self._tw.clicked.connect(self._select_task) self._tw.clicked.connect(self._select_task)
self._tw.opened.connect(self.on_open)
self._mergewidget = MergeDetections(self) self._mergewidget = MergeDetections(self)
self._mergewidget.back.connect(self._on_back) self._mergewidget.back.connect(self._on_back)
@ -25,14 +27,40 @@ class CentralWidget(QWidget):
self._trackwidget = FixTracks(self) self._trackwidget = FixTracks(self)
self._trackwidget.back.connect(self._on_back) self._trackwidget.back.connect(self._on_back)
convert = "convert"
convertBtn = QPushButton(QIcon(":/icons/convert_light"), "Convert")
convertBtn.setIconSize(QSize(128, 128))
convertBtn.clicked.connect(lambda: self._select_task(convert))
merge = "merge"
mergeBtn = QPushButton(QIcon(":/icons/merge_light"), "Merge")
mergeBtn.setIconSize(QSize(128, 128))
mergeBtn.clicked.connect(lambda: self._select_task(merge))
track = "track"
trackBtn = QPushButton(QIcon(":/icons/tracks_light"), "Track")
trackBtn.setIconSize(QSize(128, 128))
trackBtn.clicked.connect(lambda: self._select_task(track))
btnlyt = QHBoxLayout()
btnlyt.addWidget(convertBtn, alignment=Qt.AlignmentFlag.AlignCenter)
btnlyt.addWidget(mergeBtn, alignment=Qt.AlignmentFlag.AlignCenter)
btnlyt.addWidget(trackBtn, alignment=Qt.AlignmentFlag.AlignCenter)
taskgrid = QWidget()
taskgrid.setLayout(btnlyt)
layout = QStackedLayout() layout = QStackedLayout()
layout.setAlignment(Qt.AlignmentFlag.AlignCenter) layout.setAlignment(Qt.AlignmentFlag.AlignCenter)
self._tasksindex = layout.addWidget(self._tw) self._tasksindex = layout.addWidget(self._tw)
self._btnindex = layout.addWidget(taskgrid)
self._convertindex = layout.addWidget(self._convertwidget) self._convertindex = layout.addWidget(self._convertwidget)
self._mergeindex = layout.addWidget(self._mergewidget) self._mergeindex = layout.addWidget(self._mergewidget)
self._trackindex = layout.addWidget(self._trackwidget) self._trackindex = layout.addWidget(self._trackwidget)
self.setLayout(layout) self.setLayout(layout)
def on_open(self):
self.layout().setCurrentIndex(self._btnindex)
def _select_task(self, s): def _select_task(self, s):
logging.debug("Centralwidget: Selected task: %s", s) logging.debug("Centralwidget: Selected task: %s", s)
if "merge" in s.lower(): if "merge" in s.lower():

View File

@ -8,6 +8,7 @@ from PySide6.QtGui import QIcon, QAction
class TasksWidget(QWidget): class TasksWidget(QWidget):
clicked = Signal((str,)) clicked = Signal((str,))
opened = Signal()
def __init__(self, darkmode, parent = None): def __init__(self, darkmode, parent = None):
super().__init__(parent) super().__init__(parent)
@ -22,22 +23,26 @@ class TasksWidget(QWidget):
def createActions(self): def createActions(self):
self._openAction = QAction(QIcon(":icons/open" + self._iconsuffix), "Open folder") self._openAction = QAction(QIcon(":icons/open" + self._iconsuffix), "Open folder")
self._openAction.setToolTip("Open data folder") self._openAction.setToolTip("Open data folder")
self._openAction.setShortcut("Ctrl+O")
self._openAction.triggered.connect(self._on_open) self._openAction.triggered.connect(self._on_open)
self._openAction.setEnabled(True) self._openAction.setEnabled(True)
self._convertAction = QAction(QIcon(":/icons/convert" + self._iconsuffix), "Convert") self._convertAction = QAction(QIcon(":/icons/convert" + self._iconsuffix), "Convert")
self._convertAction.setEnabled(True) self._convertAction.setEnabled(True)
self._convertAction.setShortcut("F2")
self._convertAction.setToolTip("Convert JSON pose files to to Pandas data frames") self._convertAction.setToolTip("Convert JSON pose files to to Pandas data frames")
self._convertAction.triggered.connect(self._convert_clicked) self._convertAction.triggered.connect(self._convert_clicked)
self._mergeAction = QAction(QIcon(":/icons/merge" + self._iconsuffix), "Merge") self._mergeAction = QAction(QIcon(":/icons/merge" + self._iconsuffix), "Merge")
self._mergeAction.setToolTip("Merge detections from two cameras to the same dataset") self._mergeAction.setToolTip("Merge detections from two cameras to the same dataset")
self._mergeAction.setShortcut("F3")
self._mergeAction.setEnabled(False) self._mergeAction.setEnabled(False)
self._mergeAction.triggered.connect(self._merge_clicked) self._mergeAction.triggered.connect(self._merge_clicked)
self._tracksAction = QAction(QIcon(":/icons/tracks" + self._iconsuffix), "Tracks") self._tracksAction = QAction(QIcon(":/icons/tracks" + self._iconsuffix), "Tracks")
self._tracksAction.setToolTip("Merge detections from two cameras to the same dataset") self._tracksAction.setToolTip("Merge detections from two cameras to the same dataset")
self._tracksAction.setEnabled(False) self._tracksAction.setEnabled(False)
self._tracksAction.setShortcut("F4")
self._tracksAction.triggered.connect(self._tracks_clicked) self._tracksAction.triggered.connect(self._tracks_clicked)
self._menuActions["File"] = [self._openAction] self._menuActions["File"] = [self._openAction]
@ -117,6 +122,7 @@ class TasksWidget(QWidget):
if len(self._file_list) > 0: if len(self._file_list) > 0:
self._mergeAction.setEnabled(True) self._mergeAction.setEnabled(True)
self._tracksAction.setEnabled(True) self._tracksAction.setEnabled(True)
self.opened.emit()
@property @property
def fileList(self): def fileList(self):