[centralwidget] different layout of the tasks, new icons

This commit is contained in:
Jan Grewe 2025-02-02 16:16:55 +01:00
parent 778b929fe7
commit b9943f176b
11 changed files with 43 additions and 42 deletions

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -7,7 +7,7 @@
<file alias="close">icons/nix_close.png</file>
<file alias="open_light">icons/open_light.png</file>
<file alias="open_dark">icons/open_dark.png</file>
<file alias="merge_light">icons/merge.png</file>
<file alias="merge_light">icons/merge_light.png</file>
<file alias="merge_dark">icons/merge_dark.png</file>
<file alias="convert_light">icons/convert_light.png</file>
<file alias="convert_dark">icons/convert_dark.png</file>

View File

@ -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:
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)