Under Qt, added a 'marked' column thus uncoupling the marked' attribute from the 'filename' column.

Also, added the ability to sort by 'marked' status.
This commit is contained in:
Virgil Dupras 2012-03-16 15:05:52 -04:00
parent 771f22f208
commit 6ee56dc55c
5 changed files with 23 additions and 26 deletions

View File

@ -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):

View File

@ -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':

View File

@ -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),

View File

@ -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),

View File

@ -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),
]