mirror of
				https://github.com/arsenetar/dupeguru.git
				synced 2025-09-11 17:58:17 +00:00 
			
		
		
		
	[#92 state:fixed] Added an option to ignore duplicates hardlinking to the same file.
This commit is contained in:
		
							parent
							
								
									456a835285
								
							
						
					
					
						commit
						0a64d653e1
					
				@ -48,8 +48,9 @@ http://www.hardcoded.net/licenses/hs_license
 | 
			
		||||
 | 
			
		||||
//Scanning options
 | 
			
		||||
- (void)setMinMatchPercentage:(NSNumber *)percentage;
 | 
			
		||||
- (void)setMixFileKind:(NSNumber *)mix_file_kind;
 | 
			
		||||
- (void)setEscapeFilterRegexp:(NSNumber *)escape_filter_regexp;
 | 
			
		||||
- (void)setRemoveEmptyFolders:(NSNumber *)remove_empty_folders;
 | 
			
		||||
- (void)setMixFileKind:(BOOL)mix_file_kind;
 | 
			
		||||
- (void)setEscapeFilterRegexp:(BOOL)escape_filter_regexp;
 | 
			
		||||
- (void)setRemoveEmptyFolders:(BOOL)remove_empty_folders;
 | 
			
		||||
- (void)setIgnoreHardlinkMatches:(BOOL)ignore_hardlink_matches;
 | 
			
		||||
- (void)setSizeThreshold:(NSInteger)size_threshold;
 | 
			
		||||
@end
 | 
			
		||||
 | 
			
		||||
@ -174,7 +174,7 @@ http://www.hardcoded.net/licenses/hs_license
 | 
			
		||||
    if ([Dialogs askYesNo:[NSString stringWithFormat:@"You are about to send %d files to Trash. Continue?",mark_count]] == NSAlertSecondButtonReturn) // NO
 | 
			
		||||
        return;
 | 
			
		||||
    NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
 | 
			
		||||
    [py setRemoveEmptyFolders:[ud objectForKey:@"removeEmptyFolders"]];
 | 
			
		||||
    [py setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
 | 
			
		||||
    [py deleteMarked];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -187,7 +187,7 @@ http://www.hardcoded.net/licenses/hs_license
 | 
			
		||||
- (IBAction)filter:(id)sender
 | 
			
		||||
{
 | 
			
		||||
    NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
 | 
			
		||||
    [py setEscapeFilterRegexp:b2n(!n2b([ud objectForKey:@"useRegexpFilter"]))];
 | 
			
		||||
    [py setEscapeFilterRegexp:!n2b([ud objectForKey:@"useRegexpFilter"])];
 | 
			
		||||
    [py applyFilter:[filterField stringValue]];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -264,7 +264,7 @@ http://www.hardcoded.net/licenses/hs_license
 | 
			
		||||
    {
 | 
			
		||||
        NSString *directory = [[op filenames] objectAtIndex:0];
 | 
			
		||||
        NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
 | 
			
		||||
        [py setRemoveEmptyFolders:[ud objectForKey:@"removeEmptyFolders"]];
 | 
			
		||||
        [py setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
 | 
			
		||||
        [py copyOrMove:b2n(NO) markedTo:directory recreatePath:[ud objectForKey:@"recreatePathType"]];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -28,6 +28,7 @@ http://www.hardcoded.net/licenses/hs_license
 | 
			
		||||
    [d setObject:b2n(NO) forKey:@"matchSimilarWords"];
 | 
			
		||||
    [d setObject:b2n(YES) forKey:@"mixFileKind"];
 | 
			
		||||
    [d setObject:b2n(NO) forKey:@"useRegexpFilter"];
 | 
			
		||||
    [d setObject:b2n(NO) forKey:@"ignoreHardlinkMatches"];
 | 
			
		||||
    [d setObject:b2n(NO) forKey:@"removeEmptyFolders"];
 | 
			
		||||
    [d setObject:b2n(NO) forKey:@"debug"];
 | 
			
		||||
    [d setObject:b2n(NO) forKey:@"scanTagTrack"];
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,7 @@ http://www.hardcoded.net/licenses/hs_license
 | 
			
		||||
    [[self window] setTitle:@"dupeGuru Music Edition"];
 | 
			
		||||
    NSMutableIndexSet *deltaColumns = [NSMutableIndexSet indexSetWithIndexesInRange:NSMakeRange(2,6)];
 | 
			
		||||
    [deltaColumns removeIndex:6];
 | 
			
		||||
    [outline setDeltaColumns:deltaColumns];
 | 
			
		||||
    [table setDeltaColumns:deltaColumns];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Actions */
 | 
			
		||||
@ -66,7 +66,8 @@ http://www.hardcoded.net/licenses/hs_license
 | 
			
		||||
    [_py enable:[ud objectForKey:@"scanTagYear"] scanForTag:@"year"];
 | 
			
		||||
    [_py setMinMatchPercentage:[ud objectForKey:@"minMatchPercentage"]];
 | 
			
		||||
    [_py setWordWeighting:[ud objectForKey:@"wordWeighting"]];
 | 
			
		||||
    [_py setMixFileKind:[ud objectForKey:@"mixFileKind"]];
 | 
			
		||||
    [_py setMixFileKind:n2b([ud objectForKey:@"mixFileKind"])];
 | 
			
		||||
    [_py setIgnoreHardlinkMatches:n2b([ud objectForKey:@"ignoreHardlinkMatches"])];
 | 
			
		||||
    [_py setMatchSimilarWords:[ud objectForKey:@"matchSimilarWords"]];
 | 
			
		||||
    NSInteger r = n2i([py doScan]);
 | 
			
		||||
    if (r == 3)
 | 
			
		||||
 | 
			
		||||
@ -33,7 +33,6 @@
 | 
			
		||||
		CE0A0C001175A1C000DCA3C6 /* HSTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CE0A0BFF1175A1C000DCA3C6 /* HSTable.m */; };
 | 
			
		||||
		CE0A0C041175A1DE00DCA3C6 /* ProblemDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE0A0C021175A1DE00DCA3C6 /* ProblemDialog.m */; };
 | 
			
		||||
		CE0A0C061175A24800DCA3C6 /* ProblemDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE0A0C051175A24800DCA3C6 /* ProblemDialog.xib */; };
 | 
			
		||||
		CE0B3D6711243F83009A7A30 /* ResultOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = CE0B3D6611243F83009A7A30 /* ResultOutline.m */; };
 | 
			
		||||
		CE1425890AFB718500BD5167 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE1425880AFB718500BD5167 /* Sparkle.framework */; };
 | 
			
		||||
		CE14259F0AFB719300BD5167 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE1425880AFB718500BD5167 /* Sparkle.framework */; };
 | 
			
		||||
		CE381C9609914ACE003581CE /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CE381C9409914ACE003581CE /* AppDelegate.m */; };
 | 
			
		||||
@ -54,12 +53,14 @@
 | 
			
		||||
		CE515E1D0FC6C19300EC695D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CE515E160FC6C19300EC695D /* AppDelegate.m */; };
 | 
			
		||||
		CE515E1E0FC6C19300EC695D /* DirectoryPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE515E190FC6C19300EC695D /* DirectoryPanel.m */; };
 | 
			
		||||
		CE515E1F0FC6C19300EC695D /* ResultWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = CE515E1C0FC6C19300EC695D /* ResultWindow.m */; };
 | 
			
		||||
		CE578303124DFC660004769C /* HSTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = CE578302124DFC660004769C /* HSTableView.m */; };
 | 
			
		||||
		CE6032C00FE6784C007E33FF /* DetailsPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6032BF0FE6784C007E33FF /* DetailsPanel.m */; };
 | 
			
		||||
		CE68EE6809ABC48000971085 /* DirectoryPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE68EE6609ABC48000971085 /* DirectoryPanel.m */; };
 | 
			
		||||
		CE6E0E9F1054EB97008D9390 /* dsa_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = CE6E0E9E1054EB97008D9390 /* dsa_pub.pem */; };
 | 
			
		||||
		CE848A1909DD85810004CB44 /* Consts.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE848A1809DD85810004CB44 /* Consts.h */; };
 | 
			
		||||
		CE900AD2109B238600754048 /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE900AD1109B238600754048 /* Preferences.xib */; };
 | 
			
		||||
		CE900AD7109B2A9B00754048 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE900AD6109B2A9B00754048 /* MainMenu.xib */; };
 | 
			
		||||
		CEB14D29124DFC2800FA7481 /* ResultTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CEB14D28124DFC2800FA7481 /* ResultTable.m */; };
 | 
			
		||||
		CECC563B12144A9000ABF262 /* registration.xib in Resources */ = {isa = PBXBuildFile; fileRef = CECC563912144A9000ABF262 /* registration.xib */; };
 | 
			
		||||
		CEDF07A3112493B200EE5BC0 /* StatsLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = CEDF07A2112493B200EE5BC0 /* StatsLabel.m */; };
 | 
			
		||||
		CEEB135209C837A2004D2330 /* dupeguru.icns in Resources */ = {isa = PBXBuildFile; fileRef = CEEB135109C837A2004D2330 /* dupeguru.icns */; };
 | 
			
		||||
