[taskcard] move TaskCard to own module

This commit is contained in:
Jan Grewe 2025-02-02 17:38:31 +01:00
parent f366d6b8ff
commit cdfc2069c8
3 changed files with 48 additions and 52 deletions

View File

@ -1,49 +1,13 @@
import logging
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 PySide6.QtWidgets import QWidget, QStackedLayout, QSizePolicy, QVBoxLayout, QGridLayout, QSpacerItem
from PySide6.QtCore import Qt
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(QFrame):
clicked = Signal()
def __init__(self, name, icon, description, parent=None):
super().__init__(parent)
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(18)
name_label = QLabel(name)
name_label.setFont(font)
description_label = QLabel(description)
description_label.setLineWidth(150)
description_label.setWordWrap(True)
icon_label = QLabel()
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)
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)
def _on_click(self, event):
self.clicked.emit()
from fixtracks.widgets.taskcard import TaskCard
class CentralWidget(QWidget):

View File

@ -0,0 +1,40 @@
from PySide6.QtWidgets import QHBoxLayout, QFrame, QLabel, QVBoxLayout
from PySide6.QtCore import Qt, Signal
from PySide6.QtGui import QFont, QImage, QPixmap
class TaskCard(QFrame):
clicked = Signal()
def __init__(self, name, icon, description, parent=None):
super().__init__(parent)
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(18)
name_label = QLabel(name)
name_label.setFont(font)
description_label = QLabel(description)
description_label.setLineWidth(150)
description_label.setWordWrap(True)
icon_label = QLabel()
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)
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)
def _on_click(self, event):
self.clicked.emit()

View File

@ -5,6 +5,8 @@ from PySide6.QtWidgets import QWidget, QPushButton, QFileDialog, QSizePolicy, QV
from PySide6.QtCore import Signal, Qt
from PySide6.QtGui import QIcon, QAction
from fixtracks.widgets.taskcard import TaskCard
class Task(enum.Enum):
CONVERT = "Convert"
@ -56,22 +58,12 @@ class TasksWidget(QWidget):
self._toolbarActions = [self._convertAction, self._mergeAction, self._tracksAction]
def createLayout(self):
def buttonfromaction(action: QAction):
btn = QPushButton(action.icon(), "")
btn.setStatusTip(action.toolTip())
btn.setToolTip(action.text())
btn.clicked.connect(action.trigger)
return btn
openBtn = buttonfromaction(self._openAction)
openBtn.setEnabled(True)
openBtn.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
openBtn.setMaximumSize(300, 300)
openBtn.setIconSize(0.95 * openBtn.size())
opentask = TaskCard("Open folder", ":icons/open" + self._iconsuffix, "Open data folder")
opentask.clicked.connect(self._on_open)
l = QVBoxLayout()
l.setAlignment(Qt.AlignmentFlag.AlignCenter)
l.addWidget(openBtn, Qt.AlignmentFlag.AlignCenter)
l.addWidget(opentask, Qt.AlignmentFlag.AlignCenter)
self.setLayout(l)
@property