From c6f5031dd81ab4a01744bb3840f149ee314f94e5 Mon Sep 17 00:00:00 2001 From: glubsy Date: Tue, 30 Jun 2020 04:20:27 +0200 Subject: [PATCH] Add color and bold font if difference in model * Could be better optimized if there is a way to set those variables earlier in the model or somewhere in the viewer when it requests the data. * Right now it compares strings(?) many times for every role we handle, which is not ideal. --- qt/details_table.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/qt/details_table.py b/qt/details_table.py index 795aca93..45eae4b3 100644 --- a/qt/details_table.py +++ b/qt/details_table.py @@ -8,6 +8,7 @@ from PyQt5.QtCore import Qt, QAbstractTableModel from PyQt5.QtWidgets import QHeaderView, QTableView +from PyQt5.QtGui import QFont, QBrush, QColor from hscommon.trans import trget @@ -27,12 +28,25 @@ class DetailsModel(QAbstractTableModel): def data(self, index, role): if not index.isValid(): return None - if role != Qt.DisplayRole: - return None # Skip first value "Attribute" column = index.column() + 1 row = index.row() - return self.model.row(row)[column] + + if self.model.row(row)[0] == "Dupe Count": + if role != Qt.DisplayRole: + return None + return self.model.row(row)[column] + + 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 + 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) + return font + + return None # QVariant() def headerData(self, section, orientation, role): if ( @@ -46,6 +60,7 @@ class DetailsModel(QAbstractTableModel): and role == Qt.DisplayRole and section < self.model.row_count() ): + # Read "Attribute" cell for horizontal header return self.model.row(section)[0] return None @@ -58,7 +73,7 @@ class DetailsTable(QTableView): QTableView.__init__(self, *args) self.setAlternatingRowColors(True) self.setSelectionBehavior(QTableView.SelectRows) - self.setSelectionMode(QTableView.SingleSelection) + self.setSelectionMode(QTableView.NoSelection) self.setShowGrid(False) self.setWordWrap(False) self.setCornerButtonEnabled(False)