1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2025-03-10 13:44:37 +00:00

Brought back delta values.

This commit is contained in:
Virgil Dupras 2010-02-11 19:22:31 +01:00
parent 46836cc805
commit a65fd7d0d0
11 changed files with 77 additions and 40 deletions

View File

@ -56,7 +56,6 @@ http://www.hardcoded.net/licenses/hs_license
//Scanning options //Scanning options
- (void)setMinMatchPercentage:(NSNumber *)percentage; - (void)setMinMatchPercentage:(NSNumber *)percentage;
- (void)setMixFileKind:(NSNumber *)mix_file_kind; - (void)setMixFileKind:(NSNumber *)mix_file_kind;
- (void)setDisplayDeltaValues:(NSNumber *)display_delta_values;
- (void)setEscapeFilterRegexp:(NSNumber *)escape_filter_regexp; - (void)setEscapeFilterRegexp:(NSNumber *)escape_filter_regexp;
- (void)setRemoveEmptyFolders:(NSNumber *)remove_empty_folders; - (void)setRemoveEmptyFolders:(NSNumber *)remove_empty_folders;
- (void)setSizeThreshold:(NSInteger)size_threshold; - (void)setSizeThreshold:(NSInteger)size_threshold;

View File

@ -10,7 +10,10 @@ http://www.hardcoded.net/licenses/hs_license
#import "PyOutline.h" #import "PyOutline.h"
@interface PyResultTree : PyOutline @interface PyResultTree : PyOutline
- (BOOL)powerMarkerMode;
- (void)setPowerMarkerMode:(BOOL)aPowerMarkerMode; - (void)setPowerMarkerMode:(BOOL)aPowerMarkerMode;
- (BOOL)deltaValuesMode;
- (void)setDeltaValuesMode:(BOOL)aDeltaValuesMode;
- (NSString *)valueForPath:(NSArray *)aPath column:(NSInteger)aColumn; - (NSString *)valueForPath:(NSArray *)aPath column:(NSInteger)aColumn;
- (BOOL)renameSelected:(NSString *)aNewName; - (BOOL)renameSelected:(NSString *)aNewName;

View File

@ -12,10 +12,14 @@ http://www.hardcoded.net/licenses/hs_license
@interface ResultOutline : HSOutline @interface ResultOutline : HSOutline
{ {
NSMutableIndexSet *_deltaColumns; NSIndexSet *_deltaColumns;
} }
- (PyResultTree *)py; - (PyResultTree *)py;
- (BOOL)powerMarkerMode;
- (void)setPowerMarkerMode:(BOOL)aPowerMarkerMode; - (void)setPowerMarkerMode:(BOOL)aPowerMarkerMode;
- (BOOL)deltaValuesMode;
- (void)setDeltaValuesMode:(BOOL)aDeltaValuesMode;
- (void)setDeltaColumns:(NSIndexSet *)aDeltaColumns;
- (IBAction)markSelected:(id)sender; - (IBAction)markSelected:(id)sender;
@end; @end;

View File

@ -18,6 +18,12 @@ http://www.hardcoded.net/licenses/hs_license
return self; return self;
} }
- (void)dealloc
{
[_deltaColumns release];
[super dealloc];
}
- (PyResultTree *)py - (PyResultTree *)py
{ {
return (PyResultTree *)py; return (PyResultTree *)py;
@ -31,11 +37,32 @@ http://www.hardcoded.net/licenses/hs_license
} }
/* Public */ /* Public */
- (BOOL)powerMarkerMode
{
return [[self py] powerMarkerMode];
}
- (void)setPowerMarkerMode:(BOOL)aPowerMarkerMode - (void)setPowerMarkerMode:(BOOL)aPowerMarkerMode
{ {
[[self py] setPowerMarkerMode:aPowerMarkerMode]; [[self py] setPowerMarkerMode:aPowerMarkerMode];
} }
- (BOOL)deltaValuesMode
{
return [[self py] deltaValuesMode];
}
- (void)setDeltaValuesMode:(BOOL)aDeltaValuesMode
{
[[self py] setDeltaValuesMode:aDeltaValuesMode];
}
- (void)setDeltaColumns:(NSIndexSet *)aDeltaColumns
{
[_deltaColumns release];
_deltaColumns = [aDeltaColumns retain];
}
- (IBAction)markSelected:(id)sender - (IBAction)markSelected:(id)sender
{ {
[[self py] markSelected]; [[self py] markSelected];
@ -96,12 +123,12 @@ http://www.hardcoded.net/licenses/hs_license
else { else {
[textCell setTextColor:[NSColor blueColor]]; [textCell setTextColor:[NSColor blueColor]];
} }
// if ((_displayDelta) && (_powerMode || ([node level] > 1))) { if (([self deltaValuesMode]) && ([self powerMarkerMode] || ([path length] > 1))) {
// NSInteger i = [[tableColumn identifier] integerValue]; NSInteger i = [[tableColumn identifier] integerValue];
// if ([_deltaColumns containsIndex:i]) { if ([_deltaColumns containsIndex:i]) {
// [textCell setTextColor:[NSColor orangeColor]]; [textCell setTextColor:[NSColor orangeColor]];
// } }
// } }
} }
} }
@end @end

