diff --git a/fixtracks/icons/Unbenannt.afdesign b/fixtracks/icons/Unbenannt.afdesign
index a511541..36af438 100644
Binary files a/fixtracks/icons/Unbenannt.afdesign and b/fixtracks/icons/Unbenannt.afdesign differ
diff --git a/fixtracks/icons/convert_dark.png b/fixtracks/icons/convert_dark.png
index a163ff4..b9fabc3 100644
Binary files a/fixtracks/icons/convert_dark.png and b/fixtracks/icons/convert_dark.png differ
diff --git a/fixtracks/icons/convert_light.png b/fixtracks/icons/convert_light.png
index 760f723..20350a1 100644
Binary files a/fixtracks/icons/convert_light.png and b/fixtracks/icons/convert_light.png differ
diff --git a/fixtracks/icons/merge_dark.png b/fixtracks/icons/merge_dark.png
index 26e7b30..3b85d19 100644
Binary files a/fixtracks/icons/merge_dark.png and b/fixtracks/icons/merge_dark.png differ
diff --git a/fixtracks/icons/merge_light.png b/fixtracks/icons/merge_light.png
index 0242ed9..347f23c 100644
Binary files a/fixtracks/icons/merge_light.png and b/fixtracks/icons/merge_light.png differ
diff --git a/fixtracks/icons/open_dark.png b/fixtracks/icons/open_dark.png
index 6956342..7f1c687 100644
Binary files a/fixtracks/icons/open_dark.png and b/fixtracks/icons/open_dark.png differ
diff --git a/fixtracks/icons/open_light.png b/fixtracks/icons/open_light.png
index ba24023..59d0e45 100644
Binary files a/fixtracks/icons/open_light.png and b/fixtracks/icons/open_light.png differ
diff --git a/fixtracks/icons/tracks_dark.png b/fixtracks/icons/tracks_dark.png
index ba0dc42..04a5d1a 100644
Binary files a/fixtracks/icons/tracks_dark.png and b/fixtracks/icons/tracks_dark.png differ
diff --git a/fixtracks/icons/tracks_light.png b/fixtracks/icons/tracks_light.png
index 0f5909f..7071482 100644
Binary files a/fixtracks/icons/tracks_light.png and b/fixtracks/icons/tracks_light.png differ
diff --git a/fixtracks/resources.qrc b/fixtracks/resources.qrc
index c1c97b8..3c66ee6 100644
--- a/fixtracks/resources.qrc
+++ b/fixtracks/resources.qrc
@@ -7,7 +7,7 @@
icons/nix_close.png
icons/open_light.png
icons/open_dark.png
- icons/merge.png
+ icons/merge_light.png
icons/merge_dark.png
icons/convert_light.png
icons/convert_dark.png
diff --git a/fixtracks/widgets/centralwidget.py b/fixtracks/widgets/centralwidget.py
index a78c407..7b37ad9 100644
--- a/fixtracks/widgets/centralwidget.py
+++ b/fixtracks/widgets/centralwidget.py
@@ -1,7 +1,7 @@
import logging
-from PySide6.QtWidgets import QWidget, QStackedLayout, QSizePolicy, QHBoxLayout, QPushButton, QLabel, QVBoxLayout, QGridLayout
-from PySide6.QtCore import Qt, QSize
+from PySide6.QtWidgets import QWidget, QStackedLayout, QSizePolicy, QHBoxLayout, QFrame, QLabel, QVBoxLayout, QGridLayout, QSpacerItem
+from PySide6.QtCore import Qt, QSize, Signal
from PySide6.QtGui import QIcon, QFont, QImage, QPixmap
from fixtracks.widgets.tracks import FixTracks
@@ -9,22 +9,25 @@ from fixtracks.widgets.detectionmerge import MergeDetections
from fixtracks.widgets.taskwidget import TasksWidget, Task
from fixtracks.widgets.converter import Json2PandasConverter
-class TaskCard(QWidget):
+class TaskCard(QFrame):
+ clicked = Signal()
- def __init__(self, name, icon, description, taks, parent=None):
+ def __init__(self, name, icon, description, parent=None):
super().__init__(parent)
- self.setMaximumSize(300, 150)
- # self.setStyleSheet("background-color: gray;")
+ self.setMaximumSize(300, 200)
+ self.setFrameShape(QFrame.Shape.Box)
+ # self.setStyleSheet("border: 2px solid gray; border-radius: 15px; border-color: white;background-color: green;")
font = QFont()
font.setBold(True)
- font.setPointSize(14)
+ font.setPointSize(18)
name_label = QLabel(name)
name_label.setFont(font)
description_label = QLabel(description)
- description_label.setLineWidth(100)
+ description_label.setLineWidth(150)
+ description_label.setWordWrap(True)
icon_label = QLabel()
- icon_label.setFixedSize(128, 128)
+ icon_label.setFixedSize(150, 150)
pixmap = QPixmap.fromImage(QImage(icon))
scaled_pixmap = pixmap.scaled(icon_label.size(), Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation)
icon_label.setPixmap(scaled_pixmap)
@@ -32,16 +35,15 @@ class TaskCard(QWidget):
hbox = QHBoxLayout()
hbox.addWidget(icon_label)
hbox.addWidget(description_label)
-
+ self.mousePressEvent = self._on_click
lyt = QVBoxLayout()
lyt.addWidget(name_label)
lyt.addLayout(hbox)
self.setLayout(lyt)
- # trackBtn.clicked.connect(lambda: self._select_task(track))
-
-
+ def _on_click(self, event):
+ self.clicked.emit()
class CentralWidget(QWidget):
@@ -49,7 +51,7 @@ class CentralWidget(QWidget):
def __init__(self, darkmode, parent=None):
super().__init__(parent)
self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
-
+ self._folderopen = False
self._tw = TasksWidget(darkmode)
self._tw.clicked.connect(self._select_task)
self._tw.opened.connect(self.on_open)
@@ -62,44 +64,40 @@ class CentralWidget(QWidget):
self._trackwidget = FixTracks(self)
self._trackwidget.back.connect(self._on_back)
+ version = "dark" if darkmode else "light"
+ convert_task = TaskCard(Task.CONVERT.value, f":/icons/convert_{version}",
+ "Convert JSON pose files to to Pandas data frames")
+ convert_task.clicked.connect(lambda: self._select_task(Task.CONVERT))
+ merge_task = TaskCard(Task.MERGE.value, f":/icons/merge_{version}", "Merge detections from two cameras to the same dataset")
+ merge_task.clicked.connect(lambda: self._select_task(Task.MERGE))
+ track_task = TaskCard(Task.MERGE.value, f":/icons/tracks_{version}", "Fix tracking of individuals, reassign track ids.")
+ track_task.clicked.connect(lambda: self._select_task(Task.TRACKS))
- # convert = Task.CONVERT
- # convertBtn = QPushButton(QIcon(":/icons/convert_light"), Task.CONVERT.value)
- # convertBtn.setToolTip("Convert JSON pose files to to Pandas data frames")
- # convertBtn.setIconSize(QSize(128, 128))
- # convertBtn.clicked.connect(lambda: self._select_task(convert))
- convert_task = TaskCard(Task.CONVERT.value, ":/icons/convert_light", "Convert JSON pose files to to Pandas data frames", Task.CONVERT)
-
- merge = Task.MERGE
- mergeBtn = QPushButton(QIcon(":/icons/merge_light"), Task.MERGE.value)
- mergeBtn.setToolTip("Merge detections from two cameras to the same dataset")
- mergeBtn.setIconSize(QSize(128, 128))
- mergeBtn.clicked.connect(lambda: self._select_task(merge))
-
- track = Task.TRACKS
- trackBtn = QPushButton(QIcon(":/icons/tracks_light"), Task.TRACKS.value)
- trackBtn.setToolTip("Fix tracking of individuals, reassign track ids.")
- trackBtn.setIconSize(QSize(128, 128))
- trackBtn.clicked.connect(lambda: self._select_task(track))
grid = QGridLayout()
grid.addWidget(convert_task, 0, 0, alignment=Qt.AlignmentFlag.AlignCenter)
- grid.addWidget(mergeBtn, 1, 0, alignment=Qt.AlignmentFlag.AlignCenter)
- grid.addWidget(trackBtn, 2, 0, alignment=Qt.AlignmentFlag.AlignCenter)
+ grid.addWidget(merge_task, 1, 0, alignment=Qt.AlignmentFlag.AlignCenter)
+ grid.addWidget(track_task, 0, 1, alignment=Qt.AlignmentFlag.AlignCenter)
+ grid.setAlignment(Qt.AlignmentFlag.AlignCenter)
+ l = QVBoxLayout()
+ l.setAlignment(Qt.AlignmentFlag.AlignHCenter)
+ l.addItem(QSpacerItem(100, 100, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding))
+ l.addLayout(grid)
+ l.addItem(QSpacerItem(100, 100, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding))
taskgrid = QWidget()
- taskgrid.setMaximumWidth(1000)
- taskgrid.setLayout(grid)
+ taskgrid.setLayout(l)
layout = QStackedLayout()
layout.setAlignment(Qt.AlignmentFlag.AlignCenter)
- self._tasksindex = layout.addWidget(self._tw)
- self._btnindex = layout.addWidget(taskgrid)
+ self._btnindex = layout.addWidget(self._tw)
+ self._tasksindex = 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)
+ self.layout().setCurrentIndex(self._tasksindex)
+ self._folderopen = True
def _select_task(self, task):
logging.debug("Centralwidget: Selected task: %s", task.value)
@@ -112,7 +110,10 @@ class CentralWidget(QWidget):
elif task == Task.CONVERT:
self.layout().setCurrentIndex(self._convertindex)
else:
- self.layout().setCurrentIndex(self._tasksindex)
+ if self._folderopen:
+ self.layout().setCurrentIndex(self._tasksindex)
+ else:
+ self.layout().setCurrentIndex(self._btnindex)
logging.warning("Centralwidget: got invalid task request: %s", task)
def _on_back(self):
@@ -137,7 +138,7 @@ def main():
from PySide6.QtWidgets import QApplication
app = QApplication([])
window = QWidget()
- taskcard = TaskCard("test", "../icons/merge_light.png", "do something with manyt words, too many to fit in one line", Task.CONVERT)
+ taskcard = TaskCard("test", "../icons/merge_light.png", "do something with manyt words, too many to fit in one line")
layout = QVBoxLayout()
layout.addWidget(taskcard)