aboutsummaryrefslogtreecommitdiffstats
path: root/sb_builder/hints_tab.py
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-20 11:30:36 +0200
committerDanilo M. <danix@danix.xyz>2026-10-20 11:30:36 +0200
commitd756256c775c754aed07f8c518b2b8f589ea2948 (patch)
treef8adb23e59240fe408d47627809503c9a078efe7 /sb_builder/hints_tab.py
parentfebdd512474a7ffe358b01c15b72871c3f862170 (diff)
downloadsb-builder-d756256c775c754aed07f8c518b2b8f589ea2948.tar.gz
sb-builder-d756256c775c754aed07f8c518b2b8f589ea2948.zip
Hint diff dialog: color added, removed and hunk lines
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'sb_builder/hints_tab.py')
-rw-r--r--sb_builder/hints_tab.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/sb_builder/hints_tab.py b/sb_builder/hints_tab.py
index 8d0bed4..2956abc 100644
--- a/sb_builder/hints_tab.py
+++ b/sb_builder/hints_tab.py
@@ -20,7 +20,7 @@ import difflib
import os
from PyQt6.QtCore import Qt, pyqtSignal
-from PyQt6.QtGui import QColor, QFontDatabase, QKeySequence, QShortcut
+from PyQt6.QtGui import QColor, QFontDatabase, QKeySequence, QShortcut, QSyntaxHighlighter
from PyQt6.QtWidgets import (QCheckBox, QDialog, QHBoxLayout, QLabel, QLineEdit, QListWidget,
QListWidgetItem, QMessageBox, QPlainTextEdit, QPushButton, QSplitter,
QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget)
@@ -206,6 +206,18 @@ class HintsTab(QWidget):
self.reload()
+class DiffColors(QSyntaxHighlighter):
+ """Unified diff colors: added green, removed red, hunk headers blue."""
+
+ COLORS = (("+++", None), ("---", None), ("+", STATUS["ok"]), ("-", STATUS["failed"]),
+ ("@@", "#3b8bd0"))
+
+ def highlightBlock(self, text):
+ color = next((c for prefix, c in self.COLORS if text.startswith(prefix)), None)
+ if color:
+ self.setFormat(0, len(text), QColor(color))
+
+
class HintResultDialog(QDialog):
"""After a hint job: each changed package's diff, Revert per package, Build these."""
@@ -224,6 +236,7 @@ class HintResultDialog(QDialog):
self.list.addItem(item)
self.list.currentItemChanged.connect(self._show)
self.diff = QPlainTextEdit(readOnly=True)
+ self.colors = DiffColors(self.diff.document())
self.diff.setFont(QFontDatabase.systemFont(QFontDatabase.SystemFont.FixedFont))
split = QSplitter()
split.addWidget(self.list)