From eab5003e611966b4b826c244f1d07db38d521edf Mon Sep 17 00:00:00 2001 From: glubsy Date: Wed, 29 Jul 2020 21:42:44 +0200 Subject: [PATCH] Add color preference for delta in details table --- qt/details_dialog.py | 2 +- qt/details_table.py | 7 ++++--- qt/preferences.py | 4 ++++ qt/preferences_dialog.py | 9 +++++++++ 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/qt/details_dialog.py b/qt/details_dialog.py index c186e122..517f8511 100644 --- a/qt/details_dialog.py +++ b/qt/details_dialog.py @@ -25,7 +25,7 @@ class DetailsDialog(QDockWidget): # has been shown. If it has, we know that our geometry should be saved. self._shown_once = False self.app.prefs.restoreGeometry("DetailsWindowRect", self) - self.tableModel = DetailsModel(self.model) + self.tableModel = DetailsModel(self.model, app) # tableView is defined in subclasses self.tableView.setModel(self.tableModel) self.model.view = self diff --git a/qt/details_table.py b/qt/details_table.py index c42aa0a6..c2a47874 100644 --- a/qt/details_table.py +++ b/qt/details_table.py @@ -8,7 +8,7 @@ from PyQt5.QtCore import Qt, QAbstractTableModel from PyQt5.QtWidgets import QHeaderView, QTableView -from PyQt5.QtGui import QFont, QBrush, QColor +from PyQt5.QtGui import QFont, QBrush from hscommon.trans import trget @@ -18,9 +18,10 @@ HEADER = [tr("Selected"), tr("Reference")] class DetailsModel(QAbstractTableModel): - def __init__(self, model, **kwargs): + def __init__(self, model, app, **kwargs): super().__init__(**kwargs) self.model = model + self.prefs = app.prefs def columnCount(self, parent): return len(HEADER) @@ -43,7 +44,7 @@ class DetailsModel(QAbstractTableModel): if role == Qt.DisplayRole: return self.model.row(row)[column] if role == Qt.ForegroundRole and self.model.row(row)[1] != self.model.row(row)[2]: - return QBrush(QColor(250, 20, 20)) # red + return QBrush(self.prefs.details_table_delta_foreground_color) if role == Qt.FontRole and self.model.row(row)[1] != self.model.row(row)[2]: font = QFont(self.model.view.font()) # or simply QFont() font.setBold(True) diff --git a/qt/preferences.py b/qt/preferences.py index 604a9107..e54550df 100644 --- a/qt/preferences.py +++ b/qt/preferences.py @@ -42,6 +42,8 @@ class Preferences(PreferencesBase): self.details_dialog_override_theme_icons =\ get('DetailsDialogOverrideThemeIcons', self.details_dialog_override_theme_icons) if ISLINUX else True + self.details_table_delta_foreground_color =\ + get('DetailsTableDeltaForegroundColor', self.details_table_delta_foreground_color) self.result_table_ref_foreground_color =\ get('ResultTableRefForegroundColor', self.result_table_ref_foreground_color) @@ -86,6 +88,7 @@ class Preferences(PreferencesBase): self.reference_bold_font = True self.details_dialog_titlebar_enabled = True self.details_dialog_vertical_titlebar = True + self.details_table_delta_foreground_color = QColor(250, 20, 20) # red # By default use internal icons on platforms other than Linux for now self.details_dialog_override_theme_icons = False if not ISLINUX else True self.result_table_ref_foreground_color = QColor(Qt.blue) @@ -126,6 +129,7 @@ class Preferences(PreferencesBase): set_('DetailsDialogTitleBarEnabled', self.details_dialog_titlebar_enabled) set_('DetailsDialogVerticalTitleBar', self.details_dialog_vertical_titlebar) set_('DetailsDialogOverrideThemeIcons', self.details_dialog_override_theme_icons) + set_('DetailsTableDeltaForegroundColor', self.details_table_delta_foreground_color) set_('ResultTableRefForegroundColor', self.result_table_ref_foreground_color) set_('ResultTableDeltaForegroundColor', self.result_table_delta_foreground_color) set_("ResultWindowIsMaximized", self.resultWindowIsMaximized) diff --git a/qt/preferences_dialog.py b/qt/preferences_dialog.py index 37736c96..b52a407f 100644 --- a/qt/preferences_dialog.py +++ b/qt/preferences_dialog.py @@ -203,6 +203,12 @@ class PreferencesDialogBase(QDialog): # Prevent changing this on platforms where themes are unpredictable self.details_dialog_override_theme_icons.setEnabled(False if not ISLINUX else True) self.displayVLayout.addWidget(self.details_dialog_override_theme_icons) + gridlayout = QGridLayout() + self.details_table_delta_foreground_color_label = QLabel(tr("Delta foreground color:")) + gridlayout.addWidget(self.details_table_delta_foreground_color_label, 4, 0) + self.details_table_delta_foreground_color = ColorPickerButton(self) + gridlayout.addWidget(self.details_table_delta_foreground_color, 4, 1, 1, 1, Qt.AlignLeft) + self.displayVLayout.addLayout(gridlayout) def _setupAddCheckbox(self, name, label, parent=None): if parent is None: @@ -273,6 +279,8 @@ class PreferencesDialogBase(QDialog): self.fontSizeSpinBox.setValue(prefs.tableFontSize) setchecked(self.details_dialog_override_theme_icons, prefs.details_dialog_override_theme_icons) + self.details_table_delta_foreground_color.setColor( + prefs.details_table_delta_foreground_color) self.result_table_ref_foreground_color.setColor( prefs.result_table_ref_foreground_color) self.result_table_delta_foreground_color.setColor( @@ -297,6 +305,7 @@ class PreferencesDialogBase(QDialog): prefs.details_dialog_titlebar_enabled = ischecked(self.details_dialog_titlebar_enabled) prefs.details_dialog_vertical_titlebar = ischecked(self.details_dialog_vertical_titlebar) prefs.details_dialog_override_theme_icons = ischecked(self.details_dialog_override_theme_icons) + prefs.details_table_delta_foreground_color = self.details_table_delta_foreground_color.color prefs.result_table_ref_foreground_color = self.result_table_ref_foreground_color.color prefs.result_table_delta_foreground_color = self.result_table_delta_foreground_color.color prefs.destination_type = self.copyMoveDestinationComboBox.currentIndex()