From 778b929fe770e3824e67ab688f2e99d5253dc305 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Fri, 31 Jan 2025 17:23:53 +0100 Subject: [PATCH] [centralwidget] new task card widget --- fixtracks/widgets/centralwidget.py | 75 ++++++++++++++++++++++++------ 1 file changed, 62 insertions(+), 13 deletions(-) diff --git a/fixtracks/widgets/centralwidget.py b/fixtracks/widgets/centralwidget.py index fee57be..a78c407 100644 --- a/fixtracks/widgets/centralwidget.py +++ b/fixtracks/widgets/centralwidget.py @@ -1,14 +1,49 @@ import logging -from PySide6.QtWidgets import QWidget, QStackedLayout, QSizePolicy, QHBoxLayout, QPushButton +from PySide6.QtWidgets import QWidget, QStackedLayout, QSizePolicy, QHBoxLayout, QPushButton, QLabel, QVBoxLayout, QGridLayout from PySide6.QtCore import Qt, QSize -from PySide6.QtGui import QIcon +from PySide6.QtGui import QIcon, QFont, QImage, QPixmap from fixtracks.widgets.tracks import FixTracks from fixtracks.widgets.detectionmerge import MergeDetections from fixtracks.widgets.taskwidget import TasksWidget, Task from fixtracks.widgets.converter import Json2PandasConverter +class TaskCard(QWidget): + + def __init__(self, name, icon, description, taks, parent=None): + super().__init__(parent) + self.setMaximumSize(300, 150) + # self.setStyleSheet("background-color: gray;") + font = QFont() + font.setBold(True) + font.setPointSize(14) + + name_label = QLabel(name) + name_label.setFont(font) + description_label = QLabel(description) + description_label.setLineWidth(100) + icon_label = QLabel() + icon_label.setFixedSize(128, 128) + pixmap = QPixmap.fromImage(QImage(icon)) + scaled_pixmap = pixmap.scaled(icon_label.size(), Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation) + icon_label.setPixmap(scaled_pixmap) + + hbox = QHBoxLayout() + hbox.addWidget(icon_label) + hbox.addWidget(description_label) + + + lyt = QVBoxLayout() + lyt.addWidget(name_label) + lyt.addLayout(hbox) + self.setLayout(lyt) + + # trackBtn.clicked.connect(lambda: self._select_task(track)) + + + + class CentralWidget(QWidget): def __init__(self, darkmode, parent=None): @@ -28,11 +63,12 @@ class CentralWidget(QWidget): self._trackwidget = FixTracks(self) self._trackwidget.back.connect(self._on_back) - 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.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) @@ -45,14 +81,13 @@ class CentralWidget(QWidget): trackBtn.setToolTip("Fix tracking of individuals, reassign track ids.") 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) + 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) taskgrid = QWidget() taskgrid.setMaximumWidth(1000) - taskgrid.setLayout(btnlyt) + taskgrid.setLayout(grid) layout = QStackedLayout() layout.setAlignment(Qt.AlignmentFlag.AlignCenter) @@ -98,3 +133,17 @@ class CentralWidget(QWidget): # # @Slot(None) # def on_new(self): # self._view.setScene(self._gamescene) +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) + layout = QVBoxLayout() + layout.addWidget(taskcard) + + window.setLayout(layout) + window.show() + app.exec() + +if __name__ == "__main__": + main() \ No newline at end of file