@ -118,9 +119,6 @@
 | 
			
		||||
		CE0A0C031175A1DE00DCA3C6 /* PyProblemDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyProblemDialog.h; path = ../base/PyProblemDialog.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE0A0C051175A24800DCA3C6 /* ProblemDialog.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ProblemDialog.xib; path = ../base/xib/ProblemDialog.xib; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE0A0C131175A28100DCA3C6 /* PyTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyTable.h; sourceTree = "<group>"; };
 | 
			
		||||
		CE0B3D6411243F83009A7A30 /* PyResultTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyResultTree.h; path = ../base/PyResultTree.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE0B3D6511243F83009A7A30 /* ResultOutline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResultOutline.h; path = ../base/ResultOutline.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE0B3D6611243F83009A7A30 /* ResultOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ResultOutline.m; path = ../base/ResultOutline.m; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE1425880AFB718500BD5167 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = /Library/Frameworks/Sparkle.framework; sourceTree = "<absolute>"; };
 | 
			
		||||
		CE381C9409914ACE003581CE /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE381C9509914ACE003581CE /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
@ -156,6 +154,8 @@
 | 
			
		||||
		CE515E1A0FC6C19300EC695D /* PyDupeGuru.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyDupeGuru.h; path = ../base/PyDupeGuru.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE515E1B0FC6C19300EC695D /* ResultWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResultWindow.h; path = ../base/ResultWindow.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE515E1C0FC6C19300EC695D /* ResultWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ResultWindow.m; path = ../base/ResultWindow.m; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE578301124DFC660004769C /* HSTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSTableView.h; path = ../../cocoalib/views/HSTableView.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE578302124DFC660004769C /* HSTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSTableView.m; path = ../../cocoalib/views/HSTableView.m; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE6032BE0FE6784C007E33FF /* DetailsPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetailsPanel.h; path = ../base/DetailsPanel.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE6032BF0FE6784C007E33FF /* DetailsPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DetailsPanel.m; path = ../base/DetailsPanel.m; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE68EE6509ABC48000971085 /* DirectoryPanel.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = DirectoryPanel.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
@ -164,6 +164,9 @@
 | 
			
		||||
		CE848A1809DD85810004CB44 /* Consts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Consts.h; sourceTree = "<group>"; };
 | 
			
		||||
		CE900AD1109B238600754048 /* Preferences.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = Preferences.xib; sourceTree = "<group>"; };
 | 
			
		||||
		CE900AD6109B2A9B00754048 /* MainMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainMenu.xib; path = ../../base/xib/MainMenu.xib; sourceTree = "<group>"; };
 | 
			
		||||
		CEB14D26124DFC2800FA7481 /* PyResultTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyResultTable.h; path = ../base/PyResultTable.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CEB14D27124DFC2800FA7481 /* ResultTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResultTable.h; path = ../base/ResultTable.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CEB14D28124DFC2800FA7481 /* ResultTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ResultTable.m; path = ../base/ResultTable.m; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CECC563A12144A9000ABF262 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = ../../cocoalib/en.lproj/registration.xib; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CED0A591111C9FD10020AD7D /* PyDetailsPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyDetailsPanel.h; path = ../base/PyDetailsPanel.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CEDF07A0112493B200EE5BC0 /* PyStatsLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyStatsLabel.h; path = ../base/PyStatsLabel.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
@ -306,6 +309,8 @@
 | 
			
		||||
		CE003CBF11242D00004B0AA7 /* views */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				CE578301124DFC660004769C /* HSTableView.h */,
 | 
			
		||||
				CE578302124DFC660004769C /* HSTableView.m */,
 | 
			
		||||
				CE003CC011242D00004B0AA7 /* HSOutlineView.h */,
 | 
			
		||||
				CE003CC111242D00004B0AA7 /* HSOutlineView.m */,
 | 
			
		||||
				CE003CC211242D00004B0AA7 /* NSIndexPathAdditions.h */,
 | 
			
		||||
@ -383,6 +388,9 @@
 | 
			
		||||
		CE515E140FC6C17900EC695D /* dgbase */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				CEB14D26124DFC2800FA7481 /* PyResultTable.h */,
 | 
			
		||||
				CEB14D27124DFC2800FA7481 /* ResultTable.h */,
 | 
			
		||||
				CEB14D28124DFC2800FA7481 /* ResultTable.m */,
 | 
			
		||||
				CE003CCD11242D2C004B0AA7 /* DirectoryOutline.h */,
 | 
			
		||||
				CE003CCE11242D2C004B0AA7 /* DirectoryOutline.m */,
 | 
			
		||||
				CE003CCF11242D2C004B0AA7 /* PyDirectoryOutline.h */,
 | 
			
		||||
@ -397,14 +405,11 @@
 | 
			
		||||
				CE0A0C021175A1DE00DCA3C6 /* ProblemDialog.m */,
 | 
			
		||||
				CE515E1B0FC6C19300EC695D /* ResultWindow.h */,
 | 
			
		||||
				CE515E1C0FC6C19300EC695D /* ResultWindow.m */,
 | 
			
		||||
				CE0B3D6511243F83009A7A30 /* ResultOutline.h */,
 | 
			
		||||
				CE0B3D6611243F83009A7A30 /* ResultOutline.m */,
 | 
			
		||||
				CEDF07A1112493B200EE5BC0 /* StatsLabel.h */,
 | 
			
		||||
				CEDF07A2112493B200EE5BC0 /* StatsLabel.m */,
 | 
			
		||||
				CE515E1A0FC6C19300EC695D /* PyDupeGuru.h */,
 | 
			
		||||
				CED0A591111C9FD10020AD7D /* PyDetailsPanel.h */,
 | 
			
		||||
				CE0A0C031175A1DE00DCA3C6 /* PyProblemDialog.h */,
 | 
			
		||||
				CE0B3D6411243F83009A7A30 /* PyResultTree.h */,
 | 
			
		||||
				CEDF07A0112493B200EE5BC0 /* PyStatsLabel.h */,
 | 
			
		||||
			);
 | 
			
		||||
			name = dgbase;
 | 
			
		||||
@ -521,10 +526,11 @@
 | 
			
		||||
				CE003CCB11242D00004B0AA7 /* NSIndexPathAdditions.m in Sources */,
 | 
			
		||||
				CE003CCC11242D00004B0AA7 /* NSTableViewAdditions.m in Sources */,
 | 
			
		||||
				CE003CD011242D2C004B0AA7 /* DirectoryOutline.m in Sources */,
 | 
			
		||||
				CE0B3D6711243F83009A7A30 /* ResultOutline.m in Sources */,
 | 
			
		||||
				CEDF07A3112493B200EE5BC0 /* StatsLabel.m in Sources */,
 | 
			
		||||
				CE0A0C001175A1C000DCA3C6 /* HSTable.m in Sources */,
 | 
			
		||||
				CE0A0C041175A1DE00DCA3C6 /* ProblemDialog.m in Sources */,
 | 
			
		||||
				CEB14D29124DFC2800FA7481 /* ResultTable.m in Sources */,
 | 
			
		||||
				CE578303124DFC660004769C /* HSTableView.m in Sources */,
 | 
			
		||||
			);
 | 
			
		||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
@ -2,13 +2,13 @@
 | 
			
		||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
 | 
			
		||||
	<data>
 | 
			
		||||
		<int key="IBDocument.SystemTarget">1050</int>
 | 
			
		||||
		<string key="IBDocument.SystemVersion">10D573</string>
 | 
			
		||||
		<string key="IBDocument.InterfaceBuilderVersion">740</string>
 | 
			
		||||
		<string key="IBDocument.SystemVersion">10F569</string>
 | 
			
		||||
		<string key="IBDocument.InterfaceBuilderVersion">788</string>
 | 
			
		||||
		<string key="IBDocument.AppKitVersion">1038.29</string>
 | 
			
		||||
		<string key="IBDocument.HIToolboxVersion">460.00</string>
 | 
			
		||||
		<string key="IBDocument.HIToolboxVersion">461.00</string>
 | 
			
		||||
		<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
 | 
			
		||||
			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
			<string key="NS.object.0">740</string>
 | 
			
		||||
			<string key="NS.object.0">788</string>
 | 
			
		||||
		</object>
 | 
			
		||||
		<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
 | 
			
		||||
			<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
@ -41,7 +41,7 @@
 | 
			
		||||
			<object class="NSUserDefaultsController" id="579641073">
 | 
			
		||||
				<object class="NSMutableArray" key="NSDeclaredKeys">
 | 
			
		||||
					<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
					<string>CustomCommand</string>
 | 
			
		||||
					<string>ignoreHardlinkMatches</string>
 | 
			
		||||
				</object>
 | 
			
		||||
				<bool key="NSSharedInstance">YES</bool>
 | 
			
		||||
			</object>
 | 
			
		||||
@ -698,7 +698,7 @@
 | 
			
		||||
											<object class="NSTextField" id="519483808">
 | 
			
		||||
												<reference key="NSNextResponder" ref="76055040"/>
 | 
			
		||||
												<int key="NSvFlags">292</int>
 | 
			
		||||
												<string key="NSFrame">{{14, 192}, {85, 13}}</string>
 | 
			
		||||
												<string key="NSFrame">{{14, 172}, {85, 13}}</string>
 | 
			
		||||
												<reference key="NSSuperview" ref="76055040"/>
 | 
			
		||||
												<bool key="NSEnabled">YES</bool>
 | 
			
		||||
												<object class="NSTextFieldCell" key="NSCell" id="142188233">
 | 
			
		||||
@ -714,7 +714,7 @@
 | 
			
		||||
											<object class="NSTextField" id="839713145">
 | 
			
		||||
												<reference key="NSNextResponder" ref="76055040"/>
 | 
			
		||||
												<int key="NSvFlags">292</int>
 | 
			
		||||
												<string key="NSFrame">{{14, 164}, {324, 17}}</string>
 | 
			
		||||
												<string key="NSFrame">{{14, 144}, {324, 17}}</string>
 | 
			
		||||
												<reference key="NSSuperview" ref="76055040"/>
 | 
			
		||||
												<bool key="NSEnabled">YES</bool>
 | 
			
		||||
												<object class="NSTextFieldCell" key="NSCell" id="380716547">
 | 
			
		||||
@ -730,7 +730,7 @@
 | 
			
		||||
											<object class="NSPopUpButton" id="1046542754">
 | 
			
		||||
												<reference key="NSNextResponder" ref="76055040"/>
 | 
			
		||||
												<int key="NSvFlags">292</int>
 | 
			
		||||
												<string key="NSFrame">{{104, 185}, {234, 26}}</string>
 | 
			
		||||
												<string key="NSFrame">{{104, 165}, {234, 26}}</string>
 | 
			
		||||
												<reference key="NSSuperview" ref="76055040"/>
 | 
			
		||||
												<bool key="NSEnabled">YES</bool>
 | 
			
		||||
												<object class="NSPopUpButtonCell" key="NSCell" id="923770094">
 | 
			
		||||
@ -800,7 +800,7 @@
 | 
			
		||||
											<object class="NSTextField" id="330569030">
 | 
			
		||||
												<reference key="NSNextResponder" ref="76055040"/>
 | 
			
		||||
												<int key="NSvFlags">266</int>
 | 
			
		||||
												<string key="NSFrame">{{17, 142}, {326, 22}}</string>
 | 
			
		||||
												<string key="NSFrame">{{17, 122}, {326, 22}}</string>
 | 
			
		||||
												<reference key="NSSuperview" ref="76055040"/>
 | 
			
		||||
												<bool key="NSEnabled">YES</bool>
 | 
			
		||||
												<object class="NSTextFieldCell" key="NSCell" id="573680954">
 | 
			
		||||
@ -827,6 +827,27 @@
 | 
			
		||||
													</object>
 | 
			
		||||
												</object>
 | 
			
		||||
											</object>
 | 
			
		||||
											<object class="NSButton" id="1065764374">
 | 
			
		||||
												<reference key="NSNextResponder" ref="76055040"/>
 | 
			
		||||
												<int key="NSvFlags">256</int>
 | 
			
		||||
												<string key="NSFrame">{{15, 195}, {265, 18}}</string>
 | 
			
		||||
												<reference key="NSSuperview" ref="76055040"/>
 | 
			
		||||
												<bool key="NSEnabled">YES</bool>
 | 
			
		||||
												<object class="NSButtonCell" key="NSCell" id="621426332">
 | 
			
		||||
													<int key="NSCellFlags">67239424</int>
 | 
			
		||||
													<int key="NSCellFlags2">0</int>
 | 
			
		||||
													<string key="NSContents">Ignore duplicates hardlinking to the same file</string>
 | 
			
		||||
													<reference key="NSSupport" ref="26"/>
 | 
			
		||||
													<reference key="NSControlView" ref="1065764374"/>
 | 
			
		||||
													<int key="NSButtonFlags">1211912703</int>
 | 
			
		||||
													<int key="NSButtonFlags2">2</int>
 | 
			
		||||
													<reference key="NSAlternateImage" ref="150447483"/>
 | 
			
		||||
													<string key="NSAlternateContents"/>
 | 
			
		||||
													<string key="NSKeyEquivalent"/>
 | 
			
		||||
													<int key="NSPeriodicDelay">200</int>
 | 
			
		||||
													<int key="NSPeriodicInterval">25</int>
 | 
			
		||||
												</object>
 | 
			
		||||
											</object>
 | 
			
		||||
										</object>
 | 
			
		||||
										<string key="NSFrame">{{10, 33}, {360, 234}}</string>
 | 
			
		||||
									</object>
 | 
			
		||||
