aboutsummaryrefslogtreecommitdiffstats
path: root/sb_builder/dashboard.py
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-19 20:53:43 +0200
committerDanilo M. <danix@danix.xyz>2026-10-19 20:53:43 +0200
commitb8400f38411818aa54a773dffb2c3a0c56b06dba (patch)
treee6390c860efb005e424b91594c6c619c120d9b75 /sb_builder/dashboard.py
parentd29fc1cd128b7d6a18e3e50d8ff4d6262f7e88ae (diff)
downloadsb-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.py14
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."""