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
- (void)setMinMatchPercentage:(NSNumber *)percentage;
- (void)setMixFileKind:(NSNumber *)mix_file_kind;
- (void)setDisplayDeltaValues:(NSNumber *)display_delta_values;
- (void)setEscapeFilterRegexp:(NSNumber *)escape_filter_regexp;
- (void)setRemoveEmptyFolders:(NSNumber *)remove_empty_folders;
- (void)setSizeThreshold:(NSInteger)size_threshold;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -46,7 +46,6 @@ class DupeGuru(app.DupeGuru):
appdata = op.join(appsupport, appdata_subdir)
app.DupeGuru.__init__(self, data_module, appdata, appid)
self.progress = cocoa.ThreadedJobPerformer()
self.display_delta_values = False
#--- Override
@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))]
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):
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):
self.py.options['escape_filter_regexp'] = escape_filter_regexp
@ -175,10 +172,22 @@ class PyDirectoryOutline(PyOutline):
class PyResultOutline(PyOutline):
py_class = ResultTree
@signature('c@:')
def powerMarkerMode(self):
return self.py.power_marker
@signature('v@:c')
def setPowerMarkerMode_(self, 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')
def valueForPath_column_(self, 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)
Tree.__init__(self)
self._power_marker = False
self._delta_values = False
self.connect()
self._refresh()
self.view.refresh()
@ -60,16 +61,16 @@ class ResultTree(GUIObject, Tree):
node = self.get_node(path)
except IndexError:
return '---'
if self.app.display_delta_values:
if self.delta_values:
return node.data_delta[column]
else:
return node.data[column]
def sort(self, key, asc):
if self.power_marker:
self.app.sort_dupes(key, asc)
self.app.results.sort_dupes(key, asc, self.delta_values)
else:
self.app.sort_groups(key, asc)
self.app.results.sort_groups(key, asc)
@property
def power_marker(self):
@ -83,6 +84,18 @@ class ResultTree(GUIObject, Tree):
self._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
def selected(self, node):
self._selected = node