@ -1461,6 +1482,22 @@
 | 
			
		||||
					</object>
 | 
			
		||||
					<int key="connectionID">124</int>
 | 
			
		||||
				</object>
 | 
			
		||||
				<object class="IBConnectionRecord">
 | 
			
		||||
					<object class="IBBindingConnection" key="connection">
 | 
			
		||||
						<string key="label">value: values.ignoreHardlinkMatches</string>
 | 
			
		||||
						<reference key="source" ref="1065764374"/>
 | 
			
		||||
						<reference key="destination" ref="579641073"/>
 | 
			
		||||
						<object class="NSNibBindingConnector" key="connector">
 | 
			
		||||
							<reference key="NSSource" ref="1065764374"/>
 | 
			
		||||
							<reference key="NSDestination" ref="579641073"/>
 | 
			
		||||
							<string key="NSLabel">value: values.ignoreHardlinkMatches</string>
 | 
			
		||||
							<string key="NSBinding">value</string>
 | 
			
		||||
							<string key="NSKeyPath">values.ignoreHardlinkMatches</string>
 | 
			
		||||
							<int key="NSNibBindingConnectorVersion">2</int>
 | 
			
		||||
						</object>
 | 
			
		||||
					</object>
 | 
			
		||||
					<int key="connectionID">128</int>
 | 
			
		||||
				</object>
 | 
			
		||||
			</object>
 | 
			
		||||
			<object class="IBMutableOrderedSet" key="objectRecords">
 | 
			
		||||
				<object class="NSArray" key="orderedObjects">
 | 
			
		||||
@ -1563,9 +1600,10 @@
 | 
			
		||||
						<object class="NSMutableArray" key="children">
 | 
			
		||||
							<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
							<reference ref="836095588"/>
 | 
			
		||||
							<reference ref="1046542754"/>
 | 
			
		||||
							<reference ref="1065764374"/>
 | 
			
		||||
							<reference ref="519483808"/>
 | 
			
		||||
							<reference ref="839713145"/>
 | 
			
		||||
							<reference ref="1046542754"/>
 | 
			
		||||
							<reference ref="330569030"/>
 | 
			
		||||
						</object>
 | 
			
		||||
						<reference key="parent" ref="963172262"/>
 | 
			
		||||
@ -2020,6 +2058,20 @@
 | 
			
		||||
						<reference key="object" ref="573680954"/>
 | 
			
		||||
						<reference key="parent" ref="330569030"/>
 | 
			
		||||
					</object>
 | 
			
		||||
					<object class="IBObjectRecord">
 | 
			
		||||
						<int key="objectID">125</int>
 | 
			
		||||
						<reference key="object" ref="1065764374"/>
 | 
			
		||||
						<object class="NSMutableArray" key="children">
 | 
			
		||||
							<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
							<reference ref="621426332"/>
 | 
			
		||||
						</object>
 | 
			
		||||
						<reference key="parent" ref="76055040"/>
 | 
			
		||||
					</object>
 | 
			
		||||
					<object class="IBObjectRecord">
 | 
			
		||||
						<int key="objectID">126</int>
 | 
			
		||||
						<reference key="object" ref="621426332"/>
 | 
			
		||||
						<reference key="parent" ref="1065764374"/>
 | 
			
		||||
					</object>
 | 
			
		||||
				</object>
 | 
			
		||||
			</object>
 | 
			
		||||
			<object class="NSMutableDictionary" key="flattenedProperties">
 | 
			
		||||
@ -2045,6 +2097,9 @@
 | 
			
		||||
					<string>121.IBPluginDependency</string>
 | 
			
		||||
					<string>122.IBPluginDependency</string>
 | 
			
		||||
					<string>123.IBPluginDependency</string>
 | 
			
		||||
					<string>125.IBPluginDependency</string>
 | 
			
		||||
					<string>125.ImportedFromIB2</string>
 | 
			
		||||
					<string>126.IBPluginDependency</string>
 | 
			
		||||
					<string>13.IBPluginDependency</string>
 | 
			
		||||
					<string>13.ImportedFromIB2</string>
 | 
			
		||||
					<string>14.IBPluginDependency</string>
 | 
			
		||||
@ -2165,6 +2220,9 @@
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<boolean value="YES"/>
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<boolean value="YES"/>
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<boolean value="YES"/>
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<boolean value="YES"/>
 | 
			
		||||
@ -2174,9 +2232,9 @@
 | 
			
		||||
					<boolean value="YES"/>
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<boolean value="YES"/>
 | 
			
		||||
					<string>{{318, 425}, {406, 326}}</string>
 | 
			
		||||
					<string>{{555, 271}, {406, 326}}</string>
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<string>{{318, 425}, {406, 326}}</string>
 | 
			
		||||
					<string>{{555, 271}, {406, 326}}</string>
 | 
			
		||||
					<boolean value="YES"/>
 | 
			
		||||
					<boolean value="YES"/>
 | 
			
		||||
					<string>{213, 107}</string>
 | 
			
		||||
@ -2275,7 +2333,7 @@
 | 
			
		||||
				</object>
 | 
			
		||||
			</object>
 | 
			
		||||
			<nil key="sourceID"/>
 | 
			
		||||
			<int key="maxID">124</int>
 | 
			
		||||
			<int key="maxID">128</int>
 | 
			
		||||
		</object>
 | 
			
		||||
		<object class="IBClassDescriber" key="IBDocument.Classes">
 | 
			
		||||
			<object class="NSMutableArray" key="referencedPartialClassDescriptions">
 | 
			
		||||
@ -2825,6 +2883,13 @@
 | 
			
		||||
						<string key="NS.key.0">showWindow:</string>
 | 
			
		||||
						<string key="NS.object.0">id</string>
 | 
			
		||||
					</object>
 | 
			
		||||
					<object class="NSMutableDictionary" key="actionInfosByName">
 | 
			
		||||
						<string key="NS.key.0">showWindow:</string>
 | 
			
		||||
						<object class="IBActionInfo" key="NS.object.0">
 | 
			
		||||
							<string key="name">showWindow:</string>
 | 
			
		||||
							<string key="candidateClassName">id</string>
 | 
			
		||||
						</object>
 | 
			
		||||
					</object>
 | 
			
		||||
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
 | 
			
		||||
						<string key="majorKey">IBFrameworkSource</string>
 | 
			
		||||
						<string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string>
 | 
			
		||||
@ -2833,6 +2898,7 @@
 | 
			
		||||
			</object>
 | 
			
		||||
		</object>
 | 
			
		||||
		<int key="IBDocument.localizationMode">0</int>
 | 
			
		||||
		<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
 | 
			
		||||
		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
 | 
			
		||||
			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
 | 
			
		||||
			<integer value="1050" key="NS.object.0"/>
 | 
			
		||||
@ -2844,5 +2910,18 @@
 | 
			
		||||
		<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
 | 
			
		||||
		<string key="IBDocument.LastKnownRelativeProjectPath">../dupeguru.xcodeproj</string>
 | 
			
		||||
		<int key="IBDocument.defaultPropertyAccessControl">3</int>
 | 
			
		||||
		<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
 | 
			
		||||
			<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
			<object class="NSArray" key="dict.sortedKeys">
 | 
			
		||||
				<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
				<string>NSMenuCheckmark</string>
 | 
			
		||||
				<string>NSMenuMixedState</string>
 | 
			
		||||
			</object>
 | 
			
		||||
			<object class="NSMutableArray" key="dict.values">
 | 
			
		||||
				<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
				<string>{9, 8}</string>
 | 
			
		||||
				<string>{7, 2}</string>
 | 
			
		||||
			</object>
 | 
			
		||||
		</object>
 | 
			
		||||
	</data>
 | 
			
		||||
</archive>
 | 
			
		||||
 | 
			
		||||
@ -25,6 +25,7 @@ http://www.hardcoded.net/licenses/hs_license
 | 
			
		||||
    [d setObject:[NSNumber numberWithBool:NO] forKey:@"matchScaled"];
 | 
			
		||||
    [d setObject:[NSNumber numberWithBool:YES] forKey:@"mixFileKind"];
 | 
			
		||||
    [d setObject:[NSNumber numberWithBool:NO] forKey:@"useRegexpFilter"];
 | 
			
		||||
    [d setObject:[NSNumber numberWithBool:NO] forKey:@"ignoreHardlinkMatches"];
 | 
			
		||||
    [d setObject:[NSNumber numberWithBool:NO] forKey:@"removeEmptyFolders"];
 | 
			
		||||
    [d setObject:[NSNumber numberWithBool:NO] forKey:@"debug"];
 | 
			
		||||
    [d setObject:[NSArray array] forKey:@"recentDirectories"];
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,7 @@ http://www.hardcoded.net/licenses/hs_license
 | 
			
		||||
    [[self window] setTitle:@"dupeGuru Picture Edition"];
 | 
			
		||||
    NSMutableIndexSet *deltaColumns = [NSMutableIndexSet indexSetWithIndex:2];
 | 
			
		||||
    [deltaColumns addIndex:5];
 | 
			
		||||
    [outline setDeltaColumns:deltaColumns];
 | 
			
		||||
    [table setDeltaColumns:deltaColumns];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Actions */
 | 
			
		||||
@ -60,7 +60,8 @@ http://www.hardcoded.net/licenses/hs_license
 | 
			
		||||
    NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
 | 
			
		||||
    PyDupeGuru *_py = (PyDupeGuru *)py;
 | 
			
		||||
    [_py setMinMatchPercentage:[ud objectForKey:@"minMatchPercentage"]];
 | 
			
		||||
    [_py setMixFileKind:[ud objectForKey:@"mixFileKind"]];
 | 
			
		||||
    [_py setMixFileKind:n2b([ud objectForKey:@"mixFileKind"])];
 | 
			
		||||
    [_py setIgnoreHardlinkMatches:n2b([ud objectForKey:@"ignoreHardlinkMatches"])];
 | 
			
		||||
    [_py setMatchScaled:[ud objectForKey:@"matchScaled"]];
 | 
			
		||||
    int r = n2i([py doScan]);
 | 
			
		||||
    if (r != 0)
 | 
			
		||||
 | 
			
		||||
