diff --git a/fixtracks/widgets/centralwidget.py b/fixtracks/widgets/centralwidget.py index ac3ef77..1c4a284 100644 --- a/fixtracks/widgets/centralwidget.py +++ b/fixtracks/widgets/centralwidget.py @@ -1,6 +1,7 @@ import logging -from PySide6.QtWidgets import QWidget, QStackedLayout, QSizePolicy -from PySide6.QtCore import Qt +from PySide6.QtWidgets import QWidget, QStackedLayout, QSizePolicy, QHBoxLayout, QPushButton +from PySide6.QtCore import Qt, QSize +from PySide6.QtGui import QIcon from fixtracks.widgets.tracks import FixTracks from fixtracks.widgets.detectionmerge import MergeDetections @@ -15,6 +16,7 @@ class CentralWidget(QWidget): self._tw = TasksWidget(darkmode) self._tw.clicked.connect(self._select_task) + self._tw.opened.connect(self.on_open) self._mergewidget = MergeDetections(self) self._mergewidget.back.connect(self._on_back) @@ -25,14 +27,40 @@ class CentralWidget(QWidget): self._trackwidget = FixTracks(self) 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.setAlignment(Qt.AlignmentFlag.AlignCenter) self._tasksindex = layout.addWidget(self._tw) + self._btnindex = layout.addWidget(taskgrid) self._convertindex = layout.addWidget(self._convertwidget) self._mergeindex = layout.addWidget(self._mergewidget) self._trackindex = layout.addWidget(self._trackwidget) self.setLayout(layout) + def on_open(self): + self.layout().setCurrentIndex(self._btnindex) + def _select_task(self, s): logging.debug("Centralwidget: Selected task: %s", s) if "merge" in s.lower(): diff --git a/fixtracks/widgets/taskwidget.py b/fixtracks/widgets/taskwidget.py index 3072ace..50d2ce6 100644 --- a/fixtracks/widgets/taskwidget.py +++ b/fixtracks/widgets/taskwidget.py @@ -8,6 +8,7 @@ from PySide6.QtGui import QIcon, QAction class TasksWidget(QWidget): clicked = Signal((str,)) + opened = Signal() def __init__(self, darkmode, parent = None): super().__init__(parent) @@ -22,22 +23,26 @@ class TasksWidget(QWidget): def createActions(self): self._openAction = QAction(QIcon(":icons/open" + self._iconsuffix), "Open folder") self._openAction.setToolTip("Open data folder") + self._openAction.setShortcut("Ctrl+O") self._openAction.triggered.connect(self._on_open) self._openAction.setEnabled(True) self._convertAction = QAction(QIcon(":/icons/convert" + self._iconsuffix), "Convert") self._convertAction.setEnabled(True) + self._convertAction.setShortcut("F2") self._convertAction.setToolTip("Convert JSON pose files to to Pandas data frames") self._convertAction.triggered.connect(self._convert_clicked) self._mergeAction = QAction(QIcon(":/icons/merge" + self._iconsuffix), "Merge") self._mergeAction.setToolTip("Merge detections from two cameras to the same dataset") + self._mergeAction.setShortcut("F3") self._mergeAction.setEnabled(False) self._mergeAction.triggered.connect(self._merge_clicked) self._tracksAction = QAction(QIcon(":/icons/tracks" + self._iconsuffix), "Tracks") self._tracksAction.setToolTip("Merge detections from two cameras to the same dataset") self._tracksAction.setEnabled(False) + self._tracksAction.setShortcut("F4") self._tracksAction.triggered.connect(self._tracks_clicked) self._menuActions["File"] = [self._openAction] @@ -117,6 +122,7 @@ class TasksWidget(QWidget): if len(self._file_list) > 0: self._mergeAction.setEnabled(True) self._tracksAction.setEnabled(True) + self.opened.emit() @property def fileList(self):