mirror of
https://github.com/arsenetar/dupeguru.git
synced 2026-01-25 16:11:39 +00:00
Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7183408535 | ||
|
|
591b4c7c6a | ||
|
|
8b1170a82b | ||
|
|
1f26fbeacc | ||
|
|
cc7ccff48e | ||
|
|
a0809333c1 | ||
|
|
8975f78a5f | ||
|
|
56bc1c1373 | ||
|
|
417233a47f | ||
|
|
59eaf5305a | ||
|
|
275c6be108 | ||
|
|
a0e2b11663 | ||
|
|
de23ce90d8 | ||
|
|
9d5f3029d0 | ||
|
|
33ee220933 | ||
|
|
23d36b58c8 | ||
|
|
39b895f01b | ||
|
|
5f4252cddc | ||
|
|
fc54a1ea39 | ||
|
|
285f338dce | ||
|
|
379e420577 | ||
|
|
0b20b35ffb | ||
|
|
d887cd118c | ||
|
|
54ffcfab79 | ||
|
|
f28ffc680a | ||
|
|
f33f30eabf | ||
|
|
279d44b7f3 | ||
|
|
0fea59007c | ||
|
|
54720b15ca | ||
|
|
39fc7a91d7 | ||
|
|
7f9c322d48 |
2
.hgtags
2
.hgtags
@@ -46,3 +46,5 @@ f1d40b556c01f32c58f9ef9f9acac5b78e01ba7a pe2.0.0
|
|||||||
2fd901a516f8cb6b4438491f63f2ebfd52a57c13 me6.0.0
|
2fd901a516f8cb6b4438491f63f2ebfd52a57c13 me6.0.0
|
||||||
ff43c6d9feb388f103b7857eaa6f7809185f78ec before-pluginbuilder
|
ff43c6d9feb388f103b7857eaa6f7809185f78ec before-pluginbuilder
|
||||||
d274bcb98f2d02b86470a04cd62e718eff33b74f pe2.1.0
|
d274bcb98f2d02b86470a04cd62e718eff33b74f pe2.1.0
|
||||||
|
77e169f757195c11e9c1c5febeb2db8eb3589510 se3.0.2
|
||||||
|
97893f37d7d0767b5aedf1b4b40de57ee36d426b se3.1.0
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@@ -1,4 +1,4 @@
|
|||||||
Copyright 2010 Hardcoded Software Inc. (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software Inc. (http://www.hardcoded.net)
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||||
|
|||||||
41
README
41
README
@@ -29,7 +29,7 @@ General dependencies
|
|||||||
- Python 3.1 (3.2 on Mac OS X) (http://www.python.org)
|
- Python 3.1 (3.2 on Mac OS X) (http://www.python.org)
|
||||||
- Send2Trash3k (http://hg.hardcoded.net/send2trash)
|
- Send2Trash3k (http://hg.hardcoded.net/send2trash)
|
||||||
- hsaudiotag3k 1.1.0 (for ME) (http://hg.hardcoded.net/hsaudiotag)
|
- hsaudiotag3k 1.1.0 (for ME) (http://hg.hardcoded.net/hsaudiotag)
|
||||||
- jobprogress (http://hg.hardcoded.net/jobprogress)
|
- jobprogress 1.0.1 (http://hg.hardcoded.net/jobprogress)
|
||||||
- Sphinx 1.0.6 (http://sphinx.pocoo.org/)
|
- Sphinx 1.0.6 (http://sphinx.pocoo.org/)
|
||||||
- pytest 2.0.0, to run unit tests. (http://pytest.org/)
|
- pytest 2.0.0, to run unit tests. (http://pytest.org/)
|
||||||
|
|
||||||
@@ -54,6 +54,45 @@ Windows prerequisites
|
|||||||
- cx_Freeze, if you want to build a exe. You don't need it if you just want to run dupeGuru. (http://cx-freeze.sourceforge.net/)
|
- cx_Freeze, if you want to build a exe. You don't need it if you just want to run dupeGuru. (http://cx-freeze.sourceforge.net/)
|
||||||
- Advanced Installer, if you want to build the installer file. (http://www.advancedinstaller.com/)
|
- Advanced Installer, if you want to build the installer file. (http://www.advancedinstaller.com/)
|
||||||
|
|
||||||
|
Linux prerequisites
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
- PyQt 4.7.5 (http://www.riverbankcomputing.co.uk/news)
|
||||||
|
|
||||||
|
Prerequisite gotchas
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Correctly installing the prerequisites is tricky. Make sure you have at least the version number
|
||||||
|
required for each prerequisite.
|
||||||
|
|
||||||
|
If you didn't use mercurial to download this source, you probably have an incomplete source folder!
|
||||||
|
External projects (hscommon, qtlib, cocoalib) need to be at the root of the dupeGuru project folder.
|
||||||
|
You'll have to download those separately. Or use mercurial, it's much easier.
|
||||||
|
|
||||||
|
As far as I can tell, you don't *have* to compile/install everything manually and you can normally
|
||||||
|
use `easy_install` to install python dependencies. However, be aware that compiling/installing
|
||||||
|
manually from the repositories of each project is what I personally do, so if you hit a snag
|
||||||
|
somewhere, you might want to try the manual way.
|
||||||
|
|
||||||
|
PyObjC's website is badly outdated. Also, as far as I can tell, the package installable with
|
||||||
|
`easy_install` has good chances of not working. Your best bet is to download the latest tagged
|
||||||
|
version from the repository and compile it from source.
|
||||||
|
|
||||||
|
Also, on OS X, don't try to use the built-in python 2.x to install Sphinx on (the only pre-requisite
|
||||||
|
that doesn't run on python 3 yet). There's some weird error popping up when dupeGuru tries to build
|
||||||
|
its help file. Install your own framework version of python 2.7, and then install Sphinx on that.
|
||||||
|
When Sphinx supports Python 3, things will be easier because you'll be able to install sphinx on the
|
||||||
|
same Python version you build dupeGuru with.
|
||||||
|
|
||||||
|
Another one on OS X: I wouldn't use macports/fink/whatever. Whenever I tried using those, I always
|
||||||
|
ended up with problems.
|
||||||
|
|
||||||
|
Also, I don't know yet if it's possible to compile dupeGuru with XCode 4, I haven't tried it yet.
|
||||||
|
It's safer to use XCode 3.x. However, I don't see why it wouldn't work, so it very well might work.
|
||||||
|
|
||||||
|
Whenever you have a problem, always double-check that you're running the correct python version.
|
||||||
|
You'll probably have to tweak your $PATH.
|
||||||
|
|
||||||
Building dupeGuru
|
Building dupeGuru
|
||||||
=================
|
=================
|
||||||
|
|
||||||
|
|||||||
2
build.py
2
build.py
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2009-12-30
|
# Created On: 2009-12-30
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
@@ -19,6 +19,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
[self window];
|
[self window];
|
||||||
_app = aParentApp;
|
_app = aParentApp;
|
||||||
_py = [_app py];
|
_py = [_app py];
|
||||||
|
[[self window] setTitle:[_py appName]];
|
||||||
_alwaysShowPopUp = NO;
|
_alwaysShowPopUp = NO;
|
||||||
[self fillPopUpMenu];
|
[self fillPopUpMenu];
|
||||||
_recentDirectories = [[HSRecentFiles alloc] initWithName:@"recentDirectories" menu:[addButtonPopUp menu]];
|
_recentDirectories = [[HSRecentFiles alloc] initWithName:@"recentDirectories" menu:[addButtonPopUp menu]];
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
@@ -48,6 +48,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
- (NSArray *)deltaColumns;
|
- (NSArray *)deltaColumns;
|
||||||
|
|
||||||
//Scanning options
|
//Scanning options
|
||||||
|
- (void)setScanType:(NSNumber *)scan_type;
|
||||||
- (void)setMinMatchPercentage:(NSNumber *)percentage;
|
- (void)setMinMatchPercentage:(NSNumber *)percentage;
|
||||||
- (void)setMixFileKind:(BOOL)mix_file_kind;
|
- (void)setMixFileKind:(BOOL)mix_file_kind;
|
||||||
- (void)setEscapeFilterRegexp:(BOOL)escape_filter_regexp;
|
- (void)setEscapeFilterRegexp:(BOOL)escape_filter_regexp;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
@@ -118,6 +118,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
|
|
||||||
- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)column row:(NSInteger)row
|
- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)column row:(NSInteger)row
|
||||||
{
|
{
|
||||||
|
BOOL isSelected = [tableView isRowSelected:row];
|
||||||
BOOL isMarkable = n2b([[self py] valueForColumn:@"markable" row:row]);
|
BOOL isMarkable = n2b([[self py] valueForColumn:@"markable" row:row]);
|
||||||
if ([[column identifier] isEqual:@"marked"]) {
|
if ([[column identifier] isEqual:@"marked"]) {
|
||||||
[cell setEnabled:isMarkable];
|
[cell setEnabled:isMarkable];
|
||||||
@@ -126,20 +127,22 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
[cell setImagePosition:pos];
|
[cell setImagePosition:pos];
|
||||||
}
|
}
|
||||||
if ([cell isKindOfClass:[NSTextFieldCell class]]) {
|
if ([cell isKindOfClass:[NSTextFieldCell class]]) {
|
||||||
// Determine if the text color will be blue due to directory being reference.
|
NSColor *color = [NSColor textColor];
|
||||||
NSTextFieldCell *textCell = cell;
|
if (isSelected) {
|
||||||
if (isMarkable) {
|
color = [NSColor selectedTextColor];
|
||||||
[textCell setTextColor:[NSColor blackColor]];
|
}
|
||||||
|
else if (isMarkable) {
|
||||||
if ([self deltaValuesMode]) {
|
if ([self deltaValuesMode]) {
|
||||||
NSInteger i = [[column identifier] integerValue];
|
NSInteger i = [[column identifier] integerValue];
|
||||||
if ([_deltaColumns containsIndex:i]) {
|
if ([_deltaColumns containsIndex:i]) {
|
||||||
[textCell setTextColor:[NSColor orangeColor]];
|
color = [NSColor orangeColor];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
[textCell setTextColor:[NSColor blueColor]];
|
color = [NSColor blueColor];
|
||||||
}
|
}
|
||||||
|
[(NSTextFieldCell *)cell setTextColor:color];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
@@ -19,6 +19,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
self = [super initWithWindowNibName:@"ResultWindow"];
|
self = [super initWithWindowNibName:@"ResultWindow"];
|
||||||
app = aApp;
|
app = aApp;
|
||||||
py = [app py];
|
py = [app py];
|
||||||
|
[[self window] setTitle:fmt(@"%@ Results", [py appName])];
|
||||||
columnsMenu = [app columnsMenu];
|
columnsMenu = [app columnsMenu];
|
||||||
/* Put a cute iTunes-like bottom bar */
|
/* Put a cute iTunes-like bottom bar */
|
||||||
[[self window] setContentBorderThickness:28 forEdge:NSMinYEdge];
|
[[self window] setContentBorderThickness:28 forEdge:NSMinYEdge];
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
@@ -13,7 +13,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
- (id)initWithParentApp:(id)aParentApp
|
- (id)initWithParentApp:(id)aParentApp
|
||||||
{
|
{
|
||||||
self = [super initWithParentApp:aParentApp];
|
self = [super initWithParentApp:aParentApp];
|
||||||
[[self window] setTitle:@"dupeGuru Music Edition"];
|
|
||||||
_alwaysShowPopUp = YES;
|
_alwaysShowPopUp = YES;
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
<key>NSPrincipalClass</key>
|
<key>NSPrincipalClass</key>
|
||||||
<string>NSApplication</string>
|
<string>NSApplication</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>© Hardcoded Software, 2010</string>
|
<string>© Hardcoded Software, 2011</string>
|
||||||
<key>SUFeedURL</key>
|
<key>SUFeedURL</key>
|
||||||
<string>http://www.hardcoded.net/updates/dupeguru_me.appcast</string>
|
<string>http://www.hardcoded.net/updates/dupeguru_me.appcast</string>
|
||||||
<key>SUPublicDSAKeyFile</key>
|
<key>SUPublicDSAKeyFile</key>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
@@ -11,7 +11,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
|
|
||||||
@interface PyDupeGuru : PyDupeGuruBase
|
@interface PyDupeGuru : PyDupeGuruBase
|
||||||
//Scanning options
|
//Scanning options
|
||||||
- (void)setScanType:(NSNumber *)scan_type;
|
|
||||||
- (void)setMinWordCount:(NSNumber *)word_count;
|
- (void)setMinWordCount:(NSNumber *)word_count;
|
||||||
- (void)setMinWordLength:(NSNumber *)word_length;
|
- (void)setMinWordLength:(NSNumber *)word_length;
|
||||||
- (void)setWordWeighting:(NSNumber *)words_are_weighted;
|
- (void)setWordWeighting:(NSNumber *)words_are_weighted;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
@@ -20,14 +20,15 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
{
|
{
|
||||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||||
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:10];
|
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:10];
|
||||||
[d setObject:[NSNumber numberWithInt:95] forKey:@"minMatchPercentage"];
|
[d setObject:i2n(0) forKey:@"scanType"];
|
||||||
[d setObject:[NSNumber numberWithInt:1] forKey:@"recreatePathType"];
|
[d setObject:i2n(95) forKey:@"minMatchPercentage"];
|
||||||
[d setObject:[NSNumber numberWithBool:NO] forKey:@"matchScaled"];
|
[d setObject:i2n(1) forKey:@"recreatePathType"];
|
||||||
[d setObject:[NSNumber numberWithBool:YES] forKey:@"mixFileKind"];
|
[d setObject:b2n(NO) forKey:@"matchScaled"];
|
||||||
[d setObject:[NSNumber numberWithBool:NO] forKey:@"useRegexpFilter"];
|
[d setObject:b2n(YES) forKey:@"mixFileKind"];
|
||||||
[d setObject:[NSNumber numberWithBool:NO] forKey:@"ignoreHardlinkMatches"];
|
[d setObject:b2n(NO) forKey:@"useRegexpFilter"];
|
||||||
[d setObject:[NSNumber numberWithBool:NO] forKey:@"removeEmptyFolders"];
|
[d setObject:b2n(NO) forKey:@"ignoreHardlinkMatches"];
|
||||||
[d setObject:[NSNumber numberWithBool:NO] forKey:@"debug"];
|
[d setObject:b2n(NO) forKey:@"removeEmptyFolders"];
|
||||||
|
[d setObject:b2n(NO) forKey:@"debug"];
|
||||||
[d setObject:[NSArray array] forKey:@"recentDirectories"];
|
[d setObject:[NSArray array] forKey:@"recentDirectories"];
|
||||||
[d setObject:[NSArray array] forKey:@"columnsOrder"];
|
[d setObject:[NSArray array] forKey:@"columnsOrder"];
|
||||||
[d setObject:[NSDictionary dictionary] forKey:@"columnsWidth"];
|
[d setObject:[NSDictionary dictionary] forKey:@"columnsWidth"];
|
||||||
@@ -35,6 +36,15 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
[ud registerDefaults:d];
|
[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
|
- (NSString *)homepageURL
|
||||||
{
|
{
|
||||||
return @"http://www.hardcoded.net/dupeguru_pe/";
|
return @"http://www.hardcoded.net/dupeguru_pe/";
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
@@ -13,7 +13,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
- (id)initWithParentApp:(id)aParentApp
|
- (id)initWithParentApp:(id)aParentApp
|
||||||
{
|
{
|
||||||
self = [super initWithParentApp:aParentApp];
|
self = [super initWithParentApp:aParentApp];
|
||||||
[[self window] setTitle:@"dupeGuru Picture Edition"];
|
|
||||||
_alwaysShowPopUp = YES;
|
_alwaysShowPopUp = YES;
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
<key>NSPrincipalClass</key>
|
<key>NSPrincipalClass</key>
|
||||||
<string>NSApplication</string>
|
<string>NSApplication</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>© Hardcoded Software, 2010</string>
|
<string>© Hardcoded Software, 2011</string>
|
||||||
<key>SUFeedURL</key>
|
<key>SUFeedURL</key>
|
||||||
<string>http://www.hardcoded.net/updates/dupeguru_pe.appcast</string>
|
<string>http://www.hardcoded.net/updates/dupeguru_pe.appcast</string>
|
||||||
<key>SUPublicDSAKeyFile</key>
|
<key>SUPublicDSAKeyFile</key>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
@@ -34,6 +34,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
{
|
{
|
||||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||||
PyDupeGuru *_py = (PyDupeGuru *)py;
|
PyDupeGuru *_py = (PyDupeGuru *)py;
|
||||||
|
[_py setScanType:[ud objectForKey:@"scanType"]];
|
||||||
[_py setMinMatchPercentage:[ud objectForKey:@"minMatchPercentage"]];
|
[_py setMinMatchPercentage:[ud objectForKey:@"minMatchPercentage"]];
|
||||||
[_py setMixFileKind:n2b([ud objectForKey:@"mixFileKind"])];
|
[_py setMixFileKind:n2b([ud objectForKey:@"mixFileKind"])];
|
||||||
[_py setIgnoreHardlinkMatches:n2b([ud objectForKey:@"ignoreHardlinkMatches"])];
|
[_py setIgnoreHardlinkMatches:n2b([ud objectForKey:@"ignoreHardlinkMatches"])];
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
@@ -9,6 +9,7 @@ install_cocoa_trans()
|
|||||||
|
|
||||||
from core.app_cocoa_inter import PyDupeGuruBase, PyDetailsPanel
|
from core.app_cocoa_inter import PyDupeGuruBase, PyDetailsPanel
|
||||||
from core_pe import app_cocoa as app_pe_cocoa, __appname__
|
from core_pe import app_cocoa as app_pe_cocoa, __appname__
|
||||||
|
from core.scanner import ScanType
|
||||||
|
|
||||||
class PyDupeGuru(PyDupeGuruBase):
|
class PyDupeGuru(PyDupeGuruBase):
|
||||||
def init(self):
|
def init(self):
|
||||||
@@ -27,6 +28,15 @@ class PyDupeGuru(PyDupeGuruBase):
|
|||||||
return str(self.py.selected_dupe_ref_path())
|
return str(self.py.selected_dupe_ref_path())
|
||||||
|
|
||||||
#---Properties
|
#---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):
|
def setMatchScaled_(self,match_scaled):
|
||||||
self.py.scanner.match_scaled = match_scaled
|
self.py.scanner.match_scaled = match_scaled
|
||||||
|
|
||||||
|
|||||||
@@ -2,17 +2,17 @@
|
|||||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
||||||
<data>
|
<data>
|
||||||
<int key="IBDocument.SystemTarget">1050</int>
|
<int key="IBDocument.SystemTarget">1050</int>
|
||||||
<string key="IBDocument.SystemVersion">10J567</string>
|
<string key="IBDocument.SystemVersion">10J869</string>
|
||||||
<string key="IBDocument.InterfaceBuilderVersion">823</string>
|
<string key="IBDocument.InterfaceBuilderVersion">851</string>
|
||||||
<string key="IBDocument.AppKitVersion">1038.35</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">
|
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<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>
|
||||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
<integer value="3"/>
|
<integer value="63"/>
|
||||||
</object>
|
</object>
|
||||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
<object class="NSUserDefaultsController" id="455472712">
|
<object class="NSUserDefaultsController" id="455472712">
|
||||||
<object class="NSMutableArray" key="NSDeclaredKeys">
|
<object class="NSMutableArray" key="NSDeclaredKeys">
|
||||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
<string>DebugMode</string>
|
<string>scanType</string>
|
||||||
</object>
|
</object>
|
||||||
<bool key="NSSharedInstance">YES</bool>
|
<bool key="NSSharedInstance">YES</bool>
|
||||||
</object>
|
</object>
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
<object class="NSSlider" id="266372855">
|
<object class="NSSlider" id="266372855">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">292</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSSliderCell" key="NSCell" id="453640282">
|
<object class="NSSliderCell" key="NSCell" id="453640282">
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
<object class="NSTextField" id="869007847">
|
<object class="NSTextField" id="869007847">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">292</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSTextFieldCell" key="NSCell" id="106025161">
|
<object class="NSTextFieldCell" key="NSCell" id="106025161">
|
||||||
@@ -167,7 +167,7 @@
|
|||||||
<object class="NSTextField" id="171701149">
|
<object class="NSTextField" id="171701149">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">289</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSTextFieldCell" key="NSCell" id="397705219">
|
<object class="NSTextFieldCell" key="NSCell" id="397705219">
|
||||||
@@ -183,7 +183,7 @@
|
|||||||
<object class="NSTextField" id="638371207">
|
<object class="NSTextField" id="638371207">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">292</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSTextFieldCell" key="NSCell" id="812365472">
|
<object class="NSTextFieldCell" key="NSCell" id="812365472">
|
||||||
@@ -203,7 +203,7 @@
|
|||||||
<object class="NSButton" id="488256664">
|
<object class="NSButton" id="488256664">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">256</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSButtonCell" key="NSCell" id="401283671">
|
<object class="NSButtonCell" key="NSCell" id="401283671">
|
||||||
@@ -226,7 +226,7 @@
|
|||||||
<object class="NSButton" id="722670516">
|
<object class="NSButton" id="722670516">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">256</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSButtonCell" key="NSCell" id="911281323">
|
<object class="NSButtonCell" key="NSCell" id="911281323">
|
||||||
@@ -247,7 +247,7 @@
|
|||||||
<object class="NSButton" id="472028782">
|
<object class="NSButton" id="472028782">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">256</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSButtonCell" key="NSCell" id="2297113">
|
<object class="NSButtonCell" key="NSCell" id="2297113">
|
||||||
@@ -268,7 +268,7 @@
|
|||||||
<object class="NSButton" id="279087998">
|
<object class="NSButton" id="279087998">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">256</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSButtonCell" key="NSCell" id="287383961">
|
<object class="NSButtonCell" key="NSCell" id="287383961">
|
||||||
@@ -367,6 +367,87 @@
|
|||||||
<reference key="NSTextColor" ref="538152464"/>
|
<reference key="NSTextColor" ref="538152464"/>
|
||||||
</object>
|
</object>
|
||||||
</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>
|
</object>
|
||||||
<string key="NSFrame">{{10, 33}, {346, 162}}</string>
|
<string key="NSFrame">{{10, 33}, {346, 162}}</string>
|
||||||
<reference key="NSSuperview" ref="211771207"/>
|
<reference key="NSSuperview" ref="211771207"/>
|
||||||
@@ -504,14 +585,8 @@
|
|||||||
<int key="NSKeyEquivModMask">1048576</int>
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
<int key="NSMnemonicLoc">2147483647</int>
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
<int key="NSState">1</int>
|
<int key="NSState">1</int>
|
||||||
<object class="NSCustomResource" key="NSOnImage" id="867788054">
|
<reference key="NSOnImage" ref="875822430"/>
|
||||||
<string key="NSClassName">NSImage</string>
|
<reference key="NSMixedImage" ref="731403416"/>
|
||||||
<string key="NSResourceName">NSMenuCheckmark</string>
|
|
||||||
</object>
|
|
||||||
<object class="NSCustomResource" key="NSMixedImage" id="554538570">
|
|
||||||
<string key="NSClassName">NSImage</string>
|
|
||||||
<string key="NSResourceName">NSMenuMixedState</string>
|
|
||||||
</object>
|
|
||||||
<string key="NSAction">_popUpItemAction:</string>
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
<reference key="NSTarget" ref="601288025"/>
|
<reference key="NSTarget" ref="601288025"/>
|
||||||
</object>
|
</object>
|
||||||
@@ -529,8 +604,8 @@
|
|||||||
<string key="NSKeyEquiv"/>
|
<string key="NSKeyEquiv"/>
|
||||||
<int key="NSKeyEquivModMask">1048576</int>
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
<int key="NSMnemonicLoc">2147483647</int>
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
<reference key="NSOnImage" ref="867788054"/>
|
<reference key="NSOnImage" ref="875822430"/>
|
||||||
<reference key="NSMixedImage" ref="554538570"/>
|
<reference key="NSMixedImage" ref="731403416"/>
|
||||||
<string key="NSAction">_popUpItemAction:</string>
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
<reference key="NSTarget" ref="601288025"/>
|
<reference key="NSTarget" ref="601288025"/>
|
||||||
</object>
|
</object>
|
||||||
@@ -540,8 +615,8 @@
|
|||||||
<string key="NSKeyEquiv"/>
|
<string key="NSKeyEquiv"/>
|
||||||
<int key="NSKeyEquivModMask">1048576</int>
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
<int key="NSMnemonicLoc">2147483647</int>
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
<reference key="NSOnImage" ref="867788054"/>
|
<reference key="NSOnImage" ref="875822430"/>
|
||||||
<reference key="NSMixedImage" ref="554538570"/>
|
<reference key="NSMixedImage" ref="731403416"/>
|
||||||
<string key="NSAction">_popUpItemAction:</string>
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
<reference key="NSTarget" ref="601288025"/>
|
<reference key="NSTarget" ref="601288025"/>
|
||||||
</object>
|
</object>
|
||||||
@@ -877,6 +952,62 @@
|
|||||||
</object>
|
</object>
|
||||||
<int key="connectionID">78</int>
|
<int key="connectionID">78</int>
|
||||||
</object>
|
</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>
|
||||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||||
<object class="NSArray" key="orderedObjects">
|
<object class="NSArray" key="orderedObjects">
|
||||||
@@ -993,15 +1124,17 @@
|
|||||||
<reference key="object" ref="1073354031"/>
|
<reference key="object" ref="1073354031"/>
|
||||||
<object class="NSMutableArray" key="children">
|
<object class="NSMutableArray" key="children">
|
||||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
<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="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="472028782"/>
|
||||||
|
<reference ref="337614813"/>
|
||||||
|
<reference ref="536472926"/>
|
||||||
</object>
|
</object>
|
||||||
<reference key="parent" ref="700068878"/>
|
<reference key="parent" ref="700068878"/>
|
||||||
</object>
|
</object>
|
||||||
@@ -1268,6 +1401,58 @@
|
|||||||
<reference key="object" ref="100803310"/>
|
<reference key="object" ref="100803310"/>
|
||||||
<reference key="parent" ref="606836304"/>
|
<reference key="parent" ref="606836304"/>
|
||||||
</object>
|
</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>
|
</object>
|
||||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||||
@@ -1283,14 +1468,19 @@
|
|||||||
<string>11.IBPluginDependency</string>
|
<string>11.IBPluginDependency</string>
|
||||||
<string>11.ImportedFromIB2</string>
|
<string>11.ImportedFromIB2</string>
|
||||||
<string>12.IBPluginDependency</string>
|
<string>12.IBPluginDependency</string>
|
||||||
|
<string>12.IBViewBoundsToFrameTransform</string>
|
||||||
<string>12.ImportedFromIB2</string>
|
<string>12.ImportedFromIB2</string>
|
||||||
<string>13.IBPluginDependency</string>
|
<string>13.IBPluginDependency</string>
|
||||||
|
<string>13.IBViewBoundsToFrameTransform</string>
|
||||||
<string>13.ImportedFromIB2</string>
|
<string>13.ImportedFromIB2</string>
|
||||||
<string>14.IBPluginDependency</string>
|
<string>14.IBPluginDependency</string>
|
||||||
|
<string>14.IBViewBoundsToFrameTransform</string>
|
||||||
<string>14.ImportedFromIB2</string>
|
<string>14.ImportedFromIB2</string>
|
||||||
<string>15.IBPluginDependency</string>
|
<string>15.IBPluginDependency</string>
|
||||||
|
<string>15.IBViewBoundsToFrameTransform</string>
|
||||||
<string>15.ImportedFromIB2</string>
|
<string>15.ImportedFromIB2</string>
|
||||||
<string>16.IBPluginDependency</string>
|
<string>16.IBPluginDependency</string>
|
||||||
|
<string>16.IBViewBoundsToFrameTransform</string>
|
||||||
<string>16.ImportedFromIB2</string>
|
<string>16.ImportedFromIB2</string>
|
||||||
<string>17.IBPluginDependency</string>
|
<string>17.IBPluginDependency</string>
|
||||||
<string>18.IBPluginDependency</string>
|
<string>18.IBPluginDependency</string>
|
||||||
@@ -1326,6 +1516,7 @@
|
|||||||
<string>4.IBPluginDependency</string>
|
<string>4.IBPluginDependency</string>
|
||||||
<string>4.ImportedFromIB2</string>
|
<string>4.ImportedFromIB2</string>
|
||||||
<string>5.IBPluginDependency</string>
|
<string>5.IBPluginDependency</string>
|
||||||
|
<string>5.IBViewBoundsToFrameTransform</string>
|
||||||
<string>5.ImportedFromIB2</string>
|
<string>5.ImportedFromIB2</string>
|
||||||
<string>59.IBPluginDependency</string>
|
<string>59.IBPluginDependency</string>
|
||||||
<string>6.IBPluginDependency</string>
|
<string>6.IBPluginDependency</string>
|
||||||
@@ -1346,6 +1537,7 @@
|
|||||||
<string>69.IBViewBoundsToFrameTransform</string>
|
<string>69.IBViewBoundsToFrameTransform</string>
|
||||||
<string>69.ImportedFromIB2</string>
|
<string>69.ImportedFromIB2</string>
|
||||||
<string>7.IBPluginDependency</string>
|
<string>7.IBPluginDependency</string>
|
||||||
|
<string>7.IBViewBoundsToFrameTransform</string>
|
||||||
<string>7.ImportedFromIB2</string>
|
<string>7.ImportedFromIB2</string>
|
||||||
<string>70.IBPluginDependency</string>
|
<string>70.IBPluginDependency</string>
|
||||||
<string>74.IBPluginDependency</string>
|
<string>74.IBPluginDependency</string>
|
||||||
@@ -1355,9 +1547,24 @@
|
|||||||
<string>8.IBPluginDependency</string>
|
<string>8.IBPluginDependency</string>
|
||||||
<string>8.IBViewBoundsToFrameTransform</string>
|
<string>8.IBViewBoundsToFrameTransform</string>
|
||||||
<string>8.ImportedFromIB2</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.IBPluginDependency</string>
|
||||||
<string>9.IBViewBoundsToFrameTransform</string>
|
<string>9.IBViewBoundsToFrameTransform</string>
|
||||||
<string>9.ImportedFromIB2</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>
|
||||||
<object class="NSMutableArray" key="dict.values">
|
<object class="NSMutableArray" key="dict.values">
|
||||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
@@ -1372,14 +1579,29 @@
|
|||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwr4AAA</bytes>
|
||||||
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABBYAAAwx0AAA</bytes>
|
||||||
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABDWAAAwwYAAA</bytes>
|
||||||
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABC7gAAwwYAAA</bytes>
|
||||||
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABC6gAAwx8AAA</bytes>
|
||||||
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
@@ -1415,11 +1637,14 @@
|
|||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwpYAAA</bytes>
|
||||||
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<object class="NSAffineTransform">
|
<object class="NSAffineTransform">
|
||||||
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwfAAAA</bytes>
|
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwlwAAA</bytes>
|
||||||
</object>
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
@@ -1443,6 +1668,9 @@
|
|||||||
</object>
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwuYAAA</bytes>
|
||||||
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
@@ -1457,10 +1685,29 @@
|
|||||||
</object>
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<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">
|
<object class="NSAffineTransform">
|
||||||
<bytes key="NSTransformStruct">P4AAAL+AAABBYAAAwjwAAA</bytes>
|
<bytes key="NSTransformStruct">P4AAAL+AAABBYAAAwjwAAA</bytes>
|
||||||
</object>
|
</object>
|
||||||
<boolean value="YES"/>
|
<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>
|
</object>
|
||||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||||
@@ -1479,7 +1726,7 @@
|
|||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<nil key="sourceID"/>
|
<nil key="sourceID"/>
|
||||||
<int key="maxID">78</int>
|
<int key="maxID">100</int>
|
||||||
</object>
|
</object>
|
||||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
||||||
<data>
|
<data>
|
||||||
<int key="IBDocument.SystemTarget">1050</int>
|
<int key="IBDocument.SystemTarget">1050</int>
|
||||||
<string key="IBDocument.SystemVersion">10J567</string>
|
<string key="IBDocument.SystemVersion">10J869</string>
|
||||||
<string key="IBDocument.InterfaceBuilderVersion">823</string>
|
<string key="IBDocument.InterfaceBuilderVersion">851</string>
|
||||||
<string key="IBDocument.AppKitVersion">1038.35</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">
|
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<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>
|
||||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
<object class="NSSlider" id="266372855">
|
<object class="NSSlider" id="266372855">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">292</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSSliderCell" key="NSCell" id="453640282">
|
<object class="NSSliderCell" key="NSCell" id="453640282">
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
<object class="NSTextField" id="869007847">
|
<object class="NSTextField" id="869007847">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">292</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSTextFieldCell" key="NSCell" id="106025161">
|
<object class="NSTextFieldCell" key="NSCell" id="106025161">
|
||||||
@@ -162,7 +162,7 @@
|
|||||||
<object class="NSTextField" id="171701149">
|
<object class="NSTextField" id="171701149">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">289</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSTextFieldCell" key="NSCell" id="397705219">
|
<object class="NSTextFieldCell" key="NSCell" id="397705219">
|
||||||
@@ -178,7 +178,7 @@
|
|||||||
<object class="NSTextField" id="638371207">
|
<object class="NSTextField" id="638371207">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">292</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSTextFieldCell" key="NSCell" id="812365472">
|
<object class="NSTextFieldCell" key="NSCell" id="812365472">
|
||||||
@@ -198,7 +198,7 @@
|
|||||||
<object class="NSButton" id="488256664">
|
<object class="NSButton" id="488256664">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">256</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSButtonCell" key="NSCell" id="401283671">
|
<object class="NSButtonCell" key="NSCell" id="401283671">
|
||||||
@@ -209,7 +209,7 @@
|
|||||||
<reference key="NSControlView" ref="488256664"/>
|
<reference key="NSControlView" ref="488256664"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</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="NSClassName">NSImage</string>
|
||||||
<string key="NSResourceName">NSSwitch</string>
|
<string key="NSResourceName">NSSwitch</string>
|
||||||
</object>
|
</object>
|
||||||
@@ -225,7 +225,7 @@
|
|||||||
<object class="NSButton" id="722670516">
|
<object class="NSButton" id="722670516">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">256</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSButtonCell" key="NSCell" id="911281323">
|
<object class="NSButtonCell" key="NSCell" id="911281323">
|
||||||
@@ -236,7 +236,7 @@
|
|||||||
<reference key="NSControlView" ref="722670516"/>
|
<reference key="NSControlView" ref="722670516"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</int>
|
<int key="NSButtonFlags2">2</int>
|
||||||
<reference key="NSNormalImage" ref="283442644"/>
|
<reference key="NSNormalImage" ref="596695557"/>
|
||||||
<reference key="NSAlternateImage" ref="990345653"/>
|
<reference key="NSAlternateImage" ref="990345653"/>
|
||||||
<string key="NSAlternateContents"/>
|
<string key="NSAlternateContents"/>
|
||||||
<string key="NSKeyEquivalent"/>
|
<string key="NSKeyEquivalent"/>
|
||||||
@@ -247,7 +247,7 @@
|
|||||||
<object class="NSButton" id="472028782">
|
<object class="NSButton" id="472028782">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">256</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSButtonCell" key="NSCell" id="2297113">
|
<object class="NSButtonCell" key="NSCell" id="2297113">
|
||||||
@@ -258,7 +258,7 @@
|
|||||||
<reference key="NSControlView" ref="472028782"/>
|
<reference key="NSControlView" ref="472028782"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</int>
|
<int key="NSButtonFlags2">2</int>
|
||||||
<reference key="NSNormalImage" ref="283442644"/>
|
<reference key="NSNormalImage" ref="596695557"/>
|
||||||
<reference key="NSAlternateImage" ref="990345653"/>
|
<reference key="NSAlternateImage" ref="990345653"/>
|
||||||
<string key="NSAlternateContents"/>
|
<string key="NSAlternateContents"/>
|
||||||
<string key="NSKeyEquivalent"/>
|
<string key="NSKeyEquivalent"/>
|
||||||
@@ -269,7 +269,7 @@
|
|||||||
<object class="NSButton" id="279087998">
|
<object class="NSButton" id="279087998">
|
||||||
<reference key="NSNextResponder" ref="1073354031"/>
|
<reference key="NSNextResponder" ref="1073354031"/>
|
||||||
<int key="NSvFlags">256</int>
|
<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"/>
|
<reference key="NSSuperview" ref="1073354031"/>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSButtonCell" key="NSCell" id="287383961">
|
<object class="NSButtonCell" key="NSCell" id="287383961">
|
||||||
@@ -280,7 +280,7 @@
|
|||||||
<reference key="NSControlView" ref="279087998"/>
|
<reference key="NSControlView" ref="279087998"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</int>
|
<int key="NSButtonFlags2">2</int>
|
||||||
<reference key="NSNormalImage" ref="283442644"/>
|
<reference key="NSNormalImage" ref="596695557"/>
|
||||||
<reference key="NSAlternateImage" ref="990345653"/>
|
<reference key="NSAlternateImage" ref="990345653"/>
|
||||||
<string key="NSAlternateContents"/>
|
<string key="NSAlternateContents"/>
|
||||||
<string key="NSKeyEquivalent"/>
|
<string key="NSKeyEquivalent"/>
|
||||||
@@ -369,6 +369,87 @@
|
|||||||
<reference key="NSTextColor" ref="538152464"/>
|
<reference key="NSTextColor" ref="538152464"/>
|
||||||
</object>
|
</object>
|
||||||
</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>
|
</object>
|
||||||
<string key="NSFrame">{{10, 33}, {346, 162}}</string>
|
<string key="NSFrame">{{10, 33}, {346, 162}}</string>
|
||||||
<reference key="NSSuperview" ref="211771207"/>
|
<reference key="NSSuperview" ref="211771207"/>
|
||||||
@@ -398,7 +479,7 @@
|
|||||||
<reference key="NSControlView" ref="1018598123"/>
|
<reference key="NSControlView" ref="1018598123"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</int>
|
<int key="NSButtonFlags2">2</int>
|
||||||
<reference key="NSNormalImage" ref="283442644"/>
|
<reference key="NSNormalImage" ref="596695557"/>
|
||||||
<reference key="NSAlternateImage" ref="990345653"/>
|
<reference key="NSAlternateImage" ref="990345653"/>
|
||||||
<string key="NSAlternateContents"/>
|
<string key="NSAlternateContents"/>
|
||||||
<string key="NSKeyEquivalent"/>
|
<string key="NSKeyEquivalent"/>
|
||||||
@@ -420,7 +501,7 @@
|
|||||||
<reference key="NSControlView" ref="519470955"/>
|
<reference key="NSControlView" ref="519470955"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</int>
|
<int key="NSButtonFlags2">2</int>
|
||||||
<reference key="NSNormalImage" ref="283442644"/>
|
<reference key="NSNormalImage" ref="596695557"/>
|
||||||
<reference key="NSAlternateImage" ref="990345653"/>
|
<reference key="NSAlternateImage" ref="990345653"/>
|
||||||
<string key="NSAlternateContents"/>
|
<string key="NSAlternateContents"/>
|
||||||
<string key="NSKeyEquivalent"/>
|
<string key="NSKeyEquivalent"/>
|
||||||
@@ -442,7 +523,7 @@
|
|||||||
<reference key="NSControlView" ref="606836304"/>
|
<reference key="NSControlView" ref="606836304"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</int>
|
<int key="NSButtonFlags2">2</int>
|
||||||
<reference key="NSNormalImage" ref="283442644"/>
|
<reference key="NSNormalImage" ref="596695557"/>
|
||||||
<reference key="NSAlternateImage" ref="990345653"/>
|
<reference key="NSAlternateImage" ref="990345653"/>
|
||||||
<string key="NSAlternateContents"/>
|
<string key="NSAlternateContents"/>
|
||||||
<string key="NSKeyEquivalent"/>
|
<string key="NSKeyEquivalent"/>
|
||||||
@@ -509,14 +590,8 @@
|
|||||||
<int key="NSKeyEquivModMask">1048576</int>
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
<int key="NSMnemonicLoc">2147483647</int>
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
<int key="NSState">1</int>
|
<int key="NSState">1</int>
|
||||||
<object class="NSCustomResource" key="NSOnImage" id="867788054">
|
<reference key="NSOnImage" ref="875822430"/>
|
||||||
<string key="NSClassName">NSImage</string>
|
<reference key="NSMixedImage" ref="731403416"/>
|
||||||
<string key="NSResourceName">NSMenuCheckmark</string>
|
|
||||||
</object>
|
|
||||||
<object class="NSCustomResource" key="NSMixedImage" id="554538570">
|
|
||||||
<string key="NSClassName">NSImage</string>
|
|
||||||
<string key="NSResourceName">NSMenuMixedState</string>
|
|
||||||
</object>
|
|
||||||
<string key="NSAction">_popUpItemAction:</string>
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
<reference key="NSTarget" ref="601288025"/>
|
<reference key="NSTarget" ref="601288025"/>
|
||||||
</object>
|
</object>
|
||||||
@@ -534,8 +609,8 @@
|
|||||||
<string key="NSKeyEquiv"/>
|
<string key="NSKeyEquiv"/>
|
||||||
<int key="NSKeyEquivModMask">1048576</int>
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
<int key="NSMnemonicLoc">2147483647</int>
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
<reference key="NSOnImage" ref="867788054"/>
|
<reference key="NSOnImage" ref="875822430"/>
|
||||||
<reference key="NSMixedImage" ref="554538570"/>
|
<reference key="NSMixedImage" ref="731403416"/>
|
||||||
<string key="NSAction">_popUpItemAction:</string>
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
<reference key="NSTarget" ref="601288025"/>
|
<reference key="NSTarget" ref="601288025"/>
|
||||||
</object>
|
</object>
|
||||||
@@ -545,8 +620,8 @@
|
|||||||
<string key="NSKeyEquiv"/>
|
<string key="NSKeyEquiv"/>
|
||||||
<int key="NSKeyEquivModMask">1048576</int>
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
<int key="NSMnemonicLoc">2147483647</int>
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
<reference key="NSOnImage" ref="867788054"/>
|
<reference key="NSOnImage" ref="875822430"/>
|
||||||
<reference key="NSMixedImage" ref="554538570"/>
|
<reference key="NSMixedImage" ref="731403416"/>
|
||||||
<string key="NSAction">_popUpItemAction:</string>
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
<reference key="NSTarget" ref="601288025"/>
|
<reference key="NSTarget" ref="601288025"/>
|
||||||
</object>
|
</object>
|
||||||
@@ -881,6 +956,62 @@
|
|||||||
</object>
|
</object>
|
||||||
<int key="connectionID">78</int>
|
<int key="connectionID">78</int>
|
||||||
</object>
|
</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>
|
||||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||||
<object class="NSArray" key="orderedObjects">
|
<object class="NSArray" key="orderedObjects">
|
||||||
@@ -997,15 +1128,17 @@
|
|||||||
<reference key="object" ref="1073354031"/>
|
<reference key="object" ref="1073354031"/>
|
||||||
<object class="NSMutableArray" key="children">
|
<object class="NSMutableArray" key="children">
|
||||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
<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="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="472028782"/>
|
||||||
|
<reference ref="337614813"/>
|
||||||
|
<reference ref="536472926"/>
|
||||||
</object>
|
</object>
|
||||||
<reference key="parent" ref="700068878"/>
|
<reference key="parent" ref="700068878"/>
|
||||||
</object>
|
</object>
|
||||||
@@ -1272,6 +1405,58 @@
|
|||||||
<reference key="object" ref="100803310"/>
|
<reference key="object" ref="100803310"/>
|
||||||
<reference key="parent" ref="606836304"/>
|
<reference key="parent" ref="606836304"/>
|
||||||
</object>
|
</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>
|
</object>
|
||||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||||
@@ -1287,14 +1472,19 @@
|
|||||||
<string>11.IBPluginDependency</string>
|
<string>11.IBPluginDependency</string>
|
||||||
<string>11.ImportedFromIB2</string>
|
<string>11.ImportedFromIB2</string>
|
||||||
<string>12.IBPluginDependency</string>
|
<string>12.IBPluginDependency</string>
|
||||||
|
<string>12.IBViewBoundsToFrameTransform</string>
|
||||||
<string>12.ImportedFromIB2</string>
|
<string>12.ImportedFromIB2</string>
|
||||||
<string>13.IBPluginDependency</string>
|
<string>13.IBPluginDependency</string>
|
||||||
|
<string>13.IBViewBoundsToFrameTransform</string>
|
||||||
<string>13.ImportedFromIB2</string>
|
<string>13.ImportedFromIB2</string>
|
||||||
<string>14.IBPluginDependency</string>
|
<string>14.IBPluginDependency</string>
|
||||||
|
<string>14.IBViewBoundsToFrameTransform</string>
|
||||||
<string>14.ImportedFromIB2</string>
|
<string>14.ImportedFromIB2</string>
|
||||||
<string>15.IBPluginDependency</string>
|
<string>15.IBPluginDependency</string>
|
||||||
|
<string>15.IBViewBoundsToFrameTransform</string>
|
||||||
<string>15.ImportedFromIB2</string>
|
<string>15.ImportedFromIB2</string>
|
||||||
<string>16.IBPluginDependency</string>
|
<string>16.IBPluginDependency</string>
|
||||||
|
<string>16.IBViewBoundsToFrameTransform</string>
|
||||||
<string>16.ImportedFromIB2</string>
|
<string>16.ImportedFromIB2</string>
|
||||||
<string>17.IBPluginDependency</string>
|
<string>17.IBPluginDependency</string>
|
||||||
<string>18.IBPluginDependency</string>
|
<string>18.IBPluginDependency</string>
|
||||||
@@ -1331,6 +1521,7 @@
|
|||||||
<string>4.IBPluginDependency</string>
|
<string>4.IBPluginDependency</string>
|
||||||
<string>4.ImportedFromIB2</string>
|
<string>4.ImportedFromIB2</string>
|
||||||
<string>5.IBPluginDependency</string>
|
<string>5.IBPluginDependency</string>
|
||||||
|
<string>5.IBViewBoundsToFrameTransform</string>
|
||||||
<string>5.ImportedFromIB2</string>
|
<string>5.ImportedFromIB2</string>
|
||||||
<string>59.IBPluginDependency</string>
|
<string>59.IBPluginDependency</string>
|
||||||
<string>6.IBPluginDependency</string>
|
<string>6.IBPluginDependency</string>
|
||||||
@@ -1351,6 +1542,7 @@
|
|||||||
<string>69.IBViewBoundsToFrameTransform</string>
|
<string>69.IBViewBoundsToFrameTransform</string>
|
||||||
<string>69.ImportedFromIB2</string>
|
<string>69.ImportedFromIB2</string>
|
||||||
<string>7.IBPluginDependency</string>
|
<string>7.IBPluginDependency</string>
|
||||||
|
<string>7.IBViewBoundsToFrameTransform</string>
|
||||||
<string>7.ImportedFromIB2</string>
|
<string>7.ImportedFromIB2</string>
|
||||||
<string>70.IBPluginDependency</string>
|
<string>70.IBPluginDependency</string>
|
||||||
<string>74.IBPluginDependency</string>
|
<string>74.IBPluginDependency</string>
|
||||||
@@ -1360,9 +1552,24 @@
|
|||||||
<string>8.IBPluginDependency</string>
|
<string>8.IBPluginDependency</string>
|
||||||
<string>8.IBViewBoundsToFrameTransform</string>
|
<string>8.IBViewBoundsToFrameTransform</string>
|
||||||
<string>8.ImportedFromIB2</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.IBPluginDependency</string>
|
||||||
<string>9.IBViewBoundsToFrameTransform</string>
|
<string>9.IBViewBoundsToFrameTransform</string>
|
||||||
<string>9.ImportedFromIB2</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>
|
||||||
<object class="NSMutableArray" key="dict.values">
|
<object class="NSMutableArray" key="dict.values">
|
||||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
@@ -1377,14 +1584,29 @@
|
|||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwr4AAA</bytes>
|
||||||
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABBYAAAwx0AAA</bytes>
|
||||||
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABDWAAAwwYAAA</bytes>
|
||||||
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABC7gAAwwYAAA</bytes>
|
||||||
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABC6gAAwx8AAA</bytes>
|
||||||
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
@@ -1421,11 +1643,14 @@
|
|||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwpYAAA</bytes>
|
||||||
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<object class="NSAffineTransform">
|
<object class="NSAffineTransform">
|
||||||
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwfAAAA</bytes>
|
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwlwAAA</bytes>
|
||||||
</object>
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
@@ -1449,6 +1674,9 @@
|
|||||||
</object>
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABBcAAAwuYAAA</bytes>
|
||||||
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
@@ -1463,10 +1691,29 @@
|
|||||||
</object>
|
</object>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<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">
|
<object class="NSAffineTransform">
|
||||||
<bytes key="NSTransformStruct">P4AAAL+AAABBYAAAwjwAAA</bytes>
|
<bytes key="NSTransformStruct">P4AAAL+AAABBYAAAwjwAAA</bytes>
|
||||||
</object>
|
</object>
|
||||||
<boolean value="YES"/>
|
<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>
|
</object>
|
||||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||||
@@ -1485,7 +1732,7 @@
|
|||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<nil key="sourceID"/>
|
<nil key="sourceID"/>
|
||||||
<int key="maxID">78</int>
|
<int key="maxID">100</int>
|
||||||
</object>
|
</object>
|
||||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
@@ -42,7 +42,10 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
- (id)init
|
- (id)init
|
||||||
{
|
{
|
||||||
self = [super init];
|
self = [super init];
|
||||||
VTIsIntIn *vt = [[[VTIsIntIn alloc] initWithValues:[NSIndexSet indexSetWithIndex:1] reverse:YES] autorelease];
|
NSMutableIndexSet *contentsIndexes = [NSMutableIndexSet indexSet];
|
||||||
|
[contentsIndexes addIndex:1];
|
||||||
|
[contentsIndexes addIndex:2];
|
||||||
|
VTIsIntIn *vt = [[[VTIsIntIn alloc] initWithValues:contentsIndexes reverse:YES] autorelease];
|
||||||
[NSValueTransformer setValueTransformer:vt forName:@"vtScanTypeIsNotContent"];
|
[NSValueTransformer setValueTransformer:vt forName:@"vtScanTypeIsNotContent"];
|
||||||
_directoryPanel = nil;
|
_directoryPanel = nil;
|
||||||
return self;
|
return self;
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
<key>NSPrincipalClass</key>
|
<key>NSPrincipalClass</key>
|
||||||
<string>NSApplication</string>
|
<string>NSApplication</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>© Hardcoded Software, 2010</string>
|
<string>© Hardcoded Software, 2011</string>
|
||||||
<key>SUFeedURL</key>
|
<key>SUFeedURL</key>
|
||||||
<string>http://www.hardcoded.net/updates/dupeguru.appcast</string>
|
<string>http://www.hardcoded.net/updates/dupeguru.appcast</string>
|
||||||
<key>SUPublicDSAKeyFile</key>
|
<key>SUPublicDSAKeyFile</key>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
@@ -11,7 +11,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
|
|
||||||
@interface PyDupeGuru : PyDupeGuruBase
|
@interface PyDupeGuru : PyDupeGuruBase
|
||||||
//Scanning options
|
//Scanning options
|
||||||
- (void)setScanType:(NSNumber *)scan_type;
|
|
||||||
- (void)setWordWeighting:(NSNumber *)words_are_weighted;
|
- (void)setWordWeighting:(NSNumber *)words_are_weighted;
|
||||||
- (void)setMatchSimilarWords:(NSNumber *)match_similar_words;
|
- (void)setMatchSimilarWords:(NSNumber *)match_similar_words;
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
@@ -29,6 +29,7 @@ class PyDupeGuru(PyDupeGuruBase):
|
|||||||
self.py.scanner.scan_type = [
|
self.py.scanner.scan_type = [
|
||||||
ScanType.Filename,
|
ScanType.Filename,
|
||||||
ScanType.Contents,
|
ScanType.Contents,
|
||||||
|
ScanType.Folders,
|
||||||
][scan_type]
|
][scan_type]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -457,7 +457,6 @@
|
|||||||
};
|
};
|
||||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "dupeguru" */;
|
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "dupeguru" */;
|
||||||
compatibilityVersion = "Xcode 3.0";
|
compatibilityVersion = "Xcode 3.0";
|
||||||
developmentRegion = English;
|
|
||||||
hasScannedForEncodings = 1;
|
hasScannedForEncodings = 1;
|
||||||
knownRegions = (
|
knownRegions = (
|
||||||
English,
|
English,
|
||||||
|
|||||||
Binary file not shown.
@@ -2,13 +2,13 @@
|
|||||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
||||||
<data>
|
<data>
|
||||||
<int key="IBDocument.SystemTarget">1050</int>
|
<int key="IBDocument.SystemTarget">1050</int>
|
||||||
<string key="IBDocument.SystemVersion">10J567</string>
|
<string key="IBDocument.SystemVersion">10J869</string>
|
||||||
<string key="IBDocument.InterfaceBuilderVersion">823</string>
|
<string key="IBDocument.InterfaceBuilderVersion">851</string>
|
||||||
<string key="IBDocument.AppKitVersion">1038.35</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">
|
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<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>
|
||||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
@@ -34,10 +34,6 @@
|
|||||||
<string key="NSClassName">NSApplication</string>
|
<string key="NSClassName">NSApplication</string>
|
||||||
</object>
|
</object>
|
||||||
<object class="NSUserDefaultsController" id="75941798">
|
<object class="NSUserDefaultsController" id="75941798">
|
||||||
<object class="NSMutableArray" key="NSDeclaredKeys">
|
|
||||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
|
||||||
<string>DebugMode</string>
|
|
||||||
</object>
|
|
||||||
<bool key="NSSharedInstance">YES</bool>
|
<bool key="NSSharedInstance">YES</bool>
|
||||||
</object>
|
</object>
|
||||||
<object class="NSWindowTemplate" id="489014306">
|
<object class="NSWindowTemplate" id="489014306">
|
||||||
@@ -273,6 +269,16 @@
|
|||||||
<string key="NSAction">_popUpItemAction:</string>
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
<reference key="NSTarget" ref="63752222"/>
|
<reference key="NSTarget" ref="63752222"/>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="NSMenuItem" id="510059249">
|
||||||
|
<reference key="NSMenu" ref="38553798"/>
|
||||||
|
<string key="NSTitle">Folders</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<reference key="NSOnImage" ref="1002480020"/>
|
||||||
|
<reference key="NSMixedImage" ref="394002035"/>
|
||||||
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
|
<reference key="NSTarget" ref="63752222"/>
|
||||||
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<int key="NSPreferredEdge">3</int>
|
<int key="NSPreferredEdge">3</int>
|
||||||
@@ -1372,6 +1378,7 @@
|
|||||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
<reference ref="101272617"/>
|
<reference ref="101272617"/>
|
||||||
<reference ref="352817522"/>
|
<reference ref="352817522"/>
|
||||||
|
<reference ref="510059249"/>
|
||||||
</object>
|
</object>
|
||||||
<reference key="parent" ref="63752222"/>
|
<reference key="parent" ref="63752222"/>
|
||||||
</object>
|
</object>
|
||||||
@@ -1657,6 +1664,11 @@
|
|||||||
<reference key="object" ref="236967908"/>
|
<reference key="object" ref="236967908"/>
|
||||||
<reference key="parent" ref="727223254"/>
|
<reference key="parent" ref="727223254"/>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">149</int>
|
||||||
|
<reference key="object" ref="510059249"/>
|
||||||
|
<reference key="parent" ref="38553798"/>
|
||||||
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||||
@@ -1688,6 +1700,7 @@
|
|||||||
<string>145.IBViewBoundsToFrameTransform</string>
|
<string>145.IBViewBoundsToFrameTransform</string>
|
||||||
<string>145.ImportedFromIB2</string>
|
<string>145.ImportedFromIB2</string>
|
||||||
<string>146.IBPluginDependency</string>
|
<string>146.IBPluginDependency</string>
|
||||||
|
<string>149.IBPluginDependency</string>
|
||||||
<string>51.IBPluginDependency</string>
|
<string>51.IBPluginDependency</string>
|
||||||
<string>51.ImportedFromIB2</string>
|
<string>51.ImportedFromIB2</string>
|
||||||
<string>52.IBEditorWindowLastContentRect</string>
|
<string>52.IBEditorWindowLastContentRect</string>
|
||||||
@@ -1747,6 +1760,7 @@
|
|||||||
<string>76.IBPluginDependency</string>
|
<string>76.IBPluginDependency</string>
|
||||||
<string>77.IBPluginDependency</string>
|
<string>77.IBPluginDependency</string>
|
||||||
<string>78.IBPluginDependency</string>
|
<string>78.IBPluginDependency</string>
|
||||||
|
<string>79.IBEditorWindowLastContentRect</string>
|
||||||
<string>79.IBPluginDependency</string>
|
<string>79.IBPluginDependency</string>
|
||||||
<string>79.ImportedFromIB2</string>
|
<string>79.ImportedFromIB2</string>
|
||||||
<string>80.IBPluginDependency</string>
|
<string>80.IBPluginDependency</string>
|
||||||
@@ -1815,6 +1829,7 @@
|
|||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>{{88, 520}, {389, 325}}</string>
|
<string>{{88, 520}, {389, 325}}</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
@@ -1887,6 +1902,7 @@
|
|||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>{{216, 742}, {216, 63}}</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
@@ -1936,7 +1952,7 @@
|
|||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<nil key="sourceID"/>
|
<nil key="sourceID"/>
|
||||||
<int key="maxID">148</int>
|
<int key="maxID">149</int>
|
||||||
</object>
|
</object>
|
||||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||||
|
|||||||
@@ -73,3 +73,6 @@
|
|||||||
|
|
||||||
/* Class = "NSButtonCell"; title = "Debug mode (restart required)"; ObjectID = "146"; */
|
/* Class = "NSButtonCell"; title = "Debug mode (restart required)"; ObjectID = "146"; */
|
||||||
"146.title" = "Mode de déboguage (redémarrage requis)";
|
"146.title" = "Mode de déboguage (redémarrage requis)";
|
||||||
|
|
||||||
|
/* Class = "NSMenuItem"; title = "Folders"; ObjectID = "149"; */
|
||||||
|
"149.title" = "Dossiers";
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
||||||
<data>
|
<data>
|
||||||
<int key="IBDocument.SystemTarget">1050</int>
|
<int key="IBDocument.SystemTarget">1050</int>
|
||||||
<string key="IBDocument.SystemVersion">10J567</string>
|
<string key="IBDocument.SystemVersion">10J869</string>
|
||||||
<string key="IBDocument.InterfaceBuilderVersion">823</string>
|
<string key="IBDocument.InterfaceBuilderVersion">851</string>
|
||||||
<string key="IBDocument.AppKitVersion">1038.35</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">
|
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<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>
|
||||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
@@ -268,6 +268,16 @@
|
|||||||
<string key="NSAction">_popUpItemAction:</string>
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
<reference key="NSTarget" ref="63752222"/>
|
<reference key="NSTarget" ref="63752222"/>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="NSMenuItem" id="510059249">
|
||||||
|
<reference key="NSMenu" ref="38553798"/>
|
||||||
|
<string key="NSTitle">Dossiers</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<reference key="NSOnImage" ref="1002480020"/>
|
||||||
|
<reference key="NSMixedImage" ref="394002035"/>
|
||||||
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
|
<reference key="NSTarget" ref="63752222"/>
|
||||||
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<int key="NSPreferredEdge">3</int>
|
<int key="NSPreferredEdge">3</int>
|
||||||
@@ -290,7 +300,7 @@
|
|||||||
<reference key="NSControlView" ref="637819333"/>
|
<reference key="NSControlView" ref="637819333"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</int>
|
<int key="NSButtonFlags2">2</int>
|
||||||
<object class="NSCustomResource" key="NSNormalImage" id="587167894">
|
<object class="NSCustomResource" key="NSNormalImage" id="266862978">
|
||||||
<string key="NSClassName">NSImage</string>
|
<string key="NSClassName">NSImage</string>
|
||||||
<string key="NSResourceName">NSSwitch</string>
|
<string key="NSResourceName">NSSwitch</string>
|
||||||
</object>
|
</object>
|
||||||
@@ -317,7 +327,7 @@
|
|||||||
<reference key="NSControlView" ref="1067721243"/>
|
<reference key="NSControlView" ref="1067721243"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</int>
|
<int key="NSButtonFlags2">2</int>
|
||||||
<reference key="NSNormalImage" ref="587167894"/>
|
<reference key="NSNormalImage" ref="266862978"/>
|
||||||
<reference key="NSAlternateImage" ref="589920880"/>
|
<reference key="NSAlternateImage" ref="589920880"/>
|
||||||
<string key="NSAlternateContents"/>
|
<string key="NSAlternateContents"/>
|
||||||
<string key="NSKeyEquivalent"/>
|
<string key="NSKeyEquivalent"/>
|
||||||
@@ -339,7 +349,7 @@
|
|||||||
<reference key="NSControlView" ref="290008886"/>
|
<reference key="NSControlView" ref="290008886"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</int>
|
<int key="NSButtonFlags2">2</int>
|
||||||
<reference key="NSNormalImage" ref="587167894"/>
|
<reference key="NSNormalImage" ref="266862978"/>
|
||||||
<reference key="NSAlternateImage" ref="589920880"/>
|
<reference key="NSAlternateImage" ref="589920880"/>
|
||||||
<string key="NSAlternateContents"/>
|
<string key="NSAlternateContents"/>
|
||||||
<string key="NSKeyEquivalent"/>
|
<string key="NSKeyEquivalent"/>
|
||||||
@@ -361,7 +371,7 @@
|
|||||||
<reference key="NSControlView" ref="551239185"/>
|
<reference key="NSControlView" ref="551239185"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</int>
|
<int key="NSButtonFlags2">2</int>
|
||||||
<reference key="NSNormalImage" ref="587167894"/>
|
<reference key="NSNormalImage" ref="266862978"/>
|
||||||
<reference key="NSAlternateImage" ref="589920880"/>
|
<reference key="NSAlternateImage" ref="589920880"/>
|
||||||
<string key="NSAlternateContents"/>
|
<string key="NSAlternateContents"/>
|
||||||
<string key="NSKeyEquivalent"/>
|
<string key="NSKeyEquivalent"/>
|
||||||
@@ -383,7 +393,7 @@
|
|||||||
<reference key="NSControlView" ref="208488736"/>
|
<reference key="NSControlView" ref="208488736"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</int>
|
<int key="NSButtonFlags2">2</int>
|
||||||
<reference key="NSNormalImage" ref="587167894"/>
|
<reference key="NSNormalImage" ref="266862978"/>
|
||||||
<reference key="NSAlternateImage" ref="589920880"/>
|
<reference key="NSAlternateImage" ref="589920880"/>
|
||||||
<string key="NSAlternateContents"/>
|
<string key="NSAlternateContents"/>
|
||||||
<string key="NSKeyEquivalent"/>
|
<string key="NSKeyEquivalent"/>
|
||||||
@@ -405,7 +415,7 @@
|
|||||||
<reference key="NSControlView" ref="427690895"/>
|
<reference key="NSControlView" ref="427690895"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</int>
|
<int key="NSButtonFlags2">2</int>
|
||||||
<reference key="NSNormalImage" ref="587167894"/>
|
<reference key="NSNormalImage" ref="266862978"/>
|
||||||
<reference key="NSAlternateImage" ref="589920880"/>
|
<reference key="NSAlternateImage" ref="589920880"/>
|
||||||
<string key="NSAlternateContents"/>
|
<string key="NSAlternateContents"/>
|
||||||
<string key="NSKeyEquivalent"/>
|
<string key="NSKeyEquivalent"/>
|
||||||
@@ -621,7 +631,7 @@
|
|||||||
<reference key="NSControlView" ref="724127338"/>
|
<reference key="NSControlView" ref="724127338"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</int>
|
<int key="NSButtonFlags2">2</int>
|
||||||
<reference key="NSNormalImage" ref="587167894"/>
|
<reference key="NSNormalImage" ref="266862978"/>
|
||||||
<reference key="NSAlternateImage" ref="589920880"/>
|
<reference key="NSAlternateImage" ref="589920880"/>
|
||||||
<string key="NSAlternateContents"/>
|
<string key="NSAlternateContents"/>
|
||||||
<string key="NSKeyEquivalent"/>
|
<string key="NSKeyEquivalent"/>
|
||||||
@@ -643,7 +653,7 @@
|
|||||||
<reference key="NSControlView" ref="647216699"/>
|
<reference key="NSControlView" ref="647216699"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</int>
|
<int key="NSButtonFlags2">2</int>
|
||||||
<reference key="NSNormalImage" ref="587167894"/>
|
<reference key="NSNormalImage" ref="266862978"/>
|
||||||
<reference key="NSAlternateImage" ref="589920880"/>
|
<reference key="NSAlternateImage" ref="589920880"/>
|
||||||
<string key="NSAlternateContents"/>
|
<string key="NSAlternateContents"/>
|
||||||
<string key="NSKeyEquivalent"/>
|
<string key="NSKeyEquivalent"/>
|
||||||
@@ -665,7 +675,7 @@
|
|||||||
<reference key="NSControlView" ref="727223254"/>
|
<reference key="NSControlView" ref="727223254"/>
|
||||||
<int key="NSButtonFlags">1211912703</int>
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
<int key="NSButtonFlags2">2</int>
|
<int key="NSButtonFlags2">2</int>
|
||||||
<reference key="NSNormalImage" ref="587167894"/>
|
<reference key="NSNormalImage" ref="266862978"/>
|
||||||
<reference key="NSAlternateImage" ref="589920880"/>
|
<reference key="NSAlternateImage" ref="589920880"/>
|
||||||
<string key="NSAlternateContents"/>
|
<string key="NSAlternateContents"/>
|
||||||
<string key="NSKeyEquivalent"/>
|
<string key="NSKeyEquivalent"/>
|
||||||
@@ -1378,6 +1388,7 @@
|
|||||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
<reference ref="101272617"/>
|
<reference ref="101272617"/>
|
||||||
<reference ref="352817522"/>
|
<reference ref="352817522"/>
|
||||||
|
<reference ref="510059249"/>
|
||||||
</object>
|
</object>
|
||||||
<reference key="parent" ref="63752222"/>
|
<reference key="parent" ref="63752222"/>
|
||||||
</object>
|
</object>
|
||||||
@@ -1663,6 +1674,11 @@
|
|||||||
<reference key="object" ref="236967908"/>
|
<reference key="object" ref="236967908"/>
|
||||||
<reference key="parent" ref="727223254"/>
|
<reference key="parent" ref="727223254"/>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">149</int>
|
||||||
|
<reference key="object" ref="510059249"/>
|
||||||
|
<reference key="parent" ref="38553798"/>
|
||||||
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||||
@@ -1694,6 +1710,7 @@
|
|||||||
<string>145.IBViewBoundsToFrameTransform</string>
|
<string>145.IBViewBoundsToFrameTransform</string>
|
||||||
<string>145.ImportedFromIB2</string>
|
<string>145.ImportedFromIB2</string>
|
||||||
<string>146.IBPluginDependency</string>
|
<string>146.IBPluginDependency</string>
|
||||||
|
<string>149.IBPluginDependency</string>
|
||||||
<string>51.IBPluginDependency</string>
|
<string>51.IBPluginDependency</string>
|
||||||
<string>51.ImportedFromIB2</string>
|
<string>51.ImportedFromIB2</string>
|
||||||
<string>52.IBEditorWindowLastContentRect</string>
|
<string>52.IBEditorWindowLastContentRect</string>
|
||||||
@@ -1754,6 +1771,7 @@
|
|||||||
<string>76.IBPluginDependency</string>
|
<string>76.IBPluginDependency</string>
|
||||||
<string>77.IBPluginDependency</string>
|
<string>77.IBPluginDependency</string>
|
||||||
<string>78.IBPluginDependency</string>
|
<string>78.IBPluginDependency</string>
|
||||||
|
<string>79.IBEditorWindowLastContentRect</string>
|
||||||
<string>79.IBPluginDependency</string>
|
<string>79.IBPluginDependency</string>
|
||||||
<string>79.ImportedFromIB2</string>
|
<string>79.ImportedFromIB2</string>
|
||||||
<string>80.IBPluginDependency</string>
|
<string>80.IBPluginDependency</string>
|
||||||
@@ -1822,6 +1840,7 @@
|
|||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>{{88, 520}, {389, 325}}</string>
|
<string>{{88, 520}, {389, 325}}</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
@@ -1895,6 +1914,7 @@
|
|||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>{{216, 742}, {216, 63}}</string>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<boolean value="YES"/>
|
<boolean value="YES"/>
|
||||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
@@ -1944,7 +1964,7 @@
|
|||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<nil key="sourceID"/>
|
<nil key="sourceID"/>
|
||||||
<int key="maxID">148</int>
|
<int key="maxID">149</int>
|
||||||
</object>
|
</object>
|
||||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
|
|
||||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
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
|
which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2009-12-30
|
# Created On: 2009-12-30
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
20
core/app.py
20
core/app.py
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/11/11
|
# Created On: 2006/11/11
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
@@ -94,7 +94,8 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
|||||||
|
|
||||||
def _get_file(self, str_path):
|
def _get_file(self, str_path):
|
||||||
path = Path(str_path)
|
path = Path(str_path)
|
||||||
f = fs.get_file(path, self.directories.fileclasses)
|
# We add fs.Folder to fileclasses in case the file we're loading contains folder paths.
|
||||||
|
f = fs.get_file(path, self.directories.fileclasses + [fs.Folder])
|
||||||
if f is None:
|
if f is None:
|
||||||
return None
|
return None
|
||||||
try:
|
try:
|
||||||
@@ -197,12 +198,7 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
|||||||
while delete_if_empty(path, ['.DS_Store']):
|
while delete_if_empty(path, ['.DS_Store']):
|
||||||
path = path[:-1]
|
path = path[:-1]
|
||||||
|
|
||||||
def copy_or_move(self, dupe, copy, destination, dest_type):
|
def copy_or_move(self, dupe, copy: bool, destination: str, dest_type: DestType):
|
||||||
"""
|
|
||||||
copy: True = Copy False = Move
|
|
||||||
destination: string.
|
|
||||||
dest_type: DestType constants
|
|
||||||
"""
|
|
||||||
source_path = dupe.path
|
source_path = dupe.path
|
||||||
location_path = first(p for p in self.directories if dupe.path in p)
|
location_path = first(p for p in self.directories if dupe.path in p)
|
||||||
dest_path = Path(destination)
|
dest_path = Path(destination)
|
||||||
@@ -214,6 +210,9 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
|||||||
dest_path = dest_path + source_base
|
dest_path = dest_path + source_base
|
||||||
if not io.exists(dest_path):
|
if not io.exists(dest_path):
|
||||||
io.makedirs(dest_path)
|
io.makedirs(dest_path)
|
||||||
|
# Add filename to dest_path. For file move/copy, it's not required, but for folders, yes.
|
||||||
|
dest_path = dest_path + source_path[-1]
|
||||||
|
logging.debug("Copy/Move operation from '%s' to '%s'", source_path, dest_path)
|
||||||
# Raises an EnvironmentError if there's a problem
|
# Raises an EnvironmentError if there's a problem
|
||||||
if copy:
|
if copy:
|
||||||
smart_copy(source_path, dest_path)
|
smart_copy(source_path, dest_path)
|
||||||
@@ -368,7 +367,10 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
|||||||
def start_scanning(self):
|
def start_scanning(self):
|
||||||
def do(j):
|
def do(j):
|
||||||
j.set_progress(0, tr("Collecting files to scan"))
|
j.set_progress(0, tr("Collecting files to scan"))
|
||||||
files = list(self.directories.get_files())
|
if self.scanner.scan_type == scanner.ScanType.Folders:
|
||||||
|
files = list(self.directories.get_folders())
|
||||||
|
else:
|
||||||
|
files = list(self.directories.get_files())
|
||||||
if self.options['ignore_hardlink_matches']:
|
if self.options['ignore_hardlink_matches']:
|
||||||
files = self._remove_hardlink_dupes(files)
|
files = self._remove_hardlink_dupes(files)
|
||||||
logging.info('Scanning %d files' % len(files))
|
logging.info('Scanning %d files' % len(files))
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/11/11
|
# Created On: 2006/11/11
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2010-02-02
|
# Created On: 2010-02-02
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/03/15
|
# Created On: 2006/03/15
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/02/27
|
# Created On: 2006/02/27
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
@@ -15,9 +15,10 @@ from hscommon.util import FileOrPath
|
|||||||
|
|
||||||
from . import fs
|
from . import fs
|
||||||
|
|
||||||
(STATE_NORMAL,
|
class DirectoryState:
|
||||||
STATE_REFERENCE,
|
Normal = 0
|
||||||
STATE_EXCLUDED) = range(3)
|
Reference = 1
|
||||||
|
Excluded = 2
|
||||||
|
|
||||||
class AlreadyThereError(Exception):
|
class AlreadyThereError(Exception):
|
||||||
"""The path being added is already in the directory list"""
|
"""The path being added is already in the directory list"""
|
||||||
@@ -51,11 +52,11 @@ class Directories:
|
|||||||
def _default_state_for_path(self, path):
|
def _default_state_for_path(self, path):
|
||||||
# Override this in subclasses to specify the state of some special folders.
|
# Override this in subclasses to specify the state of some special folders.
|
||||||
if path[-1].startswith('.'): # hidden
|
if path[-1].startswith('.'): # hidden
|
||||||
return STATE_EXCLUDED
|
return DirectoryState.Excluded
|
||||||
|
|
||||||
def _get_files(self, from_path):
|
def _get_files(self, from_path):
|
||||||
state = self.get_state(from_path)
|
state = self.get_state(from_path)
|
||||||
if state == STATE_EXCLUDED:
|
if state == DirectoryState.Excluded:
|
||||||
# Recursively get files from folders with lots of subfolder is expensive. However, there
|
# Recursively get files from folders with lots of subfolder is expensive. However, there
|
||||||
# might be a subfolder in this path that is not excluded. What we want to do is to skim
|
# might be a subfolder in this path that is not excluded. What we want to do is to skim
|
||||||
# through self.states and see if we must continue, or we can stop right here to save time
|
# through self.states and see if we must continue, or we can stop right here to save time
|
||||||
@@ -63,11 +64,11 @@ class Directories:
|
|||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
filepaths = set()
|
filepaths = set()
|
||||||
if state != STATE_EXCLUDED:
|
if state != DirectoryState.Excluded:
|
||||||
found_files = fs.get_files(from_path, fileclasses=self.fileclasses)
|
found_files = fs.get_files(from_path, fileclasses=self.fileclasses)
|
||||||
logging.debug("Collected {} files in folder {}".format(len(found_files), str(from_path)))
|
logging.debug("Collected %d files in folder %s", len(found_files), str(from_path))
|
||||||
for file in found_files:
|
for file in found_files:
|
||||||
file.is_ref = state == STATE_REFERENCE
|
file.is_ref = state == DirectoryState.Reference
|
||||||
filepaths.add(file.path)
|
filepaths.add(file.path)
|
||||||
yield file
|
yield file
|
||||||
subpaths = [from_path + name for name in io.listdir(from_path)]
|
subpaths = [from_path + name for name in io.listdir(from_path)]
|
||||||
@@ -79,6 +80,19 @@ class Directories:
|
|||||||
except (EnvironmentError, fs.InvalidPath):
|
except (EnvironmentError, fs.InvalidPath):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def _get_folders(self, from_folder):
|
||||||
|
try:
|
||||||
|
for subfolder in from_folder.subfolders:
|
||||||
|
for folder in self._get_folders(subfolder):
|
||||||
|
yield folder
|
||||||
|
state = self.get_state(from_folder.path)
|
||||||
|
if state != DirectoryState.Excluded:
|
||||||
|
from_folder.is_ref = state == DirectoryState.Reference
|
||||||
|
logging.debug("Yielding Folder %r state: %d", from_folder, state)
|
||||||
|
yield from_folder
|
||||||
|
except (EnvironmentError, fs.InvalidPath):
|
||||||
|
pass
|
||||||
|
|
||||||
#---Public
|
#---Public
|
||||||
def add_path(self, path):
|
def add_path(self, path):
|
||||||
"""Adds 'path' to self, if not already there.
|
"""Adds 'path' to self, if not already there.
|
||||||
@@ -113,6 +127,16 @@ class Directories:
|
|||||||
for file in self._get_files(path):
|
for file in self._get_files(path):
|
||||||
yield file
|
yield file
|
||||||
|
|
||||||
|
def get_folders(self):
|
||||||
|
"""Returns a list of all folders that are not excluded.
|
||||||
|
|
||||||
|
Returned folders also have their 'is_ref' attr set.
|
||||||
|
"""
|
||||||
|
for path in self._dirs:
|
||||||
|
from_folder = fs.Folder(path)
|
||||||
|
for folder in self._get_folders(from_folder):
|
||||||
|
yield folder
|
||||||
|
|
||||||
def get_state(self, path):
|
def get_state(self, path):
|
||||||
"""Returns the state of 'path' (One of the STATE_* const.)
|
"""Returns the state of 'path' (One of the STATE_* const.)
|
||||||
"""
|
"""
|
||||||
@@ -125,7 +149,7 @@ class Directories:
|
|||||||
if parent in self:
|
if parent in self:
|
||||||
return self.get_state(parent)
|
return self.get_state(parent)
|
||||||
else:
|
else:
|
||||||
return STATE_NORMAL
|
return DirectoryState.Normal
|
||||||
|
|
||||||
def has_any_file(self):
|
def has_any_file(self):
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/01/29
|
# Created On: 2006/01/29
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/09/16
|
# Created On: 2006/09/16
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
61
core/fs.py
61
core/fs.py
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2009-10-22
|
# Created On: 2009-10-22
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
@@ -63,6 +63,9 @@ class File:
|
|||||||
self._md5partial_offset = 0x4000 #16Kb
|
self._md5partial_offset = 0x4000 #16Kb
|
||||||
self._md5partial_size = 0x4000 #16Kb
|
self._md5partial_size = 0x4000 #16Kb
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "<{} {}>".format(self.__class__.__name__, str(self.path))
|
||||||
|
|
||||||
def __getattr__(self, attrname):
|
def __getattr__(self, attrname):
|
||||||
# Only called when attr is not there
|
# Only called when attr is not there
|
||||||
if attrname in self.INITIAL_INFO:
|
if attrname in self.INITIAL_INFO:
|
||||||
@@ -147,6 +150,53 @@ class File:
|
|||||||
return self.path[-1]
|
return self.path[-1]
|
||||||
|
|
||||||
|
|
||||||
|
class Folder(File):
|
||||||
|
"""A wrapper around a folder path.
|
||||||
|
|
||||||
|
It has the size/md5 info of a File, but it's value are the sum of its subitems.
|
||||||
|
"""
|
||||||
|
def __init__(self, path):
|
||||||
|
File.__init__(self, path)
|
||||||
|
self._subfolders = None
|
||||||
|
|
||||||
|
def _all_items(self):
|
||||||
|
folders = self.subfolders
|
||||||
|
files = get_files(self.path)
|
||||||
|
return folders + files
|
||||||
|
|
||||||
|
def _read_info(self, field):
|
||||||
|
if field in {'size', 'mtime'}:
|
||||||
|
size = sum((f.size for f in self._all_items()), 0)
|
||||||
|
self.size = size
|
||||||
|
stats = io.stat(self.path)
|
||||||
|
self.mtime = nonone(stats.st_mtime, 0)
|
||||||
|
elif field in {'md5', 'md5partial'}:
|
||||||
|
# What's sensitive here is that we must make sure that subfiles'
|
||||||
|
# md5 are always added up in the same order, but we also want a
|
||||||
|
# different md5 if a file gets moved in a different subdirectory.
|
||||||
|
def get_dir_md5_concat():
|
||||||
|
items = self._all_items()
|
||||||
|
items.sort(key=lambda f:f.path)
|
||||||
|
md5s = [getattr(f, field) for f in items]
|
||||||
|
return b''.join(md5s)
|
||||||
|
|
||||||
|
md5 = hashlib.md5(get_dir_md5_concat())
|
||||||
|
digest = md5.digest()
|
||||||
|
setattr(self, field, digest)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def subfolders(self):
|
||||||
|
if self._subfolders is None:
|
||||||
|
subpaths = [self.path + name for name in io.listdir(self.path)]
|
||||||
|
subfolders = [p for p in subpaths if not io.islink(p) and io.isdir(p)]
|
||||||
|
self._subfolders = [Folder(p) for p in subfolders]
|
||||||
|
return self._subfolders
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def can_handle(cls, path):
|
||||||
|
return not io.islink(path) and io.isdir(path)
|
||||||
|
|
||||||
|
|
||||||
def get_file(path, fileclasses=[File]):
|
def get_file(path, fileclasses=[File]):
|
||||||
for fileclass in fileclasses:
|
for fileclass in fileclasses:
|
||||||
if fileclass.can_handle(path):
|
if fileclass.can_handle(path):
|
||||||
@@ -172,12 +222,3 @@ def get_files(path, fileclasses=[File]):
|
|||||||
return result
|
return result
|
||||||
except EnvironmentError:
|
except EnvironmentError:
|
||||||
raise InvalidPath(path)
|
raise InvalidPath(path)
|
||||||
|
|
||||||
def get_all_files(path, fileclasses=[File]):
|
|
||||||
files = get_files(path, fileclasses=fileclasses)
|
|
||||||
filepaths = set(f.path for f in files)
|
|
||||||
subpaths = [path + name for name in io.listdir(path)]
|
|
||||||
# it's possible that a folder (bundle) gets into the file list. in that case, we don't want to recurse into it
|
|
||||||
subfolders = [p for p in subpaths if not io.islink(p) and io.isdir(p) and p not in filepaths]
|
|
||||||
subfiles = flatten(get_all_files(subpath, fileclasses=fileclasses) for subpath in subfolders)
|
|
||||||
return subfiles + files
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2010-02-06
|
# Created On: 2010-02-06
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2010-02-05
|
# Created On: 2010-02-05
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2010-02-06
|
# Created On: 2010-02-06
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
@@ -9,10 +8,10 @@
|
|||||||
|
|
||||||
from hscommon.gui.tree import Tree, Node
|
from hscommon.gui.tree import Tree, Node
|
||||||
|
|
||||||
from ..directories import STATE_NORMAL, STATE_REFERENCE, STATE_EXCLUDED
|
from ..directories import DirectoryState
|
||||||
from .base import GUIObject
|
from .base import GUIObject
|
||||||
|
|
||||||
STATE_ORDER = [STATE_NORMAL, STATE_REFERENCE, STATE_EXCLUDED]
|
STATE_ORDER = [DirectoryState.Normal, DirectoryState.Reference, DirectoryState.Excluded]
|
||||||
|
|
||||||
# Lazily loads children
|
# Lazily loads children
|
||||||
class DirectoryNode(Node):
|
class DirectoryNode(Node):
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2010-04-12
|
# Created On: 2010-04-12
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2010-04-12
|
# Created On: 2010-04-12
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2010-02-11
|
# Created On: 2010-02-11
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
@@ -102,6 +102,10 @@ class ResultTable(GUIObject, GUITable):
|
|||||||
|
|
||||||
def rename_selected(self, newname):
|
def rename_selected(self, newname):
|
||||||
row = self.selected_row
|
row = self.selected_row
|
||||||
|
if row is None:
|
||||||
|
# There's all kinds of way the current row can be swept off during rename. When it
|
||||||
|
# happens, selected_row will be None.
|
||||||
|
return False
|
||||||
row._data = None
|
row._data = None
|
||||||
row._data_delta = None
|
row._data_delta = None
|
||||||
return self.app.rename_selected(newname)
|
return self.app.rename_selected(newname)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2010-02-11
|
# Created On: 2010-02-11
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/05/02
|
# Created On: 2006/05/02
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/02/23
|
# Created On: 2006/02/23
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
@@ -8,10 +8,13 @@
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
|
import os
|
||||||
|
import os.path as op
|
||||||
from xml.etree import ElementTree as ET
|
from xml.etree import ElementTree as ET
|
||||||
|
|
||||||
from . import engine
|
from . import engine
|
||||||
from jobprogress.job import nulljob
|
from jobprogress.job import nulljob
|
||||||
|
from hscommon.conflict import get_conflicted_name
|
||||||
from hscommon.markable import Markable
|
from hscommon.markable import Markable
|
||||||
from hscommon.util import flatten, nonone, FileOrPath, format_size
|
from hscommon.util import flatten, nonone, FileOrPath, format_size
|
||||||
from hscommon.trans import tr
|
from hscommon.trans import tr
|
||||||
@@ -304,8 +307,22 @@ class Results(Markable):
|
|||||||
match_elem.set('second', str(dupe2index[match.second]))
|
match_elem.set('second', str(dupe2index[match.second]))
|
||||||
match_elem.set('percentage', str(int(match.percentage)))
|
match_elem.set('percentage', str(int(match.percentage)))
|
||||||
tree = ET.ElementTree(root)
|
tree = ET.ElementTree(root)
|
||||||
with FileOrPath(outfile, 'wb') as fp:
|
|
||||||
tree.write(fp, encoding='utf-8')
|
def do_write(outfile):
|
||||||
|
with FileOrPath(outfile, 'wb') as fp:
|
||||||
|
tree.write(fp, encoding='utf-8')
|
||||||
|
|
||||||
|
try:
|
||||||
|
do_write(outfile)
|
||||||
|
except IOError as e:
|
||||||
|
if e.errno == 21: # outfile is a directory
|
||||||
|
p = str(outfile)
|
||||||
|
dirname, basename = op.split(p)
|
||||||
|
otherfiles = os.listdir(dirname)
|
||||||
|
newname = get_conflicted_name(otherfiles, basename)
|
||||||
|
do_write(op.join(dirname, newname))
|
||||||
|
else:
|
||||||
|
raise
|
||||||
self.is_modified = False
|
self.is_modified = False
|
||||||
|
|
||||||
def sort_dupes(self, key, asc=True, delta=False):
|
def sort_dupes(self, key, asc=True, delta=False):
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/03/03
|
# Created On: 2006/03/03
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
@@ -17,15 +17,23 @@ from hscommon.trans import tr
|
|||||||
from . import engine
|
from . import engine
|
||||||
from .ignore import IgnoreList
|
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:
|
class ScanType:
|
||||||
Filename = 0
|
Filename = 0
|
||||||
Fields = 1
|
Fields = 1
|
||||||
FieldsNoOrder = 2
|
FieldsNoOrder = 2
|
||||||
Tag = 3
|
Tag = 3
|
||||||
# number 4 is obsolete
|
Folders = 4
|
||||||
Contents = 5
|
Contents = 5
|
||||||
ContentsAudio = 6
|
ContentsAudio = 6
|
||||||
|
|
||||||
|
#PE
|
||||||
|
FuzzyBlock = 10
|
||||||
|
ExifTimestamp = 11
|
||||||
|
|
||||||
SCANNABLE_TAGS = ['track', 'artist', 'album', 'title', 'genre', 'year']
|
SCANNABLE_TAGS = ['track', 'artist', 'album', 'title', 'genre', 'year']
|
||||||
|
|
||||||
RE_DIGIT_ENDING = re.compile(r'\d+|\(\d+\)|\[\d+\]|{\d+}')
|
RE_DIGIT_ENDING = re.compile(r'\d+|\(\d+\)|\[\d+\]|{\d+}')
|
||||||
@@ -48,8 +56,8 @@ class Scanner:
|
|||||||
for f in j.iter_with_progress(files, tr("Read size of %d/%d files")):
|
for f in j.iter_with_progress(files, tr("Read size of %d/%d files")):
|
||||||
f.size # pre-read, makes a smoother progress if read here (especially for bundles)
|
f.size # pre-read, makes a smoother progress if read here (especially for bundles)
|
||||||
files = [f for f in files if f.size >= self.size_threshold]
|
files = [f for f in files if f.size >= self.size_threshold]
|
||||||
if self.scan_type in (ScanType.Contents, ScanType.ContentsAudio):
|
if self.scan_type in {ScanType.Contents, ScanType.ContentsAudio, ScanType.Folders}:
|
||||||
sizeattr = 'size' if self.scan_type == ScanType.Contents else 'audiosize'
|
sizeattr = 'audiosize' if self.scan_type == ScanType.ContentsAudio else 'size'
|
||||||
return engine.getmatches_by_contents(files, sizeattr, partial=self.scan_type==ScanType.ContentsAudio, j=j)
|
return engine.getmatches_by_contents(files, sizeattr, partial=self.scan_type==ScanType.ContentsAudio, j=j)
|
||||||
else:
|
else:
|
||||||
j = j.start_subjob([2, 8])
|
j = j.start_subjob([2, 8])
|
||||||
@@ -92,10 +100,22 @@ class Scanner:
|
|||||||
j = j.start_subjob([8, 2])
|
j = j.start_subjob([8, 2])
|
||||||
for f in [f for f in files if not hasattr(f, 'is_ref')]:
|
for f in [f for f in files if not hasattr(f, 'is_ref')]:
|
||||||
f.is_ref = False
|
f.is_ref = False
|
||||||
logging.info('Getting matches')
|
logging.info("Getting matches. Scan type: %d", self.scan_type)
|
||||||
matches = self._getmatches(files, j)
|
matches = self._getmatches(files, j)
|
||||||
logging.info('Found %d matches' % len(matches))
|
logging.info('Found %d matches' % len(matches))
|
||||||
j.set_progress(100, tr("Removing false matches"))
|
j.set_progress(100, tr("Removing false matches"))
|
||||||
|
if self.scan_type == ScanType.Folders and matches:
|
||||||
|
allpath = {m.first.path for m in matches}
|
||||||
|
allpath |= {m.second.path for m in matches}
|
||||||
|
sortedpaths = sorted(allpath)
|
||||||
|
toremove = set()
|
||||||
|
last_parent_path = sortedpaths[0]
|
||||||
|
for p in sortedpaths[1:]:
|
||||||
|
if p in last_parent_path:
|
||||||
|
toremove.add(p)
|
||||||
|
else:
|
||||||
|
last_parent_path = p
|
||||||
|
matches = [m for m in matches if m.first.path not in toremove or m.second.path not in toremove]
|
||||||
if not self.mix_file_kind:
|
if not self.mix_file_kind:
|
||||||
matches = [m for m in matches if get_file_ext(m.first.name) == get_file_ext(m.second.name)]
|
matches = [m for m in matches if get_file_ext(m.first.name) == get_file_ext(m.second.name)]
|
||||||
matches = [m for m in matches if io.exists(m.first.path) and io.exists(m.second.path)]
|
matches = [m for m in matches if io.exists(m.first.path) and io.exists(m.second.path)]
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2007-06-23
|
# Created On: 2007-06-23
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
@@ -91,8 +91,8 @@ class TestCaseDupeGuru:
|
|||||||
dgapp.copy_or_move(f, True, 'some_destination', 0)
|
dgapp.copy_or_move(f, True, 'some_destination', 0)
|
||||||
eq_(1, len(hscommon.conflict.smart_copy.calls))
|
eq_(1, len(hscommon.conflict.smart_copy.calls))
|
||||||
call = hscommon.conflict.smart_copy.calls[0]
|
call = hscommon.conflict.smart_copy.calls[0]
|
||||||
eq_('some_destination', call['dest_path'])
|
eq_(call['dest_path'], op.join('some_destination', 'foo'))
|
||||||
eq_(f.path, call['source_path'])
|
eq_(call['source_path'], f.path)
|
||||||
|
|
||||||
def test_copy_or_move_clean_empty_dirs(self, tmpdir, monkeypatch):
|
def test_copy_or_move_clean_empty_dirs(self, tmpdir, monkeypatch):
|
||||||
tmppath = Path(str(tmpdir))
|
tmppath = Path(str(tmpdir))
|
||||||
@@ -136,6 +136,14 @@ class TestCaseDupeGuru:
|
|||||||
app.start_scanning()
|
app.start_scanning()
|
||||||
eq_(len(app.results.groups), 0)
|
eq_(len(app.results.groups), 0)
|
||||||
|
|
||||||
|
def test_rename_when_nothing_is_selected(self):
|
||||||
|
# Issue #140
|
||||||
|
# It's possible that rename operation has its selected row swept off from under it, thus
|
||||||
|
# making the selected row None. Don't crash when it happens.
|
||||||
|
dgapp = DupeGuru()
|
||||||
|
rtable = ResultTable(CallLogger(), dgapp)
|
||||||
|
# selected_row is None because there's no result.
|
||||||
|
assert not rtable.rename_selected('foo') # no crash
|
||||||
|
|
||||||
class TestCaseDupeGuru_clean_empty_dirs:
|
class TestCaseDupeGuru_clean_empty_dirs:
|
||||||
def pytest_funcarg__do_setup(self, request):
|
def pytest_funcarg__do_setup(self, request):
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2009-10-23
|
# Created On: 2009-10-23
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/02/27
|
# Created On: 2006/02/27
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
@@ -122,52 +122,52 @@ def test_states():
|
|||||||
d = Directories()
|
d = Directories()
|
||||||
p = testpath + 'onefile'
|
p = testpath + 'onefile'
|
||||||
d.add_path(p)
|
d.add_path(p)
|
||||||
eq_(STATE_NORMAL,d.get_state(p))
|
eq_(DirectoryState.Normal ,d.get_state(p))
|
||||||
d.set_state(p,STATE_REFERENCE)
|
d.set_state(p, DirectoryState.Reference)
|
||||||
eq_(STATE_REFERENCE,d.get_state(p))
|
eq_(DirectoryState.Reference ,d.get_state(p))
|
||||||
eq_(STATE_REFERENCE,d.get_state(p + 'dir1'))
|
eq_(DirectoryState.Reference ,d.get_state(p + 'dir1'))
|
||||||
eq_(1,len(d.states))
|
eq_(1,len(d.states))
|
||||||
eq_(p,list(d.states.keys())[0])
|
eq_(p,list(d.states.keys())[0])
|
||||||
eq_(STATE_REFERENCE,d.states[p])
|
eq_(DirectoryState.Reference ,d.states[p])
|
||||||
|
|
||||||
def test_get_state_with_path_not_there():
|
def test_get_state_with_path_not_there():
|
||||||
# When the path's not there, just return STATE_NORMAL
|
# When the path's not there, just return DirectoryState.Normal
|
||||||
d = Directories()
|
d = Directories()
|
||||||
d.add_path(testpath + 'onefile')
|
d.add_path(testpath + 'onefile')
|
||||||
eq_(d.get_state(testpath), STATE_NORMAL)
|
eq_(d.get_state(testpath), DirectoryState.Normal)
|
||||||
|
|
||||||
def test_states_remain_when_larger_directory_eat_smaller_ones():
|
def test_states_remain_when_larger_directory_eat_smaller_ones():
|
||||||
d = Directories()
|
d = Directories()
|
||||||
p = testpath + 'onefile'
|
p = testpath + 'onefile'
|
||||||
d.add_path(p)
|
d.add_path(p)
|
||||||
d.set_state(p,STATE_EXCLUDED)
|
d.set_state(p, DirectoryState.Excluded)
|
||||||
d.add_path(testpath)
|
d.add_path(testpath)
|
||||||
d.set_state(testpath,STATE_REFERENCE)
|
d.set_state(testpath, DirectoryState.Reference)
|
||||||
eq_(STATE_EXCLUDED,d.get_state(p))
|
eq_(DirectoryState.Excluded ,d.get_state(p))
|
||||||
eq_(STATE_EXCLUDED,d.get_state(p + 'dir1'))
|
eq_(DirectoryState.Excluded ,d.get_state(p + 'dir1'))
|
||||||
eq_(STATE_REFERENCE,d.get_state(testpath))
|
eq_(DirectoryState.Reference ,d.get_state(testpath))
|
||||||
|
|
||||||
def test_set_state_keep_state_dict_size_to_minimum():
|
def test_set_state_keep_state_dict_size_to_minimum():
|
||||||
d = Directories()
|
d = Directories()
|
||||||
p = testpath + 'fs'
|
p = testpath + 'fs'
|
||||||
d.add_path(p)
|
d.add_path(p)
|
||||||
d.set_state(p,STATE_REFERENCE)
|
d.set_state(p, DirectoryState.Reference)
|
||||||
d.set_state(p + 'dir1',STATE_REFERENCE)
|
d.set_state(p + 'dir1', DirectoryState.Reference)
|
||||||
eq_(1,len(d.states))
|
eq_(1,len(d.states))
|
||||||
eq_(STATE_REFERENCE,d.get_state(p + 'dir1'))
|
eq_(DirectoryState.Reference ,d.get_state(p + 'dir1'))
|
||||||
d.set_state(p + 'dir1',STATE_NORMAL)
|
d.set_state(p + 'dir1', DirectoryState.Normal)
|
||||||
eq_(2,len(d.states))
|
eq_(2,len(d.states))
|
||||||
eq_(STATE_NORMAL,d.get_state(p + 'dir1'))
|
eq_(DirectoryState.Normal ,d.get_state(p + 'dir1'))
|
||||||
d.set_state(p + 'dir1',STATE_REFERENCE)
|
d.set_state(p + 'dir1', DirectoryState.Reference)
|
||||||
eq_(1,len(d.states))
|
eq_(1,len(d.states))
|
||||||
eq_(STATE_REFERENCE,d.get_state(p + 'dir1'))
|
eq_(DirectoryState.Reference ,d.get_state(p + 'dir1'))
|
||||||
|
|
||||||
def test_get_files():
|
def test_get_files():
|
||||||
d = Directories()
|
d = Directories()
|
||||||
p = testpath + 'fs'
|
p = testpath + 'fs'
|
||||||
d.add_path(p)
|
d.add_path(p)
|
||||||
d.set_state(p + 'dir1',STATE_REFERENCE)
|
d.set_state(p + 'dir1', DirectoryState.Reference)
|
||||||
d.set_state(p + 'dir2',STATE_EXCLUDED)
|
d.set_state(p + 'dir2', DirectoryState.Excluded)
|
||||||
files = list(d.get_files())
|
files = list(d.get_files())
|
||||||
eq_(5, len(files))
|
eq_(5, len(files))
|
||||||
for f in files:
|
for f in files:
|
||||||
@@ -176,11 +176,26 @@ def test_get_files():
|
|||||||
else:
|
else:
|
||||||
assert not f.is_ref
|
assert not f.is_ref
|
||||||
|
|
||||||
|
def test_get_folders():
|
||||||
|
d = Directories()
|
||||||
|
p = testpath + 'fs'
|
||||||
|
d.add_path(p)
|
||||||
|
d.set_state(p + 'dir1', DirectoryState.Reference)
|
||||||
|
d.set_state(p + 'dir2', DirectoryState.Excluded)
|
||||||
|
folders = list(d.get_folders())
|
||||||
|
eq_(len(folders), 3)
|
||||||
|
ref = [f for f in folders if f.is_ref]
|
||||||
|
not_ref = [f for f in folders if not f.is_ref]
|
||||||
|
eq_(len(ref), 1)
|
||||||
|
eq_(ref[0].path, p + 'dir1')
|
||||||
|
eq_(len(not_ref), 2)
|
||||||
|
eq_(ref[0].size, 1)
|
||||||
|
|
||||||
def test_get_files_with_inherited_exclusion():
|
def test_get_files_with_inherited_exclusion():
|
||||||
d = Directories()
|
d = Directories()
|
||||||
p = testpath + 'onefile'
|
p = testpath + 'onefile'
|
||||||
d.add_path(p)
|
d.add_path(p)
|
||||||
d.set_state(p,STATE_EXCLUDED)
|
d.set_state(p, DirectoryState.Excluded)
|
||||||
eq_([], list(d.get_files()))
|
eq_([], list(d.get_files()))
|
||||||
|
|
||||||
def test_save_and_load(tmpdir):
|
def test_save_and_load(tmpdir):
|
||||||
@@ -192,14 +207,14 @@ def test_save_and_load(tmpdir):
|
|||||||
io.mkdir(p2)
|
io.mkdir(p2)
|
||||||
d1.add_path(p1)
|
d1.add_path(p1)
|
||||||
d1.add_path(p2)
|
d1.add_path(p2)
|
||||||
d1.set_state(p1, STATE_REFERENCE)
|
d1.set_state(p1, DirectoryState.Reference)
|
||||||
d1.set_state(p1 + 'dir1',STATE_EXCLUDED)
|
d1.set_state(p1 + 'dir1', DirectoryState.Excluded)
|
||||||
tmpxml = str(tmpdir.join('directories_testunit.xml'))
|
tmpxml = str(tmpdir.join('directories_testunit.xml'))
|
||||||
d1.save_to_file(tmpxml)
|
d1.save_to_file(tmpxml)
|
||||||
d2.load_from_file(tmpxml)
|
d2.load_from_file(tmpxml)
|
||||||
eq_(2, len(d2))
|
eq_(2, len(d2))
|
||||||
eq_(STATE_REFERENCE,d2.get_state(p1))
|
eq_(DirectoryState.Reference ,d2.get_state(p1))
|
||||||
eq_(STATE_EXCLUDED,d2.get_state(p1 + 'dir1'))
|
eq_(DirectoryState.Excluded ,d2.get_state(p1 + 'dir1'))
|
||||||
|
|
||||||
def test_invalid_path():
|
def test_invalid_path():
|
||||||
d = Directories()
|
d = Directories()
|
||||||
@@ -211,7 +226,7 @@ def test_invalid_path():
|
|||||||
def test_set_state_on_invalid_path():
|
def test_set_state_on_invalid_path():
|
||||||
d = Directories()
|
d = Directories()
|
||||||
try:
|
try:
|
||||||
d.set_state(Path('foobar',),STATE_NORMAL)
|
d.set_state(Path('foobar',), DirectoryState.Normal)
|
||||||
except LookupError:
|
except LookupError:
|
||||||
assert False
|
assert False
|
||||||
|
|
||||||
@@ -237,7 +252,7 @@ def test_unicode_save(tmpdir):
|
|||||||
io.mkdir(p1)
|
io.mkdir(p1)
|
||||||
io.mkdir(p1 + 'foo\xe9')
|
io.mkdir(p1 + 'foo\xe9')
|
||||||
d.add_path(p1)
|
d.add_path(p1)
|
||||||
d.set_state(p1 + 'foo\xe9', STATE_EXCLUDED)
|
d.set_state(p1 + 'foo\xe9', DirectoryState.Excluded)
|
||||||
tmpxml = str(tmpdir.join('directories_testunit.xml'))
|
tmpxml = str(tmpdir.join('directories_testunit.xml'))
|
||||||
try:
|
try:
|
||||||
d.save_to_file(tmpxml)
|
d.save_to_file(tmpxml)
|
||||||
@@ -268,17 +283,17 @@ def test_get_state_returns_excluded_by_default_for_hidden_directories(tmpdir):
|
|||||||
hidden_dir_path = p + '.foo'
|
hidden_dir_path = p + '.foo'
|
||||||
io.mkdir(p + '.foo')
|
io.mkdir(p + '.foo')
|
||||||
d.add_path(p)
|
d.add_path(p)
|
||||||
eq_(d.get_state(hidden_dir_path), STATE_EXCLUDED)
|
eq_(d.get_state(hidden_dir_path), DirectoryState.Excluded)
|
||||||
# But it can be overriden
|
# But it can be overriden
|
||||||
d.set_state(hidden_dir_path, STATE_NORMAL)
|
d.set_state(hidden_dir_path, DirectoryState.Normal)
|
||||||
eq_(d.get_state(hidden_dir_path), STATE_NORMAL)
|
eq_(d.get_state(hidden_dir_path), DirectoryState.Normal)
|
||||||
|
|
||||||
def test_default_path_state_override(tmpdir):
|
def test_default_path_state_override(tmpdir):
|
||||||
# It's possible for a subclass to override the default state of a path
|
# It's possible for a subclass to override the default state of a path
|
||||||
class MyDirectories(Directories):
|
class MyDirectories(Directories):
|
||||||
def _default_state_for_path(self, path):
|
def _default_state_for_path(self, path):
|
||||||
if 'foobar' in path:
|
if 'foobar' in path:
|
||||||
return STATE_EXCLUDED
|
return DirectoryState.Excluded
|
||||||
|
|
||||||
d = MyDirectories()
|
d = MyDirectories()
|
||||||
p1 = Path(str(tmpdir))
|
p1 = Path(str(tmpdir))
|
||||||
@@ -287,11 +302,11 @@ def test_default_path_state_override(tmpdir):
|
|||||||
io.mkdir(p1 + 'foobaz')
|
io.mkdir(p1 + 'foobaz')
|
||||||
io.open(p1 + 'foobaz/somefile', 'w').close()
|
io.open(p1 + 'foobaz/somefile', 'w').close()
|
||||||
d.add_path(p1)
|
d.add_path(p1)
|
||||||
eq_(d.get_state(p1 + 'foobaz'), STATE_NORMAL)
|
eq_(d.get_state(p1 + 'foobaz'), DirectoryState.Normal)
|
||||||
eq_(d.get_state(p1 + 'foobar'), STATE_EXCLUDED)
|
eq_(d.get_state(p1 + 'foobar'), DirectoryState.Excluded)
|
||||||
eq_(len(list(d.get_files())), 1) # only the 'foobaz' file is there
|
eq_(len(list(d.get_files())), 1) # only the 'foobaz' file is there
|
||||||
# However, the default state can be changed
|
# However, the default state can be changed
|
||||||
d.set_state(p1 + 'foobar', STATE_NORMAL)
|
d.set_state(p1 + 'foobar', DirectoryState.Normal)
|
||||||
eq_(d.get_state(p1 + 'foobar'), STATE_NORMAL)
|
eq_(d.get_state(p1 + 'foobar'), DirectoryState.Normal)
|
||||||
eq_(len(list(d.get_files())), 2)
|
eq_(len(list(d.get_files())), 2)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/01/29
|
# Created On: 2006/01/29
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2009-10-23
|
# Created On: 2009-10-23
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
@@ -11,14 +10,13 @@ import hashlib
|
|||||||
|
|
||||||
from hscommon.path import Path
|
from hscommon.path import Path
|
||||||
from hscommon.testutil import eq_
|
from hscommon.testutil import eq_
|
||||||
from core.fs import File
|
|
||||||
from core.tests.directories_test import create_fake_fs
|
from core.tests.directories_test import create_fake_fs
|
||||||
|
|
||||||
from .. import fs
|
from .. import fs
|
||||||
|
|
||||||
def test_size_aggregates_subfiles(tmpdir):
|
def test_size_aggregates_subfiles(tmpdir):
|
||||||
p = create_fake_fs(Path(str(tmpdir)))
|
p = create_fake_fs(Path(str(tmpdir)))
|
||||||
b = fs.Bundle(p)
|
b = fs.Folder(p)
|
||||||
eq_(b.size, 12)
|
eq_(b.size, 12)
|
||||||
|
|
||||||
def test_md5_aggregate_subfiles_sorted(tmpdir):
|
def test_md5_aggregate_subfiles_sorted(tmpdir):
|
||||||
@@ -26,18 +24,22 @@ def test_md5_aggregate_subfiles_sorted(tmpdir):
|
|||||||
#all files' md5 it contains, but it must make sure that it does so in the
|
#all files' md5 it contains, but it must make sure that it does so in the
|
||||||
#same order everytime.
|
#same order everytime.
|
||||||
p = create_fake_fs(Path(str(tmpdir)))
|
p = create_fake_fs(Path(str(tmpdir)))
|
||||||
b = fs.Bundle(p)
|
b = fs.Folder(p)
|
||||||
md5s = File(p + ('dir1', 'file1.test')).md5
|
md51 = fs.File(p + ('dir1', 'file1.test')).md5
|
||||||
md5s += File(p + ('dir2', 'file2.test')).md5
|
md52 = fs.File(p + ('dir2', 'file2.test')).md5
|
||||||
md5s += File(p + ('dir3', 'file3.test')).md5
|
md53 = fs.File(p + ('dir3', 'file3.test')).md5
|
||||||
md5s += File(p + 'file1.test').md5
|
md54 = fs.File(p + 'file1.test').md5
|
||||||
md5s += File(p + 'file2.test').md5
|
md55 = fs.File(p + 'file2.test').md5
|
||||||
md5s += File(p + 'file3.test').md5
|
md56 = fs.File(p + 'file3.test').md5
|
||||||
md5 = hashlib.md5(md5s)
|
# The expected md5 is the md5 of md5s for folders and the direct md5 for files
|
||||||
|
folder_md51 = hashlib.md5(md51).digest()
|
||||||
|
folder_md52 = hashlib.md5(md52).digest()
|
||||||
|
folder_md53 = hashlib.md5(md53).digest()
|
||||||
|
md5 = hashlib.md5(folder_md51+folder_md52+folder_md53+md54+md55+md56)
|
||||||
eq_(b.md5, md5.digest())
|
eq_(b.md5, md5.digest())
|
||||||
|
|
||||||
def test_has_file_attrs(tmpdir):
|
def test_has_file_attrs(tmpdir):
|
||||||
#a Bundle must behave like a file, so it must have mtime attributes
|
#a Folder must behave like a file, so it must have mtime attributes
|
||||||
b = fs.Bundle(Path(str(tmpdir)))
|
b = fs.Folder(Path(str(tmpdir)))
|
||||||
assert b.mtime > 0
|
assert b.mtime > 0
|
||||||
eq_(b.extension, '')
|
eq_(b.extension, '')
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/05/02
|
# Created On: 2006/05/02
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/02/23
|
# Created On: 2006/02/23
|
||||||
# $Id$
|
# $Id$
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
@@ -77,6 +77,18 @@ class TestCaseResultsEmpty:
|
|||||||
self.results.groups = []
|
self.results.groups = []
|
||||||
assert not self.results.is_modified
|
assert not self.results.is_modified
|
||||||
|
|
||||||
|
def test_save_to_same_name_as_folder(self, tmpdir):
|
||||||
|
# Issue #149
|
||||||
|
# When saving to a filename that already exists, the file is overwritten. However, when
|
||||||
|
# the name exists but that it's a folder, then there used to be a crash. The proper fix
|
||||||
|
# would have been some kind of feedback to the user, but the work involved for something
|
||||||
|
# that simply never happens (I never received a report of this crash, I experienced it
|
||||||
|
# while fooling around) is too much. Instead, use standard name conflict resolution.
|
||||||
|
folderpath = tmpdir.join('foo')
|
||||||
|
folderpath.mkdir()
|
||||||
|
self.results.save_to_xml(str(folderpath)) # no crash
|
||||||
|
assert tmpdir.join('[000] foo').check()
|
||||||
|
|
||||||
|
|
||||||
class TestCaseResultsWithSomeGroups:
|
class TestCaseResultsWithSomeGroups:
|
||||||
def setup_method(self, method):
|
def setup_method(self, method):
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/03/03
|
# Created On: 2006/03/03
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
@@ -471,3 +471,27 @@ def test_dont_group_files_that_dont_exist(tmpdir):
|
|||||||
s._getmatches = getmatches
|
s._getmatches = getmatches
|
||||||
|
|
||||||
assert not s.GetDupeGroups([file1, file2])
|
assert not s.GetDupeGroups([file1, file2])
|
||||||
|
|
||||||
|
def test_folder_scan_exclude_subfolder_matches(fake_fileexists):
|
||||||
|
# when doing a Folders scan type, don't include matches for folders whose parent folder already
|
||||||
|
# match.
|
||||||
|
s = Scanner()
|
||||||
|
s.scan_type = ScanType.Folders
|
||||||
|
topf1 = no("top folder 1", size=42)
|
||||||
|
topf1.md5 = topf1.md5partial = b"some_md5_1"
|
||||||
|
topf1.path = Path('/topf1')
|
||||||
|
topf2 = no("top folder 2", size=42)
|
||||||
|
topf2.md5 = topf2.md5partial = b"some_md5_1"
|
||||||
|
topf2.path = Path('/topf2')
|
||||||
|
subf1 = no("sub folder 1", size=41)
|
||||||
|
subf1.md5 = subf1.md5partial = b"some_md5_2"
|
||||||
|
subf1.path = Path('/topf1/sub')
|
||||||
|
subf2 = no("sub folder 2", size=41)
|
||||||
|
subf2.md5 = subf2.md5partial = b"some_md5_2"
|
||||||
|
subf2.path = Path('/topf2/sub')
|
||||||
|
eq_(len(s.GetDupeGroups([topf1, topf2, subf1, subf2])), 1) # only top folders
|
||||||
|
# however, if another folder matches a subfolder, keep in in the matches
|
||||||
|
otherf = no("other folder", size=41)
|
||||||
|
otherf.md5 = otherf.md5partial = b"some_md5_2"
|
||||||
|
otherf.path = Path('/otherfolder')
|
||||||
|
eq_(len(s.GetDupeGroups([topf1, topf2, subf1, subf2, otherf])), 2)
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
__version__ = '6.0.0'
|
__version__ = '6.0.1'
|
||||||
__appname__ = 'dupeGuru Music Edition'
|
__appname__ = 'dupeGuru Music Edition'
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/11/16
|
# Created On: 2006/11/16
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2006/03/15
|
# Created On: 2006/03/15
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Created By: Virgil Dupras
|
# Created By: Virgil Dupras
|
||||||
# Created On: 2009-10-23
|
# Created On: 2009-10-23
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
|
||||||
#
|
#
|
||||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
# 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
|
# which should be included with this package. The terms are also available at
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user