@ -41,7 +41,6 @@
 | 
			
		||||
		CE80DB8C0FC1951C0086DCA6 /* ResultWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = CE80DB890FC1951C0086DCA6 /* ResultWindow.m */; };
 | 
			
		||||
		CE848A1909DD85810004CB44 /* Consts.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE848A1809DD85810004CB44 /* Consts.h */; };
 | 
			
		||||
		CE895D7B12144A7800E74705 /* registration.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE895D7912144A7800E74705 /* registration.xib */; };
 | 
			
		||||
		CE95865E112C516400F95FD2 /* ResultOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = CE95865B112C516400F95FD2 /* ResultOutline.m */; };
 | 
			
		||||
		CE95865F112C516400F95FD2 /* StatsLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE95865D112C516400F95FD2 /* StatsLabel.m */; };
 | 
			
		||||
		CE9EA7561122C96C008CD2BC /* HSGUIController.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9EA7441122C96C008CD2BC /* HSGUIController.m */; };
 | 
			
		||||
		CE9EA7571122C96C008CD2BC /* HSOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9EA7461122C96C008CD2BC /* HSOutline.m */; };
 | 
			
		||||
@ -55,6 +54,8 @@
 | 
			
		||||
		CECA899C09DB132E00A3D774 /* DetailsPanel.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CECA899A09DB132E00A3D774 /* DetailsPanel.h */; };
 | 
			
		||||
		CECA899D09DB132E00A3D774 /* DetailsPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = CECA899B09DB132E00A3D774 /* DetailsPanel.m */; };
 | 
			
		||||
		CEEB135209C837A2004D2330 /* dupeguru.icns in Resources */ = {isa = PBXBuildFile; fileRef = CEEB135109C837A2004D2330 /* dupeguru.icns */; };
 | 
			
		||||
		CEF12A7E124DFD400087B51D /* HSTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF12A7D124DFD400087B51D /* HSTableView.m */; };
 | 
			
		||||
		CEF12A84124DFD620087B51D /* ResultTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF12A83124DFD620087B51D /* ResultTable.m */; };
 | 
			
		||||
		CEFC294609C89E3D00D9F998 /* folder32.png in Resources */ = {isa = PBXBuildFile; fileRef = CEFC294509C89E3D00D9F998 /* folder32.png */; };
 | 
			
		||||
		CEFC295509C89FF200D9F998 /* details32.png in Resources */ = {isa = PBXBuildFile; fileRef = CEFC295309C89FF200D9F998 /* details32.png */; };
 | 
			
		||||
		CEFC295609C89FF200D9F998 /* preferences32.png in Resources */ = {isa = PBXBuildFile; fileRef = CEFC295409C89FF200D9F998 /* preferences32.png */; };
 | 
			
		||||
@ -139,10 +140,7 @@
 | 
			
		||||
		CE80DB890FC1951C0086DCA6 /* ResultWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ResultWindow.m; path = ../base/ResultWindow.m; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE848A1809DD85810004CB44 /* Consts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Consts.h; sourceTree = "<group>"; };
 | 
			
		||||
		CE895D7A12144A7800E74705 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = ../../cocoalib/en.lproj/registration.xib; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE958658112C516400F95FD2 /* PyResultTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyResultTree.h; path = ../base/PyResultTree.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE958659112C516400F95FD2 /* PyStatsLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyStatsLabel.h; path = ../base/PyStatsLabel.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE95865A112C516400F95FD2 /* ResultOutline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResultOutline.h; path = ../base/ResultOutline.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE95865B112C516400F95FD2 /* ResultOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ResultOutline.m; path = ../base/ResultOutline.m; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE95865C112C516400F95FD2 /* StatsLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StatsLabel.h; path = ../base/StatsLabel.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE95865D112C516400F95FD2 /* StatsLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = StatsLabel.m; path = ../base/StatsLabel.m; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CE9EA7431122C96C008CD2BC /* HSGUIController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSGUIController.h; sourceTree = "<group>"; };
 | 
			
		||||
@ -170,6 +168,11 @@
 | 
			
		||||
		CECA899A09DB132E00A3D774 /* DetailsPanel.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = DetailsPanel.h; sourceTree = "<group>"; };
 | 
			
		||||
		CECA899B09DB132E00A3D774 /* DetailsPanel.m */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.objc; path = DetailsPanel.m; sourceTree = "<group>"; };
 | 
			
		||||
		CEEB135109C837A2004D2330 /* dupeguru.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = dupeguru.icns; sourceTree = "<group>"; };
 | 
			
		||||
		CEF12A7C124DFD400087B51D /* HSTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSTableView.h; path = ../../cocoalib/views/HSTableView.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CEF12A7D124DFD400087B51D /* HSTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSTableView.m; path = ../../cocoalib/views/HSTableView.m; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CEF12A81124DFD620087B51D /* PyResultTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyResultTable.h; path = ../base/PyResultTable.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CEF12A82124DFD620087B51D /* ResultTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResultTable.h; path = ../base/ResultTable.h; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CEF12A83124DFD620087B51D /* ResultTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ResultTable.m; path = ../base/ResultTable.m; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CEFC294509C89E3D00D9F998 /* folder32.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = folder32.png; path = ../../images/folder32.png; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CEFC295309C89FF200D9F998 /* details32.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = details32.png; path = ../../images/details32.png; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
		CEFC295409C89FF200D9F998 /* preferences32.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = preferences32.png; path = ../../images/preferences32.png; sourceTree = SOURCE_ROOT; };
 | 
			
		||||
@ -339,6 +342,9 @@
 | 
			
		||||
		CE80DB810FC194BD0086DCA6 /* dgbase */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				CEF12A81124DFD620087B51D /* PyResultTable.h */,
 | 
			
		||||
				CEF12A82124DFD620087B51D /* ResultTable.h */,
 | 
			
		||||
				CEF12A83124DFD620087B51D /* ResultTable.m */,
 | 
			
		||||
				CE80DB820FC1951C0086DCA6 /* AppDelegate.h */,
 | 
			
		||||
				CE80DB830FC1951C0086DCA6 /* AppDelegate.m */,
 | 
			
		||||
				CE80DB840FC1951C0086DCA6 /* Consts.h */,
 | 
			
		||||
@ -352,9 +358,6 @@
 | 
			
		||||
				CE0C2ABB1177014200BC749F /* ProblemDialog.m */,
 | 
			
		||||
				CE80DB880FC1951C0086DCA6 /* ResultWindow.h */,
 | 
			
		||||
				CE80DB890FC1951C0086DCA6 /* ResultWindow.m */,
 | 
			
		||||
				CE958658112C516400F95FD2 /* PyResultTree.h */,
 | 
			
		||||
				CE95865A112C516400F95FD2 /* ResultOutline.h */,
 | 
			
		||||
				CE95865B112C516400F95FD2 /* ResultOutline.m */,
 | 
			
		||||
				CE95865C112C516400F95FD2 /* StatsLabel.h */,
 | 
			
		||||
				CE95865D112C516400F95FD2 /* StatsLabel.m */,
 | 
			
		||||
				CE80DB870FC1951C0086DCA6 /* PyDupeGuru.h */,
 | 
			
		||||
@ -396,6 +399,8 @@
 | 
			
		||||
		CE9EA74F1122C96C008CD2BC /* views */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				CEF12A7C124DFD400087B51D /* HSTableView.h */,
 | 
			
		||||
				CEF12A7D124DFD400087B51D /* HSTableView.m */,
 | 
			
		||||
				CE9EA7501122C96C008CD2BC /* HSOutlineView.h */,
 | 
			
		||||
				CE9EA7511122C96C008CD2BC /* HSOutlineView.m */,
 | 
			
		||||
				CE9EA7521122C96C008CD2BC /* NSIndexPathAdditions.h */,
 | 
			
		||||
@ -532,10 +537,11 @@
 | 
			
		||||
				CE9EA75B1122C96C008CD2BC /* NSIndexPathAdditions.m in Sources */,
 | 
			
		||||
				CE9EA75C1122C96C008CD2BC /* NSTableViewAdditions.m in Sources */,
 | 
			
		||||
				CE9EA7721122CA0B008CD2BC /* DirectoryOutline.m in Sources */,
 | 
			
		||||
				CE95865E112C516400F95FD2 /* ResultOutline.m in Sources */,
 | 
			
		||||
				CE95865F112C516400F95FD2 /* StatsLabel.m in Sources */,
 | 
			
		||||
				CE0C2AB61177011000BC749F /* HSTable.m in Sources */,
 | 
			
		||||
				CE0C2ABD1177014200BC749F /* ProblemDialog.m in Sources */,
 | 
			
		||||
				CEF12A7E124DFD400087B51D /* HSTableView.m in Sources */,
 | 
			
		||||
				CEF12A84124DFD620087B51D /* ResultTable.m in Sources */,
 | 
			
		||||
			);
 | 
			
		||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
@ -2,13 +2,13 @@
 | 
			
		||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
 | 
			
		||||
	<data>
 | 
			
		||||
		<int key="IBDocument.SystemTarget">1050</int>
 | 
			
		||||
		<string key="IBDocument.SystemVersion">10D573</string>
 | 
			
		||||
		<string key="IBDocument.InterfaceBuilderVersion">740</string>
 | 
			
		||||
		<string key="IBDocument.SystemVersion">10F569</string>
 | 
			
		||||
		<string key="IBDocument.InterfaceBuilderVersion">788</string>
 | 
			
		||||
		<string key="IBDocument.AppKitVersion">1038.29</string>
 | 
			
		||||
		<string key="IBDocument.HIToolboxVersion">460.00</string>
 | 
			
		||||
		<string key="IBDocument.HIToolboxVersion">461.00</string>
 | 
			
		||||
		<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
 | 
			
		||||
			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
			<string key="NS.object.0">740</string>
 | 
			
		||||
			<string key="NS.object.0">788</string>
 | 
			
		||||
		</object>
 | 
			
		||||
		<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
 | 
			
		||||
			<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
@ -41,7 +41,7 @@
 | 
			
		||||
			<object class="NSUserDefaultsController" id="455472712">
 | 
			
		||||
				<object class="NSMutableArray" key="NSDeclaredKeys">
 | 
			
		||||
					<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
					<string>CustomCommand</string>
 | 
			
		||||
					<string>ignoreHardlinkMatches</string>
 | 
			
		||||
				</object>
 | 
			
		||||
				<bool key="NSSharedInstance">YES</bool>
 | 
			
		||||
			</object>
 | 
			
		||||
