diff --git a/core/app.py b/core/app.py index 05a1b242..6ad5fe69 100644 --- a/core/app.py +++ b/core/app.py @@ -139,6 +139,8 @@ class DupeGuru(RegistrableApplication, Broadcaster): return m.percentage if key == 'dupe_count': return 0 + if key == 'marked': + return self.results.is_marked(dupe) r = cmp_value(dupe, key) if delta and (key in self.result_table.DELTA_COLUMNS): r -= cmp_value(get_group().ref, key) @@ -149,6 +151,8 @@ class DupeGuru(RegistrableApplication, Broadcaster): return group.percentage if key == 'dupe_count': return len(group) + if key == 'marked': + return len([dupe for dupe in group.dupes if self.results.is_marked(dupe)]) return cmp_value(group.ref, key) def _do_delete(self, j, replace_with_hardlinks): diff --git a/qt/base/results_model.py b/qt/base/results_model.py index e0cec6f9..0d6450d8 100644 --- a/qt/base/results_model.py +++ b/qt/base/results_model.py @@ -15,17 +15,19 @@ class ResultsModel(Table): def __init__(self, app, view): model = app.model.result_table Table.__init__(self, model, view) + view.horizontalHeader().setSortIndicator(1, Qt.AscendingOrder) app.prefsChanged.connect(self.appPrefsChanged) app.willSavePrefs.connect(self.appWillSavePrefs) def _getData(self, row, column, role): + if column.name == 'marked': + if role == Qt.CheckStateRole and row.markable: + return Qt.Checked if row.marked else Qt.Unchecked + return None if role == Qt.DisplayRole: data = row.data_delta if self.model.delta_values else row.data return data[column.name] - elif role == Qt.CheckStateRole: - if column.name == 'name' and row.markable: - return Qt.Checked if row.marked else Qt.Unchecked elif role == Qt.ForegroundRole: if row.isref: return QBrush(Qt.blue) @@ -43,7 +45,7 @@ class ResultsModel(Table): def _getFlags(self, row, column): flags = Qt.ItemIsEnabled | Qt.ItemIsSelectable - if column.name == 'name': + if column.name == 'marked': flags |= Qt.ItemIsEditable if row.markable: flags |= Qt.ItemIsUserCheckable @@ -51,8 +53,8 @@ class ResultsModel(Table): def _setData(self, row, column, value, role): if role == Qt.CheckStateRole: - if column.name == 'name': - self.model.app.mark_dupe(row._dupe, bool(value)) + if column.name == 'marked': + row.marked = bool(value) return True elif role == Qt.EditRole: if column.name == 'name': diff --git a/qt/me/results_model.py b/qt/me/results_model.py index e2fb05f9..f264fd50 100644 --- a/qt/me/results_model.py +++ b/qt/me/results_model.py @@ -7,13 +7,10 @@ from qtlib.column import Column from ..base.results_model import ResultsModel as ResultsModelBase -from core_me.result_table import ResultTable - -# Little hack to remove the 'marked' column which isn't there in the Qt GUI. -del ResultTable.COLUMNS[0] class ResultsModel(ResultsModelBase): COLUMNS = [ + Column('marked', defaultWidth=30), Column('name', defaultWidth=200), Column('folder_path', defaultWidth=180), Column('size', defaultWidth=60), diff --git a/qt/pe/results_model.py b/qt/pe/results_model.py index e621c068..6e0733f3 100644 --- a/qt/pe/results_model.py +++ b/qt/pe/results_model.py @@ -7,13 +7,10 @@ from qtlib.column import Column from ..base.results_model import ResultsModel as ResultsModelBase -from core_pe.result_table import ResultTable - -# Little hack to remove the 'marked' column which isn't there in the Qt GUI. -del ResultTable.COLUMNS[0] class ResultsModel(ResultsModelBase): COLUMNS = [ + Column('marked', defaultWidth=30), Column('name', defaultWidth=200), Column('folder_path', defaultWidth=180), Column('size', defaultWidth=60), diff --git a/qt/se/results_model.py b/qt/se/results_model.py index b7ac7d2e..8c2721ff 100644 --- a/qt/se/results_model.py +++ b/qt/se/results_model.py @@ -7,19 +7,16 @@ from qtlib.column import Column from ..base.results_model import ResultsModel as ResultsModelBase -from core_se.result_table import ResultTable - -# Little hack to remove the 'marked' column which isn't there in the Qt GUI. -del ResultTable.COLUMNS[0] class ResultsModel(ResultsModelBase): COLUMNS = [ - Column('name',defaultWidth=200), - Column('folder_path',defaultWidth=180), - Column('size',defaultWidth=60), - Column('extension',defaultWidth=40), - Column('mtime',defaultWidth=120), - Column('percentage',defaultWidth=60), - Column('words',defaultWidth=120), - Column('dupe_count',defaultWidth=80), + Column('marked', defaultWidth=30), + Column('name', defaultWidth=200), + Column('folder_path', defaultWidth=180), + Column('size', defaultWidth=60), + Column('extension', defaultWidth=40), + Column('mtime', defaultWidth=120), + Column('percentage', defaultWidth=60), + Column('words', defaultWidth=120), + Column('dupe_count', defaultWidth=80), ] \ No newline at end of file