View File

@ -27,10 +27,7 @@ http://www.hardcoded.net/licenses/hs_license
IBOutlet NSMenu *columnsMenu; IBOutlet NSMenu *columnsMenu;
IBOutlet NSSearchField *filterField; IBOutlet NSSearchField *filterField;
BOOL _powerMode;
BOOL _displayDelta;
NSMutableArray *_resultColumns; NSMutableArray *_resultColumns;
NSMutableIndexSet *_deltaColumns;
NSWindowController *preferencesPanel; NSWindowController *preferencesPanel;
ResultOutline *outline; ResultOutline *outline;
} }

View File

@ -33,8 +33,6 @@ http://www.hardcoded.net/licenses/hs_license
@implementation ResultWindowBase @implementation ResultWindowBase
- (void)awakeFromNib - (void)awakeFromNib
{ {
_displayDelta = NO;
_powerMode = NO;
[self window]; [self window];
preferencesPanel = [[NSWindowController alloc] initWithWindowNibName:@"Preferences"]; preferencesPanel = [[NSWindowController alloc] initWithWindowNibName:@"Preferences"];
outline = [[ResultOutline alloc] initWithPyParent:py view:matches]; outline = [[ResultOutline alloc] initWithPyParent:py view:matches];
@ -42,7 +40,6 @@ http://www.hardcoded.net/licenses/hs_license
[self fillColumnsMenu]; [self fillColumnsMenu];
[deltaSwitch setSelectedSegment:0]; [deltaSwitch setSelectedSegment:0];
[pmSwitch setSelectedSegment:0]; [pmSwitch setSelectedSegment:0];
[py setDisplayDeltaValues:b2n(_displayDelta)];
[matches setTarget:self]; [matches setTarget:self];
[matches setDoubleAction:@selector(openClicked:)]; [matches setDoubleAction:@selector(openClicked:)];
[self refreshStats]; [self refreshStats];
@ -116,7 +113,7 @@ http://www.hardcoded.net/licenses/hs_license
- (NSArray *)getSelectedPaths:(BOOL)aDupesOnly - (NSArray *)getSelectedPaths:(BOOL)aDupesOnly
{ {
if (_powerMode) if ([outline powerMarkerMode])
aDupesOnly = NO; aDupesOnly = NO;
NSIndexSet *indexes = [matches selectedRowIndexes]; NSIndexSet *indexes = [matches selectedRowIndexes];
NSMutableArray *nodeList = [NSMutableArray array]; NSMutableArray *nodeList = [NSMutableArray array];
@ -171,7 +168,7 @@ http://www.hardcoded.net/licenses/hs_license
- (void)performPySelection:(NSArray *)aIndexPaths - (void)performPySelection:(NSArray *)aIndexPaths
{ {
if (_powerMode) { if ([outline powerMarkerMode]) {
[py selectPowerMarkerNodePaths:aIndexPaths]; [py selectPowerMarkerNodePaths:aIndexPaths];
} }
else { else {
@ -203,15 +200,12 @@ http://www.hardcoded.net/licenses/hs_license
- (IBAction)changeDelta:(id)sender - (IBAction)changeDelta:(id)sender
{ {
_displayDelta = [deltaSwitch selectedSegment] == 1; [outline setDeltaValuesMode:[deltaSwitch selectedSegment] == 1];
[py setDisplayDeltaValues:b2n(_displayDelta)];
[self reloadMatches];
} }
- (IBAction)changePowerMarker:(id)sender - (IBAction)changePowerMarker:(id)sender
{ {
_powerMode = [pmSwitch selectedSegment] == 1; [outline setPowerMarkerMode:[pmSwitch selectedSegment] == 1];
[outline setPowerMarkerMode:_powerMode];
// [self outlineView:matches didClickTableColumn:nil]; // [self outlineView:matches didClickTableColumn:nil];
} }

View File

@ -10,10 +10,7 @@ http://www.hardcoded.net/licenses/hs_license
#import "../base/ResultWindow.h" #import "../base/ResultWindow.h"
#import "DirectoryPanel.h" #import "DirectoryPanel.h"
@interface ResultWindow : ResultWindowBase @interface ResultWindow : ResultWindowBase {}
{
NSString *_lastAction;
}
- (IBAction)removeDeadTracks:(id)sender; - (IBAction)removeDeadTracks:(id)sender;
- (IBAction)startDuplicateScan:(id)sender; - (IBAction)startDuplicateScan:(id)sender;
@end @end

View File

@ -20,8 +20,9 @@ http://www.hardcoded.net/licenses/hs_license
{ {
[super awakeFromNib]; [super awakeFromNib];
[[self window] setTitle:@"dupeGuru Music Edition"]; [[self window] setTitle:@"dupeGuru Music Edition"];
_deltaColumns = [[NSMutableIndexSet indexSetWithIndexesInRange:NSMakeRange(2,7)] retain]; NSMutableIndexSet *deltaColumns = [[NSMutableIndexSet indexSetWithIndexesInRange:NSMakeRange(2,7)] retain];
[_deltaColumns removeIndex:6]; [deltaColumns removeIndex:6];
[outline setDeltaColumns:deltaColumns];
} }
/* Actions */ /* Actions */

View File

@ -46,7 +46,6 @@ class DupeGuru(app.DupeGuru):
appdata = op.join(appsupport, appdata_subdir) appdata = op.join(appsupport, appdata_subdir)
app.DupeGuru.__init__(self, data_module, appdata, appid) app.DupeGuru.__init__(self, data_module, appdata, appid)
self.progress = cocoa.ThreadedJobPerformer() self.progress = cocoa.ThreadedJobPerformer()
self.display_delta_values = False
#--- Override #--- Override
@staticmethod @staticmethod
@ -156,9 +155,3 @@ class DupeGuru(app.DupeGuru):
dupes = [self.results.dupes[row] for row in rows if row in xrange(len(self.results.dupes))] dupes = [self.results.dupes[row] for row in rows if row in xrange(len(self.results.dupes))]
self._select_dupes(dupes) self._select_dupes(dupes)
def sort_dupes(self,key,asc):
self.results.sort_dupes(key,asc,self.display_delta_values)
def sort_groups(self,key,asc):
self.results.sort_groups(key,asc)

View File

@ -131,9 +131,6 @@ class PyDupeGuruBase(PyRegistrable):
def setMixFileKind_(self, mix_file_kind): def setMixFileKind_(self, mix_file_kind):
self.py.scanner.mix_file_kind = mix_file_kind self.py.scanner.mix_file_kind = mix_file_kind
def setDisplayDeltaValues_(self, display_delta_values):
self.py.display_delta_values= display_delta_values
def setEscapeFilterRegexp_(self, escape_filter_regexp): def setEscapeFilterRegexp_(self, escape_filter_regexp):
self.py.options['escape_filter_regexp'] = escape_filter_regexp self.py.options['escape_filter_regexp'] = escape_filter_regexp
@ -175,10 +172,22 @@ class PyDirectoryOutline(PyOutline):
class PyResultOutline(PyOutline): class PyResultOutline(PyOutline):
py_class = ResultTree py_class = ResultTree
@signature('c@:')
def powerMarkerMode(self):
return self.py.power_marker
@signature('v@:c') @signature('v@:c')
def setPowerMarkerMode_(self, value): def setPowerMarkerMode_(self, value):
self.py.power_marker = value self.py.power_marker = value
@signature('c@:')
def deltaValuesMode(self):
return self.py.delta_values
@signature('v@:c')
def setDeltaValuesMode_(self, value):
self.py.delta_values = value
@signature('@@:@i') @signature('@@:@i')
def valueForPath_column_(self, path, column): def valueForPath_column_(self, path, column):
return self.py.get_node_value(path, column) return self.py.get_node_value(path, column)

View File

@ -34,6 +34,7 @@ class ResultTree(GUIObject, Tree):
GUIObject.__init__(self, view, app) GUIObject.__init__(self, view, app)
Tree.__init__(self) Tree.__init__(self)
self._power_marker = False self._power_marker = False
self._delta_values = False
self.connect() self.connect()
self._refresh() self._refresh()
self.view.refresh() self.view.refresh()
@ -60,16 +61,16 @@ class ResultTree(GUIObject, Tree):
node = self.get_node(path) node = self.get_node(path)
except IndexError: except IndexError:
return '---' return '---'
if self.app.display_delta_values: if self.delta_values:
return node.data_delta[column] return node.data_delta[column]
else: else:
return node.data[column] return node.data[column]
def sort(self, key, asc): def sort(self, key, asc):
if self.power_marker: if self.power_marker:
self.app.sort_dupes(key, asc) self.app.results.sort_dupes(key, asc, self.delta_values)
else: else:
self.app.sort_groups(key, asc) self.app.results.sort_groups(key, asc)
@property @property
def power_marker(self): def power_marker(self):
@ -83,6 +84,18 @@ class ResultTree(GUIObject, Tree):
self._refresh() self._refresh()
self.view.refresh() self.view.refresh()
@property
def delta_values(self):
return self._delta_values
@delta_values.setter
def delta_values(self, value):
if value == self._delta_values:
return
self._delta_values = value
self._refresh()
self.view.refresh()
@Tree.selected.setter @Tree.selected.setter
def selected(self, node): def selected(self, node):
self._selected = node self._selected = node