@ -406,10 +406,31 @@
 | 
			
		||||
													<int key="NSPeriodicInterval">25</int>
 | 
			
		||||
												</object>
 | 
			
		||||
											</object>
 | 
			
		||||
											<object class="NSButton" id="519470955">
 | 
			
		||||
												<reference key="NSNextResponder" ref="581039403"/>
 | 
			
		||||
												<int key="NSvFlags">256</int>
 | 
			
		||||
												<string key="NSFrame">{{15, 100}, {265, 18}}</string>
 | 
			
		||||
												<reference key="NSSuperview" ref="581039403"/>
 | 
			
		||||
												<bool key="NSEnabled">YES</bool>
 | 
			
		||||
												<object class="NSButtonCell" key="NSCell" id="595497720">
 | 
			
		||||
													<int key="NSCellFlags">67239424</int>
 | 
			
		||||
													<int key="NSCellFlags2">0</int>
 | 
			
		||||
													<string key="NSContents">Ignore duplicates hardlinking to the same file</string>
 | 
			
		||||
													<reference key="NSSupport" ref="26"/>
 | 
			
		||||
													<reference key="NSControlView" ref="519470955"/>
 | 
			
		||||
													<int key="NSButtonFlags">1211912703</int>
 | 
			
		||||
													<int key="NSButtonFlags2">2</int>
 | 
			
		||||
													<reference key="NSAlternateImage" ref="990345653"/>
 | 
			
		||||
													<string key="NSAlternateContents"/>
 | 
			
		||||
													<string key="NSKeyEquivalent"/>
 | 
			
		||||
													<int key="NSPeriodicDelay">200</int>
 | 
			
		||||
													<int key="NSPeriodicInterval">25</int>
 | 
			
		||||
												</object>
 | 
			
		||||
											</object>
 | 
			
		||||
											<object class="NSTextField" id="748076392">
 | 
			
		||||
												<reference key="NSNextResponder" ref="581039403"/>
 | 
			
		||||
												<int key="NSvFlags">292</int>
 | 
			
		||||
												<string key="NSFrame">{{14, 97}, {85, 13}}</string>
 | 
			
		||||
												<string key="NSFrame">{{14, 77}, {85, 13}}</string>
 | 
			
		||||
												<reference key="NSSuperview" ref="581039403"/>
 | 
			
		||||
												<bool key="NSEnabled">YES</bool>
 | 
			
		||||
												<object class="NSTextFieldCell" key="NSCell" id="936873031">
 | 
			
		||||
@ -425,7 +446,7 @@
 | 
			
		||||
											<object class="NSTextField" id="526155835">
 | 
			
		||||
												<reference key="NSNextResponder" ref="581039403"/>
 | 
			
		||||
												<int key="NSvFlags">292</int>
 | 
			
		||||
												<string key="NSFrame">{{14, 69}, {306, 17}}</string>
 | 
			
		||||
												<string key="NSFrame">{{14, 49}, {306, 17}}</string>
 | 
			
		||||
												<reference key="NSSuperview" ref="581039403"/>
 | 
			
		||||
												<bool key="NSEnabled">YES</bool>
 | 
			
		||||
												<object class="NSTextFieldCell" key="NSCell" id="765798142">
 | 
			
		||||
@ -441,7 +462,7 @@
 | 
			
		||||
											<object class="NSPopUpButton" id="724953200">
 | 
			
		||||
												<reference key="NSNextResponder" ref="581039403"/>
 | 
			
		||||
												<int key="NSvFlags">292</int>
 | 
			
		||||
												<string key="NSFrame">{{104, 90}, {216, 26}}</string>
 | 
			
		||||
												<string key="NSFrame">{{104, 70}, {216, 26}}</string>
 | 
			
		||||
												<reference key="NSSuperview" ref="581039403"/>
 | 
			
		||||
												<bool key="NSEnabled">YES</bool>
 | 
			
		||||
												<object class="NSPopUpButtonCell" key="NSCell" id="601288025">
 | 
			
		||||
@ -517,7 +538,7 @@
 | 
			
		||||
											<object class="NSTextField" id="590530357">
 | 
			
		||||
												<reference key="NSNextResponder" ref="581039403"/>
 | 
			
		||||
												<int key="NSvFlags">266</int>
 | 
			
		||||
												<string key="NSFrame">{{17, 47}, {312, 22}}</string>
 | 
			
		||||
												<string key="NSFrame">{{17, 27}, {312, 22}}</string>
 | 
			
		||||
												<reference key="NSSuperview" ref="581039403"/>
 | 
			
		||||
												<bool key="NSEnabled">YES</bool>
 | 
			
		||||
												<object class="NSTextFieldCell" key="NSCell" id="922246764">
 | 
			
		||||
@ -790,6 +811,30 @@
 | 
			
		||||
					</object>
 | 
			
		||||
					<int key="connectionID">68</int>
 | 
			
		||||
				</object>
 | 
			
		||||
				<object class="IBConnectionRecord">
 | 
			
		||||
					<object class="IBOutletConnection" key="connection">
 | 
			
		||||
						<string key="label">nextKeyView</string>
 | 
			
		||||
						<reference key="source" ref="519470955"/>
 | 
			
		||||
						<reference key="destination" ref="279087998"/>
 | 
			
		||||
					</object>
 | 
			
		||||
					<int key="connectionID">72</int>
 | 
			
		||||
				</object>
 | 
			
		||||
				<object class="IBConnectionRecord">
 | 
			
		||||
					<object class="IBBindingConnection" key="connection">
 | 
			
		||||
						<string key="label">value: values.ignoreHardlinkMatches</string>
 | 
			
		||||
						<reference key="source" ref="519470955"/>
 | 
			
		||||
						<reference key="destination" ref="455472712"/>
 | 
			
		||||
						<object class="NSNibBindingConnector" key="connector">
 | 
			
		||||
							<reference key="NSSource" ref="519470955"/>
 | 
			
		||||
							<reference key="NSDestination" ref="455472712"/>
 | 
			
		||||
							<string key="NSLabel">value: values.ignoreHardlinkMatches</string>
 | 
			
		||||
							<string key="NSBinding">value</string>
 | 
			
		||||
							<string key="NSKeyPath">values.ignoreHardlinkMatches</string>
 | 
			
		||||
							<int key="NSNibBindingConnectorVersion">2</int>
 | 
			
		||||
						</object>
 | 
			
		||||
					</object>
 | 
			
		||||
					<int key="connectionID">73</int>
 | 
			
		||||
				</object>
 | 
			
		||||
			</object>
 | 
			
		||||
			<object class="IBMutableOrderedSet" key="objectRecords">
 | 
			
		||||
				<object class="NSArray" key="orderedObjects">
 | 
			
		||||
@ -892,9 +937,10 @@
 | 
			
		||||
						<object class="NSMutableArray" key="children">
 | 
			
		||||
							<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
							<reference ref="1018598123"/>
 | 
			
		||||
							<reference ref="724953200"/>
 | 
			
		||||
							<reference ref="519470955"/>
 | 
			
		||||
							<reference ref="748076392"/>
 | 
			
		||||
							<reference ref="526155835"/>
 | 
			
		||||
							<reference ref="724953200"/>
 | 
			
		||||
							<reference ref="590530357"/>
 | 
			
		||||
						</object>
 | 
			
		||||
						<reference key="parent" ref="1045400351"/>
 | 
			
		||||
@ -1151,6 +1197,20 @@
 | 
			
		||||
						<reference key="object" ref="922246764"/>
 | 
			
		||||
						<reference key="parent" ref="590530357"/>
 | 
			
		||||
					</object>
 | 
			
		||||
					<object class="IBObjectRecord">
 | 
			
		||||
						<int key="objectID">69</int>
 | 
			
		||||
						<reference key="object" ref="519470955"/>
 | 
			
		||||
						<object class="NSMutableArray" key="children">
 | 
			
		||||
							<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
							<reference ref="595497720"/>
 | 
			
		||||
						</object>
 | 
			
		||||
						<reference key="parent" ref="581039403"/>
 | 
			
		||||
					</object>
 | 
			
		||||
					<object class="IBObjectRecord">
 | 
			
		||||
						<int key="objectID">70</int>
 | 
			
		||||
						<reference key="object" ref="595497720"/>
 | 
			
		||||
						<reference key="parent" ref="519470955"/>
 | 
			
		||||
					</object>
 | 
			
		||||
				</object>
 | 
			
		||||
			</object>
 | 
			
		||||
			<object class="NSMutableDictionary" key="flattenedProperties">
 | 
			
		||||
@ -1221,8 +1281,11 @@
 | 
			
		||||
					<string>65.IBPluginDependency</string>
 | 
			
		||||
					<string>66.IBPluginDependency</string>
 | 
			
		||||
					<string>67.IBPluginDependency</string>
 | 
			
		||||
					<string>69.IBPluginDependency</string>
 | 
			
		||||
					<string>69.ImportedFromIB2</string>
 | 
			
		||||
					<string>7.IBPluginDependency</string>
 | 
			
		||||
					<string>7.ImportedFromIB2</string>
 | 
			
		||||
					<string>70.IBPluginDependency</string>
 | 
			
		||||
					<string>8.IBPluginDependency</string>
 | 
			
		||||
					<string>8.ImportedFromIB2</string>
 | 
			
		||||
					<string>9.IBPluginDependency</string>
 | 
			
		||||
@ -1299,6 +1362,9 @@
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<boolean value="YES"/>
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<boolean value="YES"/>
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<boolean value="YES"/>
 | 
			
		||||
				</object>
 | 
			
		||||
			</object>
 | 
			
		||||
@ -1318,7 +1384,7 @@
 | 
			
		||||
				</object>
 | 
			
		||||
			</object>
 | 
			
		||||
			<nil key="sourceID"/>
 | 
			
		||||
			<int key="maxID">68</int>
 | 
			
		||||
			<int key="maxID">73</int>
 | 
			
		||||
		</object>
 | 
			
		||||
		<object class="IBClassDescriber" key="IBDocument.Classes">
 | 
			
		||||
			<object class="NSMutableArray" key="referencedPartialClassDescriptions">
 | 
			
		||||
@ -1330,6 +1396,13 @@
 | 
			
		||||
						<string key="minorKey">../views/HSOutlineView.h</string>
 | 
			
		||||
					</object>
 | 
			
		||||
				</object>
 | 
			
		||||
				<object class="IBPartialClassDescription">
 | 
			
		||||
					<string key="className">NSObject</string>
 | 
			
		||||
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
 | 
			
		||||
						<string key="majorKey">IBProjectSource</string>
 | 
			
		||||
						<string key="minorKey">../views/HSTableView.h</string>
 | 
			
		||||
					</object>
 | 
			
		||||
				</object>
 | 
			
		||||
				<object class="IBPartialClassDescription">
 | 
			
		||||
					<string key="className">NSObject</string>
 | 
			
		||||
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
 | 
			
		||||
@ -1868,6 +1941,13 @@
 | 
			
		||||
						<string key="NS.key.0">showWindow:</string>
 | 
			
		||||
						<string key="NS.object.0">id</string>
 | 
			
		||||
					</object>
 | 
			
		||||
					<object class="NSMutableDictionary" key="actionInfosByName">
 | 
			
		||||
						<string key="NS.key.0">showWindow:</string>
 | 
			
		||||
						<object class="IBActionInfo" key="NS.object.0">
 | 
			
		||||
							<string key="name">showWindow:</string>
 | 
			
		||||
							<string key="candidateClassName">id</string>
 | 
			
		||||
						</object>
 | 
			
		||||
					</object>
 | 
			
		||||
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
 | 
			
		||||
						<string key="majorKey">IBFrameworkSource</string>
 | 
			
		||||
						<string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string>
 | 
			
		||||
