diff options
Diffstat (limited to 'sb_builder/packages.py')
| -rw-r--r-- | sb_builder/packages.py | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/sb_builder/packages.py b/sb_builder/packages.py index 30215e0..a4d1f1b 100644 --- a/sb_builder/packages.py +++ b/sb_builder/packages.py @@ -20,13 +20,13 @@ import html from PyQt6.QtCore import QAbstractTableModel, QModelIndex, QSortFilterProxyModel, Qt, pyqtSignal from PyQt6.QtGui import QColor, QKeySequence, QShortcut -from PyQt6.QtWidgets import (QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QScrollArea, - QSplitter, QTableView, QVBoxLayout, QWidget) +from PyQt6.QtWidgets import (QHBoxLayout, QLabel, QMessageBox, QScrollArea, QSplitter, QTableView, + QVBoxLayout, QWidget) from . import hints as hintlib from .dashboard import STATUS from .fmt import NA, fmt_time -from .ui import SP, action, enable +from .ui import SP, action, chip, enable, group_label, search_field OVERLAYS = ("personal", "pentesting") STATUSES = ("ok", "failed", "never", "outdated") @@ -159,15 +159,6 @@ class Filter(QSortFilterProxyModel): return matches(row, self.terms, self.overlays, self.statuses) -def chip(text): - b = QPushButton(text, checkable=True) - b.setStyleSheet("QPushButton { border: 1px solid palette(mid); border-radius: 10px;" - " padding: 2px 10px; }" - "QPushButton:checked { background: palette(highlight);" - " color: palette(highlighted-text); }") - return b - - def detail_html(row): """The detail pane for one package: facts, dependencies, then its hints.""" view = hintlib.interpret(row["hints"], row["name"], row["info_version"], row["requires"]) @@ -219,13 +210,14 @@ class PackagesTab(QWidget): self.proxy = Filter() self.proxy.setSourceModel(self.model) - self.query = QLineEdit(placeholderText="search (cat: maint: req: status:)") + self.query = search_field("search (cat: maint: req: status:)") self.query.textChanged.connect(self.refilter) self.chips = {} chips = QHBoxLayout() - for group in (("personal", "pentesting", "upstream"), STATUSES): + for label, group in (("overlay", ("personal", "pentesting", "upstream")), ("status", STATUSES)): + chips.addWidget(group_label(label)) for name in group: - self.chips[name] = chip(name) + self.chips[name] = chip(name, STATUS_COLOR.get(name) if group is STATUSES else None) self.chips[name].toggled.connect(self.refilter) chips.addWidget(self.chips[name]) chips.addSpacing(16) |
