1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2026-01-22 14:41:39 +00:00

Moved column information in new edition-specific core result_table units.

This commit is contained in:
Virgil Dupras
2011-11-27 12:47:00 -05:00
parent eb83b830df
commit 7e95404903
17 changed files with 149 additions and 113 deletions

View File

@@ -65,11 +65,11 @@ def format_perc(p):
def format_dupe_count(c):
return str(c) if c else '---'
def cmp_value(dupe, column):
if column.name == 'name':
def cmp_value(dupe, attrname):
if attrname == 'name':
value = rem_file_ext(dupe.name)
else:
value = getattr(dupe, column.name, '')
value = getattr(dupe, attrname, '')
return value.lower() if isinstance(value, str) else value
class DupeGuru(RegistrableApplication, Broadcaster):
@@ -101,6 +101,7 @@ class DupeGuru(RegistrableApplication, Broadcaster):
'ignore_hardlink_matches': False,
}
self.selected_dupes = []
# subclasses must create self.result_table
#--- Virtual
def _get_display_info(self, dupe, group, delta):
@@ -276,7 +277,7 @@ class DupeGuru(RegistrableApplication, Broadcaster):
column_ids = [colid for colid in column_ids if colid.isdigit()]
column_ids = list(map(int, column_ids))
column_ids.sort()
colnames = [col.display for i, col in enumerate(self.COLUMNS) if i in column_ids]
colnames = [col.display for i, col in enumerate(self.result_table.COLUMNS) if i in column_ids]
rows = []
for group in self.results.groups:
for dupe in group:
@@ -287,13 +288,15 @@ class DupeGuru(RegistrableApplication, Broadcaster):
return export.export_to_xhtml(colnames, rows)
def get_display_info(self, dupe, group, delta=False):
def empty_data():
return {c.name: '---' for c in self.result_table.COLUMNS[1:]}
if (dupe is None) or (group is None):
return ['---'] * len(self.COLUMNS)
return empty_data()
try:
return self._get_display_info(dupe, group, delta)
except Exception as e:
logging.warning("Exception on GetDisplayInfo for %s: %s", str(dupe.path), str(e))
return ['---'] * len(self.COLUMNS)
return empty_data()
def invoke_command(self, cmd):
"""Calls command `cmd` with %d and %r placeholders replaced.

View File

@@ -12,7 +12,8 @@ from hscommon.notify import Listener
class GUIObject(Listener):
def __init__(self, view, app):
Listener.__init__(self, app)
self.view = view
if view is not None:
self.view = view
self.app = app
def directories_changed(self):

View File

@@ -26,12 +26,12 @@ class DetailsPanel(GUIObject):
else:
dupe = None
group = None
l1 = self.app.get_display_info(dupe, group, False)
data1 = self.app.get_display_info(dupe, group, False)
# we don't want the two sides of the table to display the stats for the same file
ref = group.ref if group is not None and group.ref is not dupe else None
l2 = self.app.get_display_info(ref, group, False)
names = [c.display for c in self.app.COLUMNS]
self._table = list(zip(names, l1, l2))
data2 = self.app.get_display_info(ref, group, False)
columns = self.app.result_table.COLUMNS[1:] # first column is the 'marked' column
self._table = [(c.display, data1[c.name], data2[c.name]) for c in columns]
#--- Public
def row_count(self):

View File

@@ -52,14 +52,13 @@ class DupeRow(Row):
class ResultTable(GUIObject, GUITable):
def __init__(self, view, app):
GUIObject.__init__(self, view, app)
def __init__(self, app):
GUIObject.__init__(self, None, app)
GUITable.__init__(self)
self.COLUMNS = app.COLUMNS
self.columns = Columns(self, prefaccess=app, savename='ResultTable')
self._power_marker = False
self._delta_values = False
self._sort_descriptors = (0, True)
self._sort_descriptors = ('name', True)
#--- Override
def connect(self):