@ -1876,6 +1956,7 @@
 | 
			
		||||
			</object>
 | 
			
		||||
		</object>
 | 
			
		||||
		<int key="IBDocument.localizationMode">0</int>
 | 
			
		||||
		<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
 | 
			
		||||
		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
 | 
			
		||||
			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
 | 
			
		||||
			<integer value="1050" key="NS.object.0"/>
 | 
			
		||||
@ -1887,5 +1968,18 @@
 | 
			
		||||
		<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
 | 
			
		||||
		<string key="IBDocument.LastKnownRelativeProjectPath">../dupeguru.xcodeproj</string>
 | 
			
		||||
		<int key="IBDocument.defaultPropertyAccessControl">3</int>
 | 
			
		||||
		<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
 | 
			
		||||
			<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
			<object class="NSArray" key="dict.sortedKeys">
 | 
			
		||||
				<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
				<string>NSMenuCheckmark</string>
 | 
			
		||||
				<string>NSMenuMixedState</string>
 | 
			
		||||
			</object>
 | 
			
		||||
			<object class="NSMutableArray" key="dict.values">
 | 
			
		||||
				<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
				<string>{9, 8}</string>
 | 
			
		||||
				<string>{7, 2}</string>
 | 
			
		||||
			</object>
 | 
			
		||||
		</object>
 | 
			
		||||
	</data>
 | 
			
		||||
</archive>
 | 
			
		||||
 | 
			
		||||
@ -28,6 +28,7 @@ http://www.hardcoded.net/licenses/hs_license
 | 
			
		||||
    [d setObject:b2n(NO) forKey:@"matchSimilarWords"];
 | 
			
		||||
    [d setObject:b2n(YES) forKey:@"mixFileKind"];
 | 
			
		||||
    [d setObject:b2n(NO) forKey:@"useRegexpFilter"];
 | 
			
		||||
    [d setObject:b2n(NO) forKey:@"ignoreHardlinkMatches"];
 | 
			
		||||
    [d setObject:b2n(NO) forKey:@"removeEmptyFolders"];
 | 
			
		||||
    [d setObject:b2n(YES) forKey:@"ignoreSmallFiles"];
 | 
			
		||||
    [d setObject:b2n(NO) forKey:@"debug"];
 | 
			
		||||
 | 
			
		||||
@ -51,7 +51,8 @@ http://www.hardcoded.net/licenses/hs_license
 | 
			
		||||
    [_py setScanType:[ud objectForKey:@"scanType"]];
 | 
			
		||||
    [_py setMinMatchPercentage:[ud objectForKey:@"minMatchPercentage"]];
 | 
			
		||||
    [_py setWordWeighting:[ud objectForKey:@"wordWeighting"]];
 | 
			
		||||
    [_py setMixFileKind:[ud objectForKey:@"mixFileKind"]];
 | 
			
		||||
    [_py setMixFileKind:n2b([ud objectForKey:@"mixFileKind"])];
 | 
			
		||||
    [_py setIgnoreHardlinkMatches:n2b([ud objectForKey:@"ignoreHardlinkMatches"])];
 | 
			
		||||
    [_py setMatchSimilarWords:[ud objectForKey:@"matchSimilarWords"]];
 | 
			
		||||
    int smallFileThreshold = [ud integerForKey:@"smallFileThreshold"]; // In KB
 | 
			
		||||
    int sizeThreshold = [ud boolForKey:@"ignoreSmallFiles"] ? smallFileThreshold * 1024 : 0; // The py side wants bytes
 | 
			
		||||
 | 
			
		||||
@ -2,13 +2,13 @@
 | 
			
		||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
 | 
			
		||||
	<data>
 | 
			
		||||
		<int key="IBDocument.SystemTarget">1050</int>
 | 
			
		||||
		<string key="IBDocument.SystemVersion">10D573</string>
 | 
			
		||||
		<string key="IBDocument.InterfaceBuilderVersion">740</string>
 | 
			
		||||
		<string key="IBDocument.SystemVersion">10F569</string>
 | 
			
		||||
		<string key="IBDocument.InterfaceBuilderVersion">788</string>
 | 
			
		||||
		<string key="IBDocument.AppKitVersion">1038.29</string>
 | 
			
		||||
		<string key="IBDocument.HIToolboxVersion">460.00</string>
 | 
			
		||||
		<string key="IBDocument.HIToolboxVersion">461.00</string>
 | 
			
		||||
		<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
 | 
			
		||||
			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
			<string key="NS.object.0">740</string>
 | 
			
		||||
			<string key="NS.object.0">788</string>
 | 
			
		||||
		</object>
 | 
			
		||||
		<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
 | 
			
		||||
			<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
@ -623,10 +623,31 @@
 | 
			
		||||
													<int key="NSPeriodicInterval">25</int>
 | 
			
		||||
												</object>
 | 
			
		||||
											</object>
 | 
			
		||||
											<object class="NSButton" id="647216699">
 | 
			
		||||
												<reference key="NSNextResponder" ref="448252432"/>
 | 
			
		||||
												<int key="NSvFlags">256</int>
 | 
			
		||||
												<string key="NSFrame">{{15, 171}, {265, 18}}</string>
 | 
			
		||||
												<reference key="NSSuperview" ref="448252432"/>
 | 
			
		||||
												<bool key="NSEnabled">YES</bool>
 | 
			
		||||
												<object class="NSButtonCell" key="NSCell" id="118836063">
 | 
			
		||||
													<int key="NSCellFlags">67239424</int>
 | 
			
		||||
													<int key="NSCellFlags2">0</int>
 | 
			
		||||
													<string key="NSContents">Ignore duplicates hardlinking to the same file</string>
 | 
			
		||||
													<reference key="NSSupport" ref="26"/>
 | 
			
		||||
													<reference key="NSControlView" ref="647216699"/>
 | 
			
		||||
													<int key="NSButtonFlags">1211912703</int>
 | 
			
		||||
													<int key="NSButtonFlags2">2</int>
 | 
			
		||||
													<reference key="NSAlternateImage" ref="589920880"/>
 | 
			
		||||
													<string key="NSAlternateContents"/>
 | 
			
		||||
													<string key="NSKeyEquivalent"/>
 | 
			
		||||
													<int key="NSPeriodicDelay">200</int>
 | 
			
		||||
													<int key="NSPeriodicInterval">25</int>
 | 
			
		||||
												</object>
 | 
			
		||||
											</object>
 | 
			
		||||
											<object class="NSTextField" id="962804407">
 | 
			
		||||
												<reference key="NSNextResponder" ref="448252432"/>
 | 
			
		||||
												<int key="NSvFlags">292</int>
 | 
			
		||||
												<string key="NSFrame">{{14, 168}, {315, 17}}</string>
 | 
			
		||||
												<string key="NSFrame">{{14, 148}, {315, 17}}</string>
 | 
			
		||||
												<reference key="NSSuperview" ref="448252432"/>
 | 
			
		||||
												<bool key="NSEnabled">YES</bool>
 | 
			
		||||
												<object class="NSTextFieldCell" key="NSCell" id="111092399">
 | 
			
		||||
@ -642,7 +663,7 @@
 | 
			
		||||
											<object class="NSTextField" id="873032174">
 | 
			
		||||
												<reference key="NSNextResponder" ref="448252432"/>
 | 
			
		||||
												<int key="NSvFlags">266</int>
 | 
			
		||||
												<string key="NSFrame">{{17, 138}, {309, 22}}</string>
 | 
			
		||||
												<string key="NSFrame">{{17, 118}, {309, 22}}</string>
 | 
			
		||||
												<reference key="NSSuperview" ref="448252432"/>
 | 
			
		||||
												<bool key="NSEnabled">YES</bool>
 | 
			
		||||
												<object class="NSTextFieldCell" key="NSCell" id="249250691">
 | 
			
		||||
@ -659,7 +680,7 @@
 | 
			
		||||
											<object class="NSTextField" id="511043844">
 | 
			
		||||
												<reference key="NSNextResponder" ref="448252432"/>
 | 
			
		||||
												<int key="NSvFlags">292</int>
 | 
			
		||||
												<string key="NSFrame">{{14, 117}, {85, 13}}</string>
 | 
			
		||||
												<string key="NSFrame">{{14, 97}, {85, 13}}</string>
 | 
			
		||||
												<reference key="NSSuperview" ref="448252432"/>
 | 
			
		||||
												<bool key="NSEnabled">YES</bool>
 | 
			
		||||
												<object class="NSTextFieldCell" key="NSCell" id="669919489">
 | 
			
		||||
@ -675,7 +696,7 @@
 | 
			
		||||
											<object class="NSPopUpButton" id="857082145">
 | 
			
		||||
												<reference key="NSNextResponder" ref="448252432"/>
 | 
			
		||||
												<int key="NSvFlags">292</int>
 | 
			
		||||
												<string key="NSFrame">{{101, 106}, {216, 26}}</string>
 | 
			
		||||
												<string key="NSFrame">{{101, 86}, {216, 26}}</string>
 | 
			
		||||
												<reference key="NSSuperview" ref="448252432"/>
 | 
			
		||||
												<bool key="NSEnabled">YES</bool>
 | 
			
		||||
												<object class="NSPopUpButtonCell" key="NSCell" id="307074513">
 | 
			
		||||
@ -1068,6 +1089,22 @@
 | 
			
		||||
					</object>
 | 
			
		||||
					<int key="connectionID">140</int>
 | 
			
		||||
				</object>
 | 
			
		||||
				<object class="IBConnectionRecord">
 | 
			
		||||
					<object class="IBBindingConnection" key="connection">
 | 
			
		||||
						<string key="label">value: values.ignoreHardlinkMatches</string>
 | 
			
		||||
						<reference key="source" ref="647216699"/>
 | 
			
		||||
						<reference key="destination" ref="75941798"/>
 | 
			
		||||
						<object class="NSNibBindingConnector" key="connector">
 | 
			
		||||
							<reference key="NSSource" ref="647216699"/>
 | 
			
		||||
							<reference key="NSDestination" ref="75941798"/>
 | 
			
		||||
							<string key="NSLabel">value: values.ignoreHardlinkMatches</string>
 | 
			
		||||
							<string key="NSBinding">value</string>
 | 
			
		||||
							<string key="NSKeyPath">values.ignoreHardlinkMatches</string>
 | 
			
		||||
							<int key="NSNibBindingConnectorVersion">2</int>
 | 
			
		||||
						</object>
 | 
			
		||||
					</object>
 | 
			
		||||
					<int key="connectionID">144</int>
 | 
			
		||||
				</object>
 | 
			
		||||
			</object>
 | 
			
		||||
			<object class="IBMutableOrderedSet" key="objectRecords">
 | 
			
		||||
				<object class="NSArray" key="orderedObjects">
 | 
			
		||||
