mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-10 05:34:36 +00:00
Added the EXIF Timestamp scan type in dgpe.
--HG-- rename : core_pe/matchbase.py => core_pe/matchblock.py
This commit is contained in:
parent
a0e2b11663
commit
275c6be108
@ -48,6 +48,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
- (NSArray *)deltaColumns;
|
||||
|
||||
//Scanning options
|
||||
- (void)setScanType:(NSNumber *)scan_type;
|
||||
- (void)setMinMatchPercentage:(NSNumber *)percentage;
|
||||
- (void)setMixFileKind:(BOOL)mix_file_kind;
|
||||
- (void)setEscapeFilterRegexp:(BOOL)escape_filter_regexp;
|
||||
|
@ -11,7 +11,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
@interface PyDupeGuru : PyDupeGuruBase
|
||||
//Scanning options
|
||||
- (void)setScanType:(NSNumber *)scan_type;
|
||||
- (void)setMinWordCount:(NSNumber *)word_count;
|
||||
- (void)setMinWordLength:(NSNumber *)word_length;
|
||||
- (void)setWordWeighting:(NSNumber *)words_are_weighted;
|
||||
|
@ -20,14 +20,15 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
{
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:10];
|
||||
[d setObject:[NSNumber numberWithInt:95] forKey:@"minMatchPercentage"];
|
||||
[d setObject:[NSNumber numberWithInt:1] forKey:@"recreatePathType"];
|
||||
[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:i2n(0) forKey:@"scanType"];
|
||||
[d setObject:i2n(95) forKey:@"minMatchPercentage"];
|
||||
[d setObject:i2n(1) forKey:@"recreatePathType"];
|
||||
[d setObject:b2n(NO) forKey:@"matchScaled"];
|
||||
[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:[NSArray array] forKey:@"recentDirectories"];
|
||||
[d setObject:[NSArray array] forKey:@"columnsOrder"];
|
||||
[d setObject:[NSDictionary dictionary] forKey:@"columnsWidth"];
|
||||
@ -35,6 +36,15 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[ud registerDefaults:d];
|
||||
}
|
||||
|
||||
- (id)init
|
||||
{
|
||||
self = [super init];
|
||||
NSMutableIndexSet *i = [NSMutableIndexSet indexSetWithIndex:0];
|
||||
VTIsIntIn *vtScanTypeIsFuzzy = [[[VTIsIntIn alloc] initWithValues:i reverse:NO] autorelease];
|
||||
[NSValueTransformer setValueTransformer:vtScanTypeIsFuzzy forName:@"vtScanTypeIsFuzzy"];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (NSString *)homepageURL
|
||||
{
|
||||
return @"http://www.hardcoded.net/dupeguru_pe/";
|
||||
|
@ -34,6 +34,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
{
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
PyDupeGuru *_py = (PyDupeGuru *)py;
|
||||
[_py setScanType:[ud objectForKey:@"scanType"]];
|
||||
[_py setMinMatchPercentage:[ud objectForKey:@"minMatchPercentage"]];
|
||||
[_py setMixFileKind:n2b([ud objectForKey:@"mixFileKind"])];
|
||||
[_py setIgnoreHardlinkMatches:n2b([ud objectForKey:@"ignoreHardlinkMatches"])];
|
||||
|
@ -9,6 +9,7 @@ install_cocoa_trans()
|
||||
|
||||
from core.app_cocoa_inter import PyDupeGuruBase, PyDetailsPanel
|
||||
from core_pe import app_cocoa as app_pe_cocoa, __appname__
|
||||
from core.scanner import ScanType
|
||||
|
||||
class PyDupeGuru(PyDupeGuruBase):
|
||||
def init(self):
|
||||
@ -27,6 +28,15 @@ class PyDupeGuru(PyDupeGuruBase):
|
||||
return str(self.py.selected_dupe_ref_path())
|
||||
|
||||
#---Properties
|
||||
def setScanType_(self, scan_type):
|
||||
try:
|
||||
self.py.scanner.scan_type = [
|
||||
ScanType.FuzzyBlock,
|
||||
ScanType.ExifTimestamp,
|
||||
][scan_type]
|
||||
except IndexError:
|
||||
pass
|
||||
|
||||
def setMatchScaled_(self,match_scaled):
|
||||
self.py.scanner.match_scaled = match_scaled
|
||||
|
||||
|
@ -2,17 +2,17 @@
|
||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1050</int>
|
||||
<string key="IBDocument.SystemVersion">10J567</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">823</string>
|
||||
<string key="IBDocument.SystemVersion">10J869</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">851</string>
|
||||
<string key="IBDocument.AppKitVersion">1038.35</string>
|
||||
<string key="IBDocument.HIToolboxVersion">462.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">823</string>
|
||||
<string key="NS.object.0">851</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="3"/>
|
||||
<integer value="63"/>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
@ -36,7 +36,7 @@
|
||||
<object class="NSUserDefaultsController" id="455472712">
|
||||
<object class="NSMutableArray" key="NSDeclaredKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>DebugMode</string>
|
||||
<string>scanType</string>
|
||||
</object>
|
||||
<bool key="NSSharedInstance">YES</bool>
|
||||
</object>
|
||||
@ -103,7 +103,7 @@
|
||||
<object class="NSSlider" id="266372855">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrame">{{117, 140}, {181, 21}}</string>
|
||||
<string key="NSFrame">{{117, 107}, {181, 21}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSSliderCell" key="NSCell" id="453640282">
|
||||
@ -131,7 +131,7 @@
|
||||
<object class="NSTextField" id="869007847">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrame">{{119, 123}, {80, 13}}</string>
|
||||
<string key="NSFrame">{{119, 90}, {80, 13}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="106025161">
|
||||
@ -167,7 +167,7 @@
|
||||
<object class="NSTextField" id="171701149">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">289</int>
|
||||
<string key="NSFrame">{{216, 123}, {80, 13}}</string>
|
||||
<string key="NSFrame">{{216, 90}, {80, 13}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="397705219">
|
||||
@ -183,7 +183,7 @@
|
||||
<object class="NSTextField" id="638371207">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrame">{{14, 145}, {100, 14}}</string>
|
||||
<string key="NSFrame">{{14, 112}, {100, 14}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="812365472">
|
||||
@ -203,7 +203,7 @@
|
||||
<object class="NSButton" id="488256664">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{15, 79}, {316, 18}}</string>
|
||||
<string key="NSFrame">{{15, 46}, {316, 18}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="401283671">
|
||||
@ -226,7 +226,7 @@
|
||||
<object class="NSButton" id="722670516">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{15, 99}, {316, 18}}</string>
|
||||
<string key="NSFrame">{{15, 66}, {316, 18}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="911281323">
|
||||
@ -247,7 +247,7 @@
|
||||
<object class="NSButton" id="472028782">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{15, 39}, {316, 18}}</string>
|
||||
<string key="NSFrame">{{15, 6}, {316, 18}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="2297113">
|
||||
@ -268,7 +268,7 @@
|
||||
<object class="NSButton" id="279087998">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{15, 59}, {316, 18}}</string>
|
||||
<string key="NSFrame">{{15, 26}, {316, 18}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="287383961">
|
||||
@ -367,6 +367,87 @@
|
||||
<reference key="NSTextColor" ref="538152464"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="536472926">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrame">{{14, 145}, {85, 13}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="359086043">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">272629760</int>
|
||||
<string key="NSContents">Scan type:</string>
|
||||
<reference key="NSSupport" ref="649492068"/>
|
||||
<reference key="NSControlView" ref="536472926"/>
|
||||
<reference key="NSBackgroundColor" ref="71910056"/>
|
||||
<reference key="NSTextColor" ref="538152464"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSPopUpButton" id="337614813">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrame">{{113, 135}, {216, 26}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="697629846">
|
||||
<int key="NSCellFlags">-2076049856</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<reference key="NSSupport" ref="882799568"/>
|
||||
<reference key="NSControlView" ref="337614813"/>
|
||||
<int key="NSButtonFlags">109199615</int>
|
||||
<int key="NSButtonFlags2">1</int>
|
||||
<reference key="NSAlternateImage" ref="882799568"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<object class="NSMutableString" key="NSKeyEquivalent">
|
||||
<characters key="NS.bytes"/>
|
||||
</object>
|
||||
<int key="NSPeriodicDelay">400</int>
|
||||
<int key="NSPeriodicInterval">75</int>
|
||||
<object class="NSMenuItem" key="NSMenuItem" id="1038855957">
|
||||
<reference key="NSMenu" ref="958971008"/>
|
||||
<string key="NSTitle">Contents</string>
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<int key="NSState">1</int>
|
||||
<object class="NSCustomResource" key="NSOnImage" id="875822430">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSMenuCheckmark</string>
|
||||
</object>
|
||||
<object class="NSCustomResource" key="NSMixedImage" id="731403416">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSMenuMixedState</string>
|
||||
</object>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="697629846"/>
|
||||
</object>
|
||||
<bool key="NSMenuItemRespectAlignment">YES</bool>
|
||||
<object class="NSMenu" key="NSMenu" id="958971008">
|
||||
<object class="NSMutableString" key="NSTitle">
|
||||
<characters key="NS.bytes">OtherViews</characters>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="NSMenuItems">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="1038855957"/>
|
||||
<object class="NSMenuItem" id="820923003">
|
||||
<reference key="NSMenu" ref="958971008"/>
|
||||
<string key="NSTitle">EXIF Timestamp</string>
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<reference key="NSOnImage" ref="875822430"/>
|
||||
<reference key="NSMixedImage" ref="731403416"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="697629846"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<int key="NSPreferredEdge">3</int>
|
||||
<bool key="NSUsesItemFromMenu">YES</bool>
|
||||
<bool key="NSAltersState">YES</bool>
|
||||
<int key="NSArrowPosition">1</int>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{10, 33}, {346, 162}}</string>
|
||||
<reference key="NSSuperview" ref="211771207"/>
|
||||
@ -504,14 +585,8 @@
|
||||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<int key="NSState">1</int>
|
||||
<object class="NSCustomResource" key="NSOnImage" id="867788054">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSMenuCheckmark</string>
|
||||
</object>
|
||||
<object class="NSCustomResource" key="NSMixedImage" id="554538570">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSMenuMixedState</string>
|
||||
</object>
|
||||
<reference key="NSOnImage" ref="875822430"/>
|
||||
<reference key="NSMixedImage" ref="731403416"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="601288025"/>
|
||||
</object>
|
||||
@ -529,8 +604,8 @@
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<reference key="NSOnImage" ref="867788054"/>
|
||||
<reference key="NSMixedImage" ref="554538570"/>
|
||||
<reference key="NSOnImage" ref="875822430"/>
|
||||
<reference key="NSMixedImage" ref="731403416"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="601288025"/>
|
||||
</object>
|
||||
@ -540,8 +615,8 @@
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<reference key="NSOnImage" ref="867788054"/>
|
||||
<reference key="NSMixedImage" ref="554538570"/>
|
||||
<reference key="NSOnImage" ref="875822430"/>
|
||||
<reference key="NSMixedImage" ref="731403416"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="601288025"/>
|
||||
</object>
|
||||
@ -877,6 +952,62 @@
|
||||
</object>
|
||||
<int key="connectionID">78</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">selectedIndex: values.scanType</string>
|
||||
<reference key="source" ref="337614813"/>
|
||||
<reference key="destination" ref="455472712"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="337614813"/>
|
||||
<reference key="NSDestination" ref="455472712"/>
|
||||
<string key="NSLabel">selectedIndex: values.scanType</string>
|
||||
<string key="NSBinding">selectedIndex</string>
|
||||
<string key="NSKeyPath">values.scanType</string>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">96</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">enabled: values.scanType</string>
|
||||
<reference key="source" ref="266372855"/>
|
||||
<reference key="destination" ref="455472712"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="266372855"/>
|
||||
<reference key="NSDestination" ref="455472712"/>
|
||||
<string key="NSLabel">enabled: values.scanType</string>
|
||||
<string key="NSBinding">enabled</string>
|
||||
<string key="NSKeyPath">values.scanType</string>
|
||||
<object class="NSDictionary" key="NSOptions">
|
||||
<string key="NS.key.0">NSValueTransformerName</string>
|
||||
<string key="NS.object.0">vtScanTypeIsFuzzy</string>
|
||||
</object>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">98</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">enabled: values.scanType</string>
|
||||
<reference key="source" ref="722670516"/>
|
||||
<reference key="destination" ref="455472712"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="722670516"/>
|
||||
<reference key="NSDestination" ref="455472712"/>
|
||||
<string key="NSLabel">enabled: values.scanType</string>
|
||||
<string key="NSBinding">enabled</string>
|
||||
<string key="NSKeyPath">values.scanType</string>
|
||||
<object class="NSDictionary" key="NSOptions">
|
||||
<string key="NS.key.0">NSValueTransformerName</string>
|
||||
<string key="NS.object.0">vtScanTypeIsFuzzy</string>
|
||||
</object>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">100</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
@ -993,15 +1124,17 @@
|
||||
<reference key="object" ref="1073354031"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="722670516"/>
|
||||
<reference ref="488256664"/>
|
||||
<reference ref="638371207"/>
|
||||
<reference ref="171701149"/>
|
||||
<reference ref="869007847"/>
|
||||
<reference ref="266372855"/>
|
||||
<reference ref="279087998"/>
|
||||
<reference ref="403531548"/>
|
||||
<reference ref="266372855"/>
|
||||
<reference ref="869007847"/>
|
||||
<reference ref="171701149"/>
|
||||
<reference ref="638371207"/>
|
||||
<reference ref="488256664"/>
|
||||
<reference ref="722670516"/>
|
||||
<reference ref="279087998"/>
|
||||
<reference ref="472028782"/>
|
||||
<reference ref="337614813"/>
|
||||
<reference ref="536472926"/>
|
||||
</object>
|
||||
<reference key="parent" ref="700068878"/>
|
||||
</object>
|
||||
@ -1268,6 +1401,58 @@
|
||||
<reference key="object" ref="100803310"/>
|
||||
<reference key="parent" ref="606836304"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">87</int>
|
||||
<reference key="object" ref="536472926"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="359086043"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1073354031"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">88</int>
|
||||
<reference key="object" ref="337614813"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="697629846"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1073354031"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">89</int>
|
||||
<reference key="object" ref="697629846"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="958971008"/>
|
||||
</object>
|
||||
<reference key="parent" ref="337614813"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">90</int>
|
||||
<reference key="object" ref="958971008"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="820923003"/>
|
||||
<reference ref="1038855957"/>
|
||||
</object>
|
||||
<reference key="parent" ref="697629846"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">92</int>
|
||||
<reference key="object" ref="820923003"/>
|
||||
<reference key="parent" ref="958971008"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">93</int>
|
||||
<reference key="object" ref="1038855957"/>
|
||||
<reference key="parent" ref="958971008"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">94</int>
|
||||
<reference key="object" ref="359086043"/>
|
||||
<reference key="parent" ref="536472926"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
@ -1283,14 +1468,19 @@
|
||||
<string>11.IBPluginDependency</string>
|
||||
<string>11.ImportedFromIB2</string>
|
||||
<string>12.IBPluginDependency</string>
|
||||
<string>12.IBViewBoundsToFrameTransform</string>
|
||||
<string>12.ImportedFromIB2</string>
|
||||
<string>13.IBPluginDependency</string>
|
||||
<string>13.IBViewBoundsToFrameTransform</string>
|
||||
<string>13.ImportedFromIB2</string>
|
||||
<string>14.IBPluginDependency</string>
|
||||
<string>14.IBViewBoundsToFrameTransform</string>
|
||||
<string>14.ImportedFromIB2</string>
|
||||
<string>15.IBPluginDependency</string>
|
||||
<string>15.IBViewBoundsToFrameTransform</string>
|
||||
<string>15.ImportedFromIB2</string>
|
||||
<string>16.IBPluginDependency</string>
|
||||
<string>16.IBViewBoundsToFrameTransform</string>
|
||||
<string>16.ImportedFromIB2</string>
|
||||
<string>17.IBPluginDependency</string>
|
||||
<string>18.IBPluginDependency</string>
|
||||
@ -1326,6 +1516,7 @@
|
||||
<string>4.IBPluginDependency</string>
|
||||
<string>4.ImportedFromIB2</string>
|
||||
<string>5.IBPluginDependency</string>
|
||||
<string>5.IBViewBoundsToFrameTransform</string>
|
||||
<string>5.ImportedFromIB2</string>
|
||||
<string>59.IBPluginDependency</string>
|
||||
<string>6.IBPluginDependency</string>
|
||||
@ -1346,6 +1537,7 @@
|
||||
<string>69.IBViewBoundsToFrameTransform</string>
|
||||
<string>69.ImportedFromIB2</string>
|
||||
<string>7.IBPluginDependency</string>
|
||||
<string>7.IBViewBoundsToFrameTransform</string>
|
||||
<string>7.ImportedFromIB2</string>
|
||||
<string>70.IBPluginDependency</string>
|
||||
<string>74.IBPluginDependency</string>
|
||||
@ -1355,9 +1547,24 @@
|
||||
<string>8.IBPluginDependency</string>
|
||||
<string>8.IBViewBoundsToFrameTransform</string>
|
||||
<string>8.ImportedFromIB2</string>
|
||||
<string>87.IBPluginDependency</string>
|
||||
<string>87.IBViewBoundsToFrameTransform</string>
|
||||
<string>87.ImportedFromIB2</string>
|
||||
<string>88.IBPluginDependency</string>
|
||||
<string>88.IBViewBoundsToFrameTransform</string>
|
||||
<string>88.ImportedFromIB2</string>
|
||||
<string>89.IBPluginDependency</string>
|
||||
<string>9.IBPluginDependency</string>
|
||||
<string>9.IBViewBoundsToFrameTransform</string>
|
||||
<string>9.ImportedFromIB2</string>
|
||||
<string>90.IBEditorWindowLastContentRect</string>
|
||||
<string>90.IBPluginDependency</string>
|
||||
<string>90.ImportedFromIB2</string>
|
||||
<string>92.IBPluginDependency</string>
|
||||
<string>92.ImportedFromIB2</string>
|
||||
<string>93.IBPluginDependency</string>
|
||||
<string>93.ImportedFromIB2</string>
|
||||
<string>94.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
@ -1372,14 +1579,29 @@
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwr4AAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBYAAAwx0AAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABDWAAAwwYAAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABC7gAAwwYAAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABC6gAAwx8AAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
@ -1415,11 +1637,14 @@
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwpYAAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwfAAAA</bytes>
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwlwAAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
@ -1443,6 +1668,9 @@
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwuYAAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
@ -1457,10 +1685,29 @@
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBYAAAwx0AAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABCbAAAwx8AAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBYAAAwjwAAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>{{213, 762}, {216, 43}}</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"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
@ -1479,7 +1726,7 @@
|
||||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">78</int>
|
||||
<int key="maxID">100</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
|
@ -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">10J567</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">823</string>
|
||||
<string key="IBDocument.SystemVersion">10J869</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">851</string>
|
||||
<string key="IBDocument.AppKitVersion">1038.35</string>
|
||||
<string key="IBDocument.HIToolboxVersion">462.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">823</string>
|
||||
<string key="NS.object.0">851</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
@ -98,7 +98,7 @@
|
||||
<object class="NSSlider" id="266372855">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrame">{{117, 140}, {181, 21}}</string>
|
||||
<string key="NSFrame">{{117, 107}, {181, 21}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSSliderCell" key="NSCell" id="453640282">
|
||||
@ -126,7 +126,7 @@
|
||||
<object class="NSTextField" id="869007847">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrame">{{119, 123}, {80, 13}}</string>
|
||||
<string key="NSFrame">{{119, 90}, {80, 13}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="106025161">
|
||||
@ -162,7 +162,7 @@
|
||||
<object class="NSTextField" id="171701149">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">289</int>
|
||||
<string key="NSFrame">{{216, 123}, {80, 13}}</string>
|
||||
<string key="NSFrame">{{216, 90}, {80, 13}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="397705219">
|
||||
@ -178,7 +178,7 @@
|
||||
<object class="NSTextField" id="638371207">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrame">{{14, 145}, {100, 14}}</string>
|
||||
<string key="NSFrame">{{14, 112}, {100, 14}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="812365472">
|
||||
@ -198,7 +198,7 @@
|
||||
<object class="NSButton" id="488256664">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{15, 79}, {316, 18}}</string>
|
||||
<string key="NSFrame">{{15, 46}, {316, 18}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="401283671">
|
||||
@ -209,7 +209,7 @@
|
||||
<reference key="NSControlView" ref="488256664"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<object class="NSCustomResource" key="NSNormalImage" id="283442644">
|
||||
<object class="NSCustomResource" key="NSNormalImage" id="596695557">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSSwitch</string>
|
||||
</object>
|
||||
@ -225,7 +225,7 @@
|
||||
<object class="NSButton" id="722670516">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{15, 99}, {316, 18}}</string>
|
||||
<string key="NSFrame">{{15, 66}, {316, 18}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="911281323">
|
||||
@ -236,7 +236,7 @@
|
||||
<reference key="NSControlView" ref="722670516"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="283442644"/>
|
||||
<reference key="NSNormalImage" ref="596695557"/>
|
||||
<reference key="NSAlternateImage" ref="990345653"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
@ -247,7 +247,7 @@
|
||||
<object class="NSButton" id="472028782">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{15, 39}, {316, 18}}</string>
|
||||
<string key="NSFrame">{{15, 6}, {316, 18}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="2297113">
|
||||
@ -258,7 +258,7 @@
|
||||
<reference key="NSControlView" ref="472028782"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="283442644"/>
|
||||
<reference key="NSNormalImage" ref="596695557"/>
|
||||
<reference key="NSAlternateImage" ref="990345653"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
@ -269,7 +269,7 @@
|
||||
<object class="NSButton" id="279087998">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{15, 59}, {316, 18}}</string>
|
||||
<string key="NSFrame">{{15, 26}, {316, 18}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="287383961">
|
||||
@ -280,7 +280,7 @@
|
||||
<reference key="NSControlView" ref="279087998"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="283442644"/>
|
||||
<reference key="NSNormalImage" ref="596695557"/>
|
||||
<reference key="NSAlternateImage" ref="990345653"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
@ -369,6 +369,87 @@
|
||||
<reference key="NSTextColor" ref="538152464"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="536472926">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrame">{{14, 145}, {85, 13}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="359086043">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">272629760</int>
|
||||
<string key="NSContents">Scan type:</string>
|
||||
<reference key="NSSupport" ref="649492068"/>
|
||||
<reference key="NSControlView" ref="536472926"/>
|
||||
<reference key="NSBackgroundColor" ref="71910056"/>
|
||||
<reference key="NSTextColor" ref="538152464"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSPopUpButton" id="337614813">
|
||||
<reference key="NSNextResponder" ref="1073354031"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrame">{{113, 135}, {216, 26}}</string>
|
||||
<reference key="NSSuperview" ref="1073354031"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="697629846">
|
||||
<int key="NSCellFlags">-2076049856</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<reference key="NSSupport" ref="882799568"/>
|
||||
<reference key="NSControlView" ref="337614813"/>
|
||||
<int key="NSButtonFlags">109199615</int>
|
||||
<int key="NSButtonFlags2">1</int>
|
||||
<reference key="NSAlternateImage" ref="882799568"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<object class="NSMutableString" key="NSKeyEquivalent">
|
||||
<characters key="NS.bytes"/>
|
||||
</object>
|
||||
<int key="NSPeriodicDelay">400</int>
|
||||
<int key="NSPeriodicInterval">75</int>
|
||||
<object class="NSMenuItem" key="NSMenuItem" id="1038855957">
|
||||
<reference key="NSMenu" ref="958971008"/>
|
||||
<string key="NSTitle">Contents</string>
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<int key="NSState">1</int>
|
||||
<object class="NSCustomResource" key="NSOnImage" id="875822430">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSMenuCheckmark</string>
|
||||
</object>
|
||||
<object class="NSCustomResource" key="NSMixedImage" id="731403416">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSMenuMixedState</string>
|
||||
</object>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="697629846"/>
|
||||
</object>
|
||||
<bool key="NSMenuItemRespectAlignment">YES</bool>
|
||||
<object class="NSMenu" key="NSMenu" id="958971008">
|
||||
<object class="NSMutableString" key="NSTitle">
|
||||
<characters key="NS.bytes">OtherViews</characters>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="NSMenuItems">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="1038855957"/>
|
||||
<object class="NSMenuItem" id="820923003">
|
||||
<reference key="NSMenu" ref="958971008"/>
|
||||
<string key="NSTitle">EXIF Timestamp</string>
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<reference key="NSOnImage" ref="875822430"/>
|
||||
<reference key="NSMixedImage" ref="731403416"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="697629846"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<int key="NSPreferredEdge">3</int>
|
||||
<bool key="NSUsesItemFromMenu">YES</bool>
|
||||
<bool key="NSAltersState">YES</bool>
|
||||
<int key="NSArrowPosition">1</int>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{10, 33}, {346, 162}}</string>
|
||||
<reference key="NSSuperview" ref="211771207"/>
|
||||
@ -398,7 +479,7 @@
|
||||
<reference key="NSControlView" ref="1018598123"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="283442644"/>
|
||||
<reference key="NSNormalImage" ref="596695557"/>
|
||||
<reference key="NSAlternateImage" ref="990345653"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
@ -420,7 +501,7 @@
|
||||
<reference key="NSControlView" ref="519470955"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="283442644"/>
|
||||
<reference key="NSNormalImage" ref="596695557"/>
|
||||
<reference key="NSAlternateImage" ref="990345653"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
@ -442,7 +523,7 @@
|
||||
<reference key="NSControlView" ref="606836304"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="283442644"/>
|
||||
<reference key="NSNormalImage" ref="596695557"/>
|
||||
<reference key="NSAlternateImage" ref="990345653"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
@ -509,14 +590,8 @@
|
||||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<int key="NSState">1</int>
|
||||
<object class="NSCustomResource" key="NSOnImage" id="867788054">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSMenuCheckmark</string>
|
||||
</object>
|
||||
<object class="NSCustomResource" key="NSMixedImage" id="554538570">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSMenuMixedState</string>
|
||||
</object>
|
||||
<reference key="NSOnImage" ref="875822430"/>
|
||||
<reference key="NSMixedImage" ref="731403416"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="601288025"/>
|
||||
</object>
|
||||
@ -534,8 +609,8 @@
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<reference key="NSOnImage" ref="867788054"/>
|
||||
<reference key="NSMixedImage" ref="554538570"/>
|
||||
<reference key="NSOnImage" ref="875822430"/>
|
||||
<reference key="NSMixedImage" ref="731403416"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="601288025"/>
|
||||
</object>
|
||||
@ -545,8 +620,8 @@
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSKeyEquivModMask">1048576</int>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<reference key="NSOnImage" ref="867788054"/>
|
||||
<reference key="NSMixedImage" ref="554538570"/>
|
||||
<reference key="NSOnImage" ref="875822430"/>
|
||||
<reference key="NSMixedImage" ref="731403416"/>
|
||||
<string key="NSAction">_popUpItemAction:</string>
|
||||
<reference key="NSTarget" ref="601288025"/>
|
||||
</object>
|
||||
@ -881,6 +956,62 @@
|
||||
</object>
|
||||
<int key="connectionID">78</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">selectedIndex: values.scanType</string>
|
||||
<reference key="source" ref="337614813"/>
|
||||
<reference key="destination" ref="455472712"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="337614813"/>
|
||||
<reference key="NSDestination" ref="455472712"/>
|
||||
<string key="NSLabel">selectedIndex: values.scanType</string>
|
||||
<string key="NSBinding">selectedIndex</string>
|
||||
<string key="NSKeyPath">values.scanType</string>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">96</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">enabled: values.scanType</string>
|
||||
<reference key="source" ref="266372855"/>
|
||||
<reference key="destination" ref="455472712"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="266372855"/>
|
||||
<reference key="NSDestination" ref="455472712"/>
|
||||
<string key="NSLabel">enabled: values.scanType</string>
|
||||
<string key="NSBinding">enabled</string>
|
||||
<string key="NSKeyPath">values.scanType</string>
|
||||
<object class="NSDictionary" key="NSOptions">
|
||||
<string key="NS.key.0">NSValueTransformerName</string>
|
||||
<string key="NS.object.0">vtScanTypeIsFuzzy</string>
|
||||
</object>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">98</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">enabled: values.scanType</string>
|
||||
<reference key="source" ref="722670516"/>
|
||||
<reference key="destination" ref="455472712"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="722670516"/>
|
||||
<reference key="NSDestination" ref="455472712"/>
|
||||
<string key="NSLabel">enabled: values.scanType</string>
|
||||
<string key="NSBinding">enabled</string>
|
||||
<string key="NSKeyPath">values.scanType</string>
|
||||
<object class="NSDictionary" key="NSOptions">
|
||||
<string key="NS.key.0">NSValueTransformerName</string>
|
||||
<string key="NS.object.0">vtScanTypeIsFuzzy</string>
|
||||
</object>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">100</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
@ -997,15 +1128,17 @@
|
||||
<reference key="object" ref="1073354031"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="722670516"/>
|
||||
<reference ref="488256664"/>
|
||||
<reference ref="638371207"/>
|
||||
<reference ref="171701149"/>
|
||||
<reference ref="869007847"/>
|
||||
<reference ref="266372855"/>
|
||||
<reference ref="279087998"/>
|
||||
<reference ref="403531548"/>
|
||||
<reference ref="266372855"/>
|
||||
<reference ref="869007847"/>
|
||||
<reference ref="171701149"/>
|
||||
<reference ref="638371207"/>
|
||||
<reference ref="488256664"/>
|
||||
<reference ref="722670516"/>
|
||||
<reference ref="279087998"/>
|
||||
<reference ref="472028782"/>
|
||||
<reference ref="337614813"/>
|
||||
<reference ref="536472926"/>
|
||||
</object>
|
||||
<reference key="parent" ref="700068878"/>
|
||||
</object>
|
||||
@ -1272,6 +1405,58 @@
|
||||
<reference key="object" ref="100803310"/>
|
||||
<reference key="parent" ref="606836304"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">87</int>
|
||||
<reference key="object" ref="536472926"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="359086043"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1073354031"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">88</int>
|
||||
<reference key="object" ref="337614813"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="697629846"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1073354031"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">89</int>
|
||||
<reference key="object" ref="697629846"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="958971008"/>
|
||||
</object>
|
||||
<reference key="parent" ref="337614813"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">90</int>
|
||||
<reference key="object" ref="958971008"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="820923003"/>
|
||||
<reference ref="1038855957"/>
|
||||
</object>
|
||||
<reference key="parent" ref="697629846"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">92</int>
|
||||
<reference key="object" ref="820923003"/>
|
||||
<reference key="parent" ref="958971008"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">93</int>
|
||||
<reference key="object" ref="1038855957"/>
|
||||
<reference key="parent" ref="958971008"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">94</int>
|
||||
<reference key="object" ref="359086043"/>
|
||||
<reference key="parent" ref="536472926"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
@ -1287,14 +1472,19 @@
|
||||
<string>11.IBPluginDependency</string>
|
||||
<string>11.ImportedFromIB2</string>
|
||||
<string>12.IBPluginDependency</string>
|
||||
<string>12.IBViewBoundsToFrameTransform</string>
|
||||
<string>12.ImportedFromIB2</string>
|
||||
<string>13.IBPluginDependency</string>
|
||||
<string>13.IBViewBoundsToFrameTransform</string>
|
||||
<string>13.ImportedFromIB2</string>
|
||||
<string>14.IBPluginDependency</string>
|
||||
<string>14.IBViewBoundsToFrameTransform</string>
|
||||
<string>14.ImportedFromIB2</string>
|
||||
<string>15.IBPluginDependency</string>
|
||||
<string>15.IBViewBoundsToFrameTransform</string>
|
||||
<string>15.ImportedFromIB2</string>
|
||||
<string>16.IBPluginDependency</string>
|
||||
<string>16.IBViewBoundsToFrameTransform</string>
|
||||
<string>16.ImportedFromIB2</string>
|
||||
<string>17.IBPluginDependency</string>
|
||||
<string>18.IBPluginDependency</string>
|
||||
@ -1331,6 +1521,7 @@
|
||||
<string>4.IBPluginDependency</string>
|
||||
<string>4.ImportedFromIB2</string>
|
||||
<string>5.IBPluginDependency</string>
|
||||
<string>5.IBViewBoundsToFrameTransform</string>
|
||||
<string>5.ImportedFromIB2</string>
|
||||
<string>59.IBPluginDependency</string>
|
||||
<string>6.IBPluginDependency</string>
|
||||
@ -1351,6 +1542,7 @@
|
||||
<string>69.IBViewBoundsToFrameTransform</string>
|
||||
<string>69.ImportedFromIB2</string>
|
||||
<string>7.IBPluginDependency</string>
|
||||
<string>7.IBViewBoundsToFrameTransform</string>
|
||||
<string>7.ImportedFromIB2</string>
|
||||
<string>70.IBPluginDependency</string>
|
||||
<string>74.IBPluginDependency</string>
|
||||
@ -1360,9 +1552,24 @@
|
||||
<string>8.IBPluginDependency</string>
|
||||
<string>8.IBViewBoundsToFrameTransform</string>
|
||||
<string>8.ImportedFromIB2</string>
|
||||
<string>87.IBPluginDependency</string>
|
||||
<string>87.IBViewBoundsToFrameTransform</string>
|
||||
<string>87.ImportedFromIB2</string>
|
||||
<string>88.IBPluginDependency</string>
|
||||
<string>88.IBViewBoundsToFrameTransform</string>
|
||||
<string>88.ImportedFromIB2</string>
|
||||
<string>89.IBPluginDependency</string>
|
||||
<string>9.IBPluginDependency</string>
|
||||
<string>9.IBViewBoundsToFrameTransform</string>
|
||||
<string>9.ImportedFromIB2</string>
|
||||
<string>90.IBEditorWindowLastContentRect</string>
|
||||
<string>90.IBPluginDependency</string>
|
||||
<string>90.ImportedFromIB2</string>
|
||||
<string>92.IBPluginDependency</string>
|
||||
<string>92.ImportedFromIB2</string>
|
||||
<string>93.IBPluginDependency</string>
|
||||
<string>93.ImportedFromIB2</string>
|
||||
<string>94.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
@ -1377,14 +1584,29 @@
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwr4AAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBYAAAwx0AAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABDWAAAwwYAAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABC7gAAwwYAAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABC6gAAwx8AAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
@ -1421,11 +1643,14 @@
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwpYAAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwfAAAA</bytes>
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwlwAAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
@ -1449,6 +1674,9 @@
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwuYAAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
@ -1463,10 +1691,29 @@
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBYAAAwx0AAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABCbAAAwx8AAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABBYAAAwjwAAA</bytes>
|
||||
</object>
|
||||
<boolean value="YES"/>
|
||||
<string>{{213, 762}, {216, 43}}</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"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
@ -1485,7 +1732,7 @@
|
||||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">78</int>
|
||||
<int key="maxID">100</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
|
@ -11,7 +11,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
@interface PyDupeGuru : PyDupeGuruBase
|
||||
//Scanning options
|
||||
- (void)setScanType:(NSNumber *)scan_type;
|
||||
- (void)setWordWeighting:(NSNumber *)words_are_weighted;
|
||||
- (void)setMatchSimilarWords:(NSNumber *)match_similar_words;
|
||||
@end
|
||||
|
@ -17,6 +17,10 @@ from hscommon.trans import tr
|
||||
from . import engine
|
||||
from .ignore import IgnoreList
|
||||
|
||||
# It's quite ugly to have scan types from all editions all put in the same class, but because there's
|
||||
# there will be some nasty bugs popping up (ScanType is used in core when in should exclusively be
|
||||
# used in core_*). One day I'll clean this up.
|
||||
|
||||
class ScanType:
|
||||
Filename = 0
|
||||
Fields = 1
|
||||
@ -25,6 +29,10 @@ class ScanType:
|
||||
Folders = 4
|
||||
Contents = 5
|
||||
ContentsAudio = 6
|
||||
|
||||
#PE
|
||||
FuzzyBlock = 10
|
||||
ExifTimestamp = 11
|
||||
|
||||
SCANNABLE_TAGS = ['track', 'artist', 'album', 'title', 'genre', 'year']
|
||||
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
# Heavily based on http://topo.math.u-psud.fr/~bousch/exifdump.py by Thierry Bousch (Public Domain)
|
||||
|
||||
import os
|
||||
import sys
|
||||
import logging
|
||||
|
||||
EXIF_TAGS = {
|
||||
@ -260,7 +258,6 @@ def read_exif_header(fp):
|
||||
try:
|
||||
index = large_data.index(b'Exif')
|
||||
data = large_data[index-6:index+6]
|
||||
print('hello!', data)
|
||||
# large_data omits the first 12 bytes, and the index is at the middle of the header, so we
|
||||
# must seek index + 18
|
||||
fp.seek(index+18)
|
||||
@ -324,25 +321,3 @@ def get_fields(fp):
|
||||
for tag, type, values in IFD:
|
||||
add_tag_to_result(tag, values)
|
||||
return result
|
||||
|
||||
def main():
|
||||
# logging.getLogger().setLevel(logging.DEBUG)
|
||||
if len(sys.argv) < 2:
|
||||
filenames = os.listdir('.')
|
||||
else:
|
||||
filenames = sys.argv[1:]
|
||||
for filename in filenames:
|
||||
print(filename+':')
|
||||
try:
|
||||
file = open(filename, 'rb')
|
||||
fields = get_fields(file)
|
||||
if 'DateTime' in fields:
|
||||
print(fields['DateTime'])
|
||||
else:
|
||||
print(repr(fields))
|
||||
except (IOError, ValueError):
|
||||
print(' Cannot open file')
|
||||
sys.exit(0)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
34
core_pe/matchexif.py
Normal file
34
core_pe/matchexif.py
Normal file
@ -0,0 +1,34 @@
|
||||
# Created By: Virgil Dupras
|
||||
# Created On: 2011-04-20
|
||||
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||
#
|
||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
# which should be included with this package. The terms are also available at
|
||||
# http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
import logging
|
||||
from collections import defaultdict
|
||||
from itertools import combinations
|
||||
|
||||
from hscommon import io
|
||||
from hscommon.trans import tr
|
||||
|
||||
from core.engine import Match
|
||||
from . import exif
|
||||
|
||||
def getmatches(files, j):
|
||||
timestamp2pic = defaultdict(set)
|
||||
for picture in j.iter_with_progress(files, tr("Read EXIF of %d/%d pictures")):
|
||||
try:
|
||||
with io.open(picture.path, 'rb') as fp:
|
||||
exifdata = exif.get_fields(fp)
|
||||
timestamp = exifdata['DateTimeOriginal']
|
||||
timestamp2pic[timestamp].add(picture)
|
||||
except Exception:
|
||||
logging.warning("Couldn't read EXIF of picture: %s", picture.path)
|
||||
if '0000:00:00 00:00:00' in timestamp2pic: # very likely false matches
|
||||
del timestamp2pic['0000:00:00 00:00:00']
|
||||
matches = []
|
||||
for pictures in timestamp2pic.values():
|
||||
matches += [Match(p1, p2, 100) for p1, p2 in combinations(pictures, 2)]
|
||||
return matches
|
@ -1,4 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Created By: Virgil Dupras
|
||||
# Created On: 2009-10-18
|
||||
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||
@ -7,9 +6,9 @@
|
||||
# which should be included with this package. The terms are also available at
|
||||
# http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
from core.scanner import Scanner
|
||||
from core.scanner import Scanner, ScanType
|
||||
|
||||
from . import matchbase
|
||||
from . import matchblock, matchexif
|
||||
from .cache import Cache
|
||||
|
||||
class ScannerPE(Scanner):
|
||||
@ -18,7 +17,12 @@ class ScannerPE(Scanner):
|
||||
threshold = 75
|
||||
|
||||
def _getmatches(self, files, j):
|
||||
return matchbase.getmatches(files, self.cache_path, self.threshold, self.match_scaled, j)
|
||||
if self.scan_type == ScanType.FuzzyBlock:
|
||||
return matchblock.getmatches(files, self.cache_path, self.threshold, self.match_scaled, j)
|
||||
elif self.scan_type == ScanType.ExifTimestamp:
|
||||
return matchexif.getmatches(files, j)
|
||||
else:
|
||||
raise Exception("Invalid scan type")
|
||||
|
||||
def clear_picture_cache(self):
|
||||
cache = Cache(self.cache_path)
|
||||
|
@ -32,9 +32,11 @@ Preferences
|
||||
|
||||
.. only:: edition_pe
|
||||
|
||||
**Filter Hardness:** The higher is this setting, the "harder" is the filter (In other words, the less results you get). Most pictures of the same quality match at 100% even if the format is different (PNG and JPG for example.). However, if you want to make a PNG match with a lower quality JPG, you will have to set the filer hardness to lower than 100. The default, 95, is a sweet spot.
|
||||
**Scan Type:** This option determines the type of scan that will be made on your pictures. The **Contents** scan type compares the actual contents of the pictures in a fuzzy way (making it possible to find not only exact duplicates, but also similar ones). The **EXIF Timestamp** scan type looks at the EXIF metadata of the picture (if it exists) and matches pictures that have the same one. It's much faster than the Contents scan.
|
||||
|
||||
**Filter Hardness:** *Contents scan type only.* The higher is this setting, the "harder" is the filter (In other words, the less results you get). Most pictures of the same quality match at 100% even if the format is different (PNG and JPG for example.). However, if you want to make a PNG match with a lower quality JPG, you will have to set the filer hardness to lower than 100. The default, 95, is a sweet spot.
|
||||
|
||||
**Match scaled pictures together:** If you check this box, pictures of different dimensions will be allowed in the same duplicate group.
|
||||
**Match scaled pictures together:** *Contents scan type only.* If you check this box, pictures of different dimensions will be allowed in the same duplicate group.
|
||||
|
||||
**Can mix file kind:** If you check this box, duplicate groups are allowed to have files with different extensions. If you don't check it, well, they aren't!
|
||||
|
||||
|
@ -32,9 +32,11 @@ Préférences
|
||||
|
||||
.. only:: edition_pe
|
||||
|
||||
**Seuil du filtre:** Plus il est élevé, plus les images doivent être similaires pour être considérées comme des doublons. Le défaut de 95% permet quelques petites différence, comme par exemple une différence de qualité ou bien une légère modification des couleurs.
|
||||
**Type de scan:** Détermine le type de scan qui sera fait sur vos images. Le type **Contenu** compare le contenu des images de façon "fuzzy", rendant possible de trouver non seulement les doublons exactes, mais aussi les similaires. Le type **EXIF Timestamp** compare les métadonnées EXIF des images (si existantes) et détermine si le "timestamp" (moment de prise de la photo) est pareille. C'est beaucoup plus rapide que le scan par Contenu.
|
||||
|
||||
**Seuil du filtre:** *Scan par Contenu seulement.* Plus il est élevé, plus les images doivent être similaires pour être considérées comme des doublons. Le défaut de 95% permet quelques petites différence, comme par exemple une différence de qualité ou bien une légère modification des couleurs.
|
||||
|
||||
**Comparer les images de tailles différentes:** Le nom dit tout. Sans cette option, les images de tailles différentes ne sont pas comparées.
|
||||
**Comparer les images de tailles différentes:** *Scan par Contenu seulement.* Le nom dit tout. Sans cette option, les images de tailles différentes ne sont pas comparées.
|
||||
|
||||
**Comparer les fichiers de différents types:** Sans cette option, seulement les fichiers du même type seront comparés.
|
||||
|
||||
|
@ -71,6 +71,7 @@ class DupeGuru(DupeGuruBase):
|
||||
|
||||
def _update_options(self):
|
||||
DupeGuruBase._update_options(self)
|
||||
self.scanner.scan_type = self.prefs.scan_type
|
||||
self.scanner.match_scaled = self.prefs.match_scaled
|
||||
self.scanner.threshold = self.prefs.filter_hardness
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
# which should be included with this package. The terms are also available at
|
||||
# http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
from PyQt4.QtCore import QSettings, QVariant
|
||||
from core.scanner import ScanType
|
||||
|
||||
from ..base.preferences import Preferences as PreferencesBase
|
||||
|
||||
@ -24,12 +24,17 @@ class Preferences(PreferencesBase):
|
||||
]
|
||||
|
||||
def _load_specific(self, settings):
|
||||
self.match_scaled = self.get_value('MatchScaled', self.match_scaled)
|
||||
get = self.get_value
|
||||
self.scan_type = get('ScanType', self.scan_type)
|
||||
self.match_scaled = get('MatchScaled', self.match_scaled)
|
||||
|
||||
def _reset_specific(self):
|
||||
self.scan_type = ScanType.FuzzyBlock
|
||||
self.filter_hardness = 95
|
||||
self.match_scaled = False
|
||||
|
||||
def _save_specific(self, settings):
|
||||
self.set_value('MatchScaled', self.match_scaled)
|
||||
set_ = self.set_value
|
||||
set_('ScanType', self.scan_type)
|
||||
set_('MatchScaled', self.match_scaled)
|
||||
|
||||
|
@ -10,12 +10,26 @@ import sys
|
||||
from PyQt4.QtGui import QLabel, QApplication
|
||||
|
||||
from hscommon.trans import tr
|
||||
from core.scanner import ScanType
|
||||
|
||||
from ..base.preferences_dialog import PreferencesDialogBase
|
||||
from . import preferences
|
||||
|
||||
|
||||
SCAN_TYPE_ORDER = [
|
||||
ScanType.FuzzyBlock,
|
||||
ScanType.ExifTimestamp,
|
||||
]
|
||||
|
||||
class PreferencesDialog(PreferencesDialogBase):
|
||||
def __init__(self, parent, app):
|
||||
PreferencesDialogBase.__init__(self, parent, app)
|
||||
|
||||
self.scanTypeComboBox.currentIndexChanged[int].connect(self.scanTypeChanged)
|
||||
|
||||
def _setupPreferenceWidgets(self):
|
||||
scanTypeLabels = [tr(s) for s in ["Contents", "EXIF Timestamp"]]
|
||||
self._setupScanTypeBox(scanTypeLabels)
|
||||
self._setupFilterHardnessBox()
|
||||
self.widgetsVLayout.addLayout(self.filterHardnessHLayout)
|
||||
self._setupAddCheckbox('matchScaledBox', tr("Match scaled pictures together"))
|
||||
@ -33,14 +47,24 @@ class PreferencesDialog(PreferencesDialogBase):
|
||||
self._setupBottomPart()
|
||||
|
||||
def _load(self, prefs, setchecked):
|
||||
scan_type_index = SCAN_TYPE_ORDER.index(prefs.scan_type)
|
||||
self.scanTypeComboBox.setCurrentIndex(scan_type_index)
|
||||
setchecked(self.matchScaledBox, prefs.match_scaled)
|
||||
|
||||
def _save(self, prefs, ischecked):
|
||||
prefs.scan_type = SCAN_TYPE_ORDER[self.scanTypeComboBox.currentIndex()]
|
||||
prefs.match_scaled = ischecked(self.matchScaledBox)
|
||||
|
||||
def resetToDefaults(self):
|
||||
self.load(preferences.Preferences())
|
||||
|
||||
#--- Events
|
||||
def scanTypeChanged(self, index):
|
||||
scan_type = SCAN_TYPE_ORDER[self.scanTypeComboBox.currentIndex()]
|
||||
fuzzy_scan = scan_type == ScanType.FuzzyBlock
|
||||
self.filterHardnessSlider.setEnabled(fuzzy_scan)
|
||||
self.matchScaledBox.setEnabled(fuzzy_scan)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
from ..testapp import TestApp
|
||||
|
Loading…
x
Reference in New Issue
Block a user