diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-19 20:53:43 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-19 20:53:43 +0200 |
| commit | b8400f38411818aa54a773dffb2c3a0c56b06dba (patch) | |
| tree | e6390c860efb005e424b91594c6c619c120d9b75 /sb_builder/dashboard.py | |
| parent | d29fc1cd128b7d6a18e3e50d8ff4d6262f7e88ae (diff) | |
| download | sb-builder-b8400f38411818aa54a773dffb2c3a0c56b06dba.tar.gz sb-builder-b8400f38411818aa54a773dffb2c3a0c56b06dba.zip | |
Add Packages tab, hint view, Run it and signing key unlock
Packages tab over the helper inventory: query bar with cat:/maint:/
req:/status: prefixes, overlay and status chips, check column, and a
detail pane with versions, dependencies after hints and a structured
read-only view of the hint (hints.py mirrors slackrepo's parser).
Actions start slackrepo previews; the Jobs tab offers Run it with a
publish box (default from [builds] publish), asking for the signing
key passphrase first when the key is locked. Status bar shows the key
state; Dashboard tiles open their tabs; inventory reloads after
slackrepo and publish jobs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'sb_builder/dashboard.py')
| -rw-r--r-- | sb_builder/dashboard.py | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/sb_builder/dashboard.py b/sb_builder/dashboard.py index d4152ae..85c19f4 100644 --- a/sb_builder/dashboard.py +++ b/sb_builder/dashboard.py @@ -19,7 +19,7 @@ import html import time -from PyQt6.QtCore import QEvent, QRectF, Qt +from PyQt6.QtCore import QEvent, QRectF, Qt, pyqtSignal from PyQt6.QtGui import QColor, QFont, QPainter, QPalette from PyQt6.QtWidgets import (QFrame, QGridLayout, QHBoxLayout, QLabel, QPushButton, QToolTip, QVBoxLayout, QWidget) @@ -44,12 +44,24 @@ def muted(label): class Card(QFrame): """Rounded panel with a muted title; content goes into self.body.""" + clicked = pyqtSignal() + def __init__(self, title): super().__init__(objectName="card") self.body = QVBoxLayout(self) self.body.setContentsMargins(16, 12, 16, 14) self.body.addWidget(muted(QLabel(title))) + def link(self, slot): + """Make the whole card open something.""" + self.clicked.connect(slot) + self.setCursor(Qt.CursorShape.PointingHandCursor) + + def mouseReleaseEvent(self, event): + if event.button() == Qt.MouseButton.LeftButton: + self.clicked.emit() + super().mouseReleaseEvent(event) + class Tile(Card): """Stat tile: title, one large value, a muted detail line.""" |