@ -1170,6 +1207,7 @@
 | 
			
		||||
						<object class="NSMutableArray" key="children">
 | 
			
		||||
							<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
							<reference ref="724127338"/>
 | 
			
		||||
							<reference ref="647216699"/>
 | 
			
		||||
							<reference ref="962804407"/>
 | 
			
		||||
							<reference ref="873032174"/>
 | 
			
		||||
							<reference ref="511043844"/>
 | 
			
		||||
@ -1552,6 +1590,20 @@
 | 
			
		||||
						<reference key="object" ref="97487610"/>
 | 
			
		||||
						<reference key="parent" ref="593115874"/>
 | 
			
		||||
					</object>
 | 
			
		||||
					<object class="IBObjectRecord">
 | 
			
		||||
						<int key="objectID">141</int>
 | 
			
		||||
						<reference key="object" ref="647216699"/>
 | 
			
		||||
						<object class="NSMutableArray" key="children">
 | 
			
		||||
							<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
							<reference ref="118836063"/>
 | 
			
		||||
						</object>
 | 
			
		||||
						<reference key="parent" ref="448252432"/>
 | 
			
		||||
					</object>
 | 
			
		||||
					<object class="IBObjectRecord">
 | 
			
		||||
						<int key="objectID">142</int>
 | 
			
		||||
						<reference key="object" ref="118836063"/>
 | 
			
		||||
						<reference key="parent" ref="647216699"/>
 | 
			
		||||
					</object>
 | 
			
		||||
				</object>
 | 
			
		||||
			</object>
 | 
			
		||||
			<object class="NSMutableDictionary" key="flattenedProperties">
 | 
			
		||||
@ -1573,6 +1625,9 @@
 | 
			
		||||
					<string>134.IBPluginDependency</string>
 | 
			
		||||
					<string>138.IBPluginDependency</string>
 | 
			
		||||
					<string>139.IBPluginDependency</string>
 | 
			
		||||
					<string>141.IBPluginDependency</string>
 | 
			
		||||
					<string>141.ImportedFromIB2</string>
 | 
			
		||||
					<string>142.IBPluginDependency</string>
 | 
			
		||||
					<string>51.IBPluginDependency</string>
 | 
			
		||||
					<string>51.ImportedFromIB2</string>
 | 
			
		||||
					<string>52.IBEditorWindowLastContentRect</string>
 | 
			
		||||
@ -1675,6 +1730,9 @@
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<boolean value="YES"/>
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<boolean value="YES"/>
 | 
			
		||||
					<string>{{88, 543}, {389, 302}}</string>
 | 
			
		||||
					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 | 
			
		||||
					<string>{{88, 543}, {389, 302}}</string>
 | 
			
		||||
@ -1773,7 +1831,7 @@
 | 
			
		||||
				</object>
 | 
			
		||||
			</object>
 | 
			
		||||
			<nil key="sourceID"/>
 | 
			
		||||
			<int key="maxID">140</int>
 | 
			
		||||
			<int key="maxID">144</int>
 | 
			
		||||
		</object>
 | 
			
		||||
		<object class="IBClassDescriber" key="IBDocument.Classes">
 | 
			
		||||
			<object class="NSMutableArray" key="referencedPartialClassDescriptions">
 | 
			
		||||
@ -1785,6 +1843,13 @@
 | 
			
		||||
						<string key="minorKey">../views/HSOutlineView.h</string>
 | 
			
		||||
					</object>
 | 
			
		||||
				</object>
 | 
			
		||||
				<object class="IBPartialClassDescription">
 | 
			
		||||
					<string key="className">NSObject</string>
 | 
			
		||||
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
 | 
			
		||||
						<string key="majorKey">IBProjectSource</string>
 | 
			
		||||
						<string key="minorKey">../views/HSTableView.h</string>
 | 
			
		||||
					</object>
 | 
			
		||||
				</object>
 | 
			
		||||
				<object class="IBPartialClassDescription">
 | 
			
		||||
					<string key="className">NSObject</string>
 | 
			
		||||
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
 | 
			
		||||
@ -2323,6 +2388,13 @@
 | 
			
		||||
						<string key="NS.key.0">showWindow:</string>
 | 
			
		||||
						<string key="NS.object.0">id</string>
 | 
			
		||||
					</object>
 | 
			
		||||
					<object class="NSMutableDictionary" key="actionInfosByName">
 | 
			
		||||
						<string key="NS.key.0">showWindow:</string>
 | 
			
		||||
						<object class="IBActionInfo" key="NS.object.0">
 | 
			
		||||
							<string key="name">showWindow:</string>
 | 
			
		||||
							<string key="candidateClassName">id</string>
 | 
			
		||||
						</object>
 | 
			
		||||
					</object>
 | 
			
		||||
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
 | 
			
		||||
						<string key="majorKey">IBFrameworkSource</string>
 | 
			
		||||
						<string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string>
 | 
			
		||||
@ -2331,6 +2403,7 @@
 | 
			
		||||
			</object>
 | 
			
		||||
		</object>
 | 
			
		||||
		<int key="IBDocument.localizationMode">0</int>
 | 
			
		||||
		<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
 | 
			
		||||
		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
 | 
			
		||||
			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
 | 
			
		||||
			<integer value="1050" key="NS.object.0"/>
 | 
			
		||||
@ -2342,5 +2415,18 @@
 | 
			
		||||
		<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
 | 
			
		||||
		<string key="IBDocument.LastKnownRelativeProjectPath">../dupeguru.xcodeproj</string>
 | 
			
		||||
		<int key="IBDocument.defaultPropertyAccessControl">3</int>
 | 
			
		||||
		<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
 | 
			
		||||
			<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
			<object class="NSArray" key="dict.sortedKeys">
 | 
			
		||||
				<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
				<string>NSMenuCheckmark</string>
 | 
			
		||||
				<string>NSMenuMixedState</string>
 | 
			
		||||
			</object>
 | 
			
		||||
			<object class="NSMutableArray" key="dict.values">
 | 
			
		||||
				<bool key="EncodedWithXMLCoder">YES</bool>
 | 
			
		||||
				<string>{9, 8}</string>
 | 
			
		||||
				<string>{7, 2}</string>
 | 
			
		||||
			</object>
 | 
			
		||||
		</object>
 | 
			
		||||
	</data>
 | 
			
		||||
</archive>
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										14
									
								
								core/app.py
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								core/app.py
									
									
									
									
									
								
							@ -50,6 +50,7 @@ class DupeGuru(RegistrableApplication, Broadcaster):
 | 
			
		||||
        self.options = {
 | 
			
		||||
            'escape_filter_regexp': True,
 | 
			
		||||
            'clean_empty_dirs': False,
 | 
			
		||||
            'ignore_hardlink_matches': False,
 | 
			
		||||
        }
 | 
			
		||||
        self.selected_dupes = []
 | 
			
		||||
    
 | 
			
		||||
@ -117,6 +118,17 @@ class DupeGuru(RegistrableApplication, Broadcaster):
 | 
			
		||||
    def _reveal_path(path):
 | 
			
		||||
        raise NotImplementedError()
 | 
			
		||||
    
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def _remove_hardlink_dupes(files):
 | 
			
		||||
        seen_inodes = set()
 | 
			
		||||
        result = []
 | 
			
		||||
        for file in files:
 | 
			
		||||
            inode = io.stat(file.path).st_ino
 | 
			
		||||
            if inode not in seen_inodes:
 | 
			
		||||
                seen_inodes.add(inode)
 | 
			
		||||
                result.append(file)
 | 
			
		||||
        return result
 | 
			
		||||
    
 | 
			
		||||
    def _select_dupes(self, dupes):
 | 
			
		||||
        if dupes == self.selected_dupes:
 | 
			
		||||
            return
 | 
			
		||||
@ -341,6 +353,8 @@ class DupeGuru(RegistrableApplication, Broadcaster):
 | 
			
		||||
        def do(j):
 | 
			
		||||
            j.set_progress(0, 'Collecting files to scan')
 | 
			
		||||
            files = list(self.directories.get_files())
 | 
			
		||||
            if self.options['ignore_hardlink_matches']:
 | 
			
		||||
                files = self._remove_hardlink_dupes(files)
 | 
			
		||||
            logging.info('Scanning %d files' % len(files))
 | 
			
		||||
            self.results.groups = self.scanner.GetDupeGroups(files, j)
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
@ -116,15 +116,22 @@ class PyDupeGuruBase(PyRegistrable):
 | 
			
		||||
        return bool(self.py.results.problems)
 | 
			
		||||
    
 | 
			
		||||
    #---Properties
 | 
			
		||||
    @signature('v@:c')
 | 
			
		||||
    def setMixFileKind_(self, mix_file_kind):
 | 
			
		||||
        self.py.scanner.mix_file_kind = mix_file_kind
 | 
			
		||||
    
 | 
			
		||||
    @signature('v@:c')
 | 
			
		||||
    def setEscapeFilterRegexp_(self, escape_filter_regexp):
 | 
			
		||||
        self.py.options['escape_filter_regexp'] = escape_filter_regexp
 | 
			
		||||
    
 | 
			
		||||
    @signature('v@:c')
 | 
			
		||||
    def setRemoveEmptyFolders_(self, remove_empty_folders):
 | 
			
		||||
        self.py.options['clean_empty_dirs'] = remove_empty_folders
 | 
			
		||||
    
 | 
			
		||||
    @signature('v@:c')
 | 
			
		||||
    def setIgnoreHardlinkMatches_(self, ignore_hardlink_matches):
 | 
			
		||||
        self.py.options['ignore_hardlink_matches'] = ignore_hardlink_matches
 | 
			
		||||
    
 | 
			
		||||
    #---Worker
 | 
			
		||||
    def getJobProgress(self):
 | 
			
		||||
        try:
 | 
			
		||||
 | 
			
		||||
@ -24,6 +24,7 @@ from ..app import DupeGuru as DupeGuruBase
 | 
			
		||||
from ..gui.details_panel import DetailsPanel
 | 
			
		||||
from ..gui.directory_tree import DirectoryTree
 | 
			
		||||
from ..gui.result_table import ResultTable
 | 
			
		||||
from ..scanner import ScanType
 | 
			
		||||
 | 
			
		||||
class DupeGuru(DupeGuruBase):
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
@ -122,6 +123,19 @@ class TCDupeGuru(TestCase):
 | 
			
		||||
        app.directories._dirs.append('this is just so Scan() doesnt return 3')
 | 
			
		||||
        app.start_scanning() # no exception
 | 
			
		||||
    
 | 
			
		||||
    def test_ignore_hardlink_matches(self):
 | 
			
		||||
        # If the ignore_hardlink_matches option is set, don't match files hardlinking to the same
 | 
			
		||||
        # inode.
 | 
			
		||||
        tmppath = Path(self.tmpdir())
 | 
			
		||||
        io.open(tmppath + 'myfile', 'w').write('foo')
 | 
			
		||||
        os.link(str(tmppath + 'myfile'), str(tmppath + 'hardlink'))
 | 
			
		||||
        app = DupeGuru()
 | 
			
		||||
        app.directories.add_path(tmppath)
 | 
			
		||||
        app.scanner.scan_type = ScanType.Contents
 | 
			
		||||
        app.options['ignore_hardlink_matches'] = True
 | 
			
		||||
        app.start_scanning()
 | 
			
		||||
        eq_(len(app.results.groups), 0)
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
class TCDupeGuru_clean_empty_dirs(TestCase):
 | 
			
		||||
    cls_tested_module = app
 | 
			
		||||
 | 
			
		||||
