diff --git a/fixtracks/widgets/centralwidget.py b/fixtracks/widgets/centralwidget.py index 7b37ad9..24558e7 100644 --- a/fixtracks/widgets/centralwidget.py +++ b/fixtracks/widgets/centralwidget.py @@ -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): diff --git a/fixtracks/widgets/taskcard.py b/fixtracks/widgets/taskcard.py new file mode 100644 index 0000000..9fa4350 --- /dev/null +++ b/fixtracks/widgets/taskcard.py @@ -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() diff --git a/fixtracks/widgets/taskwidget.py b/fixtracks/widgets/taskwidget.py index 8cba719..7734dee 100644 --- a/fixtracks/widgets/taskwidget.py +++ b/fixtracks/widgets/taskwidget.py @@ -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