diff --git a/cocoa/base/PyDupeGuru.h b/cocoa/base/PyDupeGuru.h index 04116cee..d50c7a0a 100644 --- a/cocoa/base/PyDupeGuru.h +++ b/cocoa/base/PyDupeGuru.h @@ -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; diff --git a/cocoa/base/PyResultTree.h b/cocoa/base/PyResultTree.h index d416cec6..58251e63 100644 --- a/cocoa/base/PyResultTree.h +++ b/cocoa/base/PyResultTree.h @@ -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; diff --git a/cocoa/base/ResultOutline.h b/cocoa/base/ResultOutline.h index d4ffe941..e50b6a5e 100644 --- a/cocoa/base/ResultOutline.h +++ b/cocoa/base/ResultOutline.h @@ -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; \ No newline at end of file diff --git a/cocoa/base/ResultOutline.m b/cocoa/base/ResultOutline.m index e148d170..c174f1bc 100644 --- a/cocoa/base/ResultOutline.m +++ b/cocoa/base/ResultOutline.m @@ -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 \ No newline at end of file diff --git a/cocoa/base/ResultWindow.h b/cocoa/base/ResultWindow.h index 2b24083e..92bfb640 100644 --- a/cocoa/base/ResultWindow.h +++ b/cocoa/base/ResultWindow.h @@ -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; } diff --git a/cocoa/base/ResultWindow.m b/cocoa/base/ResultWindow.m index 42f0e5c5..e719cb14 100644 --- a/cocoa/base/ResultWindow.m +++ b/cocoa/base/ResultWindow.m @@ -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]; } diff --git a/cocoa/me/ResultWindow.h b/cocoa/me/ResultWindow.h index 08ca8f9e..8fe6ca8a 100644 --- a/cocoa/me/ResultWindow.h +++ b/cocoa/me/ResultWindow.h @@ -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 diff --git a/cocoa/me/ResultWindow.m b/cocoa/me/ResultWindow.m index 7599fb4e..66e7d3f4 100644 --- a/cocoa/me/ResultWindow.m +++ b/cocoa/me/ResultWindow.m @@ -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 */ diff --git a/core/app_cocoa.py b/core/app_cocoa.py index d688d4b0..d9082d3c 100644 --- a/core/app_cocoa.py +++ b/core/app_cocoa.py @@ -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) - diff --git a/core/app_cocoa_inter.py b/core/app_cocoa_inter.py index 2cb9b3d1..7fc38488 100644 --- a/core/app_cocoa_inter.py +++ b/core/app_cocoa_inter.py @@ -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) diff --git a/core/gui/result_tree.py b/core/gui/result_tree.py index 392af649..4638e31e 100644 --- a/core/gui/result_tree.py +++ b/core/gui/result_tree.py @@ -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