@ -106,6 +106,7 @@ class DupeGuru(DupeGuruBase, QObject):
 | 
			
		||||
        self.scanner.mix_file_kind = self.prefs.mix_file_kind
 | 
			
		||||
        self.options['escape_filter_regexp'] = self.prefs.use_regexp
 | 
			
		||||
        self.options['clean_empty_dirs'] = self.prefs.remove_empty_folders
 | 
			
		||||
        self.options['ignore_hardlink_matches'] = self.prefs.ignore_hardlink_matches
 | 
			
		||||
    
 | 
			
		||||
    #--- Virtual
 | 
			
		||||
    def _create_details_dialog(self, parent):
 | 
			
		||||
 | 
			
		||||
@ -24,6 +24,7 @@ class Preferences(PreferencesBase):
 | 
			
		||||
        get = self.get_value
 | 
			
		||||
        self.filter_hardness = get('FilterHardness', self.filter_hardness)
 | 
			
		||||
        self.mix_file_kind = get('MixFileKind', self.mix_file_kind)
 | 
			
		||||
        self.ignore_hardlink_matches = get('IgnoreHardlinkMatches', self.ignore_hardlink_matches)
 | 
			
		||||
        self.use_regexp = get('UseRegexp', self.use_regexp)
 | 
			
		||||
        self.remove_empty_folders = get('RemoveEmptyFolders', self.remove_empty_folders)
 | 
			
		||||
        self.destination_type = get('DestinationType', self.destination_type)
 | 
			
		||||
@ -52,6 +53,7 @@ class Preferences(PreferencesBase):
 | 
			
		||||
        self.filter_hardness = 95
 | 
			
		||||
        self.mix_file_kind = True
 | 
			
		||||
        self.use_regexp = False
 | 
			
		||||
        self.ignore_hardlink_matches = False
 | 
			
		||||
        self.remove_empty_folders = False
 | 
			
		||||
        self.destination_type = 1
 | 
			
		||||
        self.custom_command = ''
 | 
			
		||||
@ -77,6 +79,7 @@ class Preferences(PreferencesBase):
 | 
			
		||||
        set_ = self.set_value
 | 
			
		||||
        set_('FilterHardness', self.filter_hardness)
 | 
			
		||||
        set_('MixFileKind', self.mix_file_kind)
 | 
			
		||||
        set_('IgnoreHardlinkMatches', self.ignore_hardlink_matches)
 | 
			
		||||
        set_('UseRegexp', self.use_regexp)
 | 
			
		||||
        set_('RemoveEmptyFolders', self.remove_empty_folders)
 | 
			
		||||
        set_('DestinationType', self.destination_type)
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,7 @@
 | 
			
		||||
# which should be included with this package. The terms are also available at 
 | 
			
		||||
# http://www.hardcoded.net/licenses/hs_license
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
from PyQt4.QtCore import SIGNAL, Qt
 | 
			
		||||
from PyQt4.QtGui import QDialog, QDialogButtonBox
 | 
			
		||||
 | 
			
		||||
@ -35,6 +36,9 @@ class PreferencesDialog(QDialog, Ui_PreferencesDialog):
 | 
			
		||||
    
 | 
			
		||||
    def _setupUi(self):
 | 
			
		||||
        self.setupUi(self)
 | 
			
		||||
        if sys.platform not in {'darwin', 'linux2'}:
 | 
			
		||||
            self.verticalLayout.removeWidget(self.ignoreHardlinkMatches)
 | 
			
		||||
            self.ignoreHardlinkMatches.setHidden(True)
 | 
			
		||||
    
 | 
			
		||||
    def load(self, prefs=None):
 | 
			
		||||
        if prefs is None:
 | 
			
		||||
@ -53,6 +57,7 @@ class PreferencesDialog(QDialog, Ui_PreferencesDialog):
 | 
			
		||||
        setchecked(self.matchSimilarBox, prefs.match_similar)
 | 
			
		||||
        setchecked(self.wordWeightingBox, prefs.word_weighting)
 | 
			
		||||
        setchecked(self.mixFileKindBox, prefs.mix_file_kind)
 | 
			
		||||
        setchecked(self.ignoreHardlinkMatches, prefs.ignore_hardlink_matches)
 | 
			
		||||
        setchecked(self.useRegexpBox, prefs.use_regexp)
 | 
			
		||||
        setchecked(self.removeEmptyFoldersBox, prefs.remove_empty_folders)
 | 
			
		||||
        self.copyMoveDestinationComboBox.setCurrentIndex(prefs.destination_type)
 | 
			
		||||
@ -72,6 +77,7 @@ class PreferencesDialog(QDialog, Ui_PreferencesDialog):
 | 
			
		||||
        prefs.match_similar = ischecked(self.matchSimilarBox)
 | 
			
		||||
        prefs.word_weighting = ischecked(self.wordWeightingBox)
 | 
			
		||||
        prefs.mix_file_kind = ischecked(self.mixFileKindBox)
 | 
			
		||||
        prefs.ignore_hardlink_matches = ischecked(self.ignoreHardlinkMatches)
 | 
			
		||||
        prefs.use_regexp = ischecked(self.useRegexpBox)
 | 
			
		||||
        prefs.remove_empty_folders = ischecked(self.removeEmptyFoldersBox)
 | 
			
		||||
        prefs.destination_type = self.copyMoveDestinationComboBox.currentIndex()
 | 
			
		||||
 | 
			
		||||
@ -310,6 +310,13 @@
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item>
 | 
			
		||||
      <widget class="QCheckBox" name="ignoreHardlinkMatches">
 | 
			
		||||
       <property name="text">
 | 
			
		||||
        <string>Ignore duplicates hardlinking to the same file</string>
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item>
 | 
			
		||||
      <layout class="QHBoxLayout" name="horizontalLayout_4">
 | 
			
		||||
       <item>
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,7 @@
 | 
			
		||||
# which should be included with this package. The terms are also available at 
 | 
			
		||||
# http://www.hardcoded.net/licenses/hs_license
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
from PyQt4.QtCore import SIGNAL, Qt
 | 
			
		||||
from PyQt4.QtGui import QDialog, QDialogButtonBox
 | 
			
		||||
 | 
			
		||||
@ -23,6 +24,9 @@ class PreferencesDialog(QDialog, Ui_PreferencesDialog):
 | 
			
		||||
    
 | 
			
		||||
    def _setupUi(self):
 | 
			
		||||
        self.setupUi(self)
 | 
			
		||||
        if sys.platform not in {'darwin', 'linux2'}:
 | 
			
		||||
            self.verticalLayout.removeWidget(self.ignoreHardlinkMatches)
 | 
			
		||||
            self.ignoreHardlinkMatches.setHidden(True)
 | 
			
		||||
    
 | 
			
		||||
    def load(self, prefs=None):
 | 
			
		||||
        if prefs is None:
 | 
			
		||||
 | 
			
		||||
@ -150,6 +150,13 @@
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item>
 | 
			
		||||
      <widget class="QCheckBox" name="ignoreHardlinkMatches">
 | 
			
		||||
       <property name="text">
 | 
			
		||||
        <string>Ignore duplicates hardlinking to the same file</string>
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item>
 | 
			
		||||
      <layout class="QHBoxLayout" name="horizontalLayout_4">
 | 
			
		||||
       <item>
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,7 @@
 | 
			
		||||
# which should be included with this package. The terms are also available at 
 | 
			
		||||
# http://www.hardcoded.net/licenses/hs_license
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
from PyQt4.QtCore import SIGNAL, Qt
 | 
			
		||||
from PyQt4.QtGui import QDialog, QDialogButtonBox
 | 
			
		||||
 | 
			
		||||
@ -33,6 +34,9 @@ class PreferencesDialog(QDialog, Ui_PreferencesDialog):
 | 
			
		||||
    
 | 
			
		||||
    def _setupUi(self):
 | 
			
		||||
        self.setupUi(self)
 | 
			
		||||
        if sys.platform not in {'darwin', 'linux2'}:
 | 
			
		||||
            self.verticalLayout_4.removeWidget(self.ignoreHardlinkMatches)
 | 
			
		||||
            self.ignoreHardlinkMatches.setHidden(True)
 | 
			
		||||
    
 | 
			
		||||
    def load(self, prefs=None):
 | 
			
		||||
        if prefs is None:
 | 
			
		||||
@ -45,6 +49,7 @@ class PreferencesDialog(QDialog, Ui_PreferencesDialog):
 | 
			
		||||
        setchecked(self.matchSimilarBox, prefs.match_similar)
 | 
			
		||||
        setchecked(self.wordWeightingBox, prefs.word_weighting)
 | 
			
		||||
        setchecked(self.mixFileKindBox, prefs.mix_file_kind)
 | 
			
		||||
        setchecked(self.ignoreHardlinkMatches, prefs.ignore_hardlink_matches)
 | 
			
		||||
        setchecked(self.useRegexpBox, prefs.use_regexp)
 | 
			
		||||
        setchecked(self.removeEmptyFoldersBox, prefs.remove_empty_folders)
 | 
			
		||||
        setchecked(self.ignoreSmallFilesBox, prefs.ignore_small_files)
 | 
			
		||||
@ -60,6 +65,7 @@ class PreferencesDialog(QDialog, Ui_PreferencesDialog):
 | 
			
		||||
        prefs.match_similar = ischecked(self.matchSimilarBox)
 | 
			
		||||
        prefs.word_weighting = ischecked(self.wordWeightingBox)
 | 
			
		||||
        prefs.mix_file_kind = ischecked(self.mixFileKindBox)
 | 
			
		||||
        prefs.ignore_hardlink_matches = ischecked(self.ignoreHardlinkMatches)
 | 
			
		||||
        prefs.use_regexp = ischecked(self.useRegexpBox)
 | 
			
		||||
        prefs.remove_empty_folders = ischecked(self.removeEmptyFoldersBox)
 | 
			
		||||
        prefs.ignore_small_files = ischecked(self.ignoreSmallFilesBox)
 | 
			
		||||
 | 
			
		||||
@ -253,9 +253,16 @@
 | 
			
		||||
             </size>
 | 
			
		||||
            </property>
 | 
			
		||||
           </spacer>
 | 
			
		||||
          </item>
 | 
			
		||||
          </item>          
 | 
			
		||||
         </layout>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <widget class="QCheckBox" name="ignoreHardlinkMatches">
 | 
			
		||||
          <property name="text">
 | 
			
		||||
           <string>Ignore duplicates hardlinking to the same file</string>
 | 
			
		||||
          </property>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
       </layout>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user