mirror of
https://github.com/arsenetar/dupeguru.git
synced 2026-01-25 08:01:39 +00:00
Compare commits
115 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
573d088088 | ||
|
|
75b08125c0 | ||
|
|
20320f539f | ||
|
|
24771af955 | ||
|
|
2bfe9960f1 | ||
|
|
215bcb0d76 | ||
|
|
2dbf8b80ae | ||
|
|
470cd92030 | ||
|
|
111edc3ce5 | ||
|
|
df30a31782 | ||
|
|
91f3a59523 | ||
|
|
3441e51c0e | ||
|
|
a99c40b5d8 | ||
|
|
5b4de58c38 | ||
|
|
cd83b16dbd | ||
|
|
b67db988ab | ||
|
|
7ebea44cb0 | ||
|
|
4de40af1b0 | ||
|
|
54988650d7 | ||
|
|
a47c208f45 | ||
|
|
c321427a8f | ||
|
|
26c77a18fd | ||
|
|
9f19451ac7 | ||
|
|
bcd9d7e7d0 | ||
|
|
b42b0be512 | ||
|
|
d90764a9ea | ||
|
|
c5c4e02bf4 | ||
|
|
fae3a6ac3a | ||
|
|
09b91aab66 | ||
|
|
b5a219cc00 | ||
|
|
9cb62e0544 | ||
|
|
653668dd96 | ||
|
|
5a5a74d0e1 | ||
|
|
5247ac8abd | ||
|
|
f992599beb | ||
|
|
51f8c51ef3 | ||
|
|
fcdc692b61 | ||
|
|
deb5260c6a | ||
|
|
81df280ea6 | ||
|
|
4f097a3a89 | ||
|
|
8cd1e13814 | ||
|
|
7e81e6c93f | ||
|
|
b19d6c9a27 | ||
|
|
977fb606eb | ||
|
|
9e7d27dcda | ||
|
|
caf04f0d3f | ||
|
|
a2553da578 | ||
|
|
3cd44705f8 | ||
|
|
0cf6987083 | ||
|
|
a67f7e2c9e | ||
|
|
5a3b6883fa | ||
|
|
b0f9a94375 | ||
|
|
ad5c4a954c | ||
|
|
292d993dce | ||
|
|
1fe42f673f | ||
|
|
244af5b652 | ||
|
|
abe9041a67 | ||
|
|
a2d73b216c | ||
|
|
f08b593acb | ||
|
|
cb35dc7897 | ||
|
|
903ecd9eae | ||
|
|
79e9251511 | ||
|
|
81daef6145 | ||
|
|
6a7af81685 | ||
|
|
b3db7c6842 | ||
|
|
85e5b4cfa7 | ||
|
|
79e6020982 | ||
|
|
b7e7e67c99 | ||
|
|
1017e3c730 | ||
|
|
b74e33f4b0 | ||
|
|
2d0facdb14 | ||
|
|
c34004ed94 | ||
|
|
4db5fae38b | ||
|
|
5d5670d4be | ||
|
|
e21a7e18b4 | ||
|
|
a29ed235f6 | ||
|
|
fd706e752f | ||
|
|
729db49183 | ||
|
|
a68e4310ee | ||
|
|
500314859d | ||
|
|
b6d457f908 | ||
|
|
6850c7e2f8 | ||
|
|
9e5630fe99 | ||
|
|
f1a21e62cd | ||
|
|
7cc2defa35 | ||
|
|
24a11ee4bd | ||
|
|
e2b23ca961 | ||
|
|
8fabb14b8b | ||
|
|
07de7d6f0e | ||
|
|
e0b844f617 | ||
|
|
a7bc76bf7c | ||
|
|
89fb531f3d | ||
|
|
f22baa8d5a | ||
|
|
7c2e601a30 | ||
|
|
16e4a5fddd | ||
|
|
4200f2a090 | ||
|
|
45c8291645 | ||
|
|
89f8214bce | ||
|
|
16e1ee93d0 | ||
|
|
222ae73590 | ||
|
|
21c0292154 | ||
|
|
a7eb90894a | ||
|
|
64baf2a10c | ||
|
|
392a802ef1 | ||
|
|
8efeab7b40 | ||
|
|
8a86ecee38 | ||
|
|
3e79b57409 | ||
|
|
362e020585 | ||
|
|
df5c8ddf22 | ||
|
|
70cc48d51f | ||
|
|
dccffd9516 | ||
|
|
04056c1597 | ||
|
|
69b2e37368 | ||
|
|
05478591a4 | ||
|
|
ead3b1e651 |
20
.hgignore
20
.hgignore
@@ -6,9 +6,8 @@ run.py
|
||||
*.so
|
||||
*.mo
|
||||
*.pyd
|
||||
.tm_*
|
||||
*.xcodeproj/xcuserdata
|
||||
*.xcodeproj/project.xcworkspace/xcuserdata
|
||||
*.waf*
|
||||
.lock-waf*
|
||||
conf.json
|
||||
build
|
||||
dist
|
||||
@@ -17,21 +16,6 @@ installer_tmp-cache
|
||||
cocoa/autogen
|
||||
cocoa/*/Info.plist
|
||||
cocoa/*/build
|
||||
cocoa/*/*.app
|
||||
cocoa/*/dg_cocoa.plugin
|
||||
cocoa/*/fr.lproj/*.xib
|
||||
cocoa/*/de.lproj/*.xib
|
||||
cocoa/*/zh_CN.lproj/*.xib
|
||||
cocoa/*/cs.lproj/*.xib
|
||||
cocoa/*/it.lproj/*.xib
|
||||
cs.lproj
|
||||
de.lproj
|
||||
fr.lproj
|
||||
it.lproj
|
||||
hy.lproj
|
||||
ru.lproj
|
||||
uk.lproj
|
||||
zh_CN.lproj
|
||||
qt/base/*_rc.py
|
||||
help/*/conf.py
|
||||
help/*/changelog.rst
|
||||
6
.hgtags
6
.hgtags
@@ -74,3 +74,9 @@ fad463ae749b7189dce92f1e42a57ac4ee03987d se3.3.3
|
||||
c153aef25e5c9911f2197d13899591c50cf38ffc se3.4.1
|
||||
71b7e18613f3790cea18cb0dd8c9c986ce237267 me6.3.1
|
||||
c3d9f91dc9c9d60f370c72bc211f09be3e4fc18d se3.5.0
|
||||
254bce83ad6e56c102d69fd603f6845e2324b470 me6.4.0
|
||||
e772f1de86744999ffbbe5845554417965b1dfba me6.4.1
|
||||
c8a9a4d355927e509f514308c82306192bc71f92 pe2.6.0
|
||||
a618e954f01e4bbdbe9a03e5667a67d62be995a7 me6.4.2
|
||||
0f18c4498a6c7529bf77207db70aed8a5ec96ee4 se3.6.0
|
||||
8f478379ec62fd1329d527aafb1ab0f2410f3a79 me6.5.0
|
||||
|
||||
6
README
6
README
@@ -37,11 +37,11 @@ General dependencies
|
||||
OS X prerequisites
|
||||
------------------
|
||||
|
||||
- XCode 4.1
|
||||
- Sparkle (http://sparkle.andymatuschak.org/)
|
||||
- XCode's command line tools
|
||||
- objp 1.1.0 (http://bitbucket.org/hsoft/objp)
|
||||
- pluginbuilder 1.1.0 (http://bitbucket.org/hsoft/pluginbuilder)
|
||||
- appscript 1.0.0 for ME and PE (http://appscript.sourceforge.net/)
|
||||
- xibless 0.4.0 (https://bitbucket.org/hsoft/xibless)
|
||||
|
||||
Windows prerequisites
|
||||
---------------------
|
||||
@@ -86,7 +86,7 @@ ended up with problems.
|
||||
Whenever you have a problem, always double-check that you're running the correct python version.
|
||||
You'll probably have to tweak your $PATH.
|
||||
|
||||
To setup a build machine under Ubuntu 12.04 and up, install those packages: python3, python3-pyqt4,
|
||||
To setup a build machine under Ubuntu 12.04 and up, install those packages: python3-dev, python3-pyqt4,
|
||||
pyqt4-dev-tools, mercurial and then python3-setuptools. Once you've done that, install pip with
|
||||
`easy_install`. Once you've done that, you can then perform "The easy way!" installation.
|
||||
|
||||
|
||||
195
build.py
195
build.py
@@ -18,9 +18,11 @@ from setuptools import setup, Extension
|
||||
|
||||
from hscommon import sphinxgen
|
||||
from hscommon.build import (add_to_pythonpath, print_and_do, copy_packages, filereplace,
|
||||
get_module_version, build_all_cocoa_locs, move_all, copy_sysconfig_files_for_embed, copy_all,
|
||||
move)
|
||||
get_module_version, move_all, copy_sysconfig_files_for_embed, copy_all, move, copy,
|
||||
OSXAppStructure, build_cocoalib_xibless, fix_qt_resource_file)
|
||||
from hscommon import loc
|
||||
from hscommon.plat import ISOSX
|
||||
from hscommon.util import ensure_folder
|
||||
|
||||
def parse_args():
|
||||
usage = "usage: %prog [options]"
|
||||
@@ -31,8 +33,12 @@ def parse_args():
|
||||
help="Build only the help file")
|
||||
parser.add_option('--loc', action='store_true', dest='loc',
|
||||
help="Build only localization")
|
||||
parser.add_option('--cocoamod', action='store_true', dest='cocoamod',
|
||||
help="Build only Cocoa modules")
|
||||
parser.add_option('--cocoa-ext', action='store_true', dest='cocoa_ext',
|
||||
help="Build only Cocoa extensions")
|
||||
parser.add_option('--cocoa-compile', action='store_true', dest='cocoa_compile',
|
||||
help="Build only Cocoa executable")
|
||||
parser.add_option('--xibless', action='store_true', dest='xibless',
|
||||
help="Build only xibless UIs")
|
||||
parser.add_option('--updatepot', action='store_true', dest='updatepot',
|
||||
help="Generate .pot files from source code.")
|
||||
parser.add_option('--mergepot', action='store_true', dest='mergepot',
|
||||
@@ -40,17 +46,60 @@ def parse_args():
|
||||
(options, args) = parser.parse_args()
|
||||
return options
|
||||
|
||||
def cocoa_compile_command(edition):
|
||||
return '{0} waf configure --edition {1} && {0} waf'.format(sys.executable, edition)
|
||||
|
||||
def cocoa_app(edition):
|
||||
app_path = {
|
||||
'se': 'build/dupeGuru.app',
|
||||
'me': 'build/dupeGuru ME.app',
|
||||
'pe': 'build/dupeGuru PE.app',
|
||||
}[edition]
|
||||
return OSXAppStructure(app_path)
|
||||
|
||||
def build_xibless(edition, dest='cocoa/autogen'):
|
||||
import xibless
|
||||
ensure_folder(dest)
|
||||
FNPAIRS = [
|
||||
('ignore_list_dialog.py', 'IgnoreListDialog_UI'),
|
||||
('deletion_options.py', 'DeletionOptions_UI'),
|
||||
('problem_dialog.py', 'ProblemDialog_UI'),
|
||||
('directory_panel.py', 'DirectoryPanel_UI'),
|
||||
('prioritize_dialog.py', 'PrioritizeDialog_UI'),
|
||||
('result_window.py', 'ResultWindow_UI'),
|
||||
('main_menu.py', 'MainMenu_UI'),
|
||||
('preferences_panel.py', 'PreferencesPanel_UI'),
|
||||
]
|
||||
for srcname, dstname in FNPAIRS:
|
||||
xibless.generate(op.join('cocoa', 'base', 'ui', srcname), op.join(dest, dstname),
|
||||
localizationTable='Localizable', args={'edition': edition})
|
||||
if edition == 'pe':
|
||||
xibless.generate('cocoa/pe/ui/details_panel.py', op.join(dest, 'DetailsPanel_UI'), localizationTable='Localizable')
|
||||
else:
|
||||
xibless.generate('cocoa/base/ui/details_panel.py', op.join(dest, 'DetailsPanel_UI'), localizationTable='Localizable')
|
||||
|
||||
def build_cocoa(edition, dev):
|
||||
print("Creating OS X app structure")
|
||||
ed = lambda s: s.format(edition)
|
||||
app = cocoa_app(edition)
|
||||
app_version = get_module_version(ed('core_{}'))
|
||||
cocoa_project_path = ed('cocoa/{}')
|
||||
filereplace(op.join(cocoa_project_path, 'InfoTemplate.plist'), op.join('build', 'Info.plist'), version=app_version)
|
||||
app.create(op.join('build', 'Info.plist'))
|
||||
print("Building localizations")
|
||||
build_localizations('cocoa', edition)
|
||||
print("Building xibless UIs")
|
||||
build_cocoalib_xibless()
|
||||
build_xibless(edition)
|
||||
print("Building Python extensions")
|
||||
build_cocoa_proxy_module()
|
||||
build_cocoa_bridging_interfaces(edition)
|
||||
print("Building the cocoa layer")
|
||||
from pluginbuilder import copy_embeddable_python_dylib, get_python_header_folder, collect_dependencies
|
||||
from pluginbuilder import copy_embeddable_python_dylib, collect_dependencies
|
||||
copy_embeddable_python_dylib('build')
|
||||
if not op.exists('build/PythonHeaders'):
|
||||
os.symlink(get_python_header_folder(), 'build/PythonHeaders')
|
||||
if not op.exists('build/py'):
|
||||
os.mkdir('build/py')
|
||||
cocoa_project_path = 'cocoa/{0}'.format(edition)
|
||||
pydep_folder = op.join(app.resources, 'py')
|
||||
if not op.exists(pydep_folder):
|
||||
os.mkdir(pydep_folder)
|
||||
shutil.copy(op.join(cocoa_project_path, 'dg_cocoa.py'), 'build')
|
||||
specific_packages = {
|
||||
'se': ['core_se'],
|
||||
@@ -60,39 +109,34 @@ def build_cocoa(edition, dev):
|
||||
tocopy = ['core', 'hscommon', 'cocoa/inter', 'cocoalib/cocoa'] + specific_packages
|
||||
copy_packages(tocopy, 'build')
|
||||
sys.path.insert(0, 'build')
|
||||
collect_dependencies('build/dg_cocoa.py', 'build/py', excludes=['PyQt4'])
|
||||
collect_dependencies('build/dg_cocoa.py', pydep_folder, excludes=['PyQt4'])
|
||||
del sys.path[0]
|
||||
if dev:
|
||||
copy_packages(tocopy, 'build/py', create_links=True)
|
||||
copy_packages(tocopy, pydep_folder, create_links=True)
|
||||
# Views are not referenced by python code, so they're not found by the collector.
|
||||
copy_all('build/inter/*.so', 'build/py/inter')
|
||||
copy_sysconfig_files_for_embed('build/py')
|
||||
os.chdir(cocoa_project_path)
|
||||
print('Generating Info.plist')
|
||||
app_version = get_module_version('core_{}'.format(edition))
|
||||
filereplace('InfoTemplate.plist', 'Info.plist', version=app_version)
|
||||
print("Building the XCode project")
|
||||
args = ['-project dupeguru.xcodeproj']
|
||||
if dev:
|
||||
args.append('-configuration dev')
|
||||
else:
|
||||
args.append('-configuration release')
|
||||
args = ' '.join(args)
|
||||
os.system('xcodebuild {0}'.format(args))
|
||||
os.chdir('../..')
|
||||
copy_all('build/inter/*.so', op.join(pydep_folder, 'inter'))
|
||||
copy_sysconfig_files_for_embed(pydep_folder)
|
||||
print("Compiling with WAF")
|
||||
os.chdir('cocoa')
|
||||
print_and_do(cocoa_compile_command(edition))
|
||||
os.chdir('..')
|
||||
app.copy_executable('cocoa/build/dupeGuru')
|
||||
print("Copying resources and frameworks")
|
||||
image_path = ed('cocoa/{}/dupeguru.icns')
|
||||
resources = [image_path, 'cocoa/base/dsa_pub.pem', 'build/dg_cocoa.py', 'build/help']
|
||||
app.copy_resources(*resources, use_symlinks=dev)
|
||||
app.copy_frameworks('build/Python', 'cocoalib/Sparkle.framework')
|
||||
print("Creating the run.py file")
|
||||
app_path = {
|
||||
'se': 'cocoa/se/dupeGuru.app',
|
||||
'me': 'cocoa/me/dupeGuru\\ ME.app',
|
||||
'pe': 'cocoa/pe/dupeGuru\\ PE.app',
|
||||
}[edition]
|
||||
tmpl = open('run_template_cocoa.py', 'rt').read()
|
||||
run_contents = tmpl.replace('{{app_path}}', app_path)
|
||||
run_contents = tmpl.replace('{{app_path}}', app.dest)
|
||||
open('run.py', 'wt').write(run_contents)
|
||||
|
||||
def build_qt(edition, dev):
|
||||
print("Building localizations")
|
||||
build_localizations('qt', edition)
|
||||
print("Building Qt stuff")
|
||||
print_and_do("pyrcc4 -py3 {0} > {1}".format(op.join('qt', 'base', 'dg.qrc'), op.join('qt', 'base', 'dg_rc.py')))
|
||||
fix_qt_resource_file(op.join('qt', 'base', 'dg_rc.py'))
|
||||
print("Creating the run.py file")
|
||||
tmpl = open('run_template_qt.py', 'rt').read()
|
||||
run_contents = tmpl.replace('{{edition}}', edition)
|
||||
@@ -112,36 +156,55 @@ def build_help(edition):
|
||||
conftmpl = op.join(current_path, 'help', 'conf.tmpl')
|
||||
sphinxgen.gen(help_basepath, help_destpath, changelog_path, tixurl, confrepl, conftmpl, changelogtmpl)
|
||||
|
||||
def build_localizations(ui, edition):
|
||||
print("Building localizations")
|
||||
def build_base_localizations():
|
||||
loc.compile_all_po('locale')
|
||||
loc.compile_all_po(op.join('hscommon', 'locale'))
|
||||
loc.merge_locale_dir(op.join('hscommon', 'locale'), 'locale')
|
||||
if ui == 'cocoa':
|
||||
|
||||
def build_cocoa_localizations(edition):
|
||||
print("Creating lproj folders based on .po files")
|
||||
app = cocoa_app(edition)
|
||||
en_stringsfile = op.join('cocoa', 'base', 'en.lproj', 'Localizable.strings')
|
||||
en_cocoastringsfile = op.join('cocoalib', 'en.lproj', 'cocoalib.strings')
|
||||
for lang in loc.get_langs('locale'):
|
||||
if lang == 'en':
|
||||
continue
|
||||
pofile = op.join('locale', lang, 'LC_MESSAGES', 'ui.po')
|
||||
for edition_folder in ['base', 'se', 'me', 'pe']:
|
||||
enlproj = op.join('cocoa', edition_folder, 'en.lproj')
|
||||
dest_lproj = op.join('cocoa', edition_folder, lang + '.lproj')
|
||||
loc.po2allxibstrings(pofile, enlproj, dest_lproj)
|
||||
if edition_folder == 'base':
|
||||
loc.po2strings(pofile, op.join(enlproj, 'Localizable.strings'), op.join(dest_lproj, 'Localizable.strings'))
|
||||
dest_lproj = op.join(app.resources, lang + '.lproj')
|
||||
ensure_folder(dest_lproj)
|
||||
loc.po2strings(pofile, en_stringsfile, op.join(dest_lproj, 'Localizable.strings'))
|
||||
pofile = op.join('cocoalib', 'locale', lang, 'LC_MESSAGES', 'cocoalib.po')
|
||||
loc.po2allxibstrings(pofile, op.join('cocoalib', 'en.lproj'), op.join('cocoalib', lang + '.lproj'))
|
||||
build_all_cocoa_locs('cocoalib')
|
||||
build_all_cocoa_locs(op.join('cocoa', 'base'))
|
||||
build_all_cocoa_locs(op.join('cocoa', edition))
|
||||
elif ui == 'qt':
|
||||
loc.po2strings(pofile, en_cocoastringsfile, op.join(dest_lproj, 'cocoalib.strings'))
|
||||
# We also have to copy the "en.lproj" strings
|
||||
en_lproj = op.join(app.resources, 'en.lproj')
|
||||
ensure_folder(en_lproj)
|
||||
copy(en_stringsfile, en_lproj)
|
||||
copy(en_cocoastringsfile, en_lproj)
|
||||
|
||||
def build_qt_localizations():
|
||||
loc.compile_all_po(op.join('qtlib', 'locale'))
|
||||
loc.merge_locale_dir(op.join('qtlib', 'locale'), 'locale')
|
||||
if op.exists(op.join('build', 'locale')):
|
||||
shutil.rmtree(op.join('build', 'locale'))
|
||||
shutil.copytree('locale', op.join('build', 'locale'), ignore=shutil.ignore_patterns('*.po', '*.pot'))
|
||||
|
||||
def build_localizations(ui, edition):
|
||||
build_base_localizations()
|
||||
if ui == 'cocoa':
|
||||
build_cocoa_localizations(edition)
|
||||
locale_dest = op.join(cocoa_app(edition).resources, 'locale')
|
||||
elif ui == 'qt':
|
||||
build_qt_localizations()
|
||||
locale_dest = op.join('build', 'locale')
|
||||
if op.exists(locale_dest):
|
||||
shutil.rmtree(locale_dest)
|
||||
shutil.copytree('locale', locale_dest, ignore=shutil.ignore_patterns('*.po', '*.pot'))
|
||||
|
||||
def build_updatepot():
|
||||
if ISOSX:
|
||||
print("Updating Cocoa strings file.")
|
||||
# We need to have strings from *all* editions in here, so we'll call xibless for all editions
|
||||
# in dummy subfolders.
|
||||
build_cocoalib_xibless('cocoalib/autogen')
|
||||
loc.generate_cocoa_strings_from_code('cocoalib', 'cocoalib/en.lproj')
|
||||
for edition in ('se', 'me', 'pe'):
|
||||
build_xibless(edition, op.join('cocoa', 'autogen', edition))
|
||||
loc.generate_cocoa_strings_from_code('cocoa', 'cocoa/base/en.lproj')
|
||||
print("Building .pot files from source files")
|
||||
print("Building core.pot")
|
||||
all_cores = ['core', 'core_se', 'core_me', 'core_pe']
|
||||
@@ -155,14 +218,14 @@ def build_updatepot():
|
||||
loc.generate_pot(['hscommon'], op.join('hscommon', 'locale', 'hscommon.pot'), ['tr'])
|
||||
print("Building qtlib.pot")
|
||||
loc.generate_pot(['qtlib'], op.join('qtlib', 'locale', 'qtlib.pot'), ['tr'])
|
||||
if ISOSX:
|
||||
print("Building cocoalib.pot")
|
||||
loc.allstrings2pot(op.join('cocoalib', 'en.lproj'), op.join('cocoalib', 'locale', 'cocoalib.pot'))
|
||||
cocoalib_pot = op.join('cocoalib', 'locale', 'cocoalib.pot')
|
||||
os.remove(cocoalib_pot)
|
||||
loc.strings2pot(op.join('cocoalib', 'en.lproj', 'cocoalib.strings'), cocoalib_pot)
|
||||
print("Enhancing ui.pot with Cocoa's strings files")
|
||||
loc.allstrings2pot(op.join('cocoa', 'base', 'en.lproj'), op.join('locale', 'ui.pot'),
|
||||
excludes={'core', 'message', 'columns'})
|
||||
loc.allstrings2pot(op.join('cocoa', 'se', 'en.lproj'), op.join('locale', 'ui.pot'))
|
||||
loc.allstrings2pot(op.join('cocoa', 'me', 'en.lproj'), op.join('locale', 'ui.pot'))
|
||||
loc.allstrings2pot(op.join('cocoa', 'pe', 'en.lproj'), op.join('locale', 'ui.pot'))
|
||||
loc.strings2pot(op.join('cocoa', 'base', 'en.lproj', 'Localizable.strings'),
|
||||
op.join('locale', 'ui.pot'))
|
||||
|
||||
def build_mergepot():
|
||||
print("Updating .po files using .pot files")
|
||||
@@ -186,9 +249,10 @@ def build_cocoa_proxy_module():
|
||||
import objp.p2o
|
||||
objp.p2o.generate_python_proxy_code('cocoalib/cocoa/CocoaProxy.h', 'build/CocoaProxy.m')
|
||||
build_cocoa_ext("CocoaProxy", 'cocoalib/cocoa',
|
||||
['cocoalib/cocoa/CocoaProxy.m', 'build/CocoaProxy.m', 'build/ObjP.m', 'cocoalib/HSErrorReportWindow.m'],
|
||||
['cocoalib/cocoa/CocoaProxy.m', 'build/CocoaProxy.m', 'build/ObjP.m',
|
||||
'cocoalib/HSErrorReportWindow.m', 'cocoa/autogen/HSErrorReportWindow_UI.m'],
|
||||
['AppKit', 'CoreServices'],
|
||||
['cocoalib'])
|
||||
['cocoalib', 'cocoa/autogen'])
|
||||
|
||||
def build_cocoa_bridging_interfaces(edition):
|
||||
print("Building Cocoa Bridging Interfaces")
|
||||
@@ -250,7 +314,6 @@ def build_normal(edition, ui, dev):
|
||||
print("Building dupeGuru {0} with UI {1}".format(edition.upper(), ui))
|
||||
add_to_pythonpath('.')
|
||||
build_help(edition)
|
||||
build_localizations(ui, edition)
|
||||
print("Building dupeGuru")
|
||||
if edition == 'pe':
|
||||
build_pe_modules(ui)
|
||||
@@ -280,9 +343,17 @@ def main():
|
||||
build_updatepot()
|
||||
elif options.mergepot:
|
||||
build_mergepot()
|
||||
elif options.cocoamod:
|
||||
elif options.cocoa_ext:
|
||||
build_cocoa_proxy_module()
|
||||
build_cocoa_bridging_interfaces(edition)
|
||||
elif options.cocoa_compile:
|
||||
os.chdir('cocoa')
|
||||
print_and_do(cocoa_compile_command(edition))
|
||||
os.chdir('..')
|
||||
cocoa_app(edition).copy_executable('cocoa/build/dupeGuru')
|
||||
elif options.xibless:
|
||||
build_cocoalib_xibless()
|
||||
build_xibless(edition)
|
||||
else:
|
||||
build_normal(edition, ui, dev)
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import <Sparkle/SUUpdater.h>
|
||||
#import "PyDupeGuru.h"
|
||||
#import "ResultWindow.h"
|
||||
#import "DetailsPanel.h"
|
||||
@@ -17,9 +18,9 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
@interface AppDelegateBase : NSObject
|
||||
{
|
||||
IBOutlet NSMenu *recentResultsMenu;
|
||||
IBOutlet NSMenu *actionsMenu;
|
||||
IBOutlet NSMenu *columnsMenu;
|
||||
NSMenu *recentResultsMenu;
|
||||
NSMenu *columnsMenu;
|
||||
SUUpdater *updater;
|
||||
|
||||
PyDupeGuru *model;
|
||||
ResultWindowBase *_resultWindow;
|
||||
@@ -31,7 +32,12 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
HSRecentFiles *_recentResults;
|
||||
}
|
||||
|
||||
@property (readwrite, retain) NSMenu *recentResultsMenu;
|
||||
@property (readwrite, retain) NSMenu *columnsMenu;
|
||||
@property (readwrite, retain) SUUpdater *updater;
|
||||
|
||||
/* Virtual */
|
||||
+ (NSDictionary *)defaultPreferences;
|
||||
- (PyDupeGuru *)model;
|
||||
- (ResultWindowBase *)createResultWindow;
|
||||
- (DirectoryPanel *)createDirectoryPanel;
|
||||
@@ -39,11 +45,11 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
- (NSString *)homepageURL;
|
||||
|
||||
/* Public */
|
||||
- (void)finalizeInit;
|
||||
- (ResultWindowBase *)resultWindow;
|
||||
- (DirectoryPanel *)directoryPanel;
|
||||
- (DetailsPanel *)detailsPanel;
|
||||
- (HSRecentFiles *)recentResults;
|
||||
- (NSMenu *)columnsMenu;
|
||||
|
||||
/* Delegate */
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification;
|
||||
@@ -53,15 +59,15 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
- (void)recentFileClicked:(NSString *)path;
|
||||
|
||||
/* Actions */
|
||||
- (IBAction)loadResults:(id)sender;
|
||||
- (IBAction)openWebsite:(id)sender;
|
||||
- (IBAction)openHelp:(id)sender;
|
||||
- (IBAction)showAboutBox:(id)sender;
|
||||
- (IBAction)showDirectoryWindow:(id)sender;
|
||||
- (IBAction)showPreferencesPanel:(id)sender;
|
||||
- (IBAction)showResultWindow:(id)sender;
|
||||
- (IBAction)showIgnoreList:(id)sender;
|
||||
- (IBAction)startScanning:(id)sender;
|
||||
- (void)loadResults;
|
||||
- (void)openWebsite;
|
||||
- (void)openHelp;
|
||||
- (void)showAboutBox;
|
||||
- (void)showDirectoryWindow;
|
||||
- (void)showPreferencesPanel;
|
||||
- (void)showResultWindow;
|
||||
- (void)showIgnoreList;
|
||||
- (void)startScanning;
|
||||
|
||||
/* model --> view */
|
||||
- (void)showMessage:(NSString *)msg;
|
||||
@@ -6,26 +6,61 @@ which should be included with this package. The terms are also available at
|
||||
http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "AppDelegate.h"
|
||||
#import "AppDelegateBase.h"
|
||||
#import "ProgressController.h"
|
||||
#import "HSFairwareReminder.h"
|
||||
#import "HSPyUtil.h"
|
||||
#import "Consts.h"
|
||||
#import "Dialogs.h"
|
||||
#import "Utils.h"
|
||||
#import "ValueTransformers.h"
|
||||
#import <Sparkle/SUUpdater.h>
|
||||
#import "PreferencesPanel_UI.h"
|
||||
|
||||
@implementation AppDelegateBase
|
||||
|
||||
@synthesize recentResultsMenu;
|
||||
@synthesize columnsMenu;
|
||||
@synthesize updater;
|
||||
|
||||
+ (NSDictionary *)defaultPreferences
|
||||
{
|
||||
NSMutableDictionary *d = [NSMutableDictionary dictionary];
|
||||
[d setObject:i2n(1) forKey:@"recreatePathType"];
|
||||
[d setObject:i2n(11) forKey:TableFontSize];
|
||||
[d setObject:b2n(YES) forKey:@"mixFileKind"];
|
||||
[d setObject:b2n(NO) forKey:@"useRegexpFilter"];
|
||||
[d setObject:b2n(NO) forKey:@"ignoreHardlinkMatches"];
|
||||
[d setObject:b2n(NO) forKey:@"removeEmptyFolders"];
|
||||
[d setObject:b2n(NO) forKey:@"DebugMode"];
|
||||
[d setObject:@"" forKey:@"CustomCommand"];
|
||||
[d setObject:[NSArray array] forKey:@"recentDirectories"];
|
||||
[d setObject:[NSArray array] forKey:@"columnsOrder"];
|
||||
[d setObject:[NSDictionary dictionary] forKey:@"columnsWidth"];
|
||||
return d;
|
||||
}
|
||||
|
||||
+ (void)initialize
|
||||
{
|
||||
HSVTAdd *vt = [[[HSVTAdd alloc] initWithValue:4] autorelease];
|
||||
[NSValueTransformer setValueTransformer:vt forName:@"vtRowHeightOffset"];
|
||||
NSDictionary *d = [self defaultPreferences];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] setInitialValues:d];
|
||||
[[NSUserDefaults standardUserDefaults] registerDefaults:d];
|
||||
}
|
||||
|
||||
- (void)awakeFromNib
|
||||
- (id)init
|
||||
{
|
||||
self = [super init];
|
||||
model = [[PyDupeGuru alloc] init];
|
||||
[model bindCallback:createCallback(@"DupeGuruView", self)];
|
||||
[self setUpdater:[SUUpdater sharedUpdater]];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)finalizeInit
|
||||
{
|
||||
// We can only finalize initialization once the main menu has been created, which cannot happen
|
||||
// before AppDelegate is created.
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
/* Because the pref pane is lazily loaded, we have to manually do the update check if the
|
||||
preference is set.
|
||||
@@ -92,10 +127,8 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
return _recentResults;
|
||||
}
|
||||
|
||||
- (NSMenu *)columnsMenu { return columnsMenu; }
|
||||
|
||||
/* Actions */
|
||||
- (IBAction)loadResults:(id)sender
|
||||
- (void)loadResults
|
||||
{
|
||||
NSOpenPanel *op = [NSOpenPanel openPanel];
|
||||
[op setCanChooseFiles:YES];
|
||||
@@ -103,7 +136,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[op setCanCreateDirectories:NO];
|
||||
[op setAllowsMultipleSelection:NO];
|
||||
[op setAllowedFileTypes:[NSArray arrayWithObject:@"dupeguru"]];
|
||||
[op setTitle:TR(@"Select a results file to load")];
|
||||
[op setTitle:NSLocalizedString(@"Select a results file to load", @"")];
|
||||
if ([op runModal] == NSOKButton) {
|
||||
NSString *filename = [[op filenames] objectAtIndex:0];
|
||||
[model loadResultsFrom:filename];
|
||||
@@ -111,12 +144,12 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)openWebsite:(id)sender
|
||||
- (void)openWebsite
|
||||
{
|
||||
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:[self homepageURL]]];
|
||||
}
|
||||
|
||||
- (IBAction)openHelp:(id)sender
|
||||
- (void)openHelp
|
||||
{
|
||||
NSBundle *b = [NSBundle mainBundle];
|
||||
NSString *p = [b pathForResource:@"index" ofType:@"html" inDirectory:@"help"];
|
||||
@@ -124,40 +157,40 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[[NSWorkspace sharedWorkspace] openURL:u];
|
||||
}
|
||||
|
||||
- (IBAction)showAboutBox:(id)sender
|
||||
- (void)showAboutBox
|
||||
{
|
||||
if (_aboutBox == nil) {
|
||||
_aboutBox = [[HSAboutBox alloc] initWithApp:model];
|
||||
}
|
||||
[[_aboutBox window] makeKeyAndOrderFront:sender];
|
||||
[[_aboutBox window] makeKeyAndOrderFront:nil];
|
||||
}
|
||||
|
||||
- (IBAction)showDirectoryWindow:(id)sender
|
||||
- (void)showDirectoryWindow
|
||||
{
|
||||
[[[self directoryPanel] window] makeKeyAndOrderFront:nil];
|
||||
}
|
||||
|
||||
- (IBAction)showPreferencesPanel:(id)sender
|
||||
- (void)showPreferencesPanel
|
||||
{
|
||||
if (_preferencesPanel == nil) {
|
||||
_preferencesPanel = [[NSWindowController alloc] initWithWindowNibName:@"Preferences"];
|
||||
_preferencesPanel = [[NSWindowController alloc] initWithWindow:createPreferencesPanel_UI(nil)];
|
||||
}
|
||||
[_preferencesPanel showWindow:sender];
|
||||
[_preferencesPanel showWindow:nil];
|
||||
}
|
||||
|
||||
- (IBAction)showResultWindow:(id)sender
|
||||
- (void)showResultWindow
|
||||
{
|
||||
[[[self resultWindow] window] makeKeyAndOrderFront:nil];
|
||||
}
|
||||
|
||||
- (IBAction)showIgnoreList:(id)sender
|
||||
- (void)showIgnoreList
|
||||
{
|
||||
[model showIgnoreList];
|
||||
}
|
||||
|
||||
- (IBAction)startScanning:(id)sender
|
||||
- (void)startScanning
|
||||
{
|
||||
[[self resultWindow] startDuplicateScan:sender];
|
||||
[[self resultWindow] startDuplicateScan];
|
||||
}
|
||||
|
||||
|
||||
@@ -179,7 +212,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
|
||||
{
|
||||
if ([model resultsAreModified]) {
|
||||
NSString *msg = TR(@"You have unsaved results, do you really want to quit?");
|
||||
NSString *msg = NSLocalizedString(@"You have unsaved results, do you really want to quit?", @"");
|
||||
if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) { // NO
|
||||
return NSTerminateCancel;
|
||||
}
|
||||
@@ -258,4 +291,18 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString *)selectDestFileWithPrompt:(NSString *)prompt extension:(NSString *)extension
|
||||
{
|
||||
NSSavePanel *sp = [NSSavePanel savePanel];
|
||||
[sp setCanCreateDirectories:YES];
|
||||
[sp setAllowedFileTypes:[NSArray arrayWithObject:extension]];
|
||||
[sp setTitle:prompt];
|
||||
if ([sp runModal] == NSOKButton) {
|
||||
return [sp filename];
|
||||
}
|
||||
else {
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -6,8 +6,6 @@ which should be included with this package. The terms are also available at
|
||||
http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "HSConsts.h"
|
||||
|
||||
#define JobStarted @"JobStarted"
|
||||
#define JobInProgress @"JobInProgress"
|
||||
#define TableFontSize @"TableFontSize"
|
||||
|
||||
@@ -11,15 +11,23 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
@interface DeletionOptions : NSWindowController
|
||||
{
|
||||
IBOutlet NSTextField *messageTextField;
|
||||
IBOutlet NSButton *hardlinkButton;
|
||||
IBOutlet NSButton *directButton;
|
||||
|
||||
PyDeletionOptions *model;
|
||||
|
||||
NSTextField *messageTextField;
|
||||
NSButton *linkButton;
|
||||
NSMatrix *linkTypeRadio;
|
||||
NSButton *directButton;
|
||||
}
|
||||
|
||||
@property (readwrite, retain) NSTextField *messageTextField;
|
||||
@property (readwrite, retain) NSButton *linkButton;
|
||||
@property (readwrite, retain) NSMatrix *linkTypeRadio;
|
||||
@property (readwrite, retain) NSButton *directButton;
|
||||
|
||||
- (id)initWithPyRef:(PyObject *)aPyRef;
|
||||
|
||||
- (IBAction)updateOptions:(id)sender;
|
||||
- (IBAction)proceed:(id)sender;
|
||||
- (IBAction)cancel:(id)sender;
|
||||
- (void)updateOptions;
|
||||
- (void)proceed;
|
||||
- (void)cancel;
|
||||
@end
|
||||
@@ -7,14 +7,21 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "DeletionOptions.h"
|
||||
#import "DeletionOptions_UI.h"
|
||||
#import "HSPyUtil.h"
|
||||
|
||||
@implementation DeletionOptions
|
||||
|
||||
@synthesize messageTextField;
|
||||
@synthesize linkButton;
|
||||
@synthesize linkTypeRadio;
|
||||
@synthesize directButton;
|
||||
|
||||
- (id)initWithPyRef:(PyObject *)aPyRef
|
||||
{
|
||||
self = [super initWithWindowNibName:@"DeletionOptions"];
|
||||
[self window];
|
||||
self = [super initWithWindow:nil];
|
||||
model = [[PyDeletionOptions alloc] initWithModel:aPyRef];
|
||||
[self setWindow:createDeletionOptions_UI(self)];
|
||||
[model bindCallback:createCallback(@"DeletionOptionsView", self)];
|
||||
return self;
|
||||
}
|
||||
@@ -25,18 +32,19 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (IBAction)updateOptions:(id)sender
|
||||
- (void)updateOptions
|
||||
{
|
||||
[model setHardlink:[hardlinkButton state] == NSOnState];
|
||||
[model setLinkDeleted:[linkButton state] == NSOnState];
|
||||
[model setUseHardlinks:[linkTypeRadio selectedColumn] == 1];
|
||||
[model setDirect:[directButton state] == NSOnState];
|
||||
}
|
||||
|
||||
- (IBAction)proceed:(id)sender
|
||||
- (void)proceed
|
||||
{
|
||||
[NSApp stopModalWithCode:NSOKButton];
|
||||
}
|
||||
|
||||
- (IBAction)cancel:(id)sender
|
||||
- (void)cancel
|
||||
{
|
||||
[NSApp stopModalWithCode:NSCancelButton];
|
||||
}
|
||||
@@ -49,8 +57,9 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
- (BOOL)show
|
||||
{
|
||||
[hardlinkButton setState:NSOffState];
|
||||
[linkButton setState:NSOffState];
|
||||
[directButton setState:NSOffState];
|
||||
[linkTypeRadio selectCellAtRow:0 column:0];
|
||||
NSInteger r = [NSApp runModalForWindow:[self window]];
|
||||
[[self window] close];
|
||||
return r == NSOKButton;
|
||||
|
||||
@@ -10,15 +10,19 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
#import <Python.h>
|
||||
#import "PyDetailsPanel.h"
|
||||
|
||||
@interface DetailsPanel : NSWindowController
|
||||
@interface DetailsPanelBase : NSWindowController <NSTableViewDataSource>
|
||||
{
|
||||
IBOutlet NSTableView *detailsTable;
|
||||
NSTableView *detailsTable;
|
||||
|
||||
PyDetailsPanel *model;
|
||||
}
|
||||
|
||||
@property (readwrite, retain) NSTableView *detailsTable;
|
||||
|
||||
- (id)initWithPyRef:(PyObject *)aPyRef;
|
||||
- (PyDetailsPanel *)model;
|
||||
|
||||
- (NSWindow *)createWindow;
|
||||
- (BOOL)isVisible;
|
||||
- (void)toggleVisibility;
|
||||
|
||||
@@ -6,14 +6,17 @@ which should be included with this package. The terms are also available at
|
||||
http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "DetailsPanel.h"
|
||||
#import "DetailsPanelBase.h"
|
||||
#import "HSPyUtil.h"
|
||||
|
||||
@implementation DetailsPanel
|
||||
@implementation DetailsPanelBase
|
||||
|
||||
@synthesize detailsTable;
|
||||
|
||||
- (id)initWithPyRef:(PyObject *)aPyRef
|
||||
{
|
||||
self = [super initWithWindowNibName:@"DetailsPanel"];
|
||||
[self window]; //So the detailsTable is initialized.
|
||||
self = [super initWithWindow:nil];
|
||||
[self setWindow:[self createWindow]];
|
||||
model = [[PyDetailsPanel alloc] initWithModel:aPyRef];
|
||||
[model bindCallback:createCallback(@"DetailsPanelView", self)];
|
||||
return self;
|
||||
@@ -30,6 +33,11 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
return (PyDetailsPanel *)model;
|
||||
}
|
||||
|
||||
- (NSWindow *)createWindow
|
||||
{
|
||||
return nil; // Virtual
|
||||
}
|
||||
|
||||
- (void)refreshDetails
|
||||
{
|
||||
[detailsTable reloadData];
|
||||
@@ -16,27 +16,33 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
@interface DirectoryPanel : NSWindowController <NSOpenSavePanelDelegate>
|
||||
{
|
||||
IBOutlet NSPopUpButton *addButtonPopUp;
|
||||
IBOutlet NSPopUpButton *loadRecentButtonPopUp;
|
||||
IBOutlet HSOutlineView *outlineView;
|
||||
IBOutlet NSButton *removeButton;
|
||||
IBOutlet NSButton *loadResultsButton;
|
||||
|
||||
AppDelegateBase *_app;
|
||||
PyDupeGuru *model;
|
||||
HSRecentFiles *_recentDirectories;
|
||||
DirectoryOutline *outline;
|
||||
BOOL _alwaysShowPopUp;
|
||||
NSPopUpButton *addButtonPopUp;
|
||||
NSPopUpButton *loadRecentButtonPopUp;
|
||||
HSOutlineView *outlineView;
|
||||
NSButton *removeButton;
|
||||
NSButton *loadResultsButton;
|
||||
}
|
||||
|
||||
@property (readwrite, retain) NSPopUpButton *addButtonPopUp;
|
||||
@property (readwrite, retain) NSPopUpButton *loadRecentButtonPopUp;
|
||||
@property (readwrite, retain) HSOutlineView *outlineView;
|
||||
@property (readwrite, retain) NSButton *removeButton;
|
||||
@property (readwrite, retain) NSButton *loadResultsButton;
|
||||
|
||||
- (id)initWithParentApp:(AppDelegateBase *)aParentApp;
|
||||
|
||||
- (void)fillPopUpMenu; // Virtual
|
||||
- (void)adjustUIToLocalization;
|
||||
|
||||
- (IBAction)askForDirectory:(id)sender;
|
||||
- (IBAction)popupAddDirectoryMenu:(id)sender;
|
||||
- (IBAction)popupLoadRecentMenu:(id)sender;
|
||||
- (IBAction)removeSelectedDirectory:(id)sender;
|
||||
- (void)askForDirectory;
|
||||
- (void)popupAddDirectoryMenu:(id)sender;
|
||||
- (void)popupLoadRecentMenu:(id)sender;
|
||||
- (void)removeSelectedDirectory;
|
||||
|
||||
- (void)addDirectory:(NSString *)directory;
|
||||
- (void)refreshRemoveButtonText;
|
||||
|
||||
@@ -7,16 +7,23 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "DirectoryPanel.h"
|
||||
#import "DirectoryPanel_UI.h"
|
||||
#import "Dialogs.h"
|
||||
#import "Utils.h"
|
||||
#import "AppDelegate.h"
|
||||
#import "Consts.h"
|
||||
|
||||
@implementation DirectoryPanel
|
||||
|
||||
@synthesize addButtonPopUp;
|
||||
@synthesize loadRecentButtonPopUp;
|
||||
@synthesize outlineView;
|
||||
@synthesize removeButton;
|
||||
@synthesize loadResultsButton;
|
||||
|
||||
- (id)initWithParentApp:(AppDelegateBase *)aParentApp
|
||||
{
|
||||
self = [super initWithWindowNibName:@"DirectoryPanel"];
|
||||
[self window];
|
||||
self = [super initWithWindow:nil];
|
||||
[self setWindow:createDirectoryPanel_UI(self)];
|
||||
_app = aParentApp;
|
||||
model = [_app model];
|
||||
[[self window] setTitle:[model appName]];
|
||||
@@ -47,7 +54,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
- (void)fillPopUpMenu
|
||||
{
|
||||
NSMenu *m = [addButtonPopUp menu];
|
||||
NSMenuItem *mi = [m addItemWithTitle:TR(@"Add New Folder...") action:@selector(askForDirectory:) keyEquivalent:@""];
|
||||
NSMenuItem *mi = [m addItemWithTitle:NSLocalizedString(@"Add New Folder...", @"") action:@selector(askForDirectory) keyEquivalent:@""];
|
||||
[mi setTarget:self];
|
||||
[m addItem:[NSMenuItem separatorItem]];
|
||||
}
|
||||
@@ -75,13 +82,13 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
/* Actions */
|
||||
|
||||
- (IBAction)askForDirectory:(id)sender
|
||||
- (void)askForDirectory
|
||||
{
|
||||
NSOpenPanel *op = [NSOpenPanel openPanel];
|
||||
[op setCanChooseFiles:YES];
|
||||
[op setCanChooseDirectories:YES];
|
||||
[op setAllowsMultipleSelection:YES];
|
||||
[op setTitle:TR(@"Select a folder to add to the scanning list")];
|
||||
[op setTitle:NSLocalizedString(@"Select a folder to add to the scanning list", @"")];
|
||||
[op setDelegate:self];
|
||||
if ([op runModal] == NSOKButton) {
|
||||
for (NSString *directory in [op filenames]) {
|
||||
@@ -90,10 +97,10 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)popupAddDirectoryMenu:(id)sender
|
||||
- (void)popupAddDirectoryMenu:(id)sender
|
||||
{
|
||||
if ((!_alwaysShowPopUp) && ([[_recentDirectories filepaths] count] == 0)) {
|
||||
[self askForDirectory:sender];
|
||||
[self askForDirectory];
|
||||
}
|
||||
else {
|
||||
[addButtonPopUp selectItem:nil];
|
||||
@@ -101,14 +108,14 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)popupLoadRecentMenu:(id)sender
|
||||
- (void)popupLoadRecentMenu:(id)sender
|
||||
{
|
||||
if ([[[_app recentResults] filepaths] count] > 0) {
|
||||
NSMenu *m = [loadRecentButtonPopUp menu];
|
||||
while ([m numberOfItems] > 0) {
|
||||
[m removeItemAtIndex:0];
|
||||
}
|
||||
NSMenuItem *mi = [m addItemWithTitle:TR(@"Load from file...") action:@selector(loadResults:) keyEquivalent:@""];
|
||||
NSMenuItem *mi = [m addItemWithTitle:NSLocalizedString(@"Load from file...", @"") action:@selector(loadResults) keyEquivalent:@""];
|
||||
[mi setTarget:_app];
|
||||
[m addItem:[NSMenuItem separatorItem]];
|
||||
[[_app recentResults] fillMenu:m];
|
||||
@@ -116,11 +123,11 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[[loadRecentButtonPopUp cell] performClickWithFrame:[sender frame] inView:[sender superview]];
|
||||
}
|
||||
else {
|
||||
[_app loadResults:nil];
|
||||
[_app loadResults];
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)removeSelectedDirectory:(id)sender
|
||||
- (void)removeSelectedDirectory
|
||||
{
|
||||
[[self window] makeKeyAndOrderFront:nil];
|
||||
[[outline model] removeSelectedDirectory];
|
||||
@@ -130,17 +137,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
/* Public */
|
||||
- (void)addDirectory:(NSString *)directory
|
||||
{
|
||||
NSInteger r = [model addDirectory:directory];
|
||||
if (r) {
|
||||
NSString *m = @"";
|
||||
if (r == 1) {
|
||||
m = TR(@"'%@' already is in the list.");
|
||||
}
|
||||
else if (r == 2) {
|
||||
m = TR(@"'%@' does not exist.");
|
||||
}
|
||||
[Dialogs showMessage:[NSString stringWithFormat:m,directory]];
|
||||
}
|
||||
[model addDirectory:directory];
|
||||
[_recentDirectories addFile:directory];
|
||||
[[self window] makeKeyAndOrderFront:nil];
|
||||
}
|
||||
|
||||
@@ -12,14 +12,14 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
@interface IgnoreListDialog : NSWindowController
|
||||
{
|
||||
IBOutlet NSTableView *ignoreListTableView;
|
||||
|
||||
PyIgnoreListDialog *model;
|
||||
HSTable *ignoreListTable;
|
||||
NSTableView *ignoreListTableView;
|
||||
}
|
||||
- (id)initWithPyRef:(PyObject *)aPyRef;
|
||||
|
||||
@property (readwrite, retain) PyIgnoreListDialog *model;
|
||||
@property (readwrite, retain) NSTableView *ignoreListTableView;
|
||||
|
||||
- (id)initWithPyRef:(PyObject *)aPyRef;
|
||||
- (void)initializeColumns;
|
||||
- (IBAction)removeSelected:(id)sender;
|
||||
- (IBAction)clear:(id)sender;
|
||||
@end
|
||||
@@ -7,15 +7,20 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "IgnoreListDialog.h"
|
||||
#import "IgnoreListDialog_UI.h"
|
||||
#import "HSPyUtil.h"
|
||||
|
||||
@implementation IgnoreListDialog
|
||||
|
||||
@synthesize model;
|
||||
@synthesize ignoreListTableView;
|
||||
|
||||
- (id)initWithPyRef:(PyObject *)aPyRef
|
||||
{
|
||||
self = [super initWithWindowNibName:@"IgnoreListDialog"];
|
||||
[self window]; //So the detailsTable is initialized.
|
||||
model = [[PyIgnoreListDialog alloc] initWithModel:aPyRef];
|
||||
[model bindCallback:createCallback(@"IgnoreListDialogView", self)];
|
||||
self = [super initWithWindow:nil];
|
||||
self.model = [[[PyIgnoreListDialog alloc] initWithModel:aPyRef] autorelease];
|
||||
[self.model bindCallback:createCallback(@"IgnoreListDialogView", self)];
|
||||
[self setWindow:createIgnoreListDialog_UI(self)];
|
||||
ignoreListTable = [[HSTable alloc] initWithPyRef:[model ignoreListTable] tableView:ignoreListTableView];
|
||||
[self initializeColumns];
|
||||
return self;
|
||||
@@ -24,7 +29,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
- (void)dealloc
|
||||
{
|
||||
[ignoreListTable release];
|
||||
[model release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
@@ -39,16 +43,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[[ignoreListTable columns] setColumnsAsReadOnly];
|
||||
}
|
||||
|
||||
- (IBAction)removeSelected:(id)sender
|
||||
{
|
||||
[model removeSelected];
|
||||
}
|
||||
|
||||
- (IBAction)clear:(id)sender
|
||||
{
|
||||
[model clear];
|
||||
}
|
||||
|
||||
/* model --> view */
|
||||
- (void)show
|
||||
{
|
||||
|
||||
@@ -15,20 +15,23 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
@interface PrioritizeDialog : NSWindowController
|
||||
{
|
||||
IBOutlet NSPopUpButton *categoryPopUpView;
|
||||
IBOutlet NSTableView *criteriaTableView;
|
||||
IBOutlet NSTableView *prioritizationTableView;
|
||||
NSPopUpButton *categoryPopUpView;
|
||||
NSTableView *criteriaTableView;
|
||||
NSTableView *prioritizationTableView;
|
||||
|
||||
PyPrioritizeDialog *model;
|
||||
HSPopUpList *categoryPopUp;
|
||||
HSSelectableList *criteriaList;
|
||||
PrioritizeList *prioritizationList;
|
||||
}
|
||||
|
||||
@property (readwrite, retain) NSPopUpButton *categoryPopUpView;
|
||||
@property (readwrite, retain) NSTableView *criteriaTableView;
|
||||
@property (readwrite, retain) NSTableView *prioritizationTableView;
|
||||
|
||||
- (id)initWithApp:(PyDupeGuru *)aApp;
|
||||
- (PyPrioritizeDialog *)model;
|
||||
|
||||
- (IBAction)addSelected:(id)sender;
|
||||
- (IBAction)removeSelected:(id)sender;
|
||||
- (IBAction)ok:(id)sender;
|
||||
- (IBAction)cancel:(id)sender;
|
||||
- (void)ok;
|
||||
- (void)cancel;
|
||||
@end;
|
||||
@@ -7,14 +7,20 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "PrioritizeDialog.h"
|
||||
#import "PrioritizeDialog_UI.h"
|
||||
#import "HSPyUtil.h"
|
||||
|
||||
@implementation PrioritizeDialog
|
||||
|
||||
@synthesize categoryPopUpView;
|
||||
@synthesize criteriaTableView;
|
||||
@synthesize prioritizationTableView;
|
||||
|
||||
- (id)initWithApp:(PyDupeGuru *)aApp
|
||||
{
|
||||
self = [super initWithWindowNibName:@"PrioritizeDialog"];
|
||||
[self window];
|
||||
model = [[PyPrioritizeDialog alloc] initWithApp:[aApp pyRef]];
|
||||
[self setWindow:createPrioritizeDialog_UI(self)];
|
||||
categoryPopUp = [[HSPopUpList alloc] initWithPyRef:[[self model] categoryList] popupView:categoryPopUpView];
|
||||
criteriaList = [[HSSelectableList alloc] initWithPyRef:[[self model] criteriaList] tableView:criteriaTableView];
|
||||
prioritizationList = [[PrioritizeList alloc] initWithPyRef:[[self model] prioritizationList] tableView:prioritizationTableView];
|
||||
@@ -36,23 +42,13 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
return (PyPrioritizeDialog *)model;
|
||||
}
|
||||
|
||||
- (IBAction)addSelected:(id)sender
|
||||
{
|
||||
[[self model] addSelected];
|
||||
}
|
||||
|
||||
- (IBAction)removeSelected:(id)sender
|
||||
{
|
||||
[[self model] removeSelected];
|
||||
}
|
||||
|
||||
- (IBAction)ok:(id)sender
|
||||
- (void)ok
|
||||
{
|
||||
[NSApp stopModal];
|
||||
[self close];
|
||||
}
|
||||
|
||||
- (IBAction)cancel:(id)sender
|
||||
- (void)cancel
|
||||
{
|
||||
[NSApp abortModal];
|
||||
[self close];
|
||||
|
||||
@@ -12,13 +12,15 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
@interface ProblemDialog : NSWindowController
|
||||
{
|
||||
IBOutlet NSTableView *problemTableView;
|
||||
|
||||
PyProblemDialog *model;
|
||||
HSTable *problemTable;
|
||||
NSTableView *problemTableView;
|
||||
}
|
||||
|
||||
@property (readwrite, retain) PyProblemDialog *model;
|
||||
@property (readwrite, retain) NSTableView *problemTableView;
|
||||
|
||||
- (id)initWithPyRef:(PyObject *)aPyRef;
|
||||
|
||||
- (void)initializeColumns;
|
||||
- (IBAction)revealSelected:(id)sender;
|
||||
@end
|
||||
@@ -7,15 +7,20 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "ProblemDialog.h"
|
||||
#import "ProblemDialog_UI.h"
|
||||
#import "Utils.h"
|
||||
|
||||
@implementation ProblemDialog
|
||||
|
||||
@synthesize model;
|
||||
@synthesize problemTableView;
|
||||
|
||||
- (id)initWithPyRef:(PyObject *)aPyRef
|
||||
{
|
||||
self = [super initWithWindowNibName:@"ProblemDialog"];
|
||||
[self window]; //So the detailsTable is initialized.
|
||||
model = [[PyProblemDialog alloc] initWithModel:aPyRef];
|
||||
problemTable = [[HSTable alloc] initWithPyRef:[model problemTable] tableView:problemTableView];
|
||||
self = [super initWithWindow:nil];
|
||||
self.model = [[PyProblemDialog alloc] initWithModel:aPyRef];
|
||||
[self setWindow:createProblemDialog_UI(self)];
|
||||
problemTable = [[HSTable alloc] initWithPyRef:[self.model problemTable] tableView:problemTableView];
|
||||
[self initializeColumns];
|
||||
return self;
|
||||
}
|
||||
@@ -23,7 +28,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
- (void)dealloc
|
||||
{
|
||||
[problemTable release];
|
||||
[model release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
@@ -35,10 +39,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
nil
|
||||
};
|
||||
[[problemTable columns] initializeColumns:defs];
|
||||
}
|
||||
|
||||
- (IBAction)revealSelected:(id)sender
|
||||
{
|
||||
[model revealSelected];
|
||||
[[problemTable columns] setColumnsAsReadOnly];
|
||||
}
|
||||
@end
|
||||
@@ -9,7 +9,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
#import "ResultTable.h"
|
||||
#import "Dialogs.h"
|
||||
#import "Utils.h"
|
||||
#import "Consts.h"
|
||||
#import "HSQuicklook.h"
|
||||
|
||||
@interface HSTable (private)
|
||||
@@ -99,7 +98,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
if (![newName isEqual:oldName]) {
|
||||
BOOL renamed = [[self model] renameSelected:newName];
|
||||
if (!renamed) {
|
||||
[Dialogs showMessage:[NSString stringWithFormat:TR(@"The name '%@' already exists."), newName]];
|
||||
[Dialogs showMessage:[NSString stringWithFormat:NSLocalizedString(@"The name '%@' already exists.", @""), newName]];
|
||||
}
|
||||
else {
|
||||
[[self view] setNeedsDisplay:YES];
|
||||
|
||||
@@ -20,21 +20,27 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
@interface ResultWindowBase : NSWindowController
|
||||
{
|
||||
@protected
|
||||
IBOutlet NSSegmentedControl *optionsSwitch;
|
||||
IBOutlet NSToolbarItem *optionsToolbarItem;
|
||||
IBOutlet HSTableView *matches;
|
||||
IBOutlet NSTextField *stats;
|
||||
IBOutlet NSSearchField *filterField;
|
||||
NSSegmentedControl *optionsSwitch;
|
||||
NSToolbarItem *optionsToolbarItem;
|
||||
HSTableView *matches;
|
||||
NSTextField *stats;
|
||||
NSSearchField *filterField;
|
||||
|
||||
AppDelegateBase *app;
|
||||
PyDupeGuru *model;
|
||||
NSMenu *columnsMenu;
|
||||
ResultTable *table;
|
||||
StatsLabel *statsLabel;
|
||||
ProblemDialog *problemDialog;
|
||||
DeletionOptions *deletionOptions;
|
||||
QLPreviewPanel* previewPanel;
|
||||
}
|
||||
|
||||
@property (readwrite, retain) NSSegmentedControl *optionsSwitch;
|
||||
@property (readwrite, retain) NSToolbarItem *optionsToolbarItem;
|
||||
@property (readwrite, retain) HSTableView *matches;
|
||||
@property (readwrite, retain) NSTextField *stats;
|
||||
@property (readwrite, retain) NSSearchField *filterField;
|
||||
|
||||
- (id)initWithParentApp:(AppDelegateBase *)app;
|
||||
|
||||
/* Virtual */
|
||||
@@ -48,33 +54,32 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
- (void)adjustUIToLocalization;
|
||||
|
||||
/* Actions */
|
||||
- (IBAction)changeOptions:(id)sender;
|
||||
- (IBAction)copyMarked:(id)sender;
|
||||
- (IBAction)trashMarked:(id)sender;
|
||||
- (IBAction)exportToXHTML:(id)sender;
|
||||
- (IBAction)filter:(id)sender;
|
||||
- (IBAction)focusOnFilterField:(id)sender;
|
||||
- (IBAction)ignoreSelected:(id)sender;
|
||||
- (IBAction)invokeCustomCommand:(id)sender;
|
||||
- (IBAction)markAll:(id)sender;
|
||||
- (IBAction)markInvert:(id)sender;
|
||||
- (IBAction)markNone:(id)sender;
|
||||
- (IBAction)markSelected:(id)sender;
|
||||
- (IBAction)moveMarked:(id)sender;
|
||||
- (IBAction)openClicked:(id)sender;
|
||||
- (IBAction)openSelected:(id)sender;
|
||||
- (IBAction)removeMarked:(id)sender;
|
||||
- (IBAction)removeSelected:(id)sender;
|
||||
- (IBAction)renameSelected:(id)sender;
|
||||
- (IBAction)reprioritizeResults:(id)sender;
|
||||
- (IBAction)resetColumnsToDefault:(id)sender;
|
||||
- (IBAction)revealSelected:(id)sender;
|
||||
- (IBAction)saveResults:(id)sender;
|
||||
- (IBAction)startDuplicateScan:(id)sender;
|
||||
- (IBAction)switchSelected:(id)sender;
|
||||
- (IBAction)toggleColumn:(id)sender;
|
||||
- (IBAction)toggleDelta:(id)sender;
|
||||
- (IBAction)toggleDetailsPanel:(id)sender;
|
||||
- (IBAction)togglePowerMarker:(id)sender;
|
||||
- (IBAction)toggleQuicklookPanel:(id)sender;
|
||||
- (void)changeOptions;
|
||||
- (void)copyMarked;
|
||||
- (void)trashMarked;
|
||||
- (void)filter;
|
||||
- (void)focusOnFilterField;
|
||||
- (void)ignoreSelected;
|
||||
- (void)invokeCustomCommand;
|
||||
- (void)markAll;
|
||||
- (void)markInvert;
|
||||
- (void)markNone;
|
||||
- (void)markSelected;
|
||||
- (void)moveMarked;
|
||||
- (void)openClicked;
|
||||
- (void)openSelected;
|
||||
- (void)removeMarked;
|
||||
- (void)removeSelected;
|
||||
- (void)renameSelected;
|
||||
- (void)reprioritizeResults;
|
||||
- (void)resetColumnsToDefault;
|
||||
- (void)revealSelected;
|
||||
- (void)saveResults;
|
||||
- (void)startDuplicateScan;
|
||||
- (void)switchSelected;
|
||||
- (void)toggleColumn:(id)sender;
|
||||
- (void)toggleDelta;
|
||||
- (void)toggleDetailsPanel;
|
||||
- (void)togglePowerMarker;
|
||||
- (void)toggleQuicklookPanel;
|
||||
@end
|
||||
|
||||
@@ -7,6 +7,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "ResultWindow.h"
|
||||
#import "ResultWindow_UI.h"
|
||||
#import "Dialogs.h"
|
||||
#import "ProgressController.h"
|
||||
#import "Utils.h"
|
||||
@@ -15,13 +16,20 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
#import "PrioritizeDialog.h"
|
||||
|
||||
@implementation ResultWindowBase
|
||||
|
||||
@synthesize optionsSwitch;
|
||||
@synthesize optionsToolbarItem;
|
||||
@synthesize matches;
|
||||
@synthesize stats;
|
||||
@synthesize filterField;
|
||||
|
||||
- (id)initWithParentApp:(AppDelegateBase *)aApp;
|
||||
{
|
||||
self = [super initWithWindowNibName:@"ResultWindow"];
|
||||
self = [super initWithWindow:nil];
|
||||
app = aApp;
|
||||
model = [app model];
|
||||
[self setWindow:createResultWindow_UI(self)];
|
||||
[[self window] setTitle:fmt(@"%@ Results", [model appName])];
|
||||
columnsMenu = [app columnsMenu];
|
||||
/* Put a cute iTunes-like bottom bar */
|
||||
[[self window] setContentBorderThickness:28 forEdge:NSMinYEdge];
|
||||
table = [[ResultTable alloc] initWithPyRef:[model resultTable] view:matches];
|
||||
@@ -29,9 +37,10 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
problemDialog = [[ProblemDialog alloc] initWithPyRef:[model problemDialog]];
|
||||
deletionOptions = [[DeletionOptions alloc] initWithPyRef:[model deletionOptions]];
|
||||
[self initResultColumns];
|
||||
[[table columns] setColumnsAsReadOnly];
|
||||
[self fillColumnsMenu];
|
||||
[matches setTarget:self];
|
||||
[matches setDoubleAction:@selector(openClicked:)];
|
||||
[matches setDoubleAction:@selector(openClicked)];
|
||||
[self adjustUIToLocalization];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(jobStarted:) name:JobStarted object:nil];
|
||||
@@ -59,19 +68,20 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
/* Helpers */
|
||||
- (void)fillColumnsMenu
|
||||
{
|
||||
[[app columnsMenu] removeAllItems];
|
||||
NSArray *menuItems = [[[table columns] model] menuItems];
|
||||
for (NSInteger i=0; i < [menuItems count]; i++) {
|
||||
NSArray *pair = [menuItems objectAtIndex:i];
|
||||
NSString *display = [pair objectAtIndex:0];
|
||||
BOOL marked = n2b([pair objectAtIndex:1]);
|
||||
NSMenuItem *mi = [columnsMenu addItemWithTitle:display action:@selector(toggleColumn:) keyEquivalent:@""];
|
||||
NSMenuItem *mi = [[app columnsMenu] addItemWithTitle:display action:@selector(toggleColumn:) keyEquivalent:@""];
|
||||
[mi setTarget:self];
|
||||
[mi setState:marked ? NSOnState : NSOffState];
|
||||
[mi setTag:i];
|
||||
}
|
||||
[columnsMenu addItem:[NSMenuItem separatorItem]];
|
||||
NSMenuItem *mi = [columnsMenu addItemWithTitle:TR(@"Reset to Default")
|
||||
action:@selector(resetColumnsToDefault:) keyEquivalent:@""];
|
||||
[[app columnsMenu] addItem:[NSMenuItem separatorItem]];
|
||||
NSMenuItem *mi = [[app columnsMenu] addItemWithTitle:NSLocalizedString(@"Reset to Default", @"")
|
||||
action:@selector(resetColumnsToDefault) keyEquivalent:@""];
|
||||
[mi setTarget:self];
|
||||
}
|
||||
|
||||
@@ -112,21 +122,21 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
}
|
||||
|
||||
/* Actions */
|
||||
- (IBAction)changeOptions:(id)sender
|
||||
- (void)changeOptions
|
||||
{
|
||||
NSInteger seg = [optionsSwitch selectedSegment];
|
||||
if (seg == 0) {
|
||||
[self toggleDetailsPanel:sender];
|
||||
[self toggleDetailsPanel];
|
||||
}
|
||||
else if (seg == 1) {
|
||||
[self togglePowerMarker:sender];
|
||||
[self togglePowerMarker];
|
||||
}
|
||||
else if (seg == 2) {
|
||||
[self toggleDelta:sender];
|
||||
[self toggleDelta];
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)copyMarked:(id)sender
|
||||
- (void)copyMarked
|
||||
{
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
[model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
|
||||
@@ -134,62 +144,56 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[model copyMarked];
|
||||
}
|
||||
|
||||
- (IBAction)trashMarked:(id)sender
|
||||
- (void)trashMarked
|
||||
{
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
[model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
|
||||
[model deleteMarked];
|
||||
}
|
||||
|
||||
- (IBAction)exportToXHTML:(id)sender
|
||||
{
|
||||
NSString *exported = [model exportToXHTML];
|
||||
[[NSWorkspace sharedWorkspace] openFile:exported];
|
||||
}
|
||||
|
||||
- (IBAction)filter:(id)sender
|
||||
- (void)filter
|
||||
{
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
[model setEscapeFilterRegexp:!n2b([ud objectForKey:@"useRegexpFilter"])];
|
||||
[model applyFilter:[filterField stringValue]];
|
||||
}
|
||||
|
||||
- (IBAction)focusOnFilterField:(id)sender
|
||||
- (void)focusOnFilterField
|
||||
{
|
||||
[[self window] makeFirstResponder:filterField];
|
||||
}
|
||||
|
||||
- (IBAction)ignoreSelected:(id)sender
|
||||
- (void)ignoreSelected
|
||||
{
|
||||
[model addSelectedToIgnoreList];
|
||||
}
|
||||
|
||||
- (IBAction)invokeCustomCommand:(id)sender
|
||||
- (void)invokeCustomCommand
|
||||
{
|
||||
[model invokeCustomCommand];
|
||||
}
|
||||
|
||||
- (IBAction)markAll:(id)sender
|
||||
- (void)markAll
|
||||
{
|
||||
[model markAll];
|
||||
}
|
||||
|
||||
- (IBAction)markInvert:(id)sender
|
||||
- (void)markInvert
|
||||
{
|
||||
[model markInvert];
|
||||
}
|
||||
|
||||
- (IBAction)markNone:(id)sender
|
||||
- (void)markNone
|
||||
{
|
||||
[model markNone];
|
||||
}
|
||||
|
||||
- (IBAction)markSelected:(id)sender
|
||||
- (void)markSelected
|
||||
{
|
||||
[model toggleSelectedMark];
|
||||
}
|
||||
|
||||
- (IBAction)moveMarked:(id)sender
|
||||
- (void)moveMarked
|
||||
{
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
[model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
|
||||
@@ -197,7 +201,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[model moveMarked];
|
||||
}
|
||||
|
||||
- (IBAction)openClicked:(id)sender
|
||||
- (void)openClicked
|
||||
{
|
||||
if ([matches clickedRow] < 0) {
|
||||
return;
|
||||
@@ -206,29 +210,29 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[model openSelected];
|
||||
}
|
||||
|
||||
- (IBAction)openSelected:(id)sender
|
||||
- (void)openSelected
|
||||
{
|
||||
[model openSelected];
|
||||
}
|
||||
|
||||
- (IBAction)removeMarked:(id)sender
|
||||
- (void)removeMarked
|
||||
{
|
||||
[model removeMarked];
|
||||
}
|
||||
|
||||
- (IBAction)removeSelected:(id)sender
|
||||
- (void)removeSelected
|
||||
{
|
||||
[model removeSelected];
|
||||
}
|
||||
|
||||
- (IBAction)renameSelected:(id)sender
|
||||
- (void)renameSelected
|
||||
{
|
||||
NSInteger col = [matches columnWithIdentifier:@"0"];
|
||||
NSInteger col = [matches columnWithIdentifier:@"name"];
|
||||
NSInteger row = [matches selectedRow];
|
||||
[matches editColumn:col row:row withEvent:[NSApp currentEvent] select:YES];
|
||||
}
|
||||
|
||||
- (IBAction)reprioritizeResults:(id)sender
|
||||
- (void)reprioritizeResults
|
||||
{
|
||||
PrioritizeDialog *dlg = [[PrioritizeDialog alloc] initWithApp:model];
|
||||
NSInteger result = [NSApp runModalForWindow:[dlg window]];
|
||||
@@ -239,69 +243,70 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[[self window] makeKeyAndOrderFront:nil];
|
||||
}
|
||||
|
||||
- (IBAction)resetColumnsToDefault:(id)sender
|
||||
- (void)resetColumnsToDefault
|
||||
{
|
||||
[[[table columns] model] resetToDefaults];
|
||||
[self fillColumnsMenu];
|
||||
}
|
||||
|
||||
- (IBAction)revealSelected:(id)sender
|
||||
- (void)revealSelected
|
||||
{
|
||||
[model revealSelected];
|
||||
}
|
||||
|
||||
- (IBAction)saveResults:(id)sender
|
||||
- (void)saveResults
|
||||
{
|
||||
NSSavePanel *sp = [NSSavePanel savePanel];
|
||||
[sp setCanCreateDirectories:YES];
|
||||
[sp setAllowedFileTypes:[NSArray arrayWithObject:@"dupeguru"]];
|
||||
[sp setTitle:TR(@"Select a file to save your results to")];
|
||||
[sp setTitle:NSLocalizedString(@"Select a file to save your results to", @"")];
|
||||
if ([sp runModal] == NSOKButton) {
|
||||
[model saveResultsAs:[sp filename]];
|
||||
[[app recentResults] addFile:[sp filename]];
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)startDuplicateScan:(id)sender
|
||||
- (void)startDuplicateScan
|
||||
{
|
||||
if ([model resultsAreModified]) {
|
||||
if ([Dialogs askYesNo:TR(@"You have unsaved results, do you really want to continue?")] == NSAlertSecondButtonReturn) // NO
|
||||
if ([Dialogs askYesNo:NSLocalizedString(@"You have unsaved results, do you really want to continue?", @"")] == NSAlertSecondButtonReturn) // NO
|
||||
return;
|
||||
}
|
||||
[self setScanOptions];
|
||||
[model doScan];
|
||||
}
|
||||
|
||||
- (IBAction)switchSelected:(id)sender
|
||||
- (void)switchSelected
|
||||
{
|
||||
[model makeSelectedReference];
|
||||
}
|
||||
|
||||
- (IBAction)toggleColumn:(id)sender
|
||||
- (void)toggleColumn:(id)sender
|
||||
{
|
||||
NSMenuItem *mi = sender;
|
||||
BOOL checked = [[[table columns] model] toggleMenuItem:[mi tag]];
|
||||
[mi setState:checked ? NSOnState : NSOffState];
|
||||
}
|
||||
|
||||
- (IBAction)toggleDetailsPanel:(id)sender
|
||||
- (void)toggleDetailsPanel
|
||||
{
|
||||
[[app detailsPanel] toggleVisibility];
|
||||
[self updateOptionSegments];
|
||||
}
|
||||
|
||||
- (IBAction)toggleDelta:(id)sender
|
||||
- (void)toggleDelta
|
||||
{
|
||||
[table setDeltaValuesMode:![table deltaValuesMode]];
|
||||
[self updateOptionSegments];
|
||||
}
|
||||
|
||||
- (IBAction)togglePowerMarker:(id)sender
|
||||
- (void)togglePowerMarker
|
||||
{
|
||||
[table setPowerMarkerMode:![table powerMarkerMode]];
|
||||
[self updateOptionSegments];
|
||||
}
|
||||
|
||||
- (IBAction)toggleQuicklookPanel:(id)sender
|
||||
- (void)toggleQuicklookPanel
|
||||
{
|
||||
if ([QLPreviewPanel sharedPreviewPanelExists] && [[QLPreviewPanel sharedPreviewPanel] isVisible]) {
|
||||
[[QLPreviewPanel sharedPreviewPanel] orderOut:nil];
|
||||
@@ -337,7 +342,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
- (void)jobInProgress:(NSNotification *)aNotification
|
||||
{
|
||||
[Dialogs showMessage:TR(@"A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again.")];
|
||||
[Dialogs showMessage:NSLocalizedString(@"A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again.", @"")];
|
||||
}
|
||||
|
||||
- (void)jobStarted:(NSNotification *)aNotification
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
/* Class = "NSWindow"; title = "Deletion Options"; ObjectID = "1"; */
|
||||
"1.title" = "Deletion Options";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Hardlink deleted files"; ObjectID = "4"; */
|
||||
"4.title" = "Hardlink deleted files";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "After having deleted a duplicate, place a hardlink targeting the reference file to replace the deleted file."; ObjectID = "8"; */
|
||||
"8.title" = "After having deleted a duplicate, place a hardlink targeting the reference file to replace the deleted file.";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Directly delete files"; ObjectID = "36"; */
|
||||
"36.title" = "Directly delete files";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Instead of sending files to trash, delete them directly. This option is usually used as a workaround when the normal deletion method doesn't work."; ObjectID = "38"; */
|
||||
"38.title" = "Instead of sending files to trash, delete them directly. This option is usually used as a workaround when the normal deletion method doesn't work.";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Proceed"; ObjectID = "40"; */
|
||||
"40.title" = "Proceed";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "42"; */
|
||||
"42.title" = "Cancel";
|
||||
@@ -1,556 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1060</int>
|
||||
<string key="IBDocument.SystemVersion">11E53</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">2182</string>
|
||||
<string key="IBDocument.AppKitVersion">1138.47</string>
|
||||
<string key="IBDocument.HIToolboxVersion">569.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="NS.object.0">2182</string>
|
||||
</object>
|
||||
<array key="IBDocument.IntegratedClassDependencies">
|
||||
<string>NSTextField</string>
|
||||
<string>NSView</string>
|
||||
<string>NSWindowTemplate</string>
|
||||
<string>NSTextFieldCell</string>
|
||||
<string>NSButtonCell</string>
|
||||
<string>NSButton</string>
|
||||
<string>NSCustomObject</string>
|
||||
</array>
|
||||
<array key="IBDocument.PluginDependencies">
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</array>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
|
||||
<integer value="1" key="NS.object.0"/>
|
||||
</object>
|
||||
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<object class="NSCustomObject" id="1001">
|
||||
<string key="NSClassName">DeletionOptions</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1003">
|
||||
<string key="NSClassName">FirstResponder</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1004">
|
||||
<string key="NSClassName">NSApplication</string>
|
||||
</object>
|
||||
<object class="NSWindowTemplate" id="1005">
|
||||
<int key="NSWindowStyleMask">3</int>
|
||||
<int key="NSWindowBacking">2</int>
|
||||
<string key="NSWindowRect">{{196, 240}, {449, 215}}</string>
|
||||
<int key="NSWTFlags">1618477056</int>
|
||||
<string key="NSWindowTitle">Deletion Options</string>
|
||||
<string key="NSWindowClass">NSWindow</string>
|
||||
<nil key="NSViewClass"/>
|
||||
<nil key="NSUserInterfaceItemIdentifier"/>
|
||||
<object class="NSView" key="NSWindowView" id="1006">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSButton" id="22939991">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 154}, {413, 18}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="258896148"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="199073808">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">0</int>
|
||||
<string key="NSContents">Hardlink deleted files</string>
|
||||
<object class="NSFont" key="NSSupport" id="672375986">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">13</double>
|
||||
<int key="NSfFlags">1044</int>
|
||||
</object>
|
||||
<string key="NSCellIdentifier">_NS:9</string>
|
||||
<reference key="NSControlView" ref="22939991"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<object class="NSCustomResource" key="NSNormalImage" id="28662763">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSSwitch</string>
|
||||
</object>
|
||||
<object class="NSButtonImageSource" key="NSAlternateImage" id="1065109393">
|
||||
<string key="NSImageName">NSSwitch</string>
|
||||
</object>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="1003638083">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 96}, {413, 18}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="316971589"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="791836143">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">0</int>
|
||||
<string key="NSContents">Directly delete files</string>
|
||||
<reference key="NSSupport" ref="672375986"/>
|
||||
<string key="NSCellIdentifier">_NS:9</string>
|
||||
<reference key="NSControlView" ref="1003638083"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="28662763"/>
|
||||
<reference key="NSAlternateImage" ref="1065109393"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="258896148">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{38, 120}, {394, 28}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="1003638083"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<string key="NSAntiCompressionPriority">{250, 750}</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="939395720">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">272629760</int>
|
||||
<string key="NSContents">After having deleted a duplicate, place a hardlink targeting the reference file to replace the deleted file.</string>
|
||||
<object class="NSFont" key="NSSupport" id="1067329392">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">11</double>
|
||||
<int key="NSfFlags">16</int>
|
||||
</object>
|
||||
<string key="NSCellIdentifier">_NS:9</string>
|
||||
<reference key="NSControlView" ref="258896148"/>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="360163505">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor" id="819030839">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlTextColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MAA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="316971589">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{38, 48}, {394, 42}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="375232713"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<string key="NSAntiCompressionPriority">{250, 750}</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="404549205">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">272629760</int>
|
||||
<string key="NSContents">Instead of sending files to trash, delete them directly. This option is usually used as a workaround when the normal deletion method doesn't work.</string>
|
||||
<reference key="NSSupport" ref="1067329392"/>
|
||||
<string key="NSCellIdentifier">_NS:9</string>
|
||||
<reference key="NSControlView" ref="316971589"/>
|
||||
<reference key="NSBackgroundColor" ref="360163505"/>
|
||||
<reference key="NSTextColor" ref="819030839"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="630940386">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{331, 12}, {104, 32}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="551779024">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">Proceed</string>
|
||||
<reference key="NSSupport" ref="672375986"/>
|
||||
<string key="NSCellIdentifier">_NS:9</string>
|
||||
<reference key="NSControlView" ref="630940386"/>
|
||||
<int key="NSButtonFlags">-2038284033</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="375232713">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{227, 12}, {104, 32}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="630940386"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="311692270">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">Cancel</string>
|
||||
<reference key="NSSupport" ref="672375986"/>
|
||||
<string key="NSCellIdentifier">_NS:9</string>
|
||||
<reference key="NSControlView" ref="375232713"/>
|
||||
<int key="NSButtonFlags">-2038284033</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="275527426">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{17, 178}, {415, 17}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="22939991"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1505</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="184485433">
|
||||
<int key="NSCellFlags">68288064</int>
|
||||
<int key="NSCellFlags2">272630784</int>
|
||||
<string key="NSContents"/>
|
||||
<reference key="NSSupport" ref="672375986"/>
|
||||
<string key="NSCellIdentifier">_NS:1505</string>
|
||||
<reference key="NSControlView" ref="275527426"/>
|
||||
<reference key="NSBackgroundColor" ref="360163505"/>
|
||||
<reference key="NSTextColor" ref="819030839"/>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrameSize">{449, 215}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="275527426"/>
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string>
|
||||
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
|
||||
<bool key="NSWindowIsRestorable">NO</bool>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<array class="NSMutableArray" key="connectionRecords">
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">messageTextField</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="275527426"/>
|
||||
</object>
|
||||
<int key="connectionID">45</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">hardlinkButton</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="22939991"/>
|
||||
</object>
|
||||
<int key="connectionID">46</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">directButton</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="1003638083"/>
|
||||
</object>
|
||||
<int key="connectionID">47</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">updateOptions:</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="22939991"/>
|
||||
</object>
|
||||
<int key="connectionID">48</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">updateOptions:</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="1003638083"/>
|
||||
</object>
|
||||
<int key="connectionID">49</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">cancel:</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="375232713"/>
|
||||
</object>
|
||||
<int key="connectionID">50</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">proceed:</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="630940386"/>
|
||||
</object>
|
||||
<int key="connectionID">51</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">window</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="1005"/>
|
||||
</object>
|
||||
<int key="connectionID">52</int>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<array key="orderedObjects">
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<array key="object" id="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="1001"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="1003"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">First Responder</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-3</int>
|
||||
<reference key="object" ref="1004"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">Application</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1</int>
|
||||
<reference key="object" ref="1005"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="1006"/>
|
||||
</array>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2</int>
|
||||
<reference key="object" ref="1006"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="275527426"/>
|
||||
<reference ref="22939991"/>
|
||||
<reference ref="1003638083"/>
|
||||
<reference ref="258896148"/>
|
||||
<reference ref="316971589"/>
|
||||
<reference ref="630940386"/>
|
||||
<reference ref="375232713"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1005"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">3</int>
|
||||
<reference key="object" ref="22939991"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="199073808"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">4</int>
|
||||
<reference key="object" ref="199073808"/>
|
||||
<reference key="parent" ref="22939991"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">7</int>
|
||||
<reference key="object" ref="258896148"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="939395720"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">8</int>
|
||||
<reference key="object" ref="939395720"/>
|
||||
<reference key="parent" ref="258896148"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">35</int>
|
||||
<reference key="object" ref="1003638083"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="791836143"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">36</int>
|
||||
<reference key="object" ref="791836143"/>
|
||||
<reference key="parent" ref="1003638083"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">37</int>
|
||||
<reference key="object" ref="316971589"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="404549205"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">38</int>
|
||||
<reference key="object" ref="404549205"/>
|
||||
<reference key="parent" ref="316971589"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">39</int>
|
||||
<reference key="object" ref="630940386"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="551779024"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">40</int>
|
||||
<reference key="object" ref="551779024"/>
|
||||
<reference key="parent" ref="630940386"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">41</int>
|
||||
<reference key="object" ref="375232713"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="311692270"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">42</int>
|
||||
<reference key="object" ref="311692270"/>
|
||||
<reference key="parent" ref="375232713"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">43</int>
|
||||
<reference key="object" ref="275527426"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="184485433"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">44</int>
|
||||
<reference key="object" ref="184485433"/>
|
||||
<reference key="parent" ref="275527426"/>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES" key="1.IBNSWindowAutoPositionCentersHorizontal"/>
|
||||
<boolean value="YES" key="1.IBNSWindowAutoPositionCentersVertical"/>
|
||||
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="1.IBWindowTemplateEditedContentRect">{{357, 418}, {480, 270}}</string>
|
||||
<boolean value="NO" key="1.NSWindowTemplate.visibleAtLaunch"/>
|
||||
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="35.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="36.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="37.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="38.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="39.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="40.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="41.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="42.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="43.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="44.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="8.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
||||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">52</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">DeletionOptions</string>
|
||||
<string key="superclassName">NSWindowController</string>
|
||||
<dictionary class="NSMutableDictionary" key="actions">
|
||||
<string key="cancel:">id</string>
|
||||
<string key="proceed:">id</string>
|
||||
<string key="updateOptions:">id</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="actionInfosByName">
|
||||
<object class="IBActionInfo" key="cancel:">
|
||||
<string key="name">cancel:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="proceed:">
|
||||
<string key="name">proceed:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="updateOptions:">
|
||||
<string key="name">updateOptions:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="outlets">
|
||||
<string key="directButton">NSButton</string>
|
||||
<string key="hardlinkButton">NSButton</string>
|
||||
<string key="messageTextField">NSTextField</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<object class="IBToOneOutletInfo" key="directButton">
|
||||
<string key="name">directButton</string>
|
||||
<string key="candidateClassName">NSButton</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="hardlinkButton">
|
||||
<string key="name">hardlinkButton</string>
|
||||
<string key="candidateClassName">NSButton</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="messageTextField">
|
||||
<string key="name">messageTextField</string>
|
||||
<string key="candidateClassName">NSTextField</string>
|
||||
</object>
|
||||
</dictionary>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/DeletionOptions.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<real value="1060" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
|
||||
<string key="NS.key.0">NSSwitch</string>
|
||||
<string key="NS.object.0">{15, 15}</string>
|
||||
</object>
|
||||
</data>
|
||||
</archive>
|
||||
@@ -1,12 +0,0 @@
|
||||
|
||||
/* Class = "NSPanel"; title = "Details of Selected File"; ObjectID = "5"; */
|
||||
"5.title" = "Details of Selected File";
|
||||
|
||||
/* Class = "NSTableColumn"; headerCell.title = "Selected"; ObjectID = "9"; */
|
||||
"9.headerCell.title" = "Selected";
|
||||
|
||||
/* Class = "NSTableColumn"; headerCell.title = "Reference"; ObjectID = "10"; */
|
||||
"10.headerCell.title" = "Reference";
|
||||
|
||||
/* Class = "NSTableColumn"; headerCell.title = "Attribute"; ObjectID = "11"; */
|
||||
"11.headerCell.title" = "Attribute";
|
||||
@@ -1,519 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1060</int>
|
||||
<string key="IBDocument.SystemVersion">11B26</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">1617</string>
|
||||
<string key="IBDocument.AppKitVersion">1138</string>
|
||||
<string key="IBDocument.HIToolboxVersion">566.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="NS.object.0">1617</string>
|
||||
</object>
|
||||
<array key="IBDocument.IntegratedClassDependencies">
|
||||
<string>NSView</string>
|
||||
<string>NSCustomObject</string>
|
||||
<string>NSScrollView</string>
|
||||
<string>NSWindowTemplate</string>
|
||||
<string>NSTextFieldCell</string>
|
||||
<string>NSTableHeaderView</string>
|
||||
<string>NSTableColumn</string>
|
||||
<string>NSScroller</string>
|
||||
<string>NSTableView</string>
|
||||
</array>
|
||||
<array key="IBDocument.PluginDependencies">
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</array>
|
||||
<dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/>
|
||||
<array class="NSMutableArray" key="IBDocument.RootObjects" id="247693826">
|
||||
<object class="NSCustomObject" id="449947658">
|
||||
<string key="NSClassName">DetailsPanel</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="176092317">
|
||||
<string key="NSClassName">FirstResponder</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="492866996">
|
||||
<string key="NSClassName">NSApplication</string>
|
||||
</object>
|
||||
<object class="NSWindowTemplate" id="476890502">
|
||||
<int key="NSWindowStyleMask">155</int>
|
||||
<int key="NSWindowBacking">2</int>
|
||||
<string key="NSWindowRect">{{33, 261}, {451, 146}}</string>
|
||||
<int key="NSWTFlags">-260571136</int>
|
||||
<string key="NSWindowTitle">Details of Selected File</string>
|
||||
<object class="NSMutableString" key="NSWindowClass">
|
||||
<characters key="NS.bytes">NSPanel</characters>
|
||||
</object>
|
||||
<object class="NSMutableString" key="NSViewClass">
|
||||
<characters key="NS.bytes">View</characters>
|
||||
</object>
|
||||
<nil key="NSUserInterfaceItemIdentifier"/>
|
||||
<string key="NSWindowContentMinSize">{451, 146}</string>
|
||||
<object class="NSView" key="NSWindowView" id="1027711962">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSScrollView" id="362108788">
|
||||
<reference key="NSNextResponder" ref="1027711962"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSClipView" id="488480549">
|
||||
<reference key="NSNextResponder" ref="362108788"/>
|
||||
<int key="NSvFlags">2304</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSTableView" id="251969872">
|
||||
<reference key="NSNextResponder" ref="488480549"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{449, 128}</string>
|
||||
<reference key="NSSuperview" ref="488480549"/>
|
||||
<reference key="NSWindow"/>
|
||||
<int key="NSTag">2</int>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTableHeaderView" key="NSHeaderView" id="374654484">
|
||||
<reference key="NSNextResponder" ref="110085834"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{449, 17}</string>
|
||||
<reference key="NSSuperview" ref="110085834"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSTableView" ref="251969872"/>
|
||||
</object>
|
||||
<object class="_NSCornerView" key="NSCornerView" id="717380566">
|
||||
<reference key="NSNextResponder" ref="362108788"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{-26, 0}, {16, 17}}</string>
|
||||
<reference key="NSSuperview" ref="362108788"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
<array class="NSMutableArray" key="NSTableColumns">
|
||||
<object class="NSTableColumn" id="920315484">
|
||||
<string key="NSIdentifier">0</string>
|
||||
<double key="NSWidth">70</double>
|
||||
<double key="NSMinWidth">40</double>
|
||||
<double key="NSMaxWidth">1000</double>
|
||||
<object class="NSTableHeaderCell" key="NSHeaderCell">
|
||||
<int key="NSCellFlags">75628096</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<string key="NSContents">Attribute</string>
|
||||
<object class="NSFont" key="NSSupport" id="26">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">11</double>
|
||||
<int key="NSfFlags">3100</int>
|
||||
</object>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="690482064">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor" id="427935076">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">headerTextColor</string>
|
||||
<object class="NSColor" key="NSColor" id="45430568">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MAA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextFieldCell" key="NSDataCell" id="402714943">
|
||||
<int key="NSCellFlags">337772096</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<reference key="NSControlView" ref="251969872"/>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="1015576963">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlBackgroundColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor" id="183338835">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlTextColor</string>
|
||||
<reference key="NSColor" ref="45430568"/>
|
||||
</object>
|
||||
</object>
|
||||
<int key="NSResizingMask">2</int>
|
||||
<bool key="NSIsResizeable">YES</bool>
|
||||
<reference key="NSTableView" ref="251969872"/>
|
||||
</object>
|
||||
<object class="NSTableColumn" id="683288430">
|
||||
<string key="NSIdentifier">1</string>
|
||||
<double key="NSWidth">198</double>
|
||||
<double key="NSMinWidth">40</double>
|
||||
<double key="NSMaxWidth">1000</double>
|
||||
<object class="NSTableHeaderCell" key="NSHeaderCell">
|
||||
<int key="NSCellFlags">75628096</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<string key="NSContents">Selected</string>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<reference key="NSBackgroundColor" ref="690482064"/>
|
||||
<reference key="NSTextColor" ref="427935076"/>
|
||||
</object>
|
||||
<object class="NSTextFieldCell" key="NSDataCell" id="649788063">
|
||||
<int key="NSCellFlags">337772096</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<reference key="NSControlView" ref="251969872"/>
|
||||
<reference key="NSBackgroundColor" ref="1015576963"/>
|
||||
<reference key="NSTextColor" ref="183338835"/>
|
||||
</object>
|
||||
<int key="NSResizingMask">3</int>
|
||||
<bool key="NSIsResizeable">YES</bool>
|
||||
<reference key="NSTableView" ref="251969872"/>
|
||||
</object>
|
||||
<object class="NSTableColumn" id="694550305">
|
||||
<string key="NSIdentifier">2</string>
|
||||
<double key="NSWidth">172</double>
|
||||
<double key="NSMinWidth">56.4755859375</double>
|
||||
<double key="NSMaxWidth">1000</double>
|
||||
<object class="NSTableHeaderCell" key="NSHeaderCell">
|
||||
<int key="NSCellFlags">75628096</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<string key="NSContents">Reference</string>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<object class="NSColor" key="NSBackgroundColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">headerColor</string>
|
||||
<object class="NSColor" key="NSColor" id="666582600">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<reference key="NSTextColor" ref="427935076"/>
|
||||
</object>
|
||||
<object class="NSTextFieldCell" key="NSDataCell" id="915876533">
|
||||
<int key="NSCellFlags">337772096</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<reference key="NSControlView" ref="251969872"/>
|
||||
<reference key="NSBackgroundColor" ref="1015576963"/>
|
||||
<reference key="NSTextColor" ref="183338835"/>
|
||||
</object>
|
||||
<int key="NSResizingMask">3</int>
|
||||
<bool key="NSIsResizeable">YES</bool>
|
||||
<reference key="NSTableView" ref="251969872"/>
|
||||
</object>
|
||||
</array>
|
||||
<double key="NSIntercellSpacingWidth">3</double>
|
||||
<double key="NSIntercellSpacingHeight">2</double>
|
||||
<reference key="NSBackgroundColor" ref="666582600"/>
|
||||
<object class="NSColor" key="NSGridColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">gridColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC41AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<double key="NSRowHeight">14</double>
|
||||
<int key="NSTvFlags">1111523328</int>
|
||||
<reference key="NSDelegate"/>
|
||||
<reference key="NSDataSource"/>
|
||||
<int key="NSColumnAutoresizingStyle">1</int>
|
||||
<int key="NSDraggingSourceMaskForLocal">15</int>
|
||||
<int key="NSDraggingSourceMaskForNonLocal">0</int>
|
||||
<bool key="NSAllowsTypeSelect">YES</bool>
|
||||
<int key="NSTableViewDraggingDestinationStyle">0</int>
|
||||
<int key="NSTableViewGroupRowStyle">1</int>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrame">{{1, 17}, {449, 128}}</string>
|
||||
<reference key="NSSuperview" ref="362108788"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="251969872"/>
|
||||
<reference key="NSDocView" ref="251969872"/>
|
||||
<reference key="NSBGColor" ref="1015576963"/>
|
||||
<int key="NScvFlags">4</int>
|
||||
</object>
|
||||
<object class="NSScroller" id="733942317">
|
||||
<reference key="NSNextResponder" ref="362108788"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{-30, 17}, {15, 129}}</string>
|
||||
<reference key="NSSuperview" ref="362108788"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSTarget" ref="362108788"/>
|
||||
<string key="NSAction">_doScroller:</string>
|
||||
<double key="NSPercent">0.89375001192092896</double>
|
||||
</object>
|
||||
<object class="NSScroller" id="168632382">
|
||||
<reference key="NSNextResponder" ref="362108788"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{-100, -100}, {394, 15}}</string>
|
||||
<reference key="NSSuperview" ref="362108788"/>
|
||||
<reference key="NSWindow"/>
|
||||
<int key="NSsFlags">1</int>
|
||||
<reference key="NSTarget" ref="362108788"/>
|
||||
<string key="NSAction">_doScroller:</string>
|
||||
<double key="NSPercent">0.96332520246505737</double>
|
||||
</object>
|
||||
<object class="NSClipView" id="110085834">
|
||||
<reference key="NSNextResponder" ref="362108788"/>
|
||||
<int key="NSvFlags">2304</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<reference ref="374654484"/>
|
||||
</array>
|
||||
<string key="NSFrame">{{1, 0}, {449, 17}}</string>
|
||||
<reference key="NSSuperview" ref="362108788"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="374654484"/>
|
||||
<reference key="NSDocView" ref="374654484"/>
|
||||
<reference key="NSBGColor" ref="1015576963"/>
|
||||
<int key="NScvFlags">4</int>
|
||||
</object>
|
||||
<reference ref="717380566"/>
|
||||
</array>
|
||||
<string key="NSFrameSize">{451, 146}</string>
|
||||
<reference key="NSSuperview" ref="1027711962"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="488480549"/>
|
||||
<int key="NSsFlags">133650</int>
|
||||
<reference key="NSVScroller" ref="733942317"/>
|
||||
<reference key="NSHScroller" ref="168632382"/>
|
||||
<reference key="NSContentView" ref="488480549"/>
|
||||
<reference key="NSHeaderClipView" ref="110085834"/>
|
||||
<reference key="NSCornerView" ref="717380566"/>
|
||||
<bytes key="NSScrollAmts">QSAAAEEgAABBgAAAQYAAAA</bytes>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrameSize">{451, 146}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string>
|
||||
<string key="NSMinSize">{451, 162}</string>
|
||||
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
|
||||
<string key="NSFrameAutosaveName">DetailsPanel</string>
|
||||
<bool key="NSWindowIsRestorable">YES</bool>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<array class="NSMutableArray" key="connectionRecords">
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">window</string>
|
||||
<reference key="source" ref="449947658"/>
|
||||
<reference key="destination" ref="476890502"/>
|
||||
</object>
|
||||
<int key="connectionID">12</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">dataSource</string>
|
||||
<reference key="source" ref="251969872"/>
|
||||
<reference key="destination" ref="449947658"/>
|
||||
</object>
|
||||
<int key="connectionID">21</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">detailsTable</string>
|
||||
<reference key="source" ref="449947658"/>
|
||||
<reference key="destination" ref="251969872"/>
|
||||
</object>
|
||||
<int key="connectionID">22</int>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<array key="orderedObjects">
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<array key="object" id="0"/>
|
||||
<reference key="children" ref="247693826"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="449947658"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="176092317"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">First Responder</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">5</int>
|
||||
<reference key="object" ref="476890502"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="1027711962"/>
|
||||
</array>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">details</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">6</int>
|
||||
<reference key="object" ref="1027711962"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="362108788"/>
|
||||
</array>
|
||||
<reference key="parent" ref="476890502"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">7</int>
|
||||
<reference key="object" ref="362108788"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="251969872"/>
|
||||
<reference ref="733942317"/>
|
||||
<reference ref="168632382"/>
|
||||
<reference ref="374654484"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1027711962"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">8</int>
|
||||
<reference key="object" ref="251969872"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="683288430"/>
|
||||
<reference ref="694550305"/>
|
||||
<reference ref="920315484"/>
|
||||
</array>
|
||||
<reference key="parent" ref="362108788"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">9</int>
|
||||
<reference key="object" ref="683288430"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="649788063"/>
|
||||
</array>
|
||||
<reference key="parent" ref="251969872"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">10</int>
|
||||
<reference key="object" ref="694550305"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="915876533"/>
|
||||
</array>
|
||||
<reference key="parent" ref="251969872"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">11</int>
|
||||
<reference key="object" ref="920315484"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="402714943"/>
|
||||
</array>
|
||||
<reference key="parent" ref="251969872"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">15</int>
|
||||
<reference key="object" ref="649788063"/>
|
||||
<reference key="parent" ref="683288430"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">16</int>
|
||||
<reference key="object" ref="915876533"/>
|
||||
<reference key="parent" ref="694550305"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">17</int>
|
||||
<reference key="object" ref="402714943"/>
|
||||
<reference key="parent" ref="920315484"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">18</int>
|
||||
<reference key="object" ref="733942317"/>
|
||||
<reference key="parent" ref="362108788"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">19</int>
|
||||
<reference key="object" ref="168632382"/>
|
||||
<reference key="parent" ref="362108788"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">20</int>
|
||||
<reference key="object" ref="374654484"/>
|
||||
<reference key="parent" ref="362108788"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-3</int>
|
||||
<reference key="object" ref="492866996"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">Application</string>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="10.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="11.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="15.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES" key="15.IBShouldRemoveOnLegacySave"/>
|
||||
<string key="16.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES" key="16.IBShouldRemoveOnLegacySave"/>
|
||||
<string key="17.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES" key="17.IBShouldRemoveOnLegacySave"/>
|
||||
<string key="18.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES" key="18.IBShouldRemoveOnLegacySave"/>
|
||||
<string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES" key="19.IBShouldRemoveOnLegacySave"/>
|
||||
<string key="20.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES" key="20.IBShouldRemoveOnLegacySave"/>
|
||||
<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="5.IBWindowTemplateEditedContentRect">{{109, 671}, {451, 146}}</string>
|
||||
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="8.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="9.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
||||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">22</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">DetailsPanel</string>
|
||||
<string key="superclassName">HSWindowController</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<string key="NS.key.0">detailsTable</string>
|
||||
<string key="NS.object.0">NSTableView</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<string key="NS.key.0">detailsTable</string>
|
||||
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||
<string key="name">detailsTable</string>
|
||||
<string key="candidateClassName">NSTableView</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/DetailsPanel.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">HSWindowController</string>
|
||||
<string key="superclassName">NSWindowController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/HSWindowController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<real value="1060" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<integer value="1050" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
|
||||
<real value="4100" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
</data>
|
||||
</archive>
|
||||
@@ -1,23 +0,0 @@
|
||||
/* Class = "NSTableColumn"; headerCell.title = "State"; ObjectID = "13"; */
|
||||
"13.headerCell.title" = "State";
|
||||
|
||||
/* Class = "NSTableColumn"; headerCell.title = "Name"; ObjectID = "15"; */
|
||||
"15.headerCell.title" = "Name";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Scan"; ObjectID = "48"; */
|
||||
"48.title" = "Scan";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "55"; */
|
||||
"55.title" = "Normal";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Reference"; ObjectID = "56"; */
|
||||
"56.title" = "Reference";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Excluded"; ObjectID = "57"; */
|
||||
"57.title" = "Excluded";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Select folders to scan and press \"Scan\"."; ObjectID = "71"; */
|
||||
"71.title" = "Select folders to scan and press \"Scan\".";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Load Results"; ObjectID = "73"; */
|
||||
"73.title" = "Load Results";
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,12 +0,0 @@
|
||||
|
||||
/* Class = "NSWindow"; title = "Ignore List"; ObjectID = "1"; */
|
||||
"1.title" = "Ignore List";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Close"; ObjectID = "19"; */
|
||||
"19.title" = "Close";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Remove Selected"; ObjectID = "21"; */
|
||||
"21.title" = "Remove Selected";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Clear"; ObjectID = "28"; */
|
||||
"28.title" = "Clear";
|
||||
@@ -1,504 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1060</int>
|
||||
<string key="IBDocument.SystemVersion">11D50</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">2177</string>
|
||||
<string key="IBDocument.AppKitVersion">1138.32</string>
|
||||
<string key="IBDocument.HIToolboxVersion">568.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="NS.object.0">2177</string>
|
||||
</object>
|
||||
<array key="IBDocument.IntegratedClassDependencies">
|
||||
<string>NSView</string>
|
||||
<string>NSTableView</string>
|
||||
<string>NSScrollView</string>
|
||||
<string>NSWindowTemplate</string>
|
||||
<string>NSTableHeaderView</string>
|
||||
<string>NSButtonCell</string>
|
||||
<string>NSButton</string>
|
||||
<string>NSScroller</string>
|
||||
<string>NSCustomObject</string>
|
||||
</array>
|
||||
<array key="IBDocument.PluginDependencies">
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</array>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
|
||||
<integer value="1" key="NS.object.0"/>
|
||||
</object>
|
||||
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<object class="NSCustomObject" id="1001">
|
||||
<string key="NSClassName">IgnoreListDialog</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1003">
|
||||
<string key="NSClassName">FirstResponder</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1004">
|
||||
<string key="NSClassName">NSApplication</string>
|
||||
</object>
|
||||
<object class="NSWindowTemplate" id="359561441">
|
||||
<int key="NSWindowStyleMask">11</int>
|
||||
<int key="NSWindowBacking">2</int>
|
||||
<string key="NSWindowRect">{{477, 306}, {574, 347}}</string>
|
||||
<int key="NSWTFlags">1685585920</int>
|
||||
<string key="NSWindowTitle">Ignore List</string>
|
||||
<string key="NSWindowClass">NSWindow</string>
|
||||
<nil key="NSViewClass"/>
|
||||
<nil key="NSUserInterfaceItemIdentifier"/>
|
||||
<object class="NSView" key="NSWindowView" id="976198330">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSScrollView" id="458371270">
|
||||
<reference key="NSNextResponder" ref="976198330"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSClipView" id="831830981">
|
||||
<reference key="NSNextResponder" ref="458371270"/>
|
||||
<int key="NSvFlags">2304</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSTableView" id="252791348">
|
||||
<reference key="NSNextResponder" ref="831830981"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{532, 211}</string>
|
||||
<reference key="NSSuperview" ref="831830981"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="777677330"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTableHeaderView" key="NSHeaderView" id="903452051">
|
||||
<reference key="NSNextResponder" ref="777677330"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{532, 17}</string>
|
||||
<reference key="NSSuperview" ref="777677330"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="564034022"/>
|
||||
<reference key="NSTableView" ref="252791348"/>
|
||||
</object>
|
||||
<object class="_NSCornerView" key="NSCornerView" id="564034022">
|
||||
<reference key="NSNextResponder" ref="458371270"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{224, 0}, {16, 17}}</string>
|
||||
<reference key="NSSuperview" ref="458371270"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="831830981"/>
|
||||
</object>
|
||||
<array class="NSMutableArray" key="NSTableColumns"/>
|
||||
<double key="NSIntercellSpacingWidth">3</double>
|
||||
<double key="NSIntercellSpacingHeight">2</double>
|
||||
<object class="NSColor" key="NSBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
<object class="NSColor" key="NSGridColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">gridColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC41AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<double key="NSRowHeight">17</double>
|
||||
<int key="NSTvFlags">1512046592</int>
|
||||
<reference key="NSDelegate"/>
|
||||
<reference key="NSDataSource"/>
|
||||
<int key="NSColumnAutoresizingStyle">4</int>
|
||||
<int key="NSDraggingSourceMaskForLocal">15</int>
|
||||
<int key="NSDraggingSourceMaskForNonLocal">0</int>
|
||||
<bool key="NSAllowsTypeSelect">NO</bool>
|
||||
<int key="NSTableViewDraggingDestinationStyle">0</int>
|
||||
<int key="NSTableViewGroupRowStyle">1</int>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrame">{{1, 17}, {532, 249}}</string>
|
||||
<reference key="NSSuperview" ref="458371270"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="252791348"/>
|
||||
<reference key="NSDocView" ref="252791348"/>
|
||||
<object class="NSColor" key="NSBGColor" id="765209443">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlBackgroundColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<int key="NScvFlags">4</int>
|
||||
</object>
|
||||
<object class="NSScroller" id="99096694">
|
||||
<reference key="NSNextResponder" ref="458371270"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{224, 17}, {15, 102}}</string>
|
||||
<reference key="NSSuperview" ref="458371270"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="47224920"/>
|
||||
<reference key="NSTarget" ref="458371270"/>
|
||||
<string key="NSAction">_doScroller:</string>
|
||||
<double key="NSPercent">0.99052132701421802</double>
|
||||
</object>
|
||||
<object class="NSScroller" id="47224920">
|
||||
<reference key="NSNextResponder" ref="458371270"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{1, 154}, {438, 15}}</string>
|
||||
<reference key="NSSuperview" ref="458371270"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="253286088"/>
|
||||
<int key="NSsFlags">1</int>
|
||||
<reference key="NSTarget" ref="458371270"/>
|
||||
<string key="NSAction">_doScroller:</string>
|
||||
<double key="NSCurValue">1</double>
|
||||
<double key="NSPercent">0.98871331828442433</double>
|
||||
</object>
|
||||
<object class="NSClipView" id="777677330">
|
||||
<reference key="NSNextResponder" ref="458371270"/>
|
||||
<int key="NSvFlags">2304</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<reference ref="903452051"/>
|
||||
</array>
|
||||
<string key="NSFrame">{{1, 0}, {532, 17}}</string>
|
||||
<reference key="NSSuperview" ref="458371270"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="903452051"/>
|
||||
<reference key="NSDocView" ref="903452051"/>
|
||||
<reference key="NSBGColor" ref="765209443"/>
|
||||
<int key="NScvFlags">4</int>
|
||||
</object>
|
||||
<reference ref="564034022"/>
|
||||
</array>
|
||||
<string key="NSFrame">{{20, 60}, {534, 267}}</string>
|
||||
<reference key="NSSuperview" ref="976198330"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="831830981"/>
|
||||
<int key="NSsFlags">133682</int>
|
||||
<reference key="NSVScroller" ref="99096694"/>
|
||||
<reference key="NSHScroller" ref="47224920"/>
|
||||
<reference key="NSContentView" ref="831830981"/>
|
||||
<reference key="NSHeaderClipView" ref="777677330"/>
|
||||
<reference key="NSCornerView" ref="564034022"/>
|
||||
<bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
|
||||
</object>
|
||||
<object class="NSButton" id="4380169">
|
||||
<reference key="NSNextResponder" ref="976198330"/>
|
||||
<int key="NSvFlags">289</int>
|
||||
<string key="NSFrame">{{464, 12}, {96, 32}}</string>
|
||||
<reference key="NSSuperview" ref="976198330"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="373771329">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">Close</string>
|
||||
<object class="NSFont" key="NSSupport" id="680801460">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">13</double>
|
||||
<int key="NSfFlags">1044</int>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="4380169"/>
|
||||
<int key="NSButtonFlags">-2038284033</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="253286088">
|
||||
<reference key="NSNextResponder" ref="976198330"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrame">{{14, 12}, {154, 32}}</string>
|
||||
<reference key="NSSuperview" ref="976198330"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="983148229"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="671547957">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">Remove Selected</string>
|
||||
<reference key="NSSupport" ref="680801460"/>
|
||||
<reference key="NSControlView" ref="253286088"/>
|
||||
<int key="NSButtonFlags">-2038284033</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="983148229">
|
||||
<reference key="NSNextResponder" ref="976198330"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrame">{{162, 12}, {154, 32}}</string>
|
||||
<reference key="NSSuperview" ref="976198330"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="4380169"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="409951495">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">Clear</string>
|
||||
<reference key="NSSupport" ref="680801460"/>
|
||||
<reference key="NSControlView" ref="983148229"/>
|
||||
<int key="NSButtonFlags">-2038284033</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrameSize">{574, 347}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="458371270"/>
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string>
|
||||
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
|
||||
<bool key="NSWindowIsRestorable">YES</bool>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<array class="NSMutableArray" key="connectionRecords">
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">window</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="359561441"/>
|
||||
</object>
|
||||
<int key="connectionID">22</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">ignoreListTableView</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="252791348"/>
|
||||
</object>
|
||||
<int key="connectionID">30</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">removeSelected:</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="253286088"/>
|
||||
</object>
|
||||
<int key="connectionID">31</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">clear:</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="983148229"/>
|
||||
</object>
|
||||
<int key="connectionID">32</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">performClose:</string>
|
||||
<reference key="source" ref="359561441"/>
|
||||
<reference key="destination" ref="4380169"/>
|
||||
</object>
|
||||
<int key="connectionID">25</int>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<array key="orderedObjects">
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<array key="object" id="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="1001"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="1003"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">First Responder</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-3</int>
|
||||
<reference key="object" ref="1004"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">Application</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1</int>
|
||||
<reference key="object" ref="359561441"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="976198330"/>
|
||||
</array>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2</int>
|
||||
<reference key="object" ref="976198330"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="458371270"/>
|
||||
<reference ref="4380169"/>
|
||||
<reference ref="253286088"/>
|
||||
<reference ref="983148229"/>
|
||||
</array>
|
||||
<reference key="parent" ref="359561441"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">5</int>
|
||||
<reference key="object" ref="458371270"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="99096694"/>
|
||||
<reference ref="47224920"/>
|
||||
<reference ref="252791348"/>
|
||||
<reference ref="903452051"/>
|
||||
</array>
|
||||
<reference key="parent" ref="976198330"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">6</int>
|
||||
<reference key="object" ref="99096694"/>
|
||||
<reference key="parent" ref="458371270"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">7</int>
|
||||
<reference key="object" ref="47224920"/>
|
||||
<reference key="parent" ref="458371270"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">8</int>
|
||||
<reference key="object" ref="252791348"/>
|
||||
<array class="NSMutableArray" key="children"/>
|
||||
<reference key="parent" ref="458371270"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">9</int>
|
||||
<reference key="object" ref="903452051"/>
|
||||
<reference key="parent" ref="458371270"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">18</int>
|
||||
<reference key="object" ref="4380169"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="373771329"/>
|
||||
</array>
|
||||
<reference key="parent" ref="976198330"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">19</int>
|
||||
<reference key="object" ref="373771329"/>
|
||||
<reference key="parent" ref="4380169"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">20</int>
|
||||
<reference key="object" ref="253286088"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="671547957"/>
|
||||
</array>
|
||||
<reference key="parent" ref="976198330"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">21</int>
|
||||
<reference key="object" ref="671547957"/>
|
||||
<reference key="parent" ref="253286088"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">27</int>
|
||||
<reference key="object" ref="983148229"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="409951495"/>
|
||||
</array>
|
||||
<reference key="parent" ref="976198330"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">28</int>
|
||||
<reference key="object" ref="409951495"/>
|
||||
<reference key="parent" ref="983148229"/>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="1.IBWindowTemplateEditedContentRect">{{477, 306}, {480, 309}}</string>
|
||||
<boolean value="NO" key="1.NSWindowTemplate.visibleAtLaunch"/>
|
||||
<string key="18.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="20.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="21.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="27.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="28.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="8.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="9.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
||||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">32</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">IgnoreListDialog</string>
|
||||
<string key="superclassName">NSWindowController</string>
|
||||
<dictionary class="NSMutableDictionary" key="actions">
|
||||
<string key="clear:">id</string>
|
||||
<string key="removeSelected:">id</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="actionInfosByName">
|
||||
<object class="IBActionInfo" key="clear:">
|
||||
<string key="name">clear:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="removeSelected:">
|
||||
<string key="name">removeSelected:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</dictionary>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<string key="NS.key.0">ignoreListTableView</string>
|
||||
<string key="NS.object.0">NSTableView</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<string key="NS.key.0">ignoreListTableView</string>
|
||||
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||
<string key="name">ignoreListTableView</string>
|
||||
<string key="candidateClassName">NSTableView</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/IgnoreListDialog.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<real value="1060" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<real value="1060" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
|
||||
<real value="4100" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
</data>
|
||||
</archive>
|
||||
@@ -1,27 +1,150 @@
|
||||
"Add New Folder..." = "Add New Folder...";
|
||||
"Load from file..." = "Load from file...";
|
||||
"Reset to Default" = "Reset to Default";
|
||||
|
||||
"Select a results file to load" = "Select a results file to load";
|
||||
"You have unsaved results, do you really want to quit?" = "You have unsaved results, do you really want to quit?";
|
||||
"A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again." = "A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again.";
|
||||
"About dupeGuru" = "About dupeGuru";
|
||||
"Action" = "Action";
|
||||
"Actions" = "Actions";
|
||||
"Add Aperture Library" = "Add Aperture Library";
|
||||
"Add criteria to the right box and click OK to send the dupes that correspond the best to these criteria to their respective group's reference position. Read the help file for more information." = "Add criteria to the right box and click OK to send the dupes that correspond the best to these criteria to their respective group's reference position. Read the help file for more information.";
|
||||
"Add iPhoto Library" = "Add iPhoto Library";
|
||||
"Add iTunes Library" = "Add iTunes Library";
|
||||
"Add New Folder..." = "Add New Folder...";
|
||||
"Add Selected to Ignore List" = "Add Selected to Ignore List";
|
||||
"Advanced" = "Advanced";
|
||||
"After having deleted a duplicate, place a link targeting the reference file to replace the deleted file." = "After having deleted a duplicate, place a link targeting the reference file to replace the deleted file.";
|
||||
"Album" = "Album";
|
||||
"Artist" = "Artist";
|
||||
"Attribute" = "Attribute";
|
||||
"Audio Content" = "Audio Content";
|
||||
"Automatically check for updates" = "Automatically check for updates";
|
||||
"Basic" = "Basic";
|
||||
"Bring All to Front" = "Bring All to Front";
|
||||
"Can mix file kind" = "Can mix file kind";
|
||||
"Cancel" = "Cancel";
|
||||
"Check for update..." = "Check for update...";
|
||||
"Clear" = "Clear";
|
||||
"Clear Picture Cache" = "Clear Picture Cache";
|
||||
"Close" = "Close";
|
||||
"Close Window" = "Close Window";
|
||||
"Columns" = "Columns";
|
||||
"Content" = "Content";
|
||||
"Contents" = "Contents";
|
||||
"Copy" = "Copy";
|
||||
"Copy and Move:" = "Copy and Move:";
|
||||
"Copy Marked to..." = "Copy Marked to...";
|
||||
"Custom command (arguments: %d for dupe, %r for ref):" = "Custom command (arguments: %d for dupe, %r for ref):";
|
||||
"Cut" = "Cut";
|
||||
"Debug mode (restart required)" = "Debug mode (restart required)";
|
||||
"Deletion Options" = "Deletion Options";
|
||||
"Delta" = "Delta";
|
||||
"Details" = "Details";
|
||||
"Details of Selected File" = "Details of Selected File";
|
||||
"Details Panel" = "Details Panel";
|
||||
"Directly delete files" = "Directly delete files";
|
||||
"Directories" = "Directories";
|
||||
"Do you really want to remove all your cached picture analysis?" = "Do you really want to remove all your cached picture analysis?";
|
||||
"dupeGuru" = "dupeGuru";
|
||||
"dupeGuru Help" = "dupeGuru Help";
|
||||
"dupeGuru ME Preferences" = "dupeGuru ME Preferences";
|
||||
"dupeGuru PE Preferences" = "dupeGuru PE Preferences";
|
||||
"dupeGuru Preferences" = "dupeGuru Preferences";
|
||||
"dupeGuru Results" = "dupeGuru Results";
|
||||
"dupeGuru Website" = "dupeGuru Website";
|
||||
"Dupes Only" = "Dupes Only";
|
||||
"Edit" = "Edit";
|
||||
"Excluded" = "Excluded";
|
||||
"EXIF Timestamp" = "EXIF Timestamp";
|
||||
"Export Results to CSV" = "Export Results to CSV";
|
||||
"Export Results to XHTML" = "Export Results to XHTML";
|
||||
"Fewer results" = "Fewer results";
|
||||
"File" = "File";
|
||||
"Filename" = "Filename";
|
||||
"Filename - Fields" = "Filename - Fields";
|
||||
"Filename - Fields (No Order)" = "Filename - Fields (No Order)";
|
||||
"Filter" = "Filter";
|
||||
"Filter hardness:" = "Filter hardness:";
|
||||
"Filter Results..." = "Filter Results...";
|
||||
"Folder Selection Window" = "Folder Selection Window";
|
||||
"Folders" = "Folders";
|
||||
"Font Size:" = "Font Size:";
|
||||
"Genre" = "Genre";
|
||||
"Help" = "Help";
|
||||
"Hide dupeGuru" = "Hide dupeGuru";
|
||||
"Hide Others" = "Hide Others";
|
||||
"Ignore duplicates hardlinking to the same file" = "Ignore duplicates hardlinking to the same file";
|
||||
"Ignore files smaller than:" = "Ignore files smaller than:";
|
||||
"Ignore List" = "Ignore List";
|
||||
"Instead of sending files to trash, delete them directly. This option is usually used as a workaround when the normal deletion method doesn't work." = "Instead of sending files to trash, delete them directly. This option is usually used as a workaround when the normal deletion method doesn't work.";
|
||||
"Invert Marking" = "Invert Marking";
|
||||
"Invoke Custom Command" = "Invoke Custom Command";
|
||||
"KB" = "KB";
|
||||
"Link deleted files" = "Link deleted files";
|
||||
"Load from file..." = "Load from file...";
|
||||
"Load Recent Results" = "Load Recent Results";
|
||||
"Load Results" = "Load Results";
|
||||
"Load Results..." = "Load Results...";
|
||||
"Make Selected Reference" = "Make Selected Reference";
|
||||
"Mark All" = "Mark All";
|
||||
"Mark None" = "Mark None";
|
||||
"Mark Selected" = "Mark Selected";
|
||||
"Match pictures of different dimensions" = "Match pictures of different dimensions";
|
||||
"Match similar words" = "Match similar words";
|
||||
"Minimize" = "Minimize";
|
||||
"Mode" = "Mode";
|
||||
"More results" = "More results";
|
||||
"Move Marked to..." = "Move Marked to...";
|
||||
"Name" = "Name";
|
||||
"Normal" = "Normal";
|
||||
"Ok" = "Ok";
|
||||
"Open Selected with Default Application" = "Open Selected with Default Application";
|
||||
"Options" = "Options";
|
||||
"Paste" = "Paste";
|
||||
"Preferences..." = "Preferences...";
|
||||
"Problems!" = "Problems!";
|
||||
"Proceed" = "Proceed";
|
||||
"Quick Look" = "Quick Look";
|
||||
"Quit dupeGuru" = "Quit dupeGuru";
|
||||
"Re-Prioritize duplicates" = "Re-Prioritize duplicates";
|
||||
"Re-Prioritize Results" = "Re-Prioritize Results";
|
||||
"Recreate absolute path" = "Recreate absolute path";
|
||||
"Recreate relative path" = "Recreate relative path";
|
||||
"Reference" = "Reference";
|
||||
"Remove Dead Tracks in iTunes" = "Remove Dead Tracks in iTunes";
|
||||
"Remove empty folders on delete or move" = "Remove empty folders on delete or move";
|
||||
"Remove Marked from Results" = "Remove Marked from Results";
|
||||
"Remove Selected" = "Remove Selected";
|
||||
"Remove Selected from Results" = "Remove Selected from Results";
|
||||
"Rename Selected" = "Rename Selected";
|
||||
"Reset to Default" = "Reset to Default";
|
||||
"Reset To Defaults" = "Reset To Defaults";
|
||||
"Results Window" = "Results Window";
|
||||
"Reveal" = "Reveal";
|
||||
"Reveal Selected in Finder" = "Reveal Selected in Finder";
|
||||
"Right in destination" = "Right in destination";
|
||||
"Save Results..." = "Save Results...";
|
||||
"Scan" = "Scan";
|
||||
"Scan Type:" = "Scan Type:";
|
||||
"Select a file to save your results to" = "Select a file to save your results to";
|
||||
"Select a folder to add to the scanning list" = "Select a folder to add to the scanning list";
|
||||
"You have unsaved results, do you really want to continue?" = "You have unsaved results, do you really want to continue?";
|
||||
"'%@' already is in the list." = "'%@' already is in the list.";
|
||||
"'%@' does not exist." = "'%@' does not exist.";
|
||||
"Select a results file to load" = "Select a results file to load";
|
||||
"Select folders to scan and press \"Scan\"." = "Select folders to scan and press \"Scan\".";
|
||||
"Selected" = "Selected";
|
||||
"Send Marked to Trash..." = "Send Marked to Trash...";
|
||||
"Services" = "Services";
|
||||
"Show All" = "Show All";
|
||||
"Show Delta Values" = "Show Delta Values";
|
||||
"Show Dupes Only" = "Show Dupes Only";
|
||||
"Start Duplicate Scan" = "Start Duplicate Scan";
|
||||
"State" = "State";
|
||||
"Tags" = "Tags";
|
||||
"Tags to scan:" = "Tags to scan:";
|
||||
"The name '%@' already exists." = "The name '%@' already exists.";
|
||||
"A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again." = "A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again.";
|
||||
"Your iTunes Library contains %d dead tracks ready to be removed. Continue?" = "Your iTunes Library contains %d dead tracks ready to be removed. Continue?";
|
||||
"You have no dead tracks in your iTunes Library" = "You have no dead tracks in your iTunes Library";
|
||||
"Do you really want to remove all your cached picture analysis?" = "Do you really want to remove all your cached picture analysis?";
|
||||
|
||||
|
||||
"Add iTunes Directory" = "Add iTunes Directory";
|
||||
"Remove Dead Tracks in iTunes" = "Remove Dead Tracks in iTunes";
|
||||
|
||||
"Add iPhoto Library" = "Add iPhoto Library";
|
||||
"Clear Picture Cache" = "Clear Picture Cache";
|
||||
|
||||
"Yes" = "Yes";
|
||||
"No" = "No";
|
||||
"OK" = "OK";
|
||||
"There were problems processing some (or all) of the files. The cause of these problems are described in the table below. Those files were not removed from your results." = "There were problems processing some (or all) of the files. The cause of these problems are described in the table below. Those files were not removed from your results.";
|
||||
"Title" = "Title";
|
||||
"Track" = "Track";
|
||||
"Use regular expressions when filtering" = "Use regular expressions when filtering";
|
||||
"Window" = "Window";
|
||||
"Word weighting" = "Word weighting";
|
||||
"Year" = "Year";
|
||||
"You have unsaved results, do you really want to continue?" = "You have unsaved results, do you really want to continue?";
|
||||
"You have unsaved results, do you really want to quit?" = "You have unsaved results, do you really want to quit?";
|
||||
"Zoom" = "Zoom";
|
||||
|
||||
@@ -1,174 +0,0 @@
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "5"; */
|
||||
"5.title" = "Bring All to Front";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
|
||||
"19.title" = "Window";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
|
||||
"23.title" = "Minimize";
|
||||
|
||||
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
|
||||
"24.title" = "Window";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "About dupeGuru"; ObjectID = "58"; */
|
||||
"58.title" = "About dupeGuru";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
|
||||
"103.title" = "Help";
|
||||
|
||||
/* Class = "NSMenu"; title = "Help"; ObjectID = "106"; */
|
||||
"106.title" = "Help";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "dupeGuru Help"; ObjectID = "111"; */
|
||||
"111.title" = "dupeGuru Help";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Hide dupeGuru"; ObjectID = "134"; */
|
||||
"134.title" = "Hide dupeGuru";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Quit dupeGuru"; ObjectID = "136"; */
|
||||
"136.title" = "Quit dupeGuru";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "145"; */
|
||||
"145.title" = "Hide Others";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
|
||||
"150.title" = "Show All";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "197"; */
|
||||
"197.title" = "Zoom";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Details Panel"; ObjectID = "398"; */
|
||||
"398.title" = "Details Panel";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Preferences..."; ObjectID = "541"; */
|
||||
"541.title" = "Preferences...";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Folder Selection Window"; ObjectID = "579"; */
|
||||
"579.title" = "Folder Selection Window";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Actions"; ObjectID = "597"; */
|
||||
"597.title" = "Actions";
|
||||
|
||||
/* Class = "NSMenu"; title = "Actions"; ObjectID = "598"; */
|
||||
"598.title" = "Actions";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Send Marked to Trash"; ObjectID = "599"; */
|
||||
"599.title" = "Send Marked to Trash";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Move Marked to..."; ObjectID = "600"; */
|
||||
"600.title" = "Move Marked to...";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Copy Marked to..."; ObjectID = "601"; */
|
||||
"601.title" = "Copy Marked to...";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "602"; */
|
||||
"602.title" = "Make Selected Reference";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Remove Marked from Results"; ObjectID = "603"; */
|
||||
"603.title" = "Remove Marked from Results";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "605"; */
|
||||
"605.title" = "Remove Selected from Results";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Columns"; ObjectID = "618"; */
|
||||
"618.title" = "Columns";
|
||||
|
||||
/* Class = "NSMenu"; title = "Columns"; ObjectID = "619"; */
|
||||
"619.title" = "Columns";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "708"; */
|
||||
"708.title" = "Open Selected with Default Application";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Reveal Selected in Finder"; ObjectID = "710"; */
|
||||
"710.title" = "Reveal Selected in Finder";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Add Selected to Ignore List"; ObjectID = "922"; */
|
||||
"922.title" = "Add Selected to Ignore List";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Close Window"; ObjectID = "924"; */
|
||||
"924.title" = "Close Window";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Start Duplicate Scan"; ObjectID = "926"; */
|
||||
"926.title" = "Start Duplicate Scan";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "933"; */
|
||||
"933.title" = "Rename Selected";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Export Results to XHTML"; ObjectID = "947"; */
|
||||
"947.title" = "Export Results to XHTML";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Check for update..."; ObjectID = "950"; */
|
||||
"950.title" = "Check for update...";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Mode"; ObjectID = "959"; */
|
||||
"959.title" = "Mode";
|
||||
|
||||
/* Class = "NSMenu"; title = "Mode"; ObjectID = "960"; */
|
||||
"960.title" = "Mode";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Show Dupes Only"; ObjectID = "961"; */
|
||||
"961.title" = "Show Dupes Only";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Show Delta Values"; ObjectID = "962"; */
|
||||
"962.title" = "Show Delta Values";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "965"; */
|
||||
"965.title" = "Edit";
|
||||
|
||||
/* Class = "NSMenu"; title = "Edit"; ObjectID = "966"; */
|
||||
"966.title" = "Edit";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "985"; */
|
||||
"985.title" = "Cut";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "986"; */
|
||||
"986.title" = "Copy";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "991"; */
|
||||
"991.title" = "Paste";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Mark All"; ObjectID = "1011"; */
|
||||
"1011.title" = "Mark All";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Mark None"; ObjectID = "1012"; */
|
||||
"1012.title" = "Mark None";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Invert Marking"; ObjectID = "1013"; */
|
||||
"1013.title" = "Invert Marking";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Mark Selected"; ObjectID = "1014"; */
|
||||
"1014.title" = "Mark Selected";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "dupeGuru Website"; ObjectID = "1023"; */
|
||||
"1023.title" = "dupeGuru Website";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Invoke Custom Command"; ObjectID = "1177"; */
|
||||
"1177.title" = "Invoke Custom Command";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "File"; ObjectID = "1203"; */
|
||||
"1203.title" = "File";
|
||||
|
||||
/* Class = "NSMenu"; title = "File"; ObjectID = "1204"; */
|
||||
"1204.title" = "File";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Load Results..."; ObjectID = "1205"; */
|
||||
"1205.title" = "Load Results...";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Save Results..."; ObjectID = "1206"; */
|
||||
"1206.title" = "Save Results...";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Load Recent Results"; ObjectID = "1239"; */
|
||||
"1239.title" = "Load Recent Results";
|
||||
|
||||
/* Class = "NSMenu"; title = "Load Recent Results"; ObjectID = "1240"; */
|
||||
"1240.title" = "Load Recent Results";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Results Window"; ObjectID = "1272"; */
|
||||
"1272.title" = "Results Window";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Re-Prioritize Results"; ObjectID = "1276"; */
|
||||
"1276.title" = "Re-Prioritize Results";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Ignore List"; ObjectID = "1283"; */
|
||||
"1283.title" = "Ignore List";
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,12 +0,0 @@
|
||||
|
||||
/* Class = "NSWindow"; title = "Re-Prioritize duplicates"; ObjectID = "1"; */
|
||||
"1.title" = "Re-Prioritize duplicates";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Ok"; ObjectID = "37"; */
|
||||
"37.title" = "Ok";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "39"; */
|
||||
"39.title" = "Cancel";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Add criteria to the right box and click OK to send the dupes that correspond the best to these criteria to their respective group's reference position. Read the help file for more information."; ObjectID = "41"; */
|
||||
"41.title" = "Add criteria to the right box and click OK to send the dupes that correspond the best to these criteria to their respective group's reference position. Read the help file for more information.";
|
||||
@@ -1,897 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1060</int>
|
||||
<string key="IBDocument.SystemVersion">11D50</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">2182</string>
|
||||
<string key="IBDocument.AppKitVersion">1138.32</string>
|
||||
<string key="IBDocument.HIToolboxVersion">568.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="NS.object.0">2182</string>
|
||||
</object>
|
||||
<array key="IBDocument.IntegratedClassDependencies">
|
||||
<string>NSTextField</string>
|
||||
<string>NSPopUpButton</string>
|
||||
<string>NSScroller</string>
|
||||
<string>NSButton</string>
|
||||
<string>NSMenu</string>
|
||||
<string>NSScrollView</string>
|
||||
<string>NSTextFieldCell</string>
|
||||
<string>NSButtonCell</string>
|
||||
<string>NSTableView</string>
|
||||
<string>NSCustomObject</string>
|
||||
<string>NSView</string>
|
||||
<string>NSWindowTemplate</string>
|
||||
<string>NSPopUpButtonCell</string>
|
||||
<string>NSTableColumn</string>
|
||||
</array>
|
||||
<array key="IBDocument.PluginDependencies">
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</array>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
|
||||
<integer value="1" key="NS.object.0"/>
|
||||
</object>
|
||||
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<object class="NSCustomObject" id="1001">
|
||||
<string key="NSClassName">PrioritizeDialog</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1003">
|
||||
<string key="NSClassName">FirstResponder</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1004">
|
||||
<string key="NSClassName">NSApplication</string>
|
||||
</object>
|
||||
<object class="NSWindowTemplate" id="1005">
|
||||
<int key="NSWindowStyleMask">9</int>
|
||||
<int key="NSWindowBacking">2</int>
|
||||
<string key="NSWindowRect">{{196, 240}, {609, 401}}</string>
|
||||
<int key="NSWTFlags">1618477056</int>
|
||||
<string key="NSWindowTitle">Re-Prioritize duplicates</string>
|
||||
<string key="NSWindowClass">NSWindow</string>
|
||||
<nil key="NSViewClass"/>
|
||||
<nil key="NSUserInterfaceItemIdentifier"/>
|
||||
<object class="NSView" key="NSWindowView" id="1006">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSPopUpButton" id="357095790">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{17, 298}, {268, 26}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="386461059"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:179</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="892922362">
|
||||
<int key="NSCellFlags">-2076049856</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<object class="NSFont" key="NSSupport" id="591283433">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">13</double>
|
||||
<int key="NSfFlags">1044</int>
|
||||
</object>
|
||||
<string key="NSCellIdentifier">_NS:179</string>
|
||||
<reference key="NSControlView" ref="357095790"/>
|
||||
<int key="NSButtonFlags">109199615</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">400</int>
|
||||
<int key="NSPeriodicInterval">75</int>
|
||||
<nil key="NSMenuItem"/>
|
||||
<bool key="NSMenuItemRespectAlignment">YES</bool>
|
||||
<object class="NSMenu" key="NSMenu" id="309249465">
|
||||
<string key="NSTitle">OtherViews</string>
|
||||
<array class="NSMutableArray" key="NSMenuItems"/>
|
||||
<reference key="NSMenuFont" ref="591283433"/>
|
||||
</object>
|
||||
<int key="NSSelectedIndex">-1</int>
|
||||
<int key="NSPreferredEdge">1</int>
|
||||
<bool key="NSUsesItemFromMenu">YES</bool>
|
||||
<bool key="NSAltersState">YES</bool>
|
||||
<int key="NSArrowPosition">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSScrollView" id="386461059">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">276</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSClipView" id="991694656">
|
||||
<reference key="NSNextResponder" ref="386461059"/>
|
||||
<int key="NSvFlags">2304</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSTableView" id="675311684">
|
||||
<reference key="NSNextResponder" ref="991694656"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{260, 233}</string>
|
||||
<reference key="NSSuperview" ref="991694656"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="978953877"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1197</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="_NSCornerView" key="NSCornerView">
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{224, 0}, {16, 17}}</string>
|
||||
<string key="NSReuseIdentifierKey">_NS:1202</string>
|
||||
</object>
|
||||
<array class="NSMutableArray" key="NSTableColumns">
|
||||
<object class="NSTableColumn" id="331887935">
|
||||
<double key="NSWidth">257</double>
|
||||
<double key="NSMinWidth">40</double>
|
||||
<double key="NSMaxWidth">1000</double>
|
||||
<object class="NSTableHeaderCell" key="NSHeaderCell">
|
||||
<int key="NSCellFlags">75628096</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<string key="NSContents"/>
|
||||
<object class="NSFont" key="NSSupport" id="26">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">11</double>
|
||||
<int key="NSfFlags">3100</int>
|
||||
</object>
|
||||
<object class="NSColor" key="NSBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor" id="165509352">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">headerTextColor</string>
|
||||
<object class="NSColor" key="NSColor" id="95789318">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MAA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextFieldCell" key="NSDataCell" id="252516817">
|
||||
<int key="NSCellFlags">337772096</int>
|
||||
<int key="NSCellFlags2">2560</int>
|
||||
<string key="NSContents"/>
|
||||
<reference key="NSSupport" ref="591283433"/>
|
||||
<reference key="NSControlView" ref="675311684"/>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="768431893">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlBackgroundColor</string>
|
||||
<object class="NSColor" key="NSColor" id="857981892">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor" id="983887457">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlTextColor</string>
|
||||
<reference key="NSColor" ref="95789318"/>
|
||||
</object>
|
||||
</object>
|
||||
<int key="NSResizingMask">3</int>
|
||||
<bool key="NSIsResizeable">YES</bool>
|
||||
<bool key="NSIsEditable">YES</bool>
|
||||
<reference key="NSTableView" ref="675311684"/>
|
||||
</object>
|
||||
</array>
|
||||
<double key="NSIntercellSpacingWidth">3</double>
|
||||
<double key="NSIntercellSpacingHeight">2</double>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="949356842">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
<object class="NSColor" key="NSGridColor" id="353256269">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">gridColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC41AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<double key="NSRowHeight">17</double>
|
||||
<int key="NSTvFlags">306184192</int>
|
||||
<reference key="NSDelegate"/>
|
||||
<reference key="NSDataSource"/>
|
||||
<int key="NSColumnAutoresizingStyle">4</int>
|
||||
<int key="NSDraggingSourceMaskForLocal">15</int>
|
||||
<int key="NSDraggingSourceMaskForNonLocal">0</int>
|
||||
<bool key="NSAllowsTypeSelect">NO</bool>
|
||||
<int key="NSTableViewDraggingDestinationStyle">0</int>
|
||||
<int key="NSTableViewGroupRowStyle">1</int>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrame">{{1, 1}, {260, 233}}</string>
|
||||
<reference key="NSSuperview" ref="386461059"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="675311684"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1195</string>
|
||||
<reference key="NSDocView" ref="675311684"/>
|
||||
<reference key="NSBGColor" ref="768431893"/>
|
||||
<int key="NScvFlags">4</int>
|
||||
</object>
|
||||
<object class="NSScroller" id="978953877">
|
||||
<reference key="NSNextResponder" ref="386461059"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{224, 17}, {15, 102}}</string>
|
||||
<reference key="NSSuperview" ref="386461059"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="1055237002"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1214</string>
|
||||
<reference key="NSTarget" ref="386461059"/>
|
||||
<string key="NSAction">_doScroller:</string>
|
||||
<double key="NSPercent">0.9925373134328358</double>
|
||||
</object>
|
||||
<object class="NSScroller" id="1055237002">
|
||||
<reference key="NSNextResponder" ref="386461059"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{1, 119}, {223, 15}}</string>
|
||||
<reference key="NSSuperview" ref="386461059"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="878293971"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1216</string>
|
||||
<int key="NSsFlags">1</int>
|
||||
<reference key="NSTarget" ref="386461059"/>
|
||||
<string key="NSAction">_doScroller:</string>
|
||||
<double key="NSPercent">0.99581589958159</double>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrame">{{20, 60}, {262, 235}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="991694656"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1193</string>
|
||||
<int key="NSsFlags">133682</int>
|
||||
<reference key="NSVScroller" ref="978953877"/>
|
||||
<reference key="NSHScroller" ref="1055237002"/>
|
||||
<reference key="NSContentView" ref="991694656"/>
|
||||
<bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
|
||||
</object>
|
||||
<object class="NSScrollView" id="687805562">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSClipView" id="256485327">
|
||||
<reference key="NSNextResponder" ref="687805562"/>
|
||||
<int key="NSvFlags">2304</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSTableView" id="69698213">
|
||||
<reference key="NSNextResponder" ref="256485327"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{248, 260}</string>
|
||||
<reference key="NSSuperview" ref="256485327"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="258173410"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1197</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="_NSCornerView" key="NSCornerView">
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{224, 0}, {16, 17}}</string>
|
||||
<string key="NSReuseIdentifierKey">_NS:1202</string>
|
||||
</object>
|
||||
<array class="NSMutableArray" key="NSTableColumns">
|
||||
<object class="NSTableColumn" id="604129553">
|
||||
<double key="NSWidth">245</double>
|
||||
<double key="NSMinWidth">40</double>
|
||||
<double key="NSMaxWidth">1000</double>
|
||||
<object class="NSTableHeaderCell" key="NSHeaderCell">
|
||||
<int key="NSCellFlags">75628096</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<string key="NSContents"/>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<object class="NSColor" key="NSBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
|
||||
</object>
|
||||
<reference key="NSTextColor" ref="165509352"/>
|
||||
</object>
|
||||
<object class="NSTextFieldCell" key="NSDataCell" id="998326916">
|
||||
<int key="NSCellFlags">337772096</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<string key="NSContents"/>
|
||||
<reference key="NSSupport" ref="591283433"/>
|
||||
<reference key="NSControlView" ref="69698213"/>
|
||||
<reference key="NSBackgroundColor" ref="768431893"/>
|
||||
<reference key="NSTextColor" ref="983887457"/>
|
||||
</object>
|
||||
<int key="NSResizingMask">3</int>
|
||||
<bool key="NSIsResizeable">YES</bool>
|
||||
<bool key="NSIsEditable">YES</bool>
|
||||
<reference key="NSTableView" ref="69698213"/>
|
||||
</object>
|
||||
</array>
|
||||
<double key="NSIntercellSpacingWidth">3</double>
|
||||
<double key="NSIntercellSpacingHeight">2</double>
|
||||
<reference key="NSBackgroundColor" ref="949356842"/>
|
||||
<reference key="NSGridColor" ref="353256269"/>
|
||||
<double key="NSRowHeight">17</double>
|
||||
<int key="NSTvFlags">306184192</int>
|
||||
<reference key="NSDelegate"/>
|
||||
<reference key="NSDataSource"/>
|
||||
<int key="NSColumnAutoresizingStyle">4</int>
|
||||
<int key="NSDraggingSourceMaskForLocal">15</int>
|
||||
<int key="NSDraggingSourceMaskForNonLocal">0</int>
|
||||
<bool key="NSAllowsTypeSelect">NO</bool>
|
||||
<int key="NSTableViewDraggingDestinationStyle">0</int>
|
||||
<int key="NSTableViewGroupRowStyle">1</int>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrame">{{1, 1}, {248, 260}}</string>
|
||||
<reference key="NSSuperview" ref="687805562"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="69698213"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1195</string>
|
||||
<reference key="NSDocView" ref="69698213"/>
|
||||
<reference key="NSBGColor" ref="768431893"/>
|
||||
<int key="NScvFlags">4</int>
|
||||
</object>
|
||||
<object class="NSScroller" id="258173410">
|
||||
<reference key="NSNextResponder" ref="687805562"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{224, 17}, {15, 102}}</string>
|
||||
<reference key="NSSuperview" ref="687805562"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="218354894"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1214</string>
|
||||
<reference key="NSTarget" ref="687805562"/>
|
||||
<string key="NSAction">_doScroller:</string>
|
||||
<double key="NSPercent">0.9925373134328358</double>
|
||||
</object>
|
||||
<object class="NSScroller" id="218354894">
|
||||
<reference key="NSNextResponder" ref="687805562"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{1, 119}, {223, 15}}</string>
|
||||
<reference key="NSSuperview" ref="687805562"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="955319632"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1216</string>
|
||||
<int key="NSsFlags">1</int>
|
||||
<reference key="NSTarget" ref="687805562"/>
|
||||
<string key="NSAction">_doScroller:</string>
|
||||
<double key="NSPercent">0.99581589958159</double>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrame">{{339, 60}, {250, 262}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="256485327"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1193</string>
|
||||
<int key="NSsFlags">133682</int>
|
||||
<reference key="NSVScroller" ref="258173410"/>
|
||||
<reference key="NSHScroller" ref="218354894"/>
|
||||
<reference key="NSContentView" ref="256485327"/>
|
||||
<bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
|
||||
</object>
|
||||
<object class="NSButton" id="878293971">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{284, 186}, {53, 32}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="596965746"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:161</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="208161580">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">--></string>
|
||||
<reference key="NSSupport" ref="591283433"/>
|
||||
<string key="NSCellIdentifier">_NS:161</string>
|
||||
<reference key="NSControlView" ref="878293971"/>
|
||||
<int key="NSButtonFlags">-2038284033</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="596965746">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{284, 160}, {53, 32}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="687805562"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:161</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="410417059">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents"><--</string>
|
||||
<reference key="NSSupport" ref="591283433"/>
|
||||
<string key="NSCellIdentifier">_NS:161</string>
|
||||
<reference key="NSControlView" ref="596965746"/>
|
||||
<int key="NSButtonFlags">-2038284033</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="620738811">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">289</int>
|
||||
<string key="NSFrame">{{495, 12}, {100, 32}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:161</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="468133349">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">Ok</string>
|
||||
<reference key="NSSupport" ref="591283433"/>
|
||||
<string key="NSCellIdentifier">_NS:161</string>
|
||||
<reference key="NSControlView" ref="620738811"/>
|
||||
<int key="NSButtonFlags">-2038284033</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="955319632">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">289</int>
|
||||
<string key="NSFrame">{{395, 12}, {100, 32}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="620738811"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:161</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="323479517">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">Cancel</string>
|
||||
<reference key="NSSupport" ref="591283433"/>
|
||||
<string key="NSCellIdentifier">_NS:161</string>
|
||||
<reference key="NSControlView" ref="955319632"/>
|
||||
<int key="NSButtonFlags">-2038284033</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="970734229">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{17, 330}, {575, 51}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="357095790"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:3936</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="424127272">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">4194304</int>
|
||||
<string key="NSContents">Add criteria to the right box and click OK to send the dupes that correspond the best to these criteria to their respective group's reference position. Read the help file for more information.</string>
|
||||
<reference key="NSSupport" ref="591283433"/>
|
||||
<string key="NSCellIdentifier">_NS:3936</string>
|
||||
<reference key="NSControlView" ref="970734229"/>
|
||||
<object class="NSColor" key="NSBackgroundColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlColor</string>
|
||||
<reference key="NSColor" ref="857981892"/>
|
||||
</object>
|
||||
<reference key="NSTextColor" ref="983887457"/>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrameSize">{609, 401}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="970734229"/>
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string>
|
||||
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
|
||||
<bool key="NSWindowIsRestorable">YES</bool>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<array class="NSMutableArray" key="connectionRecords">
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">categoryPopUpView</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="357095790"/>
|
||||
</object>
|
||||
<int key="connectionID">10</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">criteriaTableView</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="675311684"/>
|
||||
</object>
|
||||
<int key="connectionID">20</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">prioritizationTableView</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="69698213"/>
|
||||
</object>
|
||||
<int key="connectionID">33</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">addSelected:</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="878293971"/>
|
||||
</object>
|
||||
<int key="connectionID">34</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">removeSelected:</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="596965746"/>
|
||||
</object>
|
||||
<int key="connectionID">35</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">cancel:</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="955319632"/>
|
||||
</object>
|
||||
<int key="connectionID">42</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">ok:</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="620738811"/>
|
||||
</object>
|
||||
<int key="connectionID">43</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">window</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="1005"/>
|
||||
</object>
|
||||
<int key="connectionID">44</int>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<array key="orderedObjects">
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<array key="object" id="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="1001"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="1003"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">First Responder</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-3</int>
|
||||
<reference key="object" ref="1004"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">Application</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1</int>
|
||||
<reference key="object" ref="1005"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="1006"/>
|
||||
</array>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2</int>
|
||||
<reference key="object" ref="1006"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="970734229"/>
|
||||
<reference ref="357095790"/>
|
||||
<reference ref="386461059"/>
|
||||
<reference ref="878293971"/>
|
||||
<reference ref="596965746"/>
|
||||
<reference ref="687805562"/>
|
||||
<reference ref="620738811"/>
|
||||
<reference ref="955319632"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1005"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">3</int>
|
||||
<reference key="object" ref="357095790"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="892922362"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">4</int>
|
||||
<reference key="object" ref="892922362"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="309249465"/>
|
||||
</array>
|
||||
<reference key="parent" ref="357095790"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">5</int>
|
||||
<reference key="object" ref="309249465"/>
|
||||
<array class="NSMutableArray" key="children"/>
|
||||
<reference key="parent" ref="892922362"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">11</int>
|
||||
<reference key="object" ref="386461059"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="978953877"/>
|
||||
<reference ref="1055237002"/>
|
||||
<reference ref="675311684"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">12</int>
|
||||
<reference key="object" ref="978953877"/>
|
||||
<reference key="parent" ref="386461059"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">14</int>
|
||||
<reference key="object" ref="1055237002"/>
|
||||
<reference key="parent" ref="386461059"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">15</int>
|
||||
<reference key="object" ref="675311684"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="331887935"/>
|
||||
</array>
|
||||
<reference key="parent" ref="386461059"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">16</int>
|
||||
<reference key="object" ref="331887935"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="252516817"/>
|
||||
</array>
|
||||
<reference key="parent" ref="675311684"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">19</int>
|
||||
<reference key="object" ref="252516817"/>
|
||||
<reference key="parent" ref="331887935"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">21</int>
|
||||
<reference key="object" ref="878293971"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="208161580"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">22</int>
|
||||
<reference key="object" ref="208161580"/>
|
||||
<reference key="parent" ref="878293971"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">23</int>
|
||||
<reference key="object" ref="596965746"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="410417059"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">24</int>
|
||||
<reference key="object" ref="410417059"/>
|
||||
<reference key="parent" ref="596965746"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">25</int>
|
||||
<reference key="object" ref="687805562"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="69698213"/>
|
||||
<reference ref="218354894"/>
|
||||
<reference ref="258173410"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">26</int>
|
||||
<reference key="object" ref="69698213"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="604129553"/>
|
||||
</array>
|
||||
<reference key="parent" ref="687805562"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">27</int>
|
||||
<reference key="object" ref="218354894"/>
|
||||
<reference key="parent" ref="687805562"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">28</int>
|
||||
<reference key="object" ref="258173410"/>
|
||||
<reference key="parent" ref="687805562"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">29</int>
|
||||
<reference key="object" ref="604129553"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="998326916"/>
|
||||
</array>
|
||||
<reference key="parent" ref="69698213"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">30</int>
|
||||
<reference key="object" ref="998326916"/>
|
||||
<reference key="parent" ref="604129553"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">36</int>
|
||||
<reference key="object" ref="620738811"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="468133349"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">37</int>
|
||||
<reference key="object" ref="468133349"/>
|
||||
<reference key="parent" ref="620738811"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">38</int>
|
||||
<reference key="object" ref="955319632"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="323479517"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">39</int>
|
||||
<reference key="object" ref="323479517"/>
|
||||
<reference key="parent" ref="955319632"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">40</int>
|
||||
<reference key="object" ref="970734229"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="424127272"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">41</int>
|
||||
<reference key="object" ref="424127272"/>
|
||||
<reference key="parent" ref="970734229"/>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="1.IBWindowTemplateEditedContentRect">{{357, 418}, {480, 270}}</string>
|
||||
<boolean value="NO" key="1.NSWindowTemplate.visibleAtLaunch"/>
|
||||
<string key="11.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="12.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="14.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="15.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="16.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="21.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="22.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="24.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="25.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="26.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="27.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="28.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="30.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="36.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="37.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="38.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="39.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="40.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="41.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
||||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">44</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">PrioritizeDialog</string>
|
||||
<string key="superclassName">NSWindowController</string>
|
||||
<dictionary class="NSMutableDictionary" key="actions">
|
||||
<string key="addSelected:">id</string>
|
||||
<string key="cancel:">id</string>
|
||||
<string key="ok:">id</string>
|
||||
<string key="removeSelected:">id</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="actionInfosByName">
|
||||
<object class="IBActionInfo" key="addSelected:">
|
||||
<string key="name">addSelected:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="cancel:">
|
||||
<string key="name">cancel:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="ok:">
|
||||
<string key="name">ok:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="removeSelected:">
|
||||
<string key="name">removeSelected:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="outlets">
|
||||
<string key="categoryPopUpView">NSPopUpButton</string>
|
||||
<string key="criteriaTableView">NSTableView</string>
|
||||
<string key="prioritizationTableView">NSTableView</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<object class="IBToOneOutletInfo" key="categoryPopUpView">
|
||||
<string key="name">categoryPopUpView</string>
|
||||
<string key="candidateClassName">NSPopUpButton</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="criteriaTableView">
|
||||
<string key="name">criteriaTableView</string>
|
||||
<string key="candidateClassName">NSTableView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="prioritizationTableView">
|
||||
<string key="name">prioritizationTableView</string>
|
||||
<string key="candidateClassName">NSTableView</string>
|
||||
</object>
|
||||
</dictionary>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/PrioritizeDialog.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<real value="1060" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<real value="1060" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
|
||||
<real value="4100" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
</data>
|
||||
</archive>
|
||||
@@ -1,12 +0,0 @@
|
||||
|
||||
/* Class = "NSWindow"; title = "Problems!"; ObjectID = "1"; */
|
||||
"1.title" = "Problems!";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "There were problems processing some (or all) of the files. The cause of these problems are described in the table below. Those files were not removed from your results."; ObjectID = "4"; */
|
||||
"4.title" = "There were problems processing some (or all) of the files. The cause of these problems are described in the table below. Those files were not removed from your results.";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Close"; ObjectID = "19"; */
|
||||
"19.title" = "Close";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Reveal Selected"; ObjectID = "21"; */
|
||||
"21.title" = "Reveal Selected";
|
||||
@@ -1,500 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1060</int>
|
||||
<string key="IBDocument.SystemVersion">11D50</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">2182</string>
|
||||
<string key="IBDocument.AppKitVersion">1138.32</string>
|
||||
<string key="IBDocument.HIToolboxVersion">568.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="NS.object.0">2182</string>
|
||||
</object>
|
||||
<array key="IBDocument.IntegratedClassDependencies">
|
||||
<string>NSTextField</string>
|
||||
<string>NSView</string>
|
||||
<string>NSWindowTemplate</string>
|
||||
<string>NSScrollView</string>
|
||||
<string>NSCustomObject</string>
|
||||
<string>NSTableView</string>
|
||||
<string>NSTableHeaderView</string>
|
||||
<string>NSButtonCell</string>
|
||||
<string>NSButton</string>
|
||||
<string>NSScroller</string>
|
||||
<string>NSTextFieldCell</string>
|
||||
</array>
|
||||
<array key="IBDocument.PluginDependencies">
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</array>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
|
||||
<integer value="1" key="NS.object.0"/>
|
||||
</object>
|
||||
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<object class="NSCustomObject" id="1001">
|
||||
<string key="NSClassName">ProblemDialog</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1003">
|
||||
<string key="NSClassName">FirstResponder</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1004">
|
||||
<string key="NSClassName">NSApplication</string>
|
||||
</object>
|
||||
<object class="NSWindowTemplate" id="359561441">
|
||||
<int key="NSWindowStyleMask">11</int>
|
||||
<int key="NSWindowBacking">2</int>
|
||||
<string key="NSWindowRect">{{477, 306}, {480, 309}}</string>
|
||||
<int key="NSWTFlags">1685585920</int>
|
||||
<string key="NSWindowTitle">Problems!</string>
|
||||
<string key="NSWindowClass">NSWindow</string>
|
||||
<nil key="NSViewClass"/>
|
||||
<nil key="NSUserInterfaceItemIdentifier"/>
|
||||
<object class="NSView" key="NSWindowView" id="976198330">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSTextField" id="573725554">
|
||||
<reference key="NSNextResponder" ref="976198330"/>
|
||||
<int key="NSvFlags">266</int>
|
||||
<string key="NSFrame">{{17, 238}, {446, 51}}</string>
|
||||
<reference key="NSSuperview" ref="976198330"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="1063844428">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">272891904</int>
|
||||
<string key="NSContents">There were problems processing some (or all) of the files. The cause of these problems are described in the table below. Those files were not removed from your results.</string>
|
||||
<object class="NSFont" key="NSSupport">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">13</double>
|
||||
<int key="NSfFlags">16</int>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="573725554"/>
|
||||
<object class="NSColor" key="NSBackgroundColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlColor</string>
|
||||
<object class="NSColor" key="NSColor" id="869923403">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlTextColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MAA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSScrollView" id="458371270">
|
||||
<reference key="NSNextResponder" ref="976198330"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSClipView" id="831830981">
|
||||
<reference key="NSNextResponder" ref="458371270"/>
|
||||
<int key="NSvFlags">2304</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSTableView" id="252791348">
|
||||
<reference key="NSNextResponder" ref="831830981"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{438, 152}</string>
|
||||
<reference key="NSSuperview" ref="831830981"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTableHeaderView" key="NSHeaderView" id="903452051">
|
||||
<reference key="NSNextResponder" ref="777677330"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{438, 17}</string>
|
||||
<reference key="NSSuperview" ref="777677330"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSTableView" ref="252791348"/>
|
||||
</object>
|
||||
<object class="_NSCornerView" key="NSCornerView" id="564034022">
|
||||
<reference key="NSNextResponder" ref="458371270"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{224, 0}, {16, 17}}</string>
|
||||
<reference key="NSSuperview" ref="458371270"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
<array class="NSMutableArray" key="NSTableColumns"/>
|
||||
<double key="NSIntercellSpacingWidth">3</double>
|
||||
<double key="NSIntercellSpacingHeight">2</double>
|
||||
<object class="NSColor" key="NSBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
<object class="NSColor" key="NSGridColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">gridColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC41AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<double key="NSRowHeight">17</double>
|
||||
<int key="NSTvFlags">-702545920</int>
|
||||
<reference key="NSDelegate"/>
|
||||
<reference key="NSDataSource"/>
|
||||
<int key="NSColumnAutoresizingStyle">4</int>
|
||||
<int key="NSDraggingSourceMaskForLocal">15</int>
|
||||
<int key="NSDraggingSourceMaskForNonLocal">0</int>
|
||||
<bool key="NSAllowsTypeSelect">YES</bool>
|
||||
<int key="NSTableViewDraggingDestinationStyle">0</int>
|
||||
<int key="NSTableViewGroupRowStyle">1</int>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrame">{{1, 17}, {438, 152}}</string>
|
||||
<reference key="NSSuperview" ref="458371270"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="252791348"/>
|
||||
<reference key="NSDocView" ref="252791348"/>
|
||||
<object class="NSColor" key="NSBGColor" id="765209443">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlBackgroundColor</string>
|
||||
<reference key="NSColor" ref="869923403"/>
|
||||
</object>
|
||||
<int key="NScvFlags">4</int>
|
||||
</object>
|
||||
<object class="NSScroller" id="99096694">
|
||||
<reference key="NSNextResponder" ref="458371270"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{224, 17}, {15, 102}}</string>
|
||||
<reference key="NSSuperview" ref="458371270"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSTarget" ref="458371270"/>
|
||||
<string key="NSAction">_doScroller:</string>
|
||||
<double key="NSPercent">0.90131578947368418</double>
|
||||
</object>
|
||||
<object class="NSScroller" id="47224920">
|
||||
<reference key="NSNextResponder" ref="458371270"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{1, 154}, {438, 15}}</string>
|
||||
<reference key="NSSuperview" ref="458371270"/>
|
||||
<reference key="NSWindow"/>
|
||||
<int key="NSsFlags">1</int>
|
||||
<reference key="NSTarget" ref="458371270"/>
|
||||
<string key="NSAction">_doScroller:</string>
|
||||
<double key="NSCurValue">1</double>
|
||||
<double key="NSPercent">0.98871331828442433</double>
|
||||
</object>
|
||||
<object class="NSClipView" id="777677330">
|
||||
<reference key="NSNextResponder" ref="458371270"/>
|
||||
<int key="NSvFlags">2304</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<reference ref="903452051"/>
|
||||
</array>
|
||||
<string key="NSFrame">{{1, 0}, {438, 17}}</string>
|
||||
<reference key="NSSuperview" ref="458371270"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="903452051"/>
|
||||
<reference key="NSDocView" ref="903452051"/>
|
||||
<reference key="NSBGColor" ref="765209443"/>
|
||||
<int key="NScvFlags">4</int>
|
||||
</object>
|
||||
<reference ref="564034022"/>
|
||||
</array>
|
||||
<string key="NSFrame">{{20, 60}, {440, 170}}</string>
|
||||
<reference key="NSSuperview" ref="976198330"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="831830981"/>
|
||||
<int key="NSsFlags">133682</int>
|
||||
<reference key="NSVScroller" ref="99096694"/>
|
||||
<reference key="NSHScroller" ref="47224920"/>
|
||||
<reference key="NSContentView" ref="831830981"/>
|
||||
<reference key="NSHeaderClipView" ref="777677330"/>
|
||||
<reference key="NSCornerView" ref="564034022"/>
|
||||
<bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
|
||||
</object>
|
||||
<object class="NSButton" id="4380169">
|
||||
<reference key="NSNextResponder" ref="976198330"/>
|
||||
<int key="NSvFlags">289</int>
|
||||
<string key="NSFrame">{{356, 12}, {110, 32}}</string>
|
||||
<reference key="NSSuperview" ref="976198330"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="373771329">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">Close</string>
|
||||
<object class="NSFont" key="NSSupport" id="680801460">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">13</double>
|
||||
<int key="NSfFlags">1044</int>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="4380169"/>
|
||||
<int key="NSButtonFlags">-2038284033</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="253286088">
|
||||
<reference key="NSNextResponder" ref="976198330"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrame">{{14, 12}, {162, 32}}</string>
|
||||
<reference key="NSSuperview" ref="976198330"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="671547957">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">Reveal Selected</string>
|
||||
<reference key="NSSupport" ref="680801460"/>
|
||||
<reference key="NSControlView" ref="253286088"/>
|
||||
<int key="NSButtonFlags">-2038284033</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrameSize">{480, 309}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string>
|
||||
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
|
||||
<bool key="NSWindowIsRestorable">YES</bool>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<array class="NSMutableArray" key="connectionRecords">
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">window</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="359561441"/>
|
||||
</object>
|
||||
<int key="connectionID">22</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">revealSelected:</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="253286088"/>
|
||||
</object>
|
||||
<int key="connectionID">24</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">problemTableView</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="252791348"/>
|
||||
</object>
|
||||
<int key="connectionID">26</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">performClose:</string>
|
||||
<reference key="source" ref="359561441"/>
|
||||
<reference key="destination" ref="4380169"/>
|
||||
</object>
|
||||
<int key="connectionID">25</int>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<array key="orderedObjects">
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<array key="object" id="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="1001"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="1003"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">First Responder</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-3</int>
|
||||
<reference key="object" ref="1004"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">Application</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1</int>
|
||||
<reference key="object" ref="359561441"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="976198330"/>
|
||||
</array>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2</int>
|
||||
<reference key="object" ref="976198330"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="573725554"/>
|
||||
<reference ref="458371270"/>
|
||||
<reference ref="4380169"/>
|
||||
<reference ref="253286088"/>
|
||||
</array>
|
||||
<reference key="parent" ref="359561441"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">3</int>
|
||||
<reference key="object" ref="573725554"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="1063844428"/>
|
||||
</array>
|
||||
<reference key="parent" ref="976198330"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">4</int>
|
||||
<reference key="object" ref="1063844428"/>
|
||||
<reference key="parent" ref="573725554"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">5</int>
|
||||
<reference key="object" ref="458371270"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="99096694"/>
|
||||
<reference ref="47224920"/>
|
||||
<reference ref="252791348"/>
|
||||
<reference ref="903452051"/>
|
||||
</array>
|
||||
<reference key="parent" ref="976198330"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">6</int>
|
||||
<reference key="object" ref="99096694"/>
|
||||
<reference key="parent" ref="458371270"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">7</int>
|
||||
<reference key="object" ref="47224920"/>
|
||||
<reference key="parent" ref="458371270"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">8</int>
|
||||
<reference key="object" ref="252791348"/>
|
||||
<array class="NSMutableArray" key="children"/>
|
||||
<reference key="parent" ref="458371270"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">9</int>
|
||||
<reference key="object" ref="903452051"/>
|
||||
<reference key="parent" ref="458371270"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">18</int>
|
||||
<reference key="object" ref="4380169"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="373771329"/>
|
||||
</array>
|
||||
<reference key="parent" ref="976198330"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">19</int>
|
||||
<reference key="object" ref="373771329"/>
|
||||
<reference key="parent" ref="4380169"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">20</int>
|
||||
<reference key="object" ref="253286088"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="671547957"/>
|
||||
</array>
|
||||
<reference key="parent" ref="976198330"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">21</int>
|
||||
<reference key="object" ref="671547957"/>
|
||||
<reference key="parent" ref="253286088"/>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="1.IBWindowTemplateEditedContentRect">{{477, 306}, {480, 309}}</string>
|
||||
<boolean value="NO" key="1.NSWindowTemplate.visibleAtLaunch"/>
|
||||
<string key="18.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="20.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="21.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="8.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="9.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
||||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">26</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">ProblemDialog</string>
|
||||
<string key="superclassName">NSWindowController</string>
|
||||
<object class="NSMutableDictionary" key="actions">
|
||||
<string key="NS.key.0">revealSelected:</string>
|
||||
<string key="NS.object.0">id</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="actionInfosByName">
|
||||
<string key="NS.key.0">revealSelected:</string>
|
||||
<object class="IBActionInfo" key="NS.object.0">
|
||||
<string key="name">revealSelected:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<string key="NS.key.0">problemTableView</string>
|
||||
<string key="NS.object.0">NSTableView</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<string key="NS.key.0">problemTableView</string>
|
||||
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||
<string key="name">problemTableView</string>
|
||||
<string key="candidateClassName">NSTableView</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/ProblemDialog.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<real value="1060" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<real value="1060" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
|
||||
<real value="4100" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
</data>
|
||||
</archive>
|
||||
@@ -1,93 +0,0 @@
|
||||
|
||||
/* Class = "NSWindow"; title = "dupeGuru Results"; ObjectID = "1"; */
|
||||
"1.title" = "dupeGuru Results";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Marked: 0 files, 0 B. Total: 0 files, 0 B."; ObjectID = "6"; */
|
||||
"6.title" = "Marked: 0 files, 0 B. Total: 0 files, 0 B.";
|
||||
|
||||
/* Class = "NSToolbarItem"; label = "Options"; ObjectID = "15"; */
|
||||
"15.label" = "Options";
|
||||
|
||||
/* Class = "NSToolbarItem"; paletteLabel = "Options"; ObjectID = "15"; */
|
||||
"15.paletteLabel" = "Options";
|
||||
|
||||
/* Class = "NSToolbarItem"; label = "Filter"; ObjectID = "16"; */
|
||||
"16.label" = "Filter";
|
||||
|
||||
/* Class = "NSToolbarItem"; paletteLabel = "Filter"; ObjectID = "16"; */
|
||||
"16.paletteLabel" = "Filter";
|
||||
|
||||
/* Class = "NSToolbarItem"; label = "Action"; ObjectID = "17"; */
|
||||
"17.label" = "Action";
|
||||
|
||||
/* Class = "NSToolbarItem"; paletteLabel = "Action"; ObjectID = "17"; */
|
||||
"17.paletteLabel" = "Action";
|
||||
|
||||
/* Class = "NSToolbarItem"; label = "Directories"; ObjectID = "19"; */
|
||||
"19.label" = "Directories";
|
||||
|
||||
/* Class = "NSToolbarItem"; paletteLabel = "Directories"; ObjectID = "19"; */
|
||||
"19.paletteLabel" = "Directories";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Send Marked to Trash"; ObjectID = "29"; */
|
||||
"29.title" = "Send Marked to Trash";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Move Marked to..."; ObjectID = "30"; */
|
||||
"30.title" = "Move Marked to...";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Copy Marked to..."; ObjectID = "31"; */
|
||||
"31.title" = "Copy Marked to...";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Remove Marked from Results"; ObjectID = "32"; */
|
||||
"32.title" = "Remove Marked from Results";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "34"; */
|
||||
"34.title" = "Remove Selected from Results";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Add Selected to Ignore List"; ObjectID = "35"; */
|
||||
"35.title" = "Add Selected to Ignore List";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "36"; */
|
||||
"36.title" = "Make Selected Reference";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "38"; */
|
||||
"38.title" = "Open Selected with Default Application";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Reveal Selected in Finder"; ObjectID = "39"; */
|
||||
"39.title" = "Reveal Selected in Finder";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "40"; */
|
||||
"40.title" = "Rename Selected";
|
||||
|
||||
/* Class = "NSSearchFieldCell"; placeholderString = "Filter"; ObjectID = "42"; */
|
||||
"42.placeholderString" = "Filter";
|
||||
|
||||
/* Class = "NSSegmentedCell"; 44.ibShadowedLabels[0] = "Details"; ObjectID = "44"; */
|
||||
"44.ibShadowedLabels[0]" = "Details";
|
||||
|
||||
/* Class = "NSSegmentedCell"; 44.ibShadowedLabels[1] = "Dupes Only"; ObjectID = "44"; */
|
||||
"44.ibShadowedLabels[1]" = "Dupes Only";
|
||||
|
||||
/* Class = "NSSegmentedCell"; 44.ibShadowedLabels[2] = "Delta"; ObjectID = "44"; */
|
||||
"44.ibShadowedLabels[2]" = "Delta";
|
||||
|
||||
/* Class = "NSMenu"; title = "Menu"; ObjectID = "67"; */
|
||||
"67.title" = "Menu";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Add Selected to Ignore List"; ObjectID = "68"; */
|
||||
"68.title" = "Add Selected to Ignore List";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "70"; */
|
||||
"70.title" = "Rename Selected";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "71"; */
|
||||
"71.title" = "Remove Selected from Results";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "72"; */
|
||||
"72.title" = "Make Selected Reference";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Reveal Selected in Finder"; ObjectID = "73"; */
|
||||
"73.title" = "Reveal Selected in Finder";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "74"; */
|
||||
"74.title" = "Open Selected with Default Application";
|
||||
File diff suppressed because it is too large
Load Diff
@@ -10,6 +10,8 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
#import <Python.h>
|
||||
#import <wchar.h>
|
||||
#import <locale.h>
|
||||
#import "AppDelegate.h"
|
||||
#import "MainMenu_UI.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@@ -34,8 +36,14 @@ int main(int argc, char *argv[])
|
||||
PyThreadState_Swap(NULL);
|
||||
PyEval_ReleaseLock();
|
||||
}
|
||||
int result = NSApplicationMain(argc, (const char **) argv);
|
||||
Py_Finalize();
|
||||
|
||||
[NSApplication sharedApplication];
|
||||
AppDelegate *appDelegate = [[AppDelegate alloc] init];
|
||||
[NSApp setDelegate:appDelegate];
|
||||
[NSApp setMainMenu:createMainMenu_UI(appDelegate)];
|
||||
[appDelegate finalizeInit];
|
||||
[pool release];
|
||||
return result;
|
||||
[NSApp run];
|
||||
Py_Finalize();
|
||||
return 0;
|
||||
}
|
||||
|
||||
49
cocoa/base/ui/deletion_options.py
Normal file
49
cocoa/base/ui/deletion_options.py
Normal file
@@ -0,0 +1,49 @@
|
||||
ownerclass = 'DeletionOptions'
|
||||
ownerimport = 'DeletionOptions.h'
|
||||
|
||||
result = Window(450, 240, "Deletion Options")
|
||||
messageLabel = Label(result, "")
|
||||
linkCheckbox = Checkbox(result, "Link deleted files")
|
||||
linkLabel = Label(result, "After having deleted a duplicate, place a link targeting the "
|
||||
"reference file to replace the deleted file.")
|
||||
linkTypeChoice = RadioButtons(result, ["Symlink", "Hardlink"], columns=2)
|
||||
directCheckbox = Checkbox(result, "Directly delete files")
|
||||
directLabel = Label(result, "Instead of sending files to trash, delete them directly. This option "
|
||||
"is usually used as a workaround when the normal deletion method doesn't work.")
|
||||
proceedButton = Button(result, "Proceed")
|
||||
cancelButton = Button(result, "Cancel")
|
||||
|
||||
owner.linkButton = linkCheckbox
|
||||
owner.linkTypeRadio = linkTypeChoice
|
||||
owner.directButton = directCheckbox
|
||||
owner.messageTextField = messageLabel
|
||||
|
||||
result.canMinimize = False
|
||||
result.canResize = False
|
||||
linkLabel.controlSize = ControlSize.Small
|
||||
directLabel.controlSize = ControlSize.Small
|
||||
linkTypeChoice.controlSize = ControlSize.Small
|
||||
proceedButton.keyEquivalent = '\\r'
|
||||
cancelButton.keyEquivalent = '\\e'
|
||||
linkCheckbox.action = directCheckbox.action = linkTypeChoice.action = Action(owner, 'updateOptions')
|
||||
proceedButton.action = Action(owner, 'proceed')
|
||||
cancelButton.action = Action(owner, 'cancel')
|
||||
|
||||
linkLabel.height *= 2 # 2 lines
|
||||
directLabel.height *= 3 # 3 lines
|
||||
proceedButton.width = 92
|
||||
cancelButton.width = 92
|
||||
|
||||
mainLayout = VLayout([messageLabel, linkCheckbox, linkLabel, linkTypeChoice, directCheckbox,
|
||||
directLabel])
|
||||
mainLayout.packToCorner(Pack.UpperLeft)
|
||||
mainLayout.fill(Pack.Right)
|
||||
buttonLayout = HLayout([cancelButton, proceedButton])
|
||||
buttonLayout.packToCorner(Pack.LowerRight)
|
||||
|
||||
# indent the labels under checkboxes a little bit to the right
|
||||
for indentedView in (linkLabel, directLabel, linkTypeChoice):
|
||||
indentedView.x += 20
|
||||
indentedView.width -= 20
|
||||
# We actually don't want the link choice radio buttons to take all the width, it looks weird.
|
||||
linkTypeChoice.width = 170
|
||||
32
cocoa/base/ui/details_panel.py
Normal file
32
cocoa/base/ui/details_panel.py
Normal file
@@ -0,0 +1,32 @@
|
||||
ownerclass = 'DetailsPanel'
|
||||
ownerimport = 'DetailsPanel.h'
|
||||
|
||||
result = Panel(451, 146, "Details of Selected File")
|
||||
table = TableView(result)
|
||||
|
||||
owner.detailsTable = table
|
||||
|
||||
result.style = PanelStyle.Utility
|
||||
result.xProportion = 0.2
|
||||
result.yProportion = 0.4
|
||||
result.canMinimize = False
|
||||
result.autosaveName = 'DetailsPanel'
|
||||
result.minSize = Size(result.width, result.height)
|
||||
|
||||
table.dataSource = owner
|
||||
table.allowsColumnReordering = False
|
||||
table.allowsColumnSelection = False
|
||||
table.allowsMultipleSelection = False
|
||||
table.font = Font(FontFamily.System, FontSize.SmallSystem)
|
||||
table.rowHeight = 14
|
||||
table.editable = False
|
||||
col = table.addColumn('0', "Attribute", 70)
|
||||
col.autoResizable = True
|
||||
col = table.addColumn('1', "Selected", 198)
|
||||
col.autoResizable = True
|
||||
col = table.addColumn('2', "Reference", 172)
|
||||
col.autoResizable = True
|
||||
|
||||
table.packToCorner(Pack.UpperLeft, margin=0)
|
||||
table.fill(Pack.LowerRight, margin=0)
|
||||
table.setAnchor(Pack.UpperLeft, growX=True, growY=True)
|
||||
64
cocoa/base/ui/directory_panel.py
Normal file
64
cocoa/base/ui/directory_panel.py
Normal file
@@ -0,0 +1,64 @@
|
||||
ownerclass = 'DirectoryPanel'
|
||||
ownerimport = 'DirectoryPanel.h'
|
||||
|
||||
result = Window(425, 300, "dupeGuru")
|
||||
promptLabel = Label(result, "Select folders to scan and press \"Scan\".")
|
||||
directoryOutline = OutlineView(result)
|
||||
directoryOutline.OBJC_CLASS = 'HSOutlineView'
|
||||
addButton = Button(result, "")
|
||||
removeButton = Button(result, "")
|
||||
loadResultsButton = Button(result, "Load Results")
|
||||
scanButton = Button(result, "Scan")
|
||||
addPopup = Popup(None)
|
||||
loadRecentPopup = Popup(None)
|
||||
|
||||
owner.outlineView = directoryOutline
|
||||
owner.removeButton = removeButton
|
||||
owner.loadResultsButton = loadResultsButton
|
||||
owner.addButtonPopUp = addPopup
|
||||
owner.loadRecentButtonPopUp = loadRecentPopup
|
||||
|
||||
result.autosaveName = 'DirectoryPanel'
|
||||
result.canMinimize = False
|
||||
result.minSize = Size(370, 270)
|
||||
addButton.bezelStyle = removeButton.bezelStyle = const.NSTexturedRoundedBezelStyle
|
||||
addButton.image = 'NSAddTemplate'
|
||||
removeButton.image = 'NSRemoveTemplate'
|
||||
for button in (addButton, removeButton):
|
||||
button.style = const.NSTexturedRoundedBezelStyle
|
||||
button.imagePosition = const.NSImageOnly
|
||||
scanButton.keyEquivalent = '\\r'
|
||||
addButton.action = Action(owner, 'popupAddDirectoryMenu:')
|
||||
removeButton.action = Action(owner, 'removeSelectedDirectory')
|
||||
loadResultsButton.action = Action(owner, 'popupLoadRecentMenu:')
|
||||
scanButton.action = Action(None, 'startScanning')
|
||||
|
||||
directoryOutline.font = Font(FontFamily.System, FontSize.SmallSystem)
|
||||
col = directoryOutline.addColumn('name', "Name", 100)
|
||||
col.editable = False
|
||||
col.autoResizable = True
|
||||
col = directoryOutline.addColumn('state', "State", 85)
|
||||
col.editable = True
|
||||
col.autoResizable = False
|
||||
col.dataCell = Popup(None, ["Normal", "Reference", "Excluded"])
|
||||
col.dataCell.controlSize = const.NSSmallControlSize
|
||||
directoryOutline.allowsColumnReordering = False
|
||||
directoryOutline.allowsColumnSelection = False
|
||||
directoryOutline.allowsMultipleSelection = True
|
||||
|
||||
for button in (addButton, removeButton):
|
||||
button.width = 28
|
||||
for button in (loadResultsButton, scanButton):
|
||||
button.width = 118
|
||||
|
||||
buttonLayout = HLayout([addButton, removeButton, None, loadResultsButton, scanButton])
|
||||
promptLabel.packToCorner(Pack.UpperLeft)
|
||||
promptLabel.fill(Pack.Right)
|
||||
directoryOutline.packRelativeTo(promptLabel, Pack.Below)
|
||||
buttonLayout.packRelativeTo(directoryOutline, Pack.Below, margin=8)
|
||||
directoryOutline.fill(Pack.LowerRight)
|
||||
buttonLayout.fill(Pack.Right)
|
||||
|
||||
promptLabel.setAnchor(Pack.UpperLeft, growX=True)
|
||||
directoryOutline.setAnchor(Pack.UpperLeft, growX=True, growY=True)
|
||||
buttonLayout.setAnchor(Pack.Below)
|
||||
30
cocoa/base/ui/ignore_list_dialog.py
Normal file
30
cocoa/base/ui/ignore_list_dialog.py
Normal file
@@ -0,0 +1,30 @@
|
||||
ownerclass = 'IgnoreListDialog'
|
||||
ownerimport = 'IgnoreListDialog.h'
|
||||
|
||||
result = Window(550, 350, "Ignore List")
|
||||
table = TableView(result)
|
||||
removeSelectedButton = Button(result, "Remove Selected")
|
||||
clearButton = Button(result, "Clear")
|
||||
closeButton = Button(result, "Close")
|
||||
|
||||
owner.ignoreListTableView = table
|
||||
|
||||
result.canMinimize = False
|
||||
removeSelectedButton.action = Action(owner.model, 'removeSelected')
|
||||
clearButton.action = Action(owner.model, 'clear')
|
||||
closeButton.action = Action(result, 'performClose:')
|
||||
closeButton.keyEquivalent = '\\r'
|
||||
table.allowsColumnReordering = False
|
||||
table.allowsColumnSelection = False
|
||||
table.allowsMultipleSelection = True
|
||||
|
||||
removeSelectedButton.width = 142
|
||||
clearButton.width = 142
|
||||
closeButton.width = 84
|
||||
buttonLayout = HLayout([removeSelectedButton, clearButton, None, closeButton])
|
||||
buttonLayout.packToCorner(Pack.LowerLeft)
|
||||
buttonLayout.fill(Pack.Right)
|
||||
buttonLayout.setAnchor(Pack.Below)
|
||||
table.packRelativeTo(buttonLayout, Pack.Above)
|
||||
table.fill(Pack.UpperRight)
|
||||
table.setAnchor(Pack.UpperLeft, growX=True, growY=True)
|
||||
82
cocoa/base/ui/main_menu.py
Normal file
82
cocoa/base/ui/main_menu.py
Normal file
@@ -0,0 +1,82 @@
|
||||
ownerclass = 'AppDelegateBase'
|
||||
ownerimport = 'AppDelegateBase.h'
|
||||
edition = args.get('edition', 'se')
|
||||
|
||||
result = Menu("")
|
||||
appMenu = result.addMenu("dupeGuru")
|
||||
fileMenu = result.addMenu("File")
|
||||
editMenu = result.addMenu("Edit")
|
||||
actionMenu = result.addMenu("Actions")
|
||||
owner.columnsMenu = result.addMenu("Columns")
|
||||
modeMenu = result.addMenu("Mode")
|
||||
windowMenu = result.addMenu("Window")
|
||||
helpMenu = result.addMenu("Help")
|
||||
|
||||
appMenu.addItem("About dupeGuru", Action(owner, 'showAboutBox'))
|
||||
appMenu.addItem("Check for update...", Action(owner.updater, 'checkForUpdates:'))
|
||||
appMenu.addSeparator()
|
||||
appMenu.addItem("Preferences...", Action(owner, 'showPreferencesPanel'), 'cmd+,')
|
||||
appMenu.addSeparator()
|
||||
NSApp.servicesMenu = appMenu.addMenu("Services")
|
||||
appMenu.addSeparator()
|
||||
appMenu.addItem("Hide dupeGuru", Action(NSApp, 'hide:'), 'cmd+h')
|
||||
appMenu.addItem("Hide Others", Action(NSApp, 'hideOtherApplications:'), 'cmd+alt+h')
|
||||
appMenu.addItem("Show All", Action(NSApp, 'unhideAllApplications:'))
|
||||
appMenu.addSeparator()
|
||||
appMenu.addItem("Quit dupeGuru", Action(NSApp, 'terminate:'), 'cmd+q')
|
||||
|
||||
fileMenu.addItem("Load Results...", Action(None, 'loadResults'), 'cmd+o')
|
||||
owner.recentResultsMenu = fileMenu.addMenu("Load Recent Results")
|
||||
fileMenu.addItem("Save Results...", Action(None, 'saveResults'), 'cmd+s')
|
||||
fileMenu.addItem("Export Results to XHTML", Action(owner.model, 'exportToXHTML'), 'cmd+shift+e')
|
||||
fileMenu.addItem("Export Results to CSV", Action(owner.model, 'exportToCSV'))
|
||||
if edition == 'pe':
|
||||
fileMenu.addItem("Clear Picture Cache", Action(owner, 'clearPictureCache'), 'cmd+shift+p')
|
||||
elif edition == 'me':
|
||||
fileMenu.addItem("Remove Dead Tracks in iTunes", Action(owner, 'removeDeadTracks'))
|
||||
|
||||
editMenu.addItem("Mark All", Action(None, 'markAll'), 'cmd+a')
|
||||
editMenu.addItem("Mark None", Action(None, 'markNone'), 'cmd+shift+a')
|
||||
editMenu.addItem("Invert Marking", Action(None, 'markInvert'), 'cmd+alt+a')
|
||||
editMenu.addItem("Mark Selected", Action(None, 'markSelected'), 'ctrl+cmd+a')
|
||||
editMenu.addSeparator()
|
||||
editMenu.addItem("Cut", Action(None, 'cut:'), 'cmd+x')
|
||||
editMenu.addItem("Copy", Action(None, 'copy:'), 'cmd+c')
|
||||
editMenu.addItem("Paste", Action(None, 'paste:'), 'cmd+v')
|
||||
editMenu.addSeparator()
|
||||
editMenu.addItem("Filter Results...", Action(None, 'focusOnFilterField'), 'cmd+alt+f')
|
||||
|
||||
actionMenu.addItem("Start Duplicate Scan", Action(owner, 'startScanning'), 'cmd+d')
|
||||
actionMenu.addSeparator()
|
||||
actionMenu.addItem("Send Marked to Trash...", Action(None, 'trashMarked'), 'cmd+t')
|
||||
actionMenu.addItem("Move Marked to...", Action(None, 'moveMarked'), 'cmd+m')
|
||||
actionMenu.addItem("Copy Marked to...", Action(None, 'copyMarked'), 'cmd+alt+m')
|
||||
actionMenu.addItem("Remove Marked from Results", Action(None, 'removeMarked'), 'cmd+r')
|
||||
actionMenu.addItem("Re-Prioritize Results", Action(None, 'reprioritizeResults'))
|
||||
actionMenu.addSeparator()
|
||||
actionMenu.addItem("Remove Selected from Results", Action(None, 'removeSelected'), 'cmd+backspace')
|
||||
actionMenu.addItem("Add Selected to Ignore List", Action(None, 'ignoreSelected'), 'cmd+g')
|
||||
actionMenu.addItem("Make Selected Reference", Action(None, 'switchSelected'), 'cmd+arrowup')
|
||||
actionMenu.addSeparator()
|
||||
actionMenu.addItem("Open Selected with Default Application", Action(None, 'openSelected'), 'cmd+return')
|
||||
actionMenu.addItem("Reveal Selected in Finder", Action(None, 'revealSelected'), 'cmd+alt+return')
|
||||
actionMenu.addItem("Invoke Custom Command", Action(None, 'invokeCustomCommand'), 'cmd+shift+c')
|
||||
actionMenu.addItem("Rename Selected", Action(None, 'renameSelected'), 'enter')
|
||||
|
||||
modeMenu.addItem("Show Dupes Only", Action(None, 'togglePowerMarker'), 'cmd+1')
|
||||
modeMenu.addItem("Show Delta Values", Action(None, 'toggleDelta'), 'cmd+2')
|
||||
|
||||
windowMenu.addItem("Results Window", Action(owner, 'showResultWindow'))
|
||||
windowMenu.addItem("Folder Selection Window", Action(owner, 'showDirectoryWindow'))
|
||||
windowMenu.addItem("Ignore List", Action(owner, 'showIgnoreList'))
|
||||
windowMenu.addItem("Details Panel", Action(None, 'toggleDetailsPanel'), 'cmd+i')
|
||||
windowMenu.addItem("Quick Look", Action(None, 'toggleQuicklookPanel'), 'cmd+l')
|
||||
windowMenu.addSeparator()
|
||||
windowMenu.addItem("Minimize", Action(None, 'performMinimize:'))
|
||||
windowMenu.addItem("Zoom", Action(None, 'performZoom:'))
|
||||
windowMenu.addItem("Close Window", Action(None, 'performClose:'), 'cmd+w')
|
||||
windowMenu.addSeparator()
|
||||
windowMenu.addItem("Bring All to Front", Action(None, 'arrangeInFront:'))
|
||||
|
||||
helpMenu.addItem("dupeGuru Help", Action(owner, 'openHelp'), 'cmd+?')
|
||||
helpMenu.addItem("dupeGuru Website", Action(owner, 'openWebsite'))
|
||||
189
cocoa/base/ui/preferences_panel.py
Normal file
189
cocoa/base/ui/preferences_panel.py
Normal file
@@ -0,0 +1,189 @@
|
||||
edition = args.get('edition', 'se')
|
||||
dialogTitles = {
|
||||
'se': "dupeGuru Preferences",
|
||||
'me': "dupeGuru ME Preferences",
|
||||
'pe': "dupeGuru PE Preferences",
|
||||
}
|
||||
dialogHeights = {
|
||||
'se': 345,
|
||||
'me': 365,
|
||||
'pe': 275,
|
||||
}
|
||||
scanTypeNames = {
|
||||
'se': ["Filename", "Content", "Folders"],
|
||||
'me': ["Filename", "Filename - Fields", "Filename - Fields (No Order)", "Tags", "Content", "Audio Content"],
|
||||
'pe': ["Contents", "EXIF Timestamp"],
|
||||
}
|
||||
|
||||
result = Window(410, dialogHeights[edition], dialogTitles[edition])
|
||||
tabView = TabView(result)
|
||||
basicTab = tabView.addTab("Basic")
|
||||
advancedTab = tabView.addTab("Advanced")
|
||||
scanTypePopup = Popup(basicTab.view, scanTypeNames[edition])
|
||||
scanTypeLabel = Label(basicTab.view, "Scan Type:")
|
||||
thresholdSlider = Slider(basicTab.view, 1, 100, 80)
|
||||
thresholdLabel = Label(basicTab.view, "Filter hardness:")
|
||||
moreResultsLabel = Label(basicTab.view, "More results")
|
||||
fewerResultsLabel = Label(basicTab.view, "Fewer results")
|
||||
thresholdValueLabel = Label(basicTab.view, "")
|
||||
fontSizeCombo = Combobox(basicTab.view, ["11", "12", "13", "14", "18", "24"])
|
||||
fontSizeLabel = Label(basicTab.view, "Font Size:")
|
||||
if edition in ('se', 'me'):
|
||||
wordWeightingBox = Checkbox(basicTab.view, "Word weighting")
|
||||
matchSimilarWordsBox = Checkbox(basicTab.view, "Match similar words")
|
||||
elif edition == 'pe':
|
||||
matchDifferentDimensionsBox = Checkbox(basicTab.view, "Match pictures of different dimensions")
|
||||
mixKindBox = Checkbox(basicTab.view, "Can mix file kind")
|
||||
removeEmptyFoldersBox = Checkbox(basicTab.view, "Remove empty folders on delete or move")
|
||||
checkForUpdatesBox = Checkbox(basicTab.view, "Automatically check for updates")
|
||||
if edition == 'se':
|
||||
ignoreSmallFilesBox = Checkbox(basicTab.view, "Ignore files smaller than:")
|
||||
smallFilesThresholdText = TextField(basicTab.view, "")
|
||||
smallFilesThresholdSuffixLabel = Label(basicTab.view, "KB")
|
||||
elif edition == 'me':
|
||||
tagsToScanLabel = Label(basicTab.view, "Tags to scan:")
|
||||
trackBox = Checkbox(basicTab.view, "Track")
|
||||
artistBox = Checkbox(basicTab.view, "Artist")
|
||||
albumBox = Checkbox(basicTab.view, "Album")
|
||||
titleBox = Checkbox(basicTab.view, "Title")
|
||||
genreBox = Checkbox(basicTab.view, "Genre")
|
||||
yearBox = Checkbox(basicTab.view, "Year")
|
||||
tagBoxes = [trackBox, artistBox, albumBox, titleBox, genreBox, yearBox]
|
||||
|
||||
regexpCheckbox = Checkbox(advancedTab.view, "Use regular expressions when filtering")
|
||||
ignoreHardlinksBox = Checkbox(advancedTab.view, "Ignore duplicates hardlinking to the same file")
|
||||
debugModeCheckbox = Checkbox(advancedTab.view, "Debug mode (restart required)")
|
||||
customCommandLabel = Label(advancedTab.view, "Custom command (arguments: %d for dupe, %r for ref):")
|
||||
customCommandText = TextField(advancedTab.view, "")
|
||||
copyMoveLabel = Label(advancedTab.view, "Copy and Move:")
|
||||
copyMovePopup = Popup(advancedTab.view, ["Right in destination", "Recreate relative path", "Recreate absolute path"])
|
||||
|
||||
resetToDefaultsButton = Button(result, "Reset To Defaults")
|
||||
|
||||
scanTypePopup.bind('selectedIndex', defaults, 'values.scanType')
|
||||
thresholdSlider.bind('value', defaults, 'values.minMatchPercentage')
|
||||
thresholdValueLabel.bind('value', defaults, 'values.minMatchPercentage')
|
||||
fontSizeCombo.bind('value', defaults, 'values.TableFontSize')
|
||||
mixKindBox.bind('value', defaults, 'values.mixFileKind')
|
||||
removeEmptyFoldersBox.bind('value', defaults, 'values.removeEmptyFolders')
|
||||
checkForUpdatesBox.bind('value', defaults, 'values.SUEnableAutomaticChecks')
|
||||
regexpCheckbox.bind('value', defaults, 'values.useRegexpFilter')
|
||||
ignoreHardlinksBox.bind('value', defaults, 'values.ignoreHardlinkMatches')
|
||||
debugModeCheckbox.bind('value', defaults, 'values.DebugMode')
|
||||
customCommandText.bind('value', defaults, 'values.CustomCommand')
|
||||
copyMovePopup.bind('selectedIndex', defaults, 'values.recreatePathType')
|
||||
if edition in ('se', 'me'):
|
||||
wordWeightingBox.bind('value', defaults, 'values.wordWeighting')
|
||||
matchSimilarWordsBox.bind('value', defaults, 'values.matchSimilarWords')
|
||||
disableWhenContentScan = [thresholdSlider, wordWeightingBox, matchSimilarWordsBox]
|
||||
for control in disableWhenContentScan:
|
||||
control.bind('enabled', defaults, 'values.scanType', valueTransformer='vtScanTypeIsNotContent')
|
||||
if edition == 'se':
|
||||
ignoreSmallFilesBox.bind('value', defaults, 'values.ignoreSmallFiles')
|
||||
smallFilesThresholdText.bind('value', defaults, 'values.smallFileThreshold')
|
||||
elif edition == 'me':
|
||||
for box in tagBoxes:
|
||||
box.bind('enabled', defaults, 'values.scanType', valueTransformer='vtScanTypeIsTag')
|
||||
trackBox.bind('value', defaults, 'values.scanTagTrack')
|
||||
artistBox.bind('value', defaults, 'values.scanTagArtist')
|
||||
albumBox.bind('value', defaults, 'values.scanTagAlbum')
|
||||
titleBox.bind('value', defaults, 'values.scanTagTitle')
|
||||
genreBox.bind('value', defaults, 'values.scanTagGenre')
|
||||
yearBox.bind('value', defaults, 'values.scanTagYear')
|
||||
elif edition == 'pe':
|
||||
matchDifferentDimensionsBox.bind('value', defaults, 'values.matchScaled')
|
||||
thresholdSlider.bind('enabled', defaults, 'values.scanType', valueTransformer='vtScanTypeIsFuzzy')
|
||||
|
||||
result.canResize = False
|
||||
result.canMinimize = False
|
||||
thresholdValueLabel.formatter = NumberFormatter(NumberStyle.Decimal)
|
||||
thresholdValueLabel.formatter.maximumFractionDigits = 0
|
||||
allLabels = [scanTypeLabel, thresholdValueLabel, moreResultsLabel, fewerResultsLabel,
|
||||
thresholdLabel, fontSizeLabel, customCommandLabel, copyMoveLabel]
|
||||
allCheckboxes = [mixKindBox, removeEmptyFoldersBox, checkForUpdatesBox, regexpCheckbox,
|
||||
ignoreHardlinksBox, debugModeCheckbox]
|
||||
if edition == 'se':
|
||||
allLabels += [smallFilesThresholdSuffixLabel]
|
||||
allCheckboxes += [ignoreSmallFilesBox, wordWeightingBox, matchSimilarWordsBox]
|
||||
elif edition == 'me':
|
||||
allLabels += [tagsToScanLabel]
|
||||
allCheckboxes += tagBoxes + [wordWeightingBox, matchSimilarWordsBox]
|
||||
elif edition == 'pe':
|
||||
allCheckboxes += [matchDifferentDimensionsBox]
|
||||
for label in allLabels:
|
||||
label.controlSize = ControlSize.Small
|
||||
fewerResultsLabel.alignment = TextAlignment.Right
|
||||
for checkbox in allCheckboxes:
|
||||
checkbox.font = scanTypeLabel.font
|
||||
resetToDefaultsButton.action = Action(defaults, 'revertToInitialValues:')
|
||||
|
||||
scanTypeLabel.width = thresholdLabel.width = fontSizeLabel.width = 94
|
||||
fontSizeCombo.width = 66
|
||||
thresholdValueLabel.width = 25
|
||||
resetToDefaultsButton.width = 136
|
||||
if edition == 'se':
|
||||
smallFilesThresholdText.width = 60
|
||||
smallFilesThresholdSuffixLabel.width = 40
|
||||
elif edition == 'me':
|
||||
for box in tagBoxes:
|
||||
box.width = 70
|
||||
|
||||
tabView.packToCorner(Pack.UpperLeft)
|
||||
tabView.fill(Pack.Right)
|
||||
resetToDefaultsButton.packRelativeTo(tabView, Pack.Below, align=Pack.Right)
|
||||
tabView.fill(Pack.Below, margin=14)
|
||||
tabView.setAnchor(Pack.UpperLeft, growX=True, growY=True)
|
||||
scanTypePopup.packToCorner(Pack.UpperRight)
|
||||
scanTypeLabel.packRelativeTo(scanTypePopup, Pack.Left)
|
||||
scanTypePopup.fill(Pack.Left)
|
||||
thresholdSlider.packRelativeTo(scanTypePopup, Pack.Below)
|
||||
thresholdValueLabel.packRelativeTo(thresholdSlider, Pack.Right)
|
||||
thresholdSlider.fill(Pack.Right)
|
||||
# We want to give the labels as much space as possible, and we only "know" how much is available
|
||||
# after the slider's fill operation.
|
||||
moreResultsLabel.width = fewerResultsLabel.width = thresholdSlider.width // 2
|
||||
moreResultsLabel.packRelativeTo(thresholdSlider, Pack.Below, align=Pack.Left, margin=6)
|
||||
fewerResultsLabel.packRelativeTo(thresholdSlider, Pack.Below, align=Pack.Right, margin=6)
|
||||
thresholdLabel.packRelativeTo(thresholdSlider, Pack.Left)
|
||||
fontSizeCombo.packRelativeTo(moreResultsLabel, Pack.Below)
|
||||
fontSizeLabel.packRelativeTo(fontSizeCombo, Pack.Left)
|
||||
|
||||
if edition == 'me':
|
||||
tagsToScanLabel.packRelativeTo(fontSizeCombo, Pack.Below)
|
||||
tagsToScanLabel.fill(Pack.Left)
|
||||
tagsToScanLabel.fill(Pack.Right)
|
||||
trackBox.packRelativeTo(tagsToScanLabel, Pack.Below)
|
||||
trackBox.x += 10
|
||||
artistBox.packRelativeTo(trackBox, Pack.Right)
|
||||
albumBox.packRelativeTo(artistBox, Pack.Right)
|
||||
titleBox.packRelativeTo(trackBox, Pack.Below)
|
||||
genreBox.packRelativeTo(titleBox, Pack.Right)
|
||||
yearBox.packRelativeTo(genreBox, Pack.Right)
|
||||
viewToPackCheckboxesUnder = titleBox
|
||||
else:
|
||||
viewToPackCheckboxesUnder = fontSizeCombo
|
||||
|
||||
if edition == 'se':
|
||||
checkboxesToLayout = [wordWeightingBox, matchSimilarWordsBox, mixKindBox, removeEmptyFoldersBox,
|
||||
ignoreSmallFilesBox]
|
||||
elif edition == 'me':
|
||||
checkboxesToLayout = [wordWeightingBox, matchSimilarWordsBox, mixKindBox, removeEmptyFoldersBox,
|
||||
checkForUpdatesBox]
|
||||
elif edition == 'pe':
|
||||
checkboxesToLayout = [matchDifferentDimensionsBox, mixKindBox, removeEmptyFoldersBox,
|
||||
checkForUpdatesBox]
|
||||
checkboxLayout = VLayout(checkboxesToLayout)
|
||||
checkboxLayout.packRelativeTo(viewToPackCheckboxesUnder, Pack.Below)
|
||||
checkboxLayout.fill(Pack.Left)
|
||||
checkboxLayout.fill(Pack.Right)
|
||||
|
||||
if edition == 'se':
|
||||
smallFilesThresholdText.packRelativeTo(ignoreSmallFilesBox, Pack.Below, margin=4)
|
||||
checkForUpdatesBox.packRelativeTo(smallFilesThresholdText, Pack.Below, margin=4)
|
||||
checkForUpdatesBox.fill(Pack.Right)
|
||||
smallFilesThresholdText.x += 20
|
||||
smallFilesThresholdSuffixLabel.packRelativeTo(smallFilesThresholdText, Pack.Right)
|
||||
|
||||
advancedLayout = VLayout(advancedTab.view.subviews[:])
|
||||
advancedLayout.packToCorner(Pack.UpperLeft)
|
||||
advancedLayout.fill(Pack.Right)
|
||||
50
cocoa/base/ui/prioritize_dialog.py
Normal file
50
cocoa/base/ui/prioritize_dialog.py
Normal file
@@ -0,0 +1,50 @@
|
||||
ownerclass = 'PrioritizeDialog'
|
||||
ownerimport = 'PrioritizeDialog.h'
|
||||
|
||||
result = Window(610, 400, "Re-Prioritize duplicates")
|
||||
promptLabel = Label(result, "Add criteria to the right box and click OK to send the dupes that "
|
||||
"correspond the best to these criteria to their respective group's reference position. Read "
|
||||
"the help file for more information.")
|
||||
categoryPopup = Popup(result)
|
||||
criteriaTable = ListView(result)
|
||||
prioritizationTable = ListView(result)
|
||||
addButton = Button(result, NLSTR("-->"))
|
||||
removeButton = Button(result, NLSTR("<--"))
|
||||
okButton = Button(result, "Ok")
|
||||
cancelButton = Button(result, "Cancel")
|
||||
|
||||
owner.categoryPopUpView = categoryPopup
|
||||
owner.criteriaTableView = criteriaTable
|
||||
owner.prioritizationTableView = prioritizationTable
|
||||
|
||||
result.canMinimize = False
|
||||
result.canClose = False
|
||||
result.minSize = Size(result.width, result.height)
|
||||
addButton.action = Action(owner.model, 'addSelected')
|
||||
removeButton.action = Action(owner.model, 'removeSelected')
|
||||
okButton.action = Action(owner, 'ok')
|
||||
cancelButton.action = Action(owner, 'cancel')
|
||||
okButton.keyEquivalent = '\\r'
|
||||
cancelButton.keyEquivalent = '\\e'
|
||||
|
||||
promptLabel.height *= 3 # 3 lines
|
||||
|
||||
leftLayout = VLayout([categoryPopup, criteriaTable], width=262, filler=criteriaTable)
|
||||
middleLayout = VLayout([addButton, removeButton], width=41)
|
||||
buttonLayout = HLayout([None, cancelButton, okButton])
|
||||
|
||||
promptLabel.packToCorner(Pack.UpperLeft)
|
||||
promptLabel.fill(Pack.Right)
|
||||
leftLayout.packRelativeTo(promptLabel, Pack.Below)
|
||||
middleLayout.packRelativeTo(leftLayout, Pack.Right, align=Pack.Above)
|
||||
prioritizationTable.packRelativeTo(middleLayout, Pack.Right, align=Pack.Above)
|
||||
buttonLayout.packRelativeTo(leftLayout, Pack.Below)
|
||||
buttonLayout.fill(Pack.Right)
|
||||
leftLayout.fill(Pack.Below)
|
||||
middleLayout.packRelativeTo(leftLayout, Pack.Right, align=Pack.Middle)
|
||||
prioritizationTable.fill(Pack.Below, goal=leftLayout.y)
|
||||
prioritizationTable.fill(Pack.Right)
|
||||
|
||||
promptLabel.setAnchor(Pack.UpperLeft, growX=True)
|
||||
prioritizationTable.setAnchor(Pack.UpperLeft, growX=True, growY=True)
|
||||
buttonLayout.setAnchor(Pack.Below)
|
||||
35
cocoa/base/ui/problem_dialog.py
Normal file
35
cocoa/base/ui/problem_dialog.py
Normal file
@@ -0,0 +1,35 @@
|
||||
ownerclass = 'ProblemDialog'
|
||||
ownerimport = 'ProblemDialog.h'
|
||||
|
||||
result = Window(480, 310, "Problems!")
|
||||
messageLabel = Label(result, "There were problems processing some (or all) of the files. The cause "
|
||||
"of these problems are described in the table below. Those files were not removed from your "
|
||||
"results.")
|
||||
problemTable = TableView(result)
|
||||
revealButton = Button(result, "Reveal")
|
||||
closeButton = Button(result, "Close")
|
||||
|
||||
owner.problemTableView = problemTable
|
||||
|
||||
result.canMinimize = False
|
||||
result.minSize = Size(300, 300)
|
||||
closeButton.keyEquivalent = '\\r'
|
||||
revealButton.action = Action(owner.model, 'revealSelected')
|
||||
closeButton.action = Action(result, 'performClose:')
|
||||
|
||||
messageLabel.height *= 3 # 3 lines
|
||||
revealButton.width = 150
|
||||
closeButton.width = 98
|
||||
|
||||
messageLabel.packToCorner(Pack.UpperLeft)
|
||||
messageLabel.fill(Pack.Right)
|
||||
problemTable.packRelativeTo(messageLabel, Pack.Below)
|
||||
problemTable.fill(Pack.Right)
|
||||
revealButton.packRelativeTo(problemTable, Pack.Below)
|
||||
closeButton.packRelativeTo(problemTable, Pack.Below, align=Pack.Right)
|
||||
problemTable.fill(Pack.Below)
|
||||
|
||||
messageLabel.setAnchor(Pack.UpperLeft, growX=True)
|
||||
problemTable.setAnchor(Pack.UpperLeft, growX=True, growY=True)
|
||||
revealButton.setAnchor(Pack.LowerLeft)
|
||||
closeButton.setAnchor(Pack.LowerRight)
|
||||
97
cocoa/base/ui/result_window.py
Normal file
97
cocoa/base/ui/result_window.py
Normal file
@@ -0,0 +1,97 @@
|
||||
wnerclass = 'ResultWindow'
|
||||
ownerimport = 'ResultWindow.h'
|
||||
|
||||
result = Window(557, 400, "dupeGuru Results")
|
||||
toolbar = result.createToolbar('ResultsToolbar')
|
||||
table = TableView(result)
|
||||
table.OBJC_CLASS = 'HSTableView'
|
||||
statsLabel = Label(result, "")
|
||||
contextMenu = Menu("")
|
||||
|
||||
#Setup toolbar items
|
||||
toolbar.displayMode = const.NSToolbarDisplayModeIconOnly
|
||||
directoriesToolItem = toolbar.addItem('Directories', "Directories", image='folder32')
|
||||
actionToolItem = toolbar.addItem('Action', "Action")
|
||||
filterToolItem = toolbar.addItem('Filter', "Filter")
|
||||
optionsToolItem = toolbar.addItem('Options', "Options")
|
||||
quicklookToolItem = toolbar.addItem('QuickLook', "Quick Look")
|
||||
toolbar.defaultItems = [actionToolItem, optionsToolItem, quicklookToolItem, directoriesToolItem,
|
||||
toolbar.flexibleSpace(), filterToolItem]
|
||||
actionPopup = Popup(None)
|
||||
actionPopup.pullsdown = True
|
||||
actionPopup.bezelStyle = const.NSTexturedRoundedBezelStyle
|
||||
actionPopup.arrowPosition = const.NSPopUpArrowAtBottom
|
||||
item = actionPopup.menu.addItem("") # First item is invisible
|
||||
item.hidden = True
|
||||
item.image = 'NSActionTemplate'
|
||||
actionPopup.width = 44
|
||||
actionToolItem.view = actionPopup
|
||||
filterField = SearchField(None, "Filter")
|
||||
filterField.action = Action(owner, 'filter')
|
||||
filterField.sendsWholeSearchString = True
|
||||
filterToolItem.view = filterField
|
||||
filterToolItem.minSize = Size(80, 22)
|
||||
filterToolItem.maxSize = Size(300, 22)
|
||||
quickLookButton = Button(None, "")
|
||||
quickLookButton.bezelStyle = const.NSTexturedRoundedBezelStyle
|
||||
quickLookButton.image = 'NSQuickLookTemplate'
|
||||
quickLookButton.width = 44
|
||||
quickLookButton.action = Action(owner, 'toggleQuicklookPanel')
|
||||
quicklookToolItem.view = quickLookButton
|
||||
optionsSegments = SegmentedControl(None)
|
||||
optionsSegments.segmentStyle = const.NSSegmentStyleCapsule
|
||||
optionsSegments.trackingMode = const.NSSegmentSwitchTrackingSelectAny
|
||||
optionsSegments.font = Font(FontFamily.System, 11)
|
||||
optionsSegments.addSegment("Details", 57)
|
||||
optionsSegments.addSegment("Dupes Only", 82)
|
||||
optionsSegments.addSegment("Delta", 48)
|
||||
optionsSegments.action = Action(owner, 'changeOptions')
|
||||
optionsToolItem.view = optionsSegments
|
||||
|
||||
# Popuplate menus
|
||||
actionPopup.menu.addItem("Send Marked to Trash...", action=Action(owner, 'trashMarked'))
|
||||
actionPopup.menu.addItem("Move Marked to...", action=Action(owner, 'moveMarked'))
|
||||
actionPopup.menu.addItem("Copy Marked to...", action=Action(owner, 'copyMarked'))
|
||||
actionPopup.menu.addItem("Remove Marked from Results", action=Action(owner, 'removeMarked'))
|
||||
actionPopup.menu.addSeparator()
|
||||
for menu in (actionPopup.menu, contextMenu):
|
||||
menu.addItem("Remove Selected from Results", action=Action(owner, 'removeSelected'))
|
||||
menu.addItem("Add Selected to Ignore List", action=Action(owner, 'ignoreSelected'))
|
||||
menu.addItem("Make Selected Reference", action=Action(owner, 'switchSelected'))
|
||||
menu.addSeparator()
|
||||
menu.addItem("Open Selected with Default Application", action=Action(owner, 'openSelected'))
|
||||
menu.addItem("Reveal Selected in Finder", action=Action(owner, 'revealSelected'))
|
||||
menu.addItem("Rename Selected", action=Action(owner, 'renameSelected'))
|
||||
|
||||
# Doing connections
|
||||
owner.filterField = filterField
|
||||
owner.matches = table
|
||||
owner.optionsSwitch = optionsSegments
|
||||
owner.optionsToolbarItem = optionsToolItem
|
||||
owner.stats = statsLabel
|
||||
table.bind('rowHeight', defaults, 'values.TableFontSize', valueTransformer='vtRowHeightOffset')
|
||||
|
||||
# Rest of the setup
|
||||
result.minSize = Size(340, 340)
|
||||
result.autosaveName = 'MainWindow'
|
||||
statsLabel.alignment = TextAlignment.Center
|
||||
table.alternatingRows = True
|
||||
table.menu = contextMenu
|
||||
table.allowsColumnReordering = True
|
||||
table.allowsColumnResizing = True
|
||||
table.allowsColumnSelection = False
|
||||
table.allowsEmptySelection = False
|
||||
table.allowsMultipleSelection = True
|
||||
table.allowsTypeSelect = True
|
||||
table.gridStyleMask = const.NSTableViewSolidHorizontalGridLineMask
|
||||
table.setAnchor(Pack.UpperLeft, growX=True, growY=True)
|
||||
statsLabel.setAnchor(Pack.LowerLeft, growX=True)
|
||||
|
||||
# Layout
|
||||
# It's a little weird to pack with a margin of -1, but if I don't do that, I get too thick of a
|
||||
# border on the upper side of the table.
|
||||
table.packToCorner(Pack.UpperLeft, margin=-1)
|
||||
table.fill(Pack.Right, margin=0)
|
||||
statsLabel.packRelativeTo(table, Pack.Below, margin=6)
|
||||
statsLabel.fill(Pack.Right, margin=0)
|
||||
table.fill(Pack.Below, margin=5)
|
||||
@@ -3,7 +3,7 @@ import logging
|
||||
from objp.util import pyref, dontwrap
|
||||
from jobprogress import job
|
||||
import cocoa
|
||||
from cocoa import install_exception_hook, proxy
|
||||
from cocoa import install_exception_hook, install_cocoa_logger, proxy
|
||||
from cocoa.inter import PyFairware, FairwareView
|
||||
from hscommon.trans import trget
|
||||
|
||||
@@ -23,6 +23,7 @@ class DupeGuruView(FairwareView):
|
||||
def askYesNoWithPrompt_(self, prompt: str) -> bool: pass
|
||||
def showProblemDialog(self): pass
|
||||
def selectDestFolderWithPrompt_(self, prompt: str) -> str: pass
|
||||
def selectDestFileWithPrompt_extension_(self, prompt: str, extension: str) -> str: pass
|
||||
|
||||
class PyDupeGuruBase(PyFairware):
|
||||
FOLLOW_PROTOCOLS = ['Worker']
|
||||
@@ -31,6 +32,7 @@ class PyDupeGuruBase(PyFairware):
|
||||
def _init(self, modelclass):
|
||||
logging.basicConfig(level=logging.WARNING, format='%(levelname)s %(message)s')
|
||||
install_exception_hook()
|
||||
install_cocoa_logger()
|
||||
appdata = proxy.getAppdataPath()
|
||||
self.model = modelclass(self, appdata)
|
||||
self.progress = cocoa.ThreadedJobPerformer()
|
||||
@@ -58,15 +60,18 @@ class PyDupeGuruBase(PyFairware):
|
||||
return self.model.deletion_options
|
||||
|
||||
#---Directories
|
||||
def addDirectory_(self, directory: str) -> int:
|
||||
return self.model.add_directory(directory)
|
||||
def addDirectory_(self, directory: str):
|
||||
self.model.add_directory(directory)
|
||||
|
||||
#---Results
|
||||
def doScan(self):
|
||||
self.model.start_scanning()
|
||||
|
||||
def exportToXHTML(self) -> str:
|
||||
return self.model.export_to_xhtml()
|
||||
def exportToXHTML(self):
|
||||
self.model.export_to_xhtml()
|
||||
|
||||
def exportToCSV(self):
|
||||
self.model.export_to_csv()
|
||||
|
||||
def loadSession(self):
|
||||
self.model.load()
|
||||
@@ -217,3 +222,7 @@ class PyDupeGuruBase(PyFairware):
|
||||
def select_dest_folder(self, prompt):
|
||||
return self.callback.selectDestFolderWithPrompt_(prompt)
|
||||
|
||||
@dontwrap
|
||||
def select_dest_file(self, prompt, extension):
|
||||
return self.callback.selectDestFileWithPrompt_extension_(prompt, extension)
|
||||
|
||||
|
||||
@@ -7,15 +7,16 @@
|
||||
# http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
import logging
|
||||
from appscript import app, its, k, CommandError, ApplicationNotFoundError
|
||||
import plistlib
|
||||
import time
|
||||
import os.path as op
|
||||
from appscript import app, its, k, CommandError, ApplicationNotFoundError
|
||||
from . import tunes
|
||||
|
||||
from cocoa import as_fetch, proxy
|
||||
from hscommon import io
|
||||
from hscommon.trans import trget
|
||||
from hscommon.path import Path
|
||||
from hscommon.util import remove_invalid_xml
|
||||
|
||||
from core import directories
|
||||
from core.app import JobType
|
||||
@@ -54,7 +55,7 @@ class ITunesSong(fs.MusicFile):
|
||||
|
||||
def remove_from_library(self):
|
||||
try:
|
||||
a = app(ITUNES)
|
||||
a = app(ITUNES, terms=tunes)
|
||||
library = get_itunes_library(a)
|
||||
if library is None:
|
||||
return
|
||||
@@ -76,18 +77,21 @@ def get_itunes_database_path():
|
||||
return Path(plistpath)
|
||||
|
||||
def get_itunes_songs(plistpath):
|
||||
if not io.exists(plistpath):
|
||||
if not plistpath.exists():
|
||||
return []
|
||||
plist = plistlib.readPlist(str(plistpath))
|
||||
s = plistpath.open('rt', encoding='utf-8').read()
|
||||
# iTunes sometimes produces XML files with invalid characters in it.
|
||||
s = remove_invalid_xml(s, replace_with='')
|
||||
plist = plistlib.readPlistFromBytes(s.encode('utf-8'))
|
||||
result = []
|
||||
for song_data in plist['Tracks'].values():
|
||||
try:
|
||||
if song_data['Track Type'] != 'File':
|
||||
continue
|
||||
try:
|
||||
song = ITunesSong(song_data)
|
||||
except KeyError: # No "Location" or "Track ID" key in track
|
||||
except KeyError: # No "Track Type", "Location" or "Track ID" key in track
|
||||
continue
|
||||
if io.exists(song.path):
|
||||
if song.path.exists():
|
||||
result.append(song)
|
||||
return result
|
||||
|
||||
@@ -146,28 +150,28 @@ class DupeGuruME(DupeGuruBase):
|
||||
self.directories = Directories(fileclasses=self.directories.fileclasses)
|
||||
self.dead_tracks = []
|
||||
|
||||
def _do_delete(self, j, replace_with_hardlinks):
|
||||
def _do_delete(self, j, *args):
|
||||
# XXX If I read correctly, Python 3.3 will allow us to go fetch inner function easily, so
|
||||
# we'll be able to replace "op" below with DupeGuruBase._do_delete.op.
|
||||
def op(dupe):
|
||||
j.add_progress()
|
||||
return self._do_delete_dupe(dupe, replace_with_hardlinks)
|
||||
return self._do_delete_dupe(dupe, *args)
|
||||
|
||||
marked = [dupe for dupe in self.results.dupes if self.results.is_marked(dupe)]
|
||||
j.start_job(self.results.mark_count, tr("Sending dupes to the Trash"))
|
||||
if any(isinstance(dupe, ITunesSong) for dupe in marked):
|
||||
j.add_progress(0, desc=tr("Talking to iTunes. Don't touch it!"))
|
||||
try:
|
||||
a = app(ITUNES)
|
||||
a = app(ITUNES, terms=tunes)
|
||||
a.activate(timeout=0)
|
||||
except (CommandError, RuntimeError, ApplicationNotFoundError):
|
||||
pass
|
||||
self.results.perform_on_marked(op, True)
|
||||
|
||||
def _do_delete_dupe(self, dupe, replace_with_hardlinks):
|
||||
def _do_delete_dupe(self, dupe, *args):
|
||||
if isinstance(dupe, ITunesSong):
|
||||
dupe.remove_from_library()
|
||||
DupeGuruBase._do_delete_dupe(self, dupe, replace_with_hardlinks)
|
||||
DupeGuruBase._do_delete_dupe(self, dupe, *args)
|
||||
|
||||
def _create_file(self, path):
|
||||
if (self.directories.itunes_libpath is not None) and (path in self.directories.itunes_libpath[:-1]):
|
||||
@@ -208,7 +212,7 @@ class DupeGuruME(DupeGuruBase):
|
||||
def start_scanning(self):
|
||||
if self.directories.has_itunes_path():
|
||||
try:
|
||||
app(ITUNES)
|
||||
app(ITUNES, terms=tunes)
|
||||
except ApplicationNotFoundError:
|
||||
self.view.show_message(tr("The iTunes application couldn't be found."))
|
||||
return
|
||||
@@ -216,7 +220,7 @@ class DupeGuruME(DupeGuruBase):
|
||||
|
||||
def remove_dead_tracks(self):
|
||||
def do(j):
|
||||
a = app(ITUNES)
|
||||
a = app(ITUNES, terms=tunes)
|
||||
a.activate(timeout=0)
|
||||
for index, track in enumerate(j.iter_with_progress(self.dead_tracks)):
|
||||
if index % 100 == 0:
|
||||
@@ -230,7 +234,7 @@ class DupeGuruME(DupeGuruBase):
|
||||
|
||||
def scan_dead_tracks(self):
|
||||
def do(j):
|
||||
a = app(ITUNES)
|
||||
a = app(ITUNES, terms=tunes)
|
||||
a.activate(timeout=0)
|
||||
library = get_itunes_library(a)
|
||||
if library is None:
|
||||
|
||||
@@ -11,16 +11,17 @@ import plistlib
|
||||
import logging
|
||||
import re
|
||||
|
||||
from appscript import app, its, CommandError, ApplicationNotFoundError
|
||||
from appscript import app, its, k, CommandError, ApplicationNotFoundError
|
||||
|
||||
from hscommon import io
|
||||
from hscommon.util import remove_invalid_xml
|
||||
from hscommon.util import remove_invalid_xml, first
|
||||
from hscommon.path import Path
|
||||
from hscommon.trans import trget
|
||||
from cocoa import proxy
|
||||
|
||||
from core.scanner import ScanType
|
||||
from core import directories
|
||||
from core.app import JobType
|
||||
from core_pe import _block_osx
|
||||
from core_pe.photo import Photo as PhotoBase
|
||||
from core_pe.app import DupeGuru as DupeGuruBase
|
||||
@@ -29,6 +30,7 @@ from .app import PyDupeGuruBase
|
||||
tr = trget('ui')
|
||||
|
||||
IPHOTO_PATH = Path('iPhoto Library')
|
||||
APERTURE_PATH = Path('Aperture Library')
|
||||
|
||||
class Photo(PhotoBase):
|
||||
HANDLED_EXTS = PhotoBase.HANDLED_EXTS.copy()
|
||||
@@ -48,18 +50,25 @@ class Photo(PhotoBase):
|
||||
|
||||
|
||||
class IPhoto(Photo):
|
||||
def __init__(self, path, db_id):
|
||||
# In IPhoto, we don't care about the db_id, we find photos by path.
|
||||
Photo.__init__(self, path)
|
||||
|
||||
@property
|
||||
def display_folder_path(self):
|
||||
return IPHOTO_PATH
|
||||
|
||||
def get_iphoto_database_path():
|
||||
plisturls = proxy.prefValue_inDomain_('iPhotoRecentDatabases', 'com.apple.iApps')
|
||||
if not plisturls:
|
||||
raise directories.InvalidPathError()
|
||||
plistpath = proxy.url2path_(plisturls[0])
|
||||
return Path(plistpath)
|
||||
class AperturePhoto(Photo):
|
||||
def __init__(self, path, db_id):
|
||||
Photo.__init__(self, path)
|
||||
self.db_id = db_id
|
||||
|
||||
def get_iphoto_pictures(plistpath):
|
||||
@property
|
||||
def display_folder_path(self):
|
||||
return APERTURE_PATH
|
||||
|
||||
def get_iphoto_or_aperture_pictures(plistpath, photo_class):
|
||||
# The structure of iPhoto and Aperture libraries for the base photo list are excactly the same.
|
||||
if not io.exists(plistpath):
|
||||
return []
|
||||
s = io.open(plistpath, 'rt', encoding='utf-8').read()
|
||||
@@ -73,14 +82,33 @@ def get_iphoto_pictures(plistpath):
|
||||
logging.warning("%d invalid XML entities replacement made", count)
|
||||
plist = plistlib.readPlistFromBytes(s.encode('utf-8'))
|
||||
result = []
|
||||
for photo_data in plist['Master Image List'].values():
|
||||
for key, photo_data in plist['Master Image List'].items():
|
||||
if photo_data['MediaType'] != 'Image':
|
||||
continue
|
||||
photo_path = Path(photo_data['ImagePath'])
|
||||
photo = IPhoto(photo_path)
|
||||
photo = photo_class(photo_path, key)
|
||||
result.append(photo)
|
||||
return result
|
||||
|
||||
def get_iphoto_pictures(plistpath):
|
||||
return get_iphoto_or_aperture_pictures(plistpath, IPhoto)
|
||||
|
||||
def get_aperture_pictures(plistpath):
|
||||
return get_iphoto_or_aperture_pictures(plistpath, AperturePhoto)
|
||||
|
||||
def get_iapps_database_path(prefname):
|
||||
plisturls = proxy.prefValue_inDomain_(prefname, 'com.apple.iApps')
|
||||
if not plisturls:
|
||||
raise directories.InvalidPathError()
|
||||
plistpath = proxy.url2path_(plisturls[0])
|
||||
return Path(plistpath)
|
||||
|
||||
def get_iphoto_database_path():
|
||||
return get_iapps_database_path('iPhotoRecentDatabases')
|
||||
|
||||
def get_aperture_database_path():
|
||||
return get_iapps_database_path('ApertureLibraries')
|
||||
|
||||
class Directories(directories.Directories):
|
||||
def __init__(self):
|
||||
directories.Directories.__init__(self, fileclasses=[Photo])
|
||||
@@ -89,6 +117,11 @@ class Directories(directories.Directories):
|
||||
self.set_state(self.iphoto_libpath[:-1], directories.DirectoryState.Excluded)
|
||||
except directories.InvalidPathError:
|
||||
self.iphoto_libpath = None
|
||||
try:
|
||||
self.aperture_libpath = get_aperture_database_path()
|
||||
self.set_state(self.aperture_libpath[:-1], directories.DirectoryState.Excluded)
|
||||
except directories.InvalidPathError:
|
||||
self.aperture_libpath = None
|
||||
|
||||
def _get_files(self, from_path, j):
|
||||
if from_path == IPHOTO_PATH:
|
||||
@@ -99,25 +132,33 @@ class Directories(directories.Directories):
|
||||
for photo in photos:
|
||||
photo.is_ref = is_ref
|
||||
return photos
|
||||
elif from_path == APERTURE_PATH:
|
||||
if self.aperture_libpath is None:
|
||||
return []
|
||||
is_ref = self.get_state(from_path) == directories.DirectoryState.Reference
|
||||
photos = get_aperture_pictures(self.aperture_libpath)
|
||||
for photo in photos:
|
||||
photo.is_ref = is_ref
|
||||
return photos
|
||||
else:
|
||||
return directories.Directories._get_files(self, from_path, j)
|
||||
|
||||
@staticmethod
|
||||
def get_subfolders(path):
|
||||
if path == IPHOTO_PATH:
|
||||
if path in {IPHOTO_PATH, APERTURE_PATH}:
|
||||
return []
|
||||
else:
|
||||
return directories.Directories.get_subfolders(path)
|
||||
|
||||
def add_path(self, path):
|
||||
if path == IPHOTO_PATH:
|
||||
if path in {IPHOTO_PATH, APERTURE_PATH}:
|
||||
if path not in self:
|
||||
self._dirs.append(path)
|
||||
else:
|
||||
directories.Directories.add_path(self, path)
|
||||
|
||||
def has_iphoto_path(self):
|
||||
return any(path == IPHOTO_PATH for path in self._dirs)
|
||||
return any(path in {IPHOTO_PATH, APERTURE_PATH} for path in self._dirs)
|
||||
|
||||
def has_any_file(self):
|
||||
# If we don't do that, it causes a hangup in the GUI when we click Start Scanning because
|
||||
@@ -135,11 +176,12 @@ class DupeGuruPE(DupeGuruBase):
|
||||
DupeGuruBase.__init__(self, view, appdata)
|
||||
self.directories = Directories()
|
||||
|
||||
def _do_delete(self, j, replace_with_hardlinks):
|
||||
def _do_delete(self, j, *args):
|
||||
def op(dupe):
|
||||
j.add_progress()
|
||||
return self._do_delete_dupe(dupe, replace_with_hardlinks)
|
||||
return self._do_delete_dupe(dupe, *args)
|
||||
|
||||
self.deleted_aperture_photos = False
|
||||
marked = [dupe for dupe in self.results.dupes if self.results.is_marked(dupe)]
|
||||
j.start_job(self.results.mark_count, tr("Sending dupes to the Trash"))
|
||||
if any(isinstance(dupe, IPhoto) for dupe in marked):
|
||||
@@ -150,9 +192,17 @@ class DupeGuruPE(DupeGuruBase):
|
||||
a.select(a.photo_library_album(timeout=0), timeout=0)
|
||||
except (CommandError, RuntimeError, ApplicationNotFoundError):
|
||||
pass
|
||||
if any(isinstance(dupe, AperturePhoto) for dupe in marked):
|
||||
self.deleted_aperture_photos = True
|
||||
j.add_progress(0, desc=tr("Talking to Aperture. Don't touch it!"))
|
||||
try:
|
||||
a = app('Aperture')
|
||||
a.activate(timeout=0)
|
||||
except (CommandError, RuntimeError, ApplicationNotFoundError):
|
||||
pass
|
||||
self.results.perform_on_marked(op, True)
|
||||
|
||||
def _do_delete_dupe(self, dupe, replace_with_hardlinks):
|
||||
def _do_delete_dupe(self, dupe, *args):
|
||||
if isinstance(dupe, IPhoto):
|
||||
try:
|
||||
a = app('iPhoto')
|
||||
@@ -167,16 +217,61 @@ class DupeGuruPE(DupeGuruBase):
|
||||
raise EnvironmentError(msg)
|
||||
except (CommandError, RuntimeError) as e:
|
||||
raise EnvironmentError(str(e))
|
||||
if isinstance(dupe, AperturePhoto):
|
||||
try:
|
||||
a = app('Aperture')
|
||||
# I'm flying blind here. In my own test library, all photos are in an album with the
|
||||
# id "LibraryFolder", so I'm going to guess that it's the case at least most of the
|
||||
# time. As a safeguard, if we don't find any library with that id, we'll use the
|
||||
# first album.
|
||||
# Now, about deleting: All attempts I've made at sending photos to trash failed,
|
||||
# even with normal applescript. So, what we're going to do here is to create a
|
||||
# "dupeGuru Trash" project and tell the user to manually send those photos to trash.
|
||||
libraries = a.libraries()
|
||||
library = first(l for l in libraries if l.id == 'LibraryFolder')
|
||||
if library is None:
|
||||
library = libraries[0]
|
||||
trash_project = a.projects["dupeGuru Trash"]
|
||||
if trash_project.exists():
|
||||
trash_project = trash_project()
|
||||
else:
|
||||
DupeGuruBase._do_delete_dupe(self, dupe, replace_with_hardlinks)
|
||||
trash_project = library.make(new=k.project, with_properties={k.name: "dupeGuru Trash"})
|
||||
[photo] = library.image_versions[its.id == dupe.db_id]()
|
||||
photo.move(to=trash_project)
|
||||
except (IndexError, ValueError):
|
||||
msg = "Could not find photo '{}' in Aperture Library".format(str(dupe.path))
|
||||
raise EnvironmentError(msg)
|
||||
except (CommandError, RuntimeError) as e:
|
||||
raise EnvironmentError(str(e))
|
||||
else:
|
||||
DupeGuruBase._do_delete_dupe(self, dupe, *args)
|
||||
|
||||
def _create_file(self, path):
|
||||
if (self.directories.iphoto_libpath is not None) and (path in self.directories.iphoto_libpath[:-1]):
|
||||
return IPhoto(path)
|
||||
if not hasattr(self, 'path2iphoto'):
|
||||
photos = get_iphoto_pictures(self.directories.iphoto_libpath)
|
||||
self.path2iphoto = {p.path: p for p in photos}
|
||||
return self.path2iphoto.get(path)
|
||||
if (self.directories.aperture_libpath is not None) and (path in self.directories.aperture_libpath[:-1]):
|
||||
if not hasattr(self, 'path2aperture'):
|
||||
photos = get_aperture_pictures(self.directories.aperture_libpath)
|
||||
self.path2aperture = {p.path: p for p in photos}
|
||||
return self.path2aperture.get(path)
|
||||
return DupeGuruBase._create_file(self, path)
|
||||
|
||||
def _job_completed(self, jobid, exc):
|
||||
DupeGuruBase._job_completed(self, jobid, exc)
|
||||
if jobid == JobType.Load:
|
||||
if hasattr(self, 'path2iphoto'):
|
||||
del self.path2iphoto
|
||||
if hasattr(self, 'path2aperture'):
|
||||
del self.path2aperture
|
||||
if jobid == JobType.Delete and self.deleted_aperture_photos:
|
||||
msg = tr("Deleted Aperture photos were sent to a project called \"dupeGuru Trash\".")
|
||||
self.view.show_message(msg)
|
||||
|
||||
def copy_or_move(self, dupe, copy, destination, dest_type):
|
||||
if isinstance(dupe, IPhoto):
|
||||
if isinstance(dupe, (IPhoto, AperturePhoto)):
|
||||
copy = True
|
||||
return DupeGuruBase.copy_or_move(self, dupe, copy, destination, dest_type)
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
# which should be included with this package. The terms are also available at
|
||||
# http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
from objp.util import dontwrap
|
||||
from cocoa.inter import PyGUIObject, GUIObjectView
|
||||
|
||||
class DeletionOptionsView(GUIObjectView):
|
||||
@@ -12,16 +13,21 @@ class DeletionOptionsView(GUIObjectView):
|
||||
def show(self) -> bool: pass
|
||||
|
||||
class PyDeletionOptions(PyGUIObject):
|
||||
def setHardlink_(self, hardlink: bool):
|
||||
self.model.hardlink = hardlink
|
||||
def setLinkDeleted_(self, link_deleted: bool):
|
||||
self.model.link_deleted = link_deleted
|
||||
|
||||
def setUseHardlinks_(self, use_hardlinks: bool):
|
||||
self.model.use_hardlinks = use_hardlinks
|
||||
|
||||
def setDirect_(self, direct: bool):
|
||||
self.model.direct = direct
|
||||
|
||||
#--- model --> view
|
||||
@dontwrap
|
||||
def update_msg(self, msg):
|
||||
self.callback.updateMsg_(msg)
|
||||
|
||||
@dontwrap
|
||||
def show(self):
|
||||
return self.callback.show()
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from objp.util import pyref
|
||||
from objp.util import pyref, dontwrap
|
||||
from cocoa.inter import PyGUIObject, GUIObjectView
|
||||
|
||||
class IgnoreListDialogView(GUIObjectView):
|
||||
@@ -15,6 +15,7 @@ class PyIgnoreListDialog(PyGUIObject):
|
||||
self.model.clear()
|
||||
|
||||
#--- model --> view
|
||||
@dontwrap
|
||||
def show(self):
|
||||
self.callback.show()
|
||||
|
||||
|
||||
282
cocoa/inter/tunes.py
Normal file
282
cocoa/inter/tunes.py
Normal file
@@ -0,0 +1,282 @@
|
||||
# Taken from https://github.com/abarnert/itunesterms
|
||||
|
||||
version = 1.1
|
||||
path = '/Applications/iTunes.app'
|
||||
|
||||
classes = \
|
||||
[('print_settings', b'pset'),
|
||||
('application', b'capp'),
|
||||
('artwork', b'cArt'),
|
||||
('audio_CD_playlist', b'cCDP'),
|
||||
('audio_CD_track', b'cCDT'),
|
||||
('browser_window', b'cBrW'),
|
||||
('device_playlist', b'cDvP'),
|
||||
('device_track', b'cDvT'),
|
||||
('encoder', b'cEnc'),
|
||||
('EQ_preset', b'cEQP'),
|
||||
('EQ_window', b'cEQW'),
|
||||
('file_track', b'cFlT'),
|
||||
('folder_playlist', b'cFoP'),
|
||||
('item', b'cobj'),
|
||||
('library_playlist', b'cLiP'),
|
||||
('playlist', b'cPly'),
|
||||
('playlist_window', b'cPlW'),
|
||||
('radio_tuner_playlist', b'cRTP'),
|
||||
('shared_track', b'cShT'),
|
||||
('source', b'cSrc'),
|
||||
('track', b'cTrk'),
|
||||
('URL_track', b'cURT'),
|
||||
('user_playlist', b'cUsP'),
|
||||
('visual', b'cVis'),
|
||||
('window', b'cwin')]
|
||||
|
||||
enums = \
|
||||
[('track_listing', b'kTrk'),
|
||||
('album_listing', b'kAlb'),
|
||||
('cd_insert', b'kCDi'),
|
||||
('standard', b'lwst'),
|
||||
('detailed', b'lwdt'),
|
||||
('stopped', b'kPSS'),
|
||||
('playing', b'kPSP'),
|
||||
('paused', b'kPSp'),
|
||||
('fast_forwarding', b'kPSF'),
|
||||
('rewinding', b'kPSR'),
|
||||
('off', b'kRpO'),
|
||||
('one', b'kRp1'),
|
||||
('all', b'kAll'),
|
||||
('small', b'kVSS'),
|
||||
('medium', b'kVSM'),
|
||||
('large', b'kVSL'),
|
||||
('library', b'kLib'),
|
||||
('iPod', b'kPod'),
|
||||
('audio_CD', b'kACD'),
|
||||
('MP3_CD', b'kMCD'),
|
||||
('device', b'kDev'),
|
||||
('radio_tuner', b'kTun'),
|
||||
('shared_library', b'kShd'),
|
||||
('unknown', b'kUnk'),
|
||||
('albums', b'kSrL'),
|
||||
('artists', b'kSrR'),
|
||||
('composers', b'kSrC'),
|
||||
('displayed', b'kSrV'),
|
||||
('songs', b'kSrS'),
|
||||
('none', b'kNon'),
|
||||
('Books', b'kSpA'),
|
||||
('folder', b'kSpF'),
|
||||
('Genius', b'kSpG'),
|
||||
('iTunes_U', b'kSpU'),
|
||||
('Library', b'kSpL'),
|
||||
('Movies', b'kSpI'),
|
||||
('Music', b'kSpZ'),
|
||||
('Party_Shuffle', b'kSpS'),
|
||||
('Podcasts', b'kSpP'),
|
||||
('Purchased_Music', b'kSpM'),
|
||||
('TV_Shows', b'kSpT'),
|
||||
('movie', b'kVdM'),
|
||||
('music_video', b'kVdV'),
|
||||
('TV_show', b'kVdT'),
|
||||
('user', b'kRtU'),
|
||||
('computed', b'kRtC')]
|
||||
|
||||
properties = \
|
||||
[('copies', b'lwcp'),
|
||||
('collating', b'lwcl'),
|
||||
('starting_page', b'lwfp'),
|
||||
('ending_page', b'lwlp'),
|
||||
('pages_across', b'lwla'),
|
||||
('pages_down', b'lwld'),
|
||||
('error_handling', b'lweh'),
|
||||
('requested_print_time', b'lwqt'),
|
||||
('printer_features', b'lwpf'),
|
||||
('fax_number', b'faxn'),
|
||||
('target_printer', b'trpr'),
|
||||
('current_encoder', b'pEnc'),
|
||||
('current_EQ_preset', b'pEQP'),
|
||||
('current_playlist', b'pPla'),
|
||||
('current_stream_title', b'pStT'),
|
||||
('current_stream_URL', b'pStU'),
|
||||
('current_track', b'pTrk'),
|
||||
('current_visual', b'pVis'),
|
||||
('EQ_enabled', b'pEQ '),
|
||||
('fixed_indexing', b'pFix'),
|
||||
('frontmost', b'pisf'),
|
||||
('full_screen', b'pFSc'),
|
||||
('name', b'pnam'),
|
||||
('mute', b'pMut'),
|
||||
('player_position', b'pPos'),
|
||||
('player_state', b'pPlS'),
|
||||
('selection', b'sele'),
|
||||
('sound_volume', b'pVol'),
|
||||
('version', b'vers'),
|
||||
('visuals_enabled', b'pVsE'),
|
||||
('visual_size', b'pVSz'),
|
||||
('data', b'pPCT'),
|
||||
('description', b'pDes'),
|
||||
('downloaded', b'pDlA'),
|
||||
('format', b'pFmt'),
|
||||
('kind', b'pKnd'),
|
||||
('raw_data', b'pRaw'),
|
||||
('artist', b'pArt'),
|
||||
('compilation', b'pAnt'),
|
||||
('composer', b'pCmp'),
|
||||
('disc_count', b'pDsC'),
|
||||
('disc_number', b'pDsN'),
|
||||
('genre', b'pGen'),
|
||||
('year', b'pYr '),
|
||||
('location', b'pLoc'),
|
||||
('minimized', b'pMin'),
|
||||
('view', b'pPly'),
|
||||
('band_1', b'pEQ1'),
|
||||
('band_2', b'pEQ2'),
|
||||
('band_3', b'pEQ3'),
|
||||
('band_4', b'pEQ4'),
|
||||
('band_5', b'pEQ5'),
|
||||
('band_6', b'pEQ6'),
|
||||
('band_7', b'pEQ7'),
|
||||
('band_8', b'pEQ8'),
|
||||
('band_9', b'pEQ9'),
|
||||
('band_10', b'pEQ0'),
|
||||
('modifiable', b'pMod'),
|
||||
('preamp', b'pEQA'),
|
||||
('update_tracks', b'pUTC'),
|
||||
('container', b'ctnr'),
|
||||
('id', b'ID '),
|
||||
('index', b'pidx'),
|
||||
('persistent_ID', b'pPIS'),
|
||||
('duration', b'pDur'),
|
||||
('parent', b'pPlP'),
|
||||
('shuffle', b'pShf'),
|
||||
('size', b'pSiz'),
|
||||
('song_repeat', b'pRpt'),
|
||||
('special_kind', b'pSpK'),
|
||||
('time', b'pTim'),
|
||||
('visible', b'pvis'),
|
||||
('capacity', b'capa'),
|
||||
('free_space', b'frsp'),
|
||||
('album', b'pAlb'),
|
||||
('album_artist', b'pAlA'),
|
||||
('album_rating', b'pAlR'),
|
||||
('album_rating_kind', b'pARk'),
|
||||
('bit_rate', b'pBRt'),
|
||||
('bookmark', b'pBkt'),
|
||||
('bookmarkable', b'pBkm'),
|
||||
('bpm', b'pBPM'),
|
||||
('category', b'pCat'),
|
||||
('comment', b'pCmt'),
|
||||
('database_ID', b'pDID'),
|
||||
('date_added', b'pAdd'),
|
||||
('enabled', b'enbl'),
|
||||
('episode_ID', b'pEpD'),
|
||||
('episode_number', b'pEpN'),
|
||||
('EQ', b'pEQp'),
|
||||
('finish', b'pStp'),
|
||||
('gapless', b'pGpl'),
|
||||
('grouping', b'pGrp'),
|
||||
('long_description', b'pLds'),
|
||||
('lyrics', b'pLyr'),
|
||||
('modification_date', b'asmo'),
|
||||
('played_count', b'pPlC'),
|
||||
('played_date', b'pPlD'),
|
||||
('podcast', b'pTPc'),
|
||||
('rating', b'pRte'),
|
||||
('rating_kind', b'pRtk'),
|
||||
('release_date', b'pRlD'),
|
||||
('sample_rate', b'pSRt'),
|
||||
('season_number', b'pSeN'),
|
||||
('shufflable', b'pSfa'),
|
||||
('skipped_count', b'pSkC'),
|
||||
('skipped_date', b'pSkD'),
|
||||
('show', b'pShw'),
|
||||
('sort_album', b'pSAl'),
|
||||
('sort_artist', b'pSAr'),
|
||||
('sort_album_artist', b'pSAA'),
|
||||
('sort_name', b'pSNm'),
|
||||
('sort_composer', b'pSCm'),
|
||||
('sort_show', b'pSSN'),
|
||||
('start', b'pStr'),
|
||||
('track_count', b'pTrC'),
|
||||
('track_number', b'pTrN'),
|
||||
('unplayed', b'pUnp'),
|
||||
('video_kind', b'pVdK'),
|
||||
('volume_adjustment', b'pAdj'),
|
||||
('address', b'pURL'),
|
||||
('shared', b'pShr'),
|
||||
('smart', b'pSmt'),
|
||||
('bounds', b'pbnd'),
|
||||
('closeable', b'hclb'),
|
||||
('collapseable', b'pWSh'),
|
||||
('collapsed', b'wshd'),
|
||||
('position', b'ppos'),
|
||||
('resizable', b'prsz'),
|
||||
('zoomable', b'iszm'),
|
||||
('zoomed', b'pzum')]
|
||||
|
||||
elements = \
|
||||
[('artworks', b'cArt'),
|
||||
('audio_CD_playlists', b'cCDP'),
|
||||
('audio_CD_tracks', b'cCDT'),
|
||||
('browser_windows', b'cBrW'),
|
||||
('device_playlists', b'cDvP'),
|
||||
('device_tracks', b'cDvT'),
|
||||
('encoders', b'cEnc'),
|
||||
('EQ_presets', b'cEQP'),
|
||||
('EQ_windows', b'cEQW'),
|
||||
('file_tracks', b'cFlT'),
|
||||
('folder_playlists', b'cFoP'),
|
||||
('items', b'cobj'),
|
||||
('library_playlists', b'cLiP'),
|
||||
('playlists', b'cPly'),
|
||||
('playlist_windows', b'cPlW'),
|
||||
('radio_tuner_playlists', b'cRTP'),
|
||||
('shared_tracks', b'cShT'),
|
||||
('sources', b'cSrc'),
|
||||
('tracks', b'cTrk'),
|
||||
('URL_tracks', b'cURT'),
|
||||
('user_playlists', b'cUsP'),
|
||||
('visuals', b'cVis'),
|
||||
('windows', b'cwin'),
|
||||
('application', b'capp'),
|
||||
('print_settings', b'pset')]
|
||||
|
||||
commands = \
|
||||
[('set', b'coresetd', [('to', b'data')]),
|
||||
('exists', b'coredoex', []),
|
||||
('move', b'coremove', [('to', b'insh')]),
|
||||
('subscribe', b'hookpSub', []),
|
||||
('playpause', b'hookPlPs', []),
|
||||
('download', b'hookDwnl', []),
|
||||
('close', b'coreclos', []),
|
||||
('open', b'aevtodoc', []),
|
||||
('open_location', b'GURLGURL', []),
|
||||
('quit', b'aevtquit', []),
|
||||
('pause', b'hookPaus', []),
|
||||
('make',
|
||||
'corecrel',
|
||||
[('new', b'kocl'), ('at', b'insh'), ('with_properties', b'prdt')]),
|
||||
('duplicate', b'coreclon', [('to', b'insh')]),
|
||||
('print_',
|
||||
'aevtpdoc',
|
||||
[('print_dialog', b'pdlg'),
|
||||
('with_properties', b'prdt'),
|
||||
('kind', b'pKnd'),
|
||||
('theme', b'pThm')]),
|
||||
('add', b'hookAdd ', [('to', b'insh')]),
|
||||
('rewind', b'hookRwnd', []),
|
||||
('play', b'hookPlay', [('once', b'POne')]),
|
||||
('run', b'aevtoapp', []),
|
||||
('resume', b'hookResu', []),
|
||||
('updatePodcast', b'hookUpd1', []),
|
||||
('next_track', b'hookNext', []),
|
||||
('stop', b'hookStop', []),
|
||||
('search', b'hookSrch', [('for_', b'pTrm'), ('only', b'pAre')]),
|
||||
('updateAllPodcasts', b'hookUpdp', []),
|
||||
('update', b'hookUpdt', []),
|
||||
('previous_track', b'hookPrev', []),
|
||||
('fast_forward', b'hookFast', []),
|
||||
('count', b'corecnte', [('each', b'kocl')]),
|
||||
('reveal', b'hookRevl', []),
|
||||
('convert', b'hookConv', []),
|
||||
('eject', b'hookEjct', []),
|
||||
('back_track', b'hookBack', []),
|
||||
('refresh', b'hookRfrs', []),
|
||||
('delete', b'coredelo', [])]
|
||||
@@ -7,9 +7,10 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "../base/AppDelegate.h"
|
||||
#import "AppDelegateBase.h"
|
||||
#import "ResultWindow.h"
|
||||
#import "PyDupeGuru.h"
|
||||
|
||||
@interface AppDelegate : AppDelegateBase {}
|
||||
- (void)removeDeadTracks;
|
||||
@end
|
||||
|
||||
@@ -17,33 +17,20 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
#import "Consts.h"
|
||||
|
||||
@implementation AppDelegate
|
||||
+ (void)initialize
|
||||
+ (NSDictionary *)defaultPreferences
|
||||
{
|
||||
[super initialize];
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:10];
|
||||
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithDictionary:[super defaultPreferences]];
|
||||
[d setObject:i2n(3) forKey:@"scanType"];
|
||||
[d setObject:i2n(80) forKey:@"minMatchPercentage"];
|
||||
[d setObject:i2n(1) forKey:@"recreatePathType"];
|
||||
[d setObject:i2n(11) forKey:TableFontSize];
|
||||
[d setObject:b2n(NO) forKey:@"wordWeighting"];
|
||||
[d setObject:b2n(NO) forKey:@"matchSimilarWords"];
|
||||
[d setObject:b2n(YES) forKey:@"mixFileKind"];
|
||||
[d setObject:b2n(NO) forKey:@"useRegexpFilter"];
|
||||
[d setObject:b2n(NO) forKey:@"ignoreHardlinkMatches"];
|
||||
[d setObject:b2n(NO) forKey:@"removeEmptyFolders"];
|
||||
[d setObject:b2n(NO) forKey:@"debug"];
|
||||
[d setObject:b2n(NO) forKey:@"scanTagTrack"];
|
||||
[d setObject:b2n(YES) forKey:@"scanTagArtist"];
|
||||
[d setObject:b2n(YES) forKey:@"scanTagAlbum"];
|
||||
[d setObject:b2n(YES) forKey:@"scanTagTitle"];
|
||||
[d setObject:b2n(NO) forKey:@"scanTagGenre"];
|
||||
[d setObject:b2n(NO) forKey:@"scanTagYear"];
|
||||
[d setObject:[NSArray array] forKey:@"recentDirectories"];
|
||||
[d setObject:[NSArray array] forKey:@"columnsOrder"];
|
||||
[d setObject:[NSDictionary dictionary] forKey:@"columnsWidth"];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] setInitialValues:d];
|
||||
[ud registerDefaults:d];
|
||||
return d;
|
||||
}
|
||||
|
||||
- (id)init
|
||||
@@ -74,13 +61,8 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
return [[DirectoryPanelME alloc] initWithParentApp:self];
|
||||
}
|
||||
|
||||
//Delegate
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
|
||||
- (void)removeDeadTracks
|
||||
{
|
||||
// index 3 is just after "Export Results to XHTML"
|
||||
NSMenuItem *mi = [actionsMenu insertItemWithTitle:TR(@"Remove Dead Tracks in iTunes")
|
||||
action:@selector(removeDeadTracks:) keyEquivalent:@"" atIndex:3];
|
||||
[mi setTarget:[self resultWindow]];
|
||||
[super applicationDidFinishLaunching:aNotification];
|
||||
[(ResultWindow *)[self resultWindow] removeDeadTracks];
|
||||
}
|
||||
@end
|
||||
|
||||
13
cocoa/me/DetailsPanel.h
Normal file
13
cocoa/me/DetailsPanel.h
Normal file
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
Copyright 2012 Hardcoded Software (http://www.hardcoded.net)
|
||||
|
||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
which should be included with this package. The terms are also available at
|
||||
http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "DetailsPanelBase.h"
|
||||
|
||||
@interface DetailsPanel : DetailsPanelBase
|
||||
@end
|
||||
17
cocoa/me/DetailsPanel.m
Normal file
17
cocoa/me/DetailsPanel.m
Normal file
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
Copyright 2012 Hardcoded Software (http://www.hardcoded.net)
|
||||
|
||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
which should be included with this package. The terms are also available at
|
||||
http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "DetailsPanel.h"
|
||||
#import "DetailsPanel_UI.h"
|
||||
|
||||
@implementation DetailsPanel
|
||||
- (NSWindow *)createWindow
|
||||
{
|
||||
return createDetailsPanel_UI(self);
|
||||
}
|
||||
@end
|
||||
@@ -7,7 +7,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "DirectoryPanel.h"
|
||||
#import "Consts.h"
|
||||
|
||||
@implementation DirectoryPanelME
|
||||
- (id)initWithParentApp:(id)aParentApp
|
||||
@@ -21,7 +20,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
{
|
||||
[super fillPopUpMenu];
|
||||
NSMenu *m = [addButtonPopUp menu];
|
||||
NSMenuItem *mi = [m insertItemWithTitle:TR(@"Add iTunes Library") action:@selector(addiTunes:)
|
||||
NSMenuItem *mi = [m insertItemWithTitle:NSLocalizedString(@"Add iTunes Library", @"") action:@selector(addiTunes:)
|
||||
keyEquivalent:@"" atIndex:1];
|
||||
[mi setTarget:self];
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<string>dupeGuru</string>
|
||||
<key>CFBundleHelpBookFolder</key>
|
||||
<string>dupeguru_me_help</string>
|
||||
<key>CFBundleHelpBookName</key>
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<string>dupeGuru ME</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
|
||||
@@ -10,5 +10,5 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
#import "../base/ResultWindow.h"
|
||||
|
||||
@interface ResultWindow : ResultWindowBase {}
|
||||
- (IBAction)removeDeadTracks:(id)sender;
|
||||
- (void)removeDeadTracks;
|
||||
@end
|
||||
|
||||
@@ -70,7 +70,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
}
|
||||
|
||||
/* Actions */
|
||||
- (IBAction)removeDeadTracks:(id)sender
|
||||
- (void)removeDeadTracks
|
||||
{
|
||||
[model scanDeadTracks];
|
||||
}
|
||||
|
||||
@@ -11,3 +11,7 @@ from cocoa.inter import PySelectableList, PyColumns, PyTable
|
||||
|
||||
from inter.all import *
|
||||
from inter.app_me import PyDupeGuru
|
||||
|
||||
# When built under virtualenv, the dependency collector misses this module, so we have to force it
|
||||
# to see the module.
|
||||
import distutils.sysconfig
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:dupeguru.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -1,105 +0,0 @@
|
||||
|
||||
/* Class = "NSWindow"; title = "dupeGuru ME Preferences"; ObjectID = "2"; */
|
||||
"2.title" = "dupeGuru ME Preferences";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "More results"; ObjectID = "29"; */
|
||||
"29.title" = "More results";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Fewer results"; ObjectID = "30"; */
|
||||
"30.title" = "Fewer results";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Filter hardness:"; ObjectID = "31"; */
|
||||
"31.title" = "Filter hardness:";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Scan type:"; ObjectID = "32"; */
|
||||
"32.title" = "Scan type:";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Content"; ObjectID = "35"; */
|
||||
"35.title" = "Content";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Filename"; ObjectID = "36"; */
|
||||
"36.title" = "Filename";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Filename - Fields"; ObjectID = "37"; */
|
||||
"37.title" = "Filename - Fields";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Tags"; ObjectID = "38"; */
|
||||
"38.title" = "Tags";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Audio Content"; ObjectID = "39"; */
|
||||
"39.title" = "Audio Content";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Filename - Fields (No Order)"; ObjectID = "40"; */
|
||||
"40.title" = "Filename - Fields (No Order)";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Word weighting"; ObjectID = "41"; */
|
||||
"41.title" = "Word weighting";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Can mix file kind"; ObjectID = "42"; */
|
||||
"42.title" = "Can mix file kind";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Reset to Defaults"; ObjectID = "45"; */
|
||||
"45.title" = "Reset to Defaults";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Match similar words"; ObjectID = "46"; */
|
||||
"46.title" = "Match similar words";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Copy and Move:"; ObjectID = "54"; */
|
||||
"54.title" = "Copy and Move:";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Recreate relative path"; ObjectID = "57"; */
|
||||
"57.title" = "Recreate relative path";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Recreate absolute path"; ObjectID = "58"; */
|
||||
"58.title" = "Recreate absolute path";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Right in destination"; ObjectID = "59"; */
|
||||
"59.title" = "Right in destination";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "60"; */
|
||||
"60.title" = "Automatically check for updates";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Use regular expressions when filtering"; ObjectID = "61"; */
|
||||
"61.title" = "Use regular expressions when filtering";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Remove empty folders after delete and move"; ObjectID = "62"; */
|
||||
"62.title" = "Remove empty folders after delete and move";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Tags to scan:"; ObjectID = "63"; */
|
||||
"63.title" = "Tags to scan:";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Track"; ObjectID = "64"; */
|
||||
"64.title" = "Track";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Artist"; ObjectID = "65"; */
|
||||
"65.title" = "Artist";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Album"; ObjectID = "66"; */
|
||||
"66.title" = "Album";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Title"; ObjectID = "67"; */
|
||||
"67.title" = "Title";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Genre"; ObjectID = "68"; */
|
||||
"68.title" = "Genre";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Year"; ObjectID = "69"; */
|
||||
"69.title" = "Year";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Basic"; ObjectID = "116"; */
|
||||
"116.label" = "Basic";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Advanced"; ObjectID = "117"; */
|
||||
"117.label" = "Advanced";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Custom Command (arguments: %d for dupe, %r for ref):"; ObjectID = "121"; */
|
||||
"121.title" = "Custom Command (arguments: %d for dupe, %r for ref):";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Ignore duplicates hardlinking to the same file"; ObjectID = "126"; */
|
||||
"126.title" = "Ignore duplicates hardlinking to the same file";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Debug mode (restart required)"; ObjectID = "130"; */
|
||||
"130.title" = "Debug mode (restart required)";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Font size:"; ObjectID = "136"; */
|
||||
"136.title" = "Font size:";
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,8 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "../base/AppDelegate.h"
|
||||
#import "AppDelegateBase.h"
|
||||
|
||||
@interface AppDelegate : AppDelegateBase {}
|
||||
- (void)clearPictureCache;
|
||||
@end
|
||||
|
||||
@@ -16,26 +16,13 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
#import "ResultWindow.h"
|
||||
|
||||
@implementation AppDelegate
|
||||
+ (void)initialize
|
||||
+ (NSDictionary *)defaultPreferences
|
||||
{
|
||||
[super initialize];
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:10];
|
||||
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithDictionary:[super defaultPreferences]];
|
||||
[d setObject:i2n(0) forKey:@"scanType"];
|
||||
[d setObject:i2n(95) forKey:@"minMatchPercentage"];
|
||||
[d setObject:i2n(1) forKey:@"recreatePathType"];
|
||||
[d setObject:i2n(11) forKey:TableFontSize];
|
||||
[d setObject:b2n(NO) forKey:@"matchScaled"];
|
||||
[d setObject:b2n(YES) forKey:@"mixFileKind"];
|
||||
[d setObject:b2n(NO) forKey:@"useRegexpFilter"];
|
||||
[d setObject:b2n(NO) forKey:@"ignoreHardlinkMatches"];
|
||||
[d setObject:b2n(NO) forKey:@"removeEmptyFolders"];
|
||||
[d setObject:b2n(NO) forKey:@"debug"];
|
||||
[d setObject:[NSArray array] forKey:@"recentDirectories"];
|
||||
[d setObject:[NSArray array] forKey:@"columnsOrder"];
|
||||
[d setObject:[NSDictionary dictionary] forKey:@"columnsWidth"];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] setInitialValues:d];
|
||||
[ud registerDefaults:d];
|
||||
return d;
|
||||
}
|
||||
|
||||
- (id)init
|
||||
@@ -64,17 +51,11 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
- (DetailsPanel *)createDetailsPanel
|
||||
{
|
||||
return [[DetailsPanelPE alloc] initWithApp:model];
|
||||
return [[DetailsPanel alloc] initWithApp:model];
|
||||
}
|
||||
|
||||
//Delegate
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
|
||||
- (void)clearPictureCache
|
||||
{
|
||||
// index 2 is just after "Clear Ingore List"
|
||||
NSMenuItem *mi = [actionsMenu insertItemWithTitle:TR(@"Clear Picture Cache")
|
||||
action:@selector(clearPictureCache:) keyEquivalent:@"P" atIndex:2];
|
||||
[mi setTarget:[self resultWindow]];
|
||||
[mi setKeyEquivalentModifierMask:NSCommandKeyMask|NSShiftKeyMask];
|
||||
[super applicationDidFinishLaunching:aNotification];
|
||||
[(ResultWindow *)[self resultWindow] clearPictureCache];
|
||||
}
|
||||
@end
|
||||
|
||||
@@ -7,15 +7,15 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "../base/DetailsPanel.h"
|
||||
#import "DetailsPanelBase.h"
|
||||
#import "PyDupeGuru.h"
|
||||
|
||||
@interface DetailsPanelPE : DetailsPanel
|
||||
@interface DetailsPanel : DetailsPanelBase
|
||||
{
|
||||
IBOutlet NSImageView *dupeImage;
|
||||
IBOutlet NSProgressIndicator *dupeProgressIndicator;
|
||||
IBOutlet NSImageView *refImage;
|
||||
IBOutlet NSProgressIndicator *refProgressIndicator;
|
||||
NSImageView *dupeImage;
|
||||
NSProgressIndicator *dupeProgressIndicator;
|
||||
NSImageView *refImage;
|
||||
NSProgressIndicator *refProgressIndicator;
|
||||
|
||||
PyDupeGuru *pyApp;
|
||||
BOOL _needsRefresh;
|
||||
@@ -23,5 +23,10 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
NSString *_refPath;
|
||||
}
|
||||
|
||||
@property (readwrite, retain) NSImageView *dupeImage;
|
||||
@property (readwrite, retain) NSProgressIndicator *dupeProgressIndicator;
|
||||
@property (readwrite, retain) NSImageView *refImage;
|
||||
@property (readwrite, retain) NSProgressIndicator *refProgressIndicator;
|
||||
|
||||
- (id)initWithApp:(PyDupeGuru *)aApp;
|
||||
@end
|
||||
@@ -12,8 +12,15 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
#import "PyDupeGuru.h"
|
||||
#import "DetailsPanel.h"
|
||||
#import "Consts.h"
|
||||
#import "DetailsPanel_UI.h"
|
||||
|
||||
@implementation DetailsPanel
|
||||
|
||||
@synthesize dupeImage;
|
||||
@synthesize dupeProgressIndicator;
|
||||
@synthesize refImage;
|
||||
@synthesize refProgressIndicator;
|
||||
|
||||
@implementation DetailsPanelPE
|
||||
- (id)initWithApp:(PyDupeGuru *)aApp
|
||||
{
|
||||
self = [super initWithPyRef:[aApp detailsPanel]];
|
||||
@@ -23,6 +30,11 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
return self;
|
||||
}
|
||||
|
||||
- (NSWindow *)createWindow
|
||||
{
|
||||
return createDetailsPanel_UI(self);
|
||||
}
|
||||
|
||||
- (void)loadImageAsync:(NSString *)imagePath
|
||||
{
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
|
||||
@@ -13,4 +13,5 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
{
|
||||
}
|
||||
- (IBAction)addiPhoto:(id)sender;
|
||||
- (IBAction)addAperture:(id)sender;
|
||||
@end
|
||||
|
||||
@@ -7,7 +7,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "DirectoryPanel.h"
|
||||
#import "Consts.h"
|
||||
|
||||
@implementation DirectoryPanelPE
|
||||
- (id)initWithParentApp:(id)aParentApp
|
||||
@@ -21,13 +20,21 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
{
|
||||
[super fillPopUpMenu];
|
||||
NSMenu *m = [addButtonPopUp menu];
|
||||
NSMenuItem *mi = [m insertItemWithTitle:TR(@"Add iPhoto Library") action:@selector(addiPhoto:)
|
||||
NSMenuItem *mi = [m insertItemWithTitle:NSLocalizedString(@"Add iPhoto Library", @"") action:@selector(addiPhoto:)
|
||||
keyEquivalent:@"" atIndex:1];
|
||||
[mi setTarget:self];
|
||||
mi = [m insertItemWithTitle:NSLocalizedString(@"Add Aperture Library", @"") action:@selector(addAperture:)
|
||||
keyEquivalent:@"" atIndex:2];
|
||||
[mi setTarget:self];
|
||||
}
|
||||
|
||||
- (IBAction)addiPhoto:(id)sender
|
||||
{
|
||||
[self addDirectory:@"iPhoto Library"];
|
||||
}
|
||||
|
||||
- (IBAction)addAperture:(id)sender
|
||||
{
|
||||
[self addDirectory:@"Aperture Library"];
|
||||
}
|
||||
@end
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<string>dupeGuru</string>
|
||||
<key>CFBundleHelpBookFolder</key>
|
||||
<string>dupeguru_pe_help</string>
|
||||
<key>CFBundleHelpBookName</key>
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<string>dupeGuru PE</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
|
||||
@@ -10,5 +10,5 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
#import "../base/ResultWindow.h"
|
||||
|
||||
@interface ResultWindow : ResultWindowBase {}
|
||||
- (IBAction)clearPictureCache:(id)sender;
|
||||
- (void)clearPictureCache;
|
||||
@end
|
||||
|
||||
@@ -9,7 +9,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
#import "ResultWindow.h"
|
||||
#import "Dialogs.h"
|
||||
#import "Utils.h"
|
||||
#import "Consts.h"
|
||||
#import "PyDupeGuru.h"
|
||||
|
||||
@implementation ResultWindow
|
||||
@@ -23,6 +22,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
{@"size", 63, 16, 0, YES, nil},
|
||||
{@"extension", 40, 16, 0, YES, nil},
|
||||
{@"dimensions", 73, 16, 0, YES, nil},
|
||||
{@"exif_timestamp", 120, 16, 0, YES, nil},
|
||||
{@"mtime", 120, 16, 0, YES, nil},
|
||||
{@"percentage", 58, 16, 0, YES, nil},
|
||||
{@"dupe_count", 80, 16, 0, YES, nil},
|
||||
@@ -48,9 +48,9 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
}
|
||||
|
||||
/* Actions */
|
||||
- (IBAction)clearPictureCache:(id)sender
|
||||
- (void)clearPictureCache
|
||||
{
|
||||
NSString *msg = TR(@"Do you really want to remove all your cached picture analysis?");
|
||||
NSString *msg = NSLocalizedString(@"Do you really want to remove all your cached picture analysis?", @"");
|
||||
if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) // NO
|
||||
return;
|
||||
[model clearPictureCache];
|
||||
|
||||
@@ -12,3 +12,6 @@ from cocoa.inter import PySelectableList, PyColumns, PyTable
|
||||
from inter.all import *
|
||||
from inter.app_pe import PyDupeGuru
|
||||
|
||||
# When built under virtualenv, the dependency collector misses this module, so we have to force it
|
||||
# to see the module.
|
||||
import distutils.sysconfig
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:dupeguru.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -1,18 +0,0 @@
|
||||
|
||||
/* Class = "NSPanel"; title = "Details of Selected File"; ObjectID = "5"; */
|
||||
"5.title" = "Details of Selected File";
|
||||
|
||||
/* Class = "NSTableColumn"; headerCell.title = "Selected"; ObjectID = "9"; */
|
||||
"9.headerCell.title" = "Selected";
|
||||
|
||||
/* Class = "NSTableColumn"; headerCell.title = "Reference"; ObjectID = "10"; */
|
||||
"10.headerCell.title" = "Reference";
|
||||
|
||||
/* Class = "NSTableColumn"; headerCell.title = "Attribute"; ObjectID = "11"; */
|
||||
"11.headerCell.title" = "Attribute";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Selected"; ObjectID = "33"; */
|
||||
"33.title" = "Selected";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Reference"; ObjectID = "35"; */
|
||||
"35.title" = "Reference";
|
||||
@@ -1,846 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1060</int>
|
||||
<string key="IBDocument.SystemVersion">11B26</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">1617</string>
|
||||
<string key="IBDocument.AppKitVersion">1138</string>
|
||||
<string key="IBDocument.HIToolboxVersion">566.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="NS.object.0">1617</string>
|
||||
</object>
|
||||
<array key="IBDocument.IntegratedClassDependencies">
|
||||
<string>NSScroller</string>
|
||||
<string>NSSplitView</string>
|
||||
<string>NSTableHeaderView</string>
|
||||
<string>NSScrollView</string>
|
||||
<string>NSImageView</string>
|
||||
<string>NSTextFieldCell</string>
|
||||
<string>NSProgressIndicator</string>
|
||||
<string>NSTableView</string>
|
||||
<string>NSImageCell</string>
|
||||
<string>NSCustomObject</string>
|
||||
<string>NSCustomView</string>
|
||||
<string>NSView</string>
|
||||
<string>NSWindowTemplate</string>
|
||||
<string>NSTextField</string>
|
||||
<string>NSTableColumn</string>
|
||||
</array>
|
||||
<array key="IBDocument.PluginDependencies">
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</array>
|
||||
<dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/>
|
||||
<array class="NSMutableArray" key="IBDocument.RootObjects" id="433298071">
|
||||
<object class="NSCustomObject" id="449950342">
|
||||
<string key="NSClassName">DetailsPanelPE</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="175405098">
|
||||
<string key="NSClassName">FirstResponder</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="757309215">
|
||||
<string key="NSClassName">NSApplication</string>
|
||||
</object>
|
||||
<object class="NSWindowTemplate" id="1023276826">
|
||||
<int key="NSWindowStyleMask">155</int>
|
||||
<int key="NSWindowBacking">2</int>
|
||||
<string key="NSWindowRect">{{634, 317}, {593, 398}}</string>
|
||||
<int key="NSWTFlags">-260571136</int>
|
||||
<string key="NSWindowTitle">Details of Selected File</string>
|
||||
<object class="NSMutableString" key="NSWindowClass">
|
||||
<characters key="NS.bytes">NSPanel</characters>
|
||||
</object>
|
||||
<object class="NSMutableString" key="NSViewClass">
|
||||
<characters key="NS.bytes">View</characters>
|
||||
</object>
|
||||
<nil key="NSUserInterfaceItemIdentifier"/>
|
||||
<string key="NSWindowContentMinSize">{451, 161}</string>
|
||||
<object class="NSView" key="NSWindowView" id="1024886486">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSScrollView" id="842494181">
|
||||
<reference key="NSNextResponder" ref="1024886486"/>
|
||||
<int key="NSvFlags">266</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSClipView" id="47651407">
|
||||
<reference key="NSNextResponder" ref="842494181"/>
|
||||
<int key="NSvFlags">2304</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSTableView" id="1061505056">
|
||||
<reference key="NSNextResponder" ref="47651407"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{591, 147}</string>
|
||||
<reference key="NSSuperview" ref="47651407"/>
|
||||
<reference key="NSWindow"/>
|
||||
<int key="NSTag">2</int>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTableHeaderView" key="NSHeaderView" id="449183719">
|
||||
<reference key="NSNextResponder" ref="205382409"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{591, 17}</string>
|
||||
<reference key="NSSuperview" ref="205382409"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSTableView" ref="1061505056"/>
|
||||
</object>
|
||||
<object class="_NSCornerView" key="NSCornerView" id="429654016">
|
||||
<reference key="NSNextResponder" ref="842494181"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{-26, 0}, {16, 17}}</string>
|
||||
<reference key="NSSuperview" ref="842494181"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
<array class="NSMutableArray" key="NSTableColumns">
|
||||
<object class="NSTableColumn" id="761242770">
|
||||
<string key="NSIdentifier">0</string>
|
||||
<double key="NSWidth">74</double>
|
||||
<double key="NSMinWidth">40</double>
|
||||
<double key="NSMaxWidth">1000</double>
|
||||
<object class="NSTableHeaderCell" key="NSHeaderCell">
|
||||
<int key="NSCellFlags">75628096</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<string key="NSContents">Attribute</string>
|
||||
<object class="NSFont" key="NSSupport" id="26">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">11</double>
|
||||
<int key="NSfFlags">3100</int>
|
||||
</object>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="77031760">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor" id="578432702">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">headerTextColor</string>
|
||||
<object class="NSColor" key="NSColor" id="585838671">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MAA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextFieldCell" key="NSDataCell" id="1001899861">
|
||||
<int key="NSCellFlags">337772096</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<reference key="NSControlView" ref="1061505056"/>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="240658091">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlBackgroundColor</string>
|
||||
<object class="NSColor" key="NSColor" id="823392961">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor" id="194446219">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlTextColor</string>
|
||||
<reference key="NSColor" ref="585838671"/>
|
||||
</object>
|
||||
</object>
|
||||
<int key="NSResizingMask">2</int>
|
||||
<bool key="NSIsResizeable">YES</bool>
|
||||
<reference key="NSTableView" ref="1061505056"/>
|
||||
</object>
|
||||
<object class="NSTableColumn" id="245708436">
|
||||
<string key="NSIdentifier">1</string>
|
||||
<double key="NSWidth">260</double>
|
||||
<double key="NSMinWidth">40</double>
|
||||
<double key="NSMaxWidth">1000</double>
|
||||
<object class="NSTableHeaderCell" key="NSHeaderCell">
|
||||
<int key="NSCellFlags">75628096</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<string key="NSContents">Selected</string>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<reference key="NSBackgroundColor" ref="77031760"/>
|
||||
<reference key="NSTextColor" ref="578432702"/>
|
||||
</object>
|
||||
<object class="NSTextFieldCell" key="NSDataCell" id="322739197">
|
||||
<int key="NSCellFlags">337772096</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<reference key="NSControlView" ref="1061505056"/>
|
||||
<reference key="NSBackgroundColor" ref="240658091"/>
|
||||
<reference key="NSTextColor" ref="194446219"/>
|
||||
</object>
|
||||
<int key="NSResizingMask">3</int>
|
||||
<bool key="NSIsResizeable">YES</bool>
|
||||
<reference key="NSTableView" ref="1061505056"/>
|
||||
</object>
|
||||
<object class="NSTableColumn" id="421059304">
|
||||
<string key="NSIdentifier">2</string>
|
||||
<double key="NSWidth">248</double>
|
||||
<double key="NSMinWidth">56.4755859375</double>
|
||||
<double key="NSMaxWidth">1000</double>
|
||||
<object class="NSTableHeaderCell" key="NSHeaderCell">
|
||||
<int key="NSCellFlags">75628096</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<string key="NSContents">Reference</string>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<object class="NSColor" key="NSBackgroundColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">headerColor</string>
|
||||
<object class="NSColor" key="NSColor" id="401909016">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<reference key="NSTextColor" ref="578432702"/>
|
||||
</object>
|
||||
<object class="NSTextFieldCell" key="NSDataCell" id="999491006">
|
||||
<int key="NSCellFlags">337772096</int>
|
||||
<int key="NSCellFlags2">2048</int>
|
||||
<reference key="NSSupport" ref="26"/>
|
||||
<reference key="NSControlView" ref="1061505056"/>
|
||||
<reference key="NSBackgroundColor" ref="240658091"/>
|
||||
<reference key="NSTextColor" ref="194446219"/>
|
||||
</object>
|
||||
<int key="NSResizingMask">3</int>
|
||||
<bool key="NSIsResizeable">YES</bool>
|
||||
<reference key="NSTableView" ref="1061505056"/>
|
||||
</object>
|
||||
</array>
|
||||
<double key="NSIntercellSpacingWidth">3</double>
|
||||
<double key="NSIntercellSpacingHeight">2</double>
|
||||
<reference key="NSBackgroundColor" ref="401909016"/>
|
||||
<object class="NSColor" key="NSGridColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">gridColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC41AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<double key="NSRowHeight">14</double>
|
||||
<int key="NSTvFlags">1111523328</int>
|
||||
<reference key="NSDelegate"/>
|
||||
<reference key="NSDataSource"/>
|
||||
<int key="NSColumnAutoresizingStyle">1</int>
|
||||
<int key="NSDraggingSourceMaskForLocal">15</int>
|
||||
<int key="NSDraggingSourceMaskForNonLocal">0</int>
|
||||
<bool key="NSAllowsTypeSelect">YES</bool>
|
||||
<int key="NSTableViewDraggingDestinationStyle">0</int>
|
||||
<int key="NSTableViewGroupRowStyle">1</int>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrame">{{1, 17}, {591, 147}}</string>
|
||||
<reference key="NSSuperview" ref="842494181"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="1061505056"/>
|
||||
<reference key="NSDocView" ref="1061505056"/>
|
||||
<reference key="NSBGColor" ref="240658091"/>
|
||||
<int key="NScvFlags">4</int>
|
||||
</object>
|
||||
<object class="NSScroller" id="90145020">
|
||||
<reference key="NSNextResponder" ref="842494181"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{-30, 17}, {15, 147}}</string>
|
||||
<reference key="NSSuperview" ref="842494181"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSTarget" ref="842494181"/>
|
||||
<string key="NSAction">_doScroller:</string>
|
||||
<double key="NSPercent">0.91874998807907104</double>
|
||||
</object>
|
||||
<object class="NSScroller" id="23980189">
|
||||
<reference key="NSNextResponder" ref="842494181"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{-100, -100}, {394, 15}}</string>
|
||||
<reference key="NSSuperview" ref="842494181"/>
|
||||
<reference key="NSWindow"/>
|
||||
<int key="NSsFlags">1</int>
|
||||
<reference key="NSTarget" ref="842494181"/>
|
||||
<string key="NSAction">_doScroller:</string>
|
||||
<double key="NSPercent">0.96332520246505737</double>
|
||||
</object>
|
||||
<object class="NSClipView" id="205382409">
|
||||
<reference key="NSNextResponder" ref="842494181"/>
|
||||
<int key="NSvFlags">2304</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<reference ref="449183719"/>
|
||||
</array>
|
||||
<string key="NSFrame">{{1, 0}, {591, 17}}</string>
|
||||
<reference key="NSSuperview" ref="842494181"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="449183719"/>
|
||||
<reference key="NSDocView" ref="449183719"/>
|
||||
<reference key="NSBGColor" ref="240658091"/>
|
||||
<int key="NScvFlags">4</int>
|
||||
</object>
|
||||
<reference ref="429654016"/>
|
||||
</array>
|
||||
<string key="NSFrame">{{0, 233}, {593, 165}}</string>
|
||||
<reference key="NSSuperview" ref="1024886486"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="47651407"/>
|
||||
<int key="NSsFlags">133650</int>
|
||||
<reference key="NSVScroller" ref="90145020"/>
|
||||
<reference key="NSHScroller" ref="23980189"/>
|
||||
<reference key="NSContentView" ref="47651407"/>
|
||||
<reference key="NSHeaderClipView" ref="205382409"/>
|
||||
<reference key="NSCornerView" ref="429654016"/>
|
||||
<bytes key="NSScrollAmts">QSAAAEEgAABBgAAAQYAAAA</bytes>
|
||||
</object>
|
||||
<object class="NSSplitView" id="1006675149">
|
||||
<reference key="NSNextResponder" ref="1024886486"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSCustomView" id="101939068">
|
||||
<reference key="NSNextResponder" ref="1006675149"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSTextField" id="723437775">
|
||||
<reference key="NSNextResponder" ref="101939068"/>
|
||||
<int key="NSvFlags">266</int>
|
||||
<string key="NSFrame">{{-3, 201}, {294, 17}}</string>
|
||||
<reference key="NSSuperview" ref="101939068"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="517184416">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">138412032</int>
|
||||
<string key="NSContents">Selected</string>
|
||||
<object class="NSFont" key="NSSupport" id="872545298">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">13</double>
|
||||
<int key="NSfFlags">1044</int>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="723437775"/>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="125808400">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlColor</string>
|
||||
<reference key="NSColor" ref="823392961"/>
|
||||
</object>
|
||||
<reference key="NSTextColor" ref="194446219"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSImageView" id="664547713">
|
||||
<reference key="NSNextResponder" ref="101939068"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<set class="NSMutableSet" key="NSDragTypes">
|
||||
<string>Apple PDF pasteboard type</string>
|
||||
<string>Apple PICT pasteboard type</string>
|
||||
<string>Apple PNG pasteboard type</string>
|
||||
<string>NSFilenamesPboardType</string>
|
||||
<string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
|
||||
<string>NeXT TIFF v4.0 pasteboard type</string>
|
||||
</set>
|
||||
<string key="NSFrameSize">{288, 193}</string>
|
||||
<reference key="NSSuperview" ref="101939068"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSImageCell" key="NSCell" id="327656199">
|
||||
<int key="NSCellFlags">130560</int>
|
||||
<int key="NSCellFlags2">33554432</int>
|
||||
<object class="NSCustomResource" key="NSContents" id="548486768">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSApplicationIcon</string>
|
||||
</object>
|
||||
<int key="NSAlign">0</int>
|
||||
<int key="NSScale">0</int>
|
||||
<int key="NSStyle">0</int>
|
||||
<bool key="NSAnimates">NO</bool>
|
||||
</object>
|
||||
<bool key="NSEditable">YES</bool>
|
||||
</object>
|
||||
<object class="NSProgressIndicator" id="127754691">
|
||||
<reference key="NSNextResponder" ref="101939068"/>
|
||||
<int key="NSvFlags">1289</int>
|
||||
<object class="NSPSMatrix" key="NSDrawMatrix"/>
|
||||
<string key="NSFrame">{{255, 201}, {16, 16}}</string>
|
||||
<reference key="NSSuperview" ref="101939068"/>
|
||||
<reference key="NSWindow"/>
|
||||
<int key="NSpiFlags">28938</int>
|
||||
<double key="NSMaxValue">100</double>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrameSize">{291, 225}</string>
|
||||
<reference key="NSSuperview" ref="1006675149"/>
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="971244171">
|
||||
<reference key="NSNextResponder" ref="1006675149"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSTextField" id="905396720">
|
||||
<reference key="NSNextResponder" ref="971244171"/>
|
||||
<int key="NSvFlags">266</int>
|
||||
<string key="NSFrame">{{-3, 203}, {295, 17}}</string>
|
||||
<reference key="NSSuperview" ref="971244171"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="334112854">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">138412032</int>
|
||||
<string key="NSContents">Reference</string>
|
||||
<reference key="NSSupport" ref="872545298"/>
|
||||
<reference key="NSControlView" ref="905396720"/>
|
||||
<reference key="NSBackgroundColor" ref="125808400"/>
|
||||
<reference key="NSTextColor" ref="194446219"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSImageView" id="89184363">
|
||||
<reference key="NSNextResponder" ref="971244171"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<set class="NSMutableSet" key="NSDragTypes">
|
||||
<string>Apple PDF pasteboard type</string>
|
||||
<string>Apple PICT pasteboard type</string>
|
||||
<string>Apple PNG pasteboard type</string>
|
||||
<string>NSFilenamesPboardType</string>
|
||||
<string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
|
||||
<string>NeXT TIFF v4.0 pasteboard type</string>
|
||||
</set>
|
||||
<string key="NSFrameSize">{289, 195}</string>
|
||||
<reference key="NSSuperview" ref="971244171"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSImageCell" key="NSCell" id="966367135">
|
||||
<int key="NSCellFlags">130560</int>
|
||||
<int key="NSCellFlags2">33554432</int>
|
||||
<reference key="NSContents" ref="548486768"/>
|
||||
<int key="NSAlign">0</int>
|
||||
<int key="NSScale">0</int>
|
||||
<int key="NSStyle">0</int>
|
||||
<bool key="NSAnimates">NO</bool>
|
||||
</object>
|
||||
<bool key="NSEditable">YES</bool>
|
||||
</object>
|
||||
<object class="NSProgressIndicator" id="40327027">
|
||||
<reference key="NSNextResponder" ref="971244171"/>
|
||||
<int key="NSvFlags">1289</int>
|
||||
<object class="NSPSMatrix" key="NSDrawMatrix"/>
|
||||
<string key="NSFrame">{{257, 203}, {16, 16}}</string>
|
||||
<reference key="NSSuperview" ref="971244171"/>
|
||||
<reference key="NSWindow"/>
|
||||
<int key="NSpiFlags">28938</int>
|
||||
<double key="NSMaxValue">100</double>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrame">{{300, 0}, {293, 225}}</string>
|
||||
<reference key="NSSuperview" ref="1006675149"/>
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrameSize">{593, 225}</string>
|
||||
<reference key="NSSuperview" ref="1024886486"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSIsVertical">YES</bool>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrameSize">{593, 398}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
|
||||
<string key="NSMinSize">{451, 177}</string>
|
||||
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
|
||||
<string key="NSFrameAutosaveName">DetailsPanel</string>
|
||||
<bool key="NSWindowIsRestorable">YES</bool>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<array class="NSMutableArray" key="connectionRecords">
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">window</string>
|
||||
<reference key="source" ref="449950342"/>
|
||||
<reference key="destination" ref="1023276826"/>
|
||||
</object>
|
||||
<int key="connectionID">12</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">detailsTable</string>
|
||||
<reference key="source" ref="449950342"/>
|
||||
<reference key="destination" ref="1061505056"/>
|
||||
</object>
|
||||
<int key="connectionID">13</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">refImage</string>
|
||||
<reference key="source" ref="449950342"/>
|
||||
<reference key="destination" ref="89184363"/>
|
||||
</object>
|
||||
<int key="connectionID">25</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">dupeImage</string>
|
||||
<reference key="source" ref="449950342"/>
|
||||
<reference key="destination" ref="664547713"/>
|
||||
</object>
|
||||
<int key="connectionID">26</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">dupeProgressIndicator</string>
|
||||
<reference key="source" ref="449950342"/>
|
||||
<reference key="destination" ref="127754691"/>
|
||||
</object>
|
||||
<int key="connectionID">30</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">refProgressIndicator</string>
|
||||
<reference key="source" ref="449950342"/>
|
||||
<reference key="destination" ref="40327027"/>
|
||||
</object>
|
||||
<int key="connectionID">31</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">dataSource</string>
|
||||
<reference key="source" ref="1061505056"/>
|
||||
<reference key="destination" ref="449950342"/>
|
||||
</object>
|
||||
<int key="connectionID">43</int>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<array key="orderedObjects">
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<array key="object" id="0"/>
|
||||
<reference key="children" ref="433298071"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="449950342"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="175405098"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">First Responder</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">5</int>
|
||||
<reference key="object" ref="1023276826"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="1024886486"/>
|
||||
</array>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">details</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">6</int>
|
||||
<reference key="object" ref="1024886486"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="842494181"/>
|
||||
<reference ref="1006675149"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1023276826"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">7</int>
|
||||
<reference key="object" ref="842494181"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="1061505056"/>
|
||||
<reference ref="90145020"/>
|
||||
<reference ref="23980189"/>
|
||||
<reference ref="449183719"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1024886486"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">8</int>
|
||||
<reference key="object" ref="1061505056"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="245708436"/>
|
||||
<reference ref="421059304"/>
|
||||
<reference ref="761242770"/>
|
||||
</array>
|
||||
<reference key="parent" ref="842494181"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">9</int>
|
||||
<reference key="object" ref="245708436"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="322739197"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1061505056"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">10</int>
|
||||
<reference key="object" ref="421059304"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="999491006"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1061505056"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">11</int>
|
||||
<reference key="object" ref="761242770"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="1001899861"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1061505056"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">20</int>
|
||||
<reference key="object" ref="1006675149"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="101939068"/>
|
||||
<reference ref="971244171"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1024886486"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">18</int>
|
||||
<reference key="object" ref="101939068"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="723437775"/>
|
||||
<reference ref="664547713"/>
|
||||
<reference ref="127754691"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006675149"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">14</int>
|
||||
<reference key="object" ref="723437775"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="517184416"/>
|
||||
</array>
|
||||
<reference key="parent" ref="101939068"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">16</int>
|
||||
<reference key="object" ref="664547713"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="327656199"/>
|
||||
</array>
|
||||
<reference key="parent" ref="101939068"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">27</int>
|
||||
<reference key="object" ref="127754691"/>
|
||||
<reference key="parent" ref="101939068"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">19</int>
|
||||
<reference key="object" ref="971244171"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="905396720"/>
|
||||
<reference ref="89184363"/>
|
||||
<reference ref="40327027"/>
|
||||
</array>
|
||||
<reference key="parent" ref="1006675149"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">15</int>
|
||||
<reference key="object" ref="905396720"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="334112854"/>
|
||||
</array>
|
||||
<reference key="parent" ref="971244171"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">17</int>
|
||||
<reference key="object" ref="89184363"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="966367135"/>
|
||||
</array>
|
||||
<reference key="parent" ref="971244171"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">29</int>
|
||||
<reference key="object" ref="40327027"/>
|
||||
<reference key="parent" ref="971244171"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">33</int>
|
||||
<reference key="object" ref="517184416"/>
|
||||
<reference key="parent" ref="723437775"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">34</int>
|
||||
<reference key="object" ref="327656199"/>
|
||||
<reference key="parent" ref="664547713"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">35</int>
|
||||
<reference key="object" ref="334112854"/>
|
||||
<reference key="parent" ref="905396720"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">36</int>
|
||||
<reference key="object" ref="966367135"/>
|
||||
<reference key="parent" ref="89184363"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">37</int>
|
||||
<reference key="object" ref="322739197"/>
|
||||
<reference key="parent" ref="245708436"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">38</int>
|
||||
<reference key="object" ref="999491006"/>
|
||||
<reference key="parent" ref="421059304"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">39</int>
|
||||
<reference key="object" ref="1001899861"/>
|
||||
<reference key="parent" ref="761242770"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">40</int>
|
||||
<reference key="object" ref="90145020"/>
|
||||
<reference key="parent" ref="842494181"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">41</int>
|
||||
<reference key="object" ref="23980189"/>
|
||||
<reference key="parent" ref="842494181"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">42</int>
|
||||
<reference key="object" ref="449183719"/>
|
||||
<reference key="parent" ref="842494181"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-3</int>
|
||||
<reference key="object" ref="757309215"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">Application</string>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="10.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="11.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="14.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="15.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="16.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="17.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="18.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="20.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="27.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="33.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="34.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="35.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="36.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="37.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES" key="37.IBShouldRemoveOnLegacySave"/>
|
||||
<string key="38.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES" key="38.IBShouldRemoveOnLegacySave"/>
|
||||
<string key="39.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES" key="39.IBShouldRemoveOnLegacySave"/>
|
||||
<string key="40.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES" key="40.IBShouldRemoveOnLegacySave"/>
|
||||
<string key="41.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES" key="41.IBShouldRemoveOnLegacySave"/>
|
||||
<string key="42.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES" key="42.IBShouldRemoveOnLegacySave"/>
|
||||
<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="5.IBWindowTemplateEditedContentRect">{{88, 453}, {593, 398}}</string>
|
||||
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="8.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="9.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
||||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">43</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">DetailsPanel</string>
|
||||
<string key="superclassName">HSWindowController</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<string key="NS.key.0">detailsTable</string>
|
||||
<string key="NS.object.0">NSTableView</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<string key="NS.key.0">detailsTable</string>
|
||||
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||
<string key="name">detailsTable</string>
|
||||
<string key="candidateClassName">NSTableView</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/DetailsPanel.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">DetailsPanelPE</string>
|
||||
<string key="superclassName">DetailsPanel</string>
|
||||
<dictionary class="NSMutableDictionary" key="outlets">
|
||||
<string key="dupeImage">NSImageView</string>
|
||||
<string key="dupeProgressIndicator">NSProgressIndicator</string>
|
||||
<string key="refImage">NSImageView</string>
|
||||
<string key="refProgressIndicator">NSProgressIndicator</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<object class="IBToOneOutletInfo" key="dupeImage">
|
||||
<string key="name">dupeImage</string>
|
||||
<string key="candidateClassName">NSImageView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="dupeProgressIndicator">
|
||||
<string key="name">dupeProgressIndicator</string>
|
||||
<string key="candidateClassName">NSProgressIndicator</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="refImage">
|
||||
<string key="name">refImage</string>
|
||||
<string key="candidateClassName">NSImageView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="refProgressIndicator">
|
||||
<string key="name">refProgressIndicator</string>
|
||||
<string key="candidateClassName">NSProgressIndicator</string>
|
||||
</object>
|
||||
</dictionary>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/DetailsPanelPE.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">HSWindowController</string>
|
||||
<string key="superclassName">NSWindowController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/HSWindowController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<real value="1060" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<integer value="1050" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
|
||||
<real value="4100" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
|
||||
<string key="NS.key.0">NSApplicationIcon</string>
|
||||
<string key="NS.object.0">{128, 128}</string>
|
||||
</object>
|
||||
</data>
|
||||
</archive>
|
||||
@@ -1,69 +0,0 @@
|
||||
|
||||
/* Class = "NSWindow"; title = "dupeGuru PE Preferences"; ObjectID = "2"; */
|
||||
"2.title" = "dupeGuru PE Preferences";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "More results"; ObjectID = "18"; */
|
||||
"18.title" = "More results";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Fewer results"; ObjectID = "19"; */
|
||||
"19.title" = "Fewer results";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Filter hardness:"; ObjectID = "20"; */
|
||||
"20.title" = "Filter hardness:";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Can mix file kind"; ObjectID = "21"; */
|
||||
"21.title" = "Can mix file kind";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Reset to Defaults"; ObjectID = "24"; */
|
||||
"24.title" = "Reset to Defaults";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Copy and Move:"; ObjectID = "25"; */
|
||||
"25.title" = "Copy and Move:";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Recreate relative path"; ObjectID = "28"; */
|
||||
"28.title" = "Recreate relative path";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Recreate absolute path"; ObjectID = "29"; */
|
||||
"29.title" = "Recreate absolute path";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Right in destination"; ObjectID = "30"; */
|
||||
"30.title" = "Right in destination";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Match pictures of different dimensions"; ObjectID = "31"; */
|
||||
"31.title" = "Match pictures of different dimensions";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "32"; */
|
||||
"32.title" = "Automatically check for updates";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Remove empty folders on delete or move"; ObjectID = "33"; */
|
||||
"33.title" = "Remove empty folders on delete or move";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Use regular expressions when filtering"; ObjectID = "34"; */
|
||||
"34.title" = "Use regular expressions when filtering";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Basic"; ObjectID = "60"; */
|
||||
"60.label" = "Basic";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Advanced"; ObjectID = "61"; */
|
||||
"61.label" = "Advanced";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Custom Command (arguments: %d for dupe, %r for ref):"; ObjectID = "65"; */
|
||||
"65.title" = "Custom Command (arguments: %d for dupe, %r for ref):";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Ignore duplicates hardlinking to the same file"; ObjectID = "70"; */
|
||||
"70.title" = "Ignore duplicates hardlinking to the same file";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Debug mode (restart required)"; ObjectID = "75"; */
|
||||
"75.title" = "Debug mode (restart required)";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "EXIF Timestamp"; ObjectID = "92"; */
|
||||
"92.title" = "EXIF Timestamp";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Contents"; ObjectID = "93"; */
|
||||
"93.title" = "Contents";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Scan type:"; ObjectID = "94"; */
|
||||
"94.title" = "Scan type:";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Font size:"; ObjectID = "104"; */
|
||||
"104.title" = "Font size:";
|
||||
File diff suppressed because it is too large
Load Diff
70
cocoa/pe/ui/details_panel.py
Normal file
70
cocoa/pe/ui/details_panel.py
Normal file
@@ -0,0 +1,70 @@
|
||||
ownerclass = 'DetailsPanel'
|
||||
ownerimport = 'DetailsPanel.h'
|
||||
|
||||
result = Panel(593, 398, "Details of Selected File")
|
||||
table = TableView(result)
|
||||
split = SplitView(result, 2, vertical=True)
|
||||
leftSplit, rightSplit = split.subviews
|
||||
selectedLabel = Label(leftSplit, "Selected")
|
||||
selectedImage = ImageView(leftSplit, 'NSApplicationIcon')
|
||||
leftSpinner = ProgressIndicator(leftSplit)
|
||||
referenceLabel = Label(rightSplit, "Reference")
|
||||
referenceImage = ImageView(rightSplit, 'NSApplicationIcon')
|
||||
rightSpinner = ProgressIndicator(rightSplit)
|
||||
|
||||
owner.detailsTable = table
|
||||
owner.dupeImage = selectedImage
|
||||
owner.dupeProgressIndicator = leftSpinner
|
||||
owner.refImage = referenceImage
|
||||
owner.refProgressIndicator = rightSpinner
|
||||
table.dataSource = owner
|
||||
|
||||
result.style = PanelStyle.Utility
|
||||
result.xProportion = 0.6
|
||||
result.yProportion = 0.6
|
||||
result.canMinimize = False
|
||||
result.autosaveName = 'DetailsPanel'
|
||||
result.minSize = Size(451, 240)
|
||||
|
||||
table.allowsColumnReordering = False
|
||||
table.allowsColumnSelection = False
|
||||
table.allowsMultipleSelection = False
|
||||
table.font = Font(FontFamily.System, FontSize.SmallSystem)
|
||||
table.rowHeight = 14
|
||||
table.editable = False
|
||||
col = table.addColumn('0', "Attribute", 70)
|
||||
col.autoResizable = True
|
||||
col = table.addColumn('1', "Selected", 198)
|
||||
col.autoResizable = True
|
||||
col = table.addColumn('2', "Reference", 172)
|
||||
col.autoResizable = True
|
||||
table.height = 165
|
||||
|
||||
sides = [
|
||||
(leftSplit, selectedLabel, selectedImage, leftSpinner),
|
||||
(rightSplit, referenceLabel, referenceImage, rightSpinner),
|
||||
]
|
||||
for subSplit, label, image, spinner in sides:
|
||||
label.alignment = TextAlignment.Center
|
||||
spinner.style = const.NSProgressIndicatorSpinningStyle
|
||||
spinner.controlSize = const.NSSmallControlSize
|
||||
spinner.displayedWhenStopped = False
|
||||
|
||||
label.packToCorner(Pack.UpperLeft, margin=0)
|
||||
label.fill(Pack.Right, margin=0)
|
||||
label.setAnchor(Pack.UpperLeft, growX=True)
|
||||
image.packRelativeTo(label, Pack.Below)
|
||||
image.fill(Pack.LowerRight, margin=0)
|
||||
image.setAnchor(Pack.UpperLeft, growX=True, growY=True)
|
||||
spinner.y = label.y
|
||||
spinner.x = subSplit.width - 30
|
||||
spinner.setAnchor(Pack.UpperRight)
|
||||
|
||||
table.packToCorner(Pack.UpperLeft, margin=0)
|
||||
table.fill(Pack.Right, margin=0)
|
||||
table.setAnchor(Pack.UpperLeft, growX=True)
|
||||
|
||||
split.packRelativeTo(table, Pack.Below)
|
||||
split.fill(Pack.LowerRight, margin=0)
|
||||
split.setAnchor(Pack.UpperLeft, growX=True, growY=True)
|
||||
|
||||
@@ -7,7 +7,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "../base/AppDelegate.h"
|
||||
#import "AppDelegateBase.h"
|
||||
#import "PyDupeGuru.h"
|
||||
|
||||
@interface AppDelegate : AppDelegateBase {}
|
||||
|
||||
@@ -16,29 +16,16 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
#import "Consts.h"
|
||||
|
||||
@implementation AppDelegate
|
||||
+ (void)initialize
|
||||
+ (NSDictionary *)defaultPreferences
|
||||
{
|
||||
[super initialize];
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
NSMutableDictionary *d = [NSMutableDictionary dictionary];
|
||||
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithDictionary:[super defaultPreferences]];
|
||||
[d setObject:i2n(1) forKey:@"scanType"];
|
||||
[d setObject:i2n(80) forKey:@"minMatchPercentage"];
|
||||
[d setObject:i2n(30) forKey:@"smallFileThreshold"];
|
||||
[d setObject:i2n(1) forKey:@"recreatePathType"];
|
||||
[d setObject:i2n(11) forKey:TableFontSize];
|
||||
[d setObject:b2n(YES) forKey:@"wordWeighting"];
|
||||
[d setObject:b2n(NO) forKey:@"matchSimilarWords"];
|
||||
[d setObject:b2n(YES) forKey:@"mixFileKind"];
|
||||
[d setObject:b2n(NO) forKey:@"useRegexpFilter"];
|
||||
[d setObject:b2n(NO) forKey:@"ignoreHardlinkMatches"];
|
||||
[d setObject:b2n(NO) forKey:@"removeEmptyFolders"];
|
||||
[d setObject:b2n(YES) forKey:@"ignoreSmallFiles"];
|
||||
[d setObject:b2n(NO) forKey:@"debug"];
|
||||
[d setObject:[NSArray array] forKey:@"recentDirectories"];
|
||||
[d setObject:[NSArray array] forKey:@"columnsOrder"];
|
||||
[d setObject:[NSDictionary dictionary] forKey:@"columnsWidth"];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] setInitialValues:d];
|
||||
[ud registerDefaults:d];
|
||||
return d;
|
||||
}
|
||||
|
||||
- (id)init
|
||||
|
||||
13
cocoa/se/DetailsPanel.h
Normal file
13
cocoa/se/DetailsPanel.h
Normal file
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
Copyright 2012 Hardcoded Software (http://www.hardcoded.net)
|
||||
|
||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
which should be included with this package. The terms are also available at
|
||||
http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "DetailsPanelBase.h"
|
||||
|
||||
@interface DetailsPanel : DetailsPanelBase
|
||||
@end
|
||||
17
cocoa/se/DetailsPanel.m
Normal file
17
cocoa/se/DetailsPanel.m
Normal file
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
Copyright 2012 Hardcoded Software (http://www.hardcoded.net)
|
||||
|
||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
which should be included with this package. The terms are also available at
|
||||
http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "DetailsPanel.h"
|
||||
#import "DetailsPanel_UI.h"
|
||||
|
||||
@implementation DetailsPanel
|
||||
- (NSWindow *)createWindow
|
||||
{
|
||||
return createDetailsPanel_UI(self);
|
||||
}
|
||||
@end
|
||||
@@ -5,7 +5,7 @@
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<string>dupeGuru</string>
|
||||
<key>CFBundleHelpBookFolder</key>
|
||||
<string>dupeguru_help</string>
|
||||
<key>CFBundleHelpBookName</key>
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<string>dupeGuru</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
@@ -26,8 +26,6 @@
|
||||
<string>{version}</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>{version}</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
|
||||
@@ -11,3 +11,7 @@ from cocoa.inter import PySelectableList, PyColumns, PyTable
|
||||
|
||||
from inter.all import *
|
||||
from inter.app_se import PyDupeGuru
|
||||
|
||||
# When built under virtualenv, the dependency collector misses this module, so we have to force it
|
||||
# to see the module.
|
||||
import distutils.sysconfig
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:dupeguru.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,81 +0,0 @@
|
||||
|
||||
/* Class = "NSWindow"; title = "dupeGuru Preferences"; ObjectID = "52"; */
|
||||
"52.title" = "dupeGuru Preferences";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "More results"; ObjectID = "74"; */
|
||||
"74.title" = "More results";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Fewer results"; ObjectID = "75"; */
|
||||
"75.title" = "Fewer results";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Filter hardness:"; ObjectID = "76"; */
|
||||
"76.title" = "Filter hardness:";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Scan type:"; ObjectID = "77"; */
|
||||
"77.title" = "Scan type:";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Content"; ObjectID = "80"; */
|
||||
"80.title" = "Content";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Filename"; ObjectID = "81"; */
|
||||
"81.title" = "Filename";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Word weighting"; ObjectID = "82"; */
|
||||
"82.title" = "Word weighting";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Can mix file kind"; ObjectID = "83"; */
|
||||
"83.title" = "Can mix file kind";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Reset to Defaults"; ObjectID = "86"; */
|
||||
"86.title" = "Reset to Defaults";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Match similar words"; ObjectID = "87"; */
|
||||
"87.title" = "Match similar words";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Copy and Move:"; ObjectID = "88"; */
|
||||
"88.title" = "Copy and Move:";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Recreate relative path"; ObjectID = "91"; */
|
||||
"91.title" = "Recreate relative path";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Recreate absolute path"; ObjectID = "92"; */
|
||||
"92.title" = "Recreate absolute path";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Right in destination"; ObjectID = "93"; */
|
||||
"93.title" = "Right in destination";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "94"; */
|
||||
"94.title" = "Automatically check for updates";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Remove empty folders on delete or move"; ObjectID = "96"; */
|
||||
"96.title" = "Remove empty folders on delete or move";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Ignore files smaller than:"; ObjectID = "97"; */
|
||||
"97.title" = "Ignore files smaller than:";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "KB"; ObjectID = "100"; */
|
||||
"100.title" = "KB";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Basic"; ObjectID = "124"; */
|
||||
"124.label" = "Basic";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Advanced"; ObjectID = "125"; */
|
||||
"125.label" = "Advanced";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Use regular expressions when filtering"; ObjectID = "129"; */
|
||||
"129.title" = "Use regular expressions when filtering";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Custom command (arguments: %d for dupe, %r for ref):"; ObjectID = "134"; */
|
||||
"134.title" = "Custom command (arguments: %d for dupe, %r for ref):";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Ignore duplicates hardlinking to the same file"; ObjectID = "142"; */
|
||||
"142.title" = "Ignore duplicates hardlinking to the same file";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Debug mode (restart required)"; ObjectID = "146"; */
|
||||
"146.title" = "Debug mode (restart required)";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Folders"; ObjectID = "149"; */
|
||||
"149.title" = "Folders";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Font size:"; ObjectID = "155"; */
|
||||
"155.title" = "Font size:";
|
||||
File diff suppressed because it is too large
Load Diff
75
cocoa/wscript
Normal file
75
cocoa/wscript
Normal file
@@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import os
|
||||
import os.path as op
|
||||
|
||||
top = '.'
|
||||
out = 'build'
|
||||
|
||||
def options(opt):
|
||||
opt.load('compiler_c python')
|
||||
opt.add_option('--edition', default='se', help="dupeGuru edition to build (se, me pe)")
|
||||
|
||||
def configure(conf):
|
||||
if conf.options.edition not in ('se', 'me', 'pe'):
|
||||
conf.options.edition = 'se'
|
||||
print("Building dupeGuru {}".format(conf.options.edition.upper()))
|
||||
conf.env.DGEDITION = conf.options.edition
|
||||
# We use clang to compile our app
|
||||
conf.env.CC = 'clang'
|
||||
# WAF has a "pyembed" feature allowing us to automatically find Python and compile by linking
|
||||
# to it. The problem is that because we made a copy of the Python library to mangle with its
|
||||
# "install name", we don't actually want to link to our installed python, but to our mangled
|
||||
# Python. The line below tells the "pyembed" WAF feature to look in ../build for Python.
|
||||
conf.env.LIBPATH_PYEMBED = op.abspath('../build')
|
||||
# I did a lot of fiddling-around, but I didn't find how to tell WAF the Python library name
|
||||
# to look for without making the whole compilation process fail, so I just create a symlink
|
||||
# with the name WAF is looking for.
|
||||
if not op.exists('../build/libpython3.2.dylib'):
|
||||
os.symlink('../build/Python', '../build/libpython3.2.dylib')
|
||||
# The rest is standard WAF code that you can find the the python and macapp demos.
|
||||
conf.load('compiler_c python')
|
||||
conf.check_python_version((3,2,0))
|
||||
conf.check_python_headers()
|
||||
conf.env.FRAMEWORK_COCOA = 'Cocoa'
|
||||
conf.env.ARCH_COCOA = ['i386', 'x86_64']
|
||||
# Add cocoalib dir to the framework search path so we can find Sparkle.
|
||||
conf.env.CFLAGS = ['-F'+op.abspath('../cocoalib')]
|
||||
conf.env.LINKFLAGS = ['-F'+op.abspath('../cocoalib')]
|
||||
|
||||
def build(ctx):
|
||||
# What do we compile?
|
||||
cocoalib_node = ctx.srcnode.find_dir('..').find_dir('cocoalib')
|
||||
cocoalib_folders = ['controllers', 'views']
|
||||
cocoalib_includes = [cocoalib_node] + [cocoalib_node.find_dir(folder) for folder in cocoalib_folders]
|
||||
cocoalib_uses = ['NSEventAdditions', 'Dialogs', 'HSAboutBox', 'HSFairwareReminder', 'Utils',
|
||||
'HSPyUtil', 'ProgressController', 'HSRecentFiles', 'HSQuicklook', 'ValueTransformers',
|
||||
'NSImageAdditions', 'NSNotificationAdditions',
|
||||
'views/HSTableView', 'views/HSOutlineView', 'views/NSIndexPathAdditions',
|
||||
'views/NSTableViewAdditions',
|
||||
'controllers/HSColumns', 'controllers/HSGUIController', 'controllers/HSTable',
|
||||
'controllers/HSOutline', 'controllers/HSPopUpList', 'controllers/HSSelectableList']
|
||||
cocoalib_src = [cocoalib_node.find_node(usename + '.m') for usename in cocoalib_uses] + cocoalib_node.ant_glob('autogen/*.m')
|
||||
project_folders = ['autogen', 'base', ctx.env.DGEDITION]
|
||||
project_src = sum([ctx.srcnode.ant_glob('%s/*.m' % folder) for folder in project_folders], [])
|
||||
|
||||
# Compile
|
||||
ctx.program(
|
||||
# "pyembed" takes care of the include and linking stuff to compile an app that embed Python.
|
||||
features = 'c cprogram pyembed',
|
||||
target = ctx.bldnode.make_node("dupeGuru"),
|
||||
source = cocoalib_src + project_src,
|
||||
includes = project_folders + cocoalib_includes,
|
||||
use = 'COCOA',
|
||||
# Because our python lib's install name is "@rpath/Python", we need to set the executable's
|
||||
# rpath. Fortunately, WAF supports it and we just need to supply the "rpath" argument.
|
||||
rpath = '@executable_path/../Frameworks',
|
||||
framework = ['Sparkle', 'Quartz'],
|
||||
)
|
||||
|
||||
from waflib import TaskGen
|
||||
@TaskGen.extension('.m')
|
||||
def m_hook(self, node):
|
||||
"""Alias .m files to be compiled the same as .c files, gcc will do the right thing."""
|
||||
return self.create_compiled_task('c', node)
|
||||
|
||||
68
core/app.py
68
core/app.py
@@ -15,7 +15,6 @@ import time
|
||||
import shutil
|
||||
|
||||
from send2trash import send2trash
|
||||
from hscommon import io
|
||||
from hscommon.reg import RegistrableApplication
|
||||
from hscommon.notify import Broadcaster
|
||||
from hscommon.path import Path
|
||||
@@ -90,6 +89,7 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
# show_results_window()
|
||||
# show_problem_dialog()
|
||||
# select_dest_folder(prompt: str) --> str
|
||||
# select_dest_file(prompt: str, ext: str) --> str
|
||||
|
||||
# in fairware prompts, we don't mention the edition, it's too long.
|
||||
PROMPT_NAME = "dupeGuru"
|
||||
@@ -158,16 +158,16 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
return len([dupe for dupe in group.dupes if self.results.is_marked(dupe)])
|
||||
return cmp_value(group.ref, key)
|
||||
|
||||
def _do_delete(self, j, replace_with_hardlinks, direct_deletion):
|
||||
def _do_delete(self, j, link_deleted, use_hardlinks, direct_deletion):
|
||||
def op(dupe):
|
||||
j.add_progress()
|
||||
return self._do_delete_dupe(dupe, replace_with_hardlinks, direct_deletion)
|
||||
return self._do_delete_dupe(dupe, link_deleted, use_hardlinks, direct_deletion)
|
||||
|
||||
j.start_job(self.results.mark_count)
|
||||
self.results.perform_on_marked(op, True)
|
||||
|
||||
def _do_delete_dupe(self, dupe, replace_with_hardlinks, direct_deletion):
|
||||
if not io.exists(dupe.path):
|
||||
def _do_delete_dupe(self, dupe, link_deleted, use_hardlinks, direct_deletion):
|
||||
if not dupe.path.exists():
|
||||
return
|
||||
logging.debug("Sending '%s' to trash", dupe.path)
|
||||
str_path = str(dupe.path)
|
||||
@@ -178,10 +178,11 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
os.remove(str_path)
|
||||
else:
|
||||
send2trash(str_path) # Raises OSError when there's a problem
|
||||
if replace_with_hardlinks:
|
||||
if link_deleted:
|
||||
group = self.results.get_group_of_duplicate(dupe)
|
||||
ref = group.ref
|
||||
os.link(str(ref.path), str_path)
|
||||
linkfunc = os.link if use_hardlinks else os.symlink
|
||||
linkfunc(str(ref.path), str_path)
|
||||
self.clean_empty_dirs(dupe.path[:-1])
|
||||
|
||||
def _create_file(self, path):
|
||||
@@ -199,6 +200,19 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
except EnvironmentError:
|
||||
return None
|
||||
|
||||
def _get_export_data(self):
|
||||
columns = [col for col in self.result_table.columns.ordered_columns
|
||||
if col.visible and col.name != 'marked']
|
||||
colnames = [col.display for col in columns]
|
||||
rows = []
|
||||
for group_id, group in enumerate(self.results.groups):
|
||||
for dupe in group:
|
||||
data = self.get_display_info(dupe, group)
|
||||
row = [data[col.name] for col in columns]
|
||||
row.insert(0, group_id)
|
||||
rows.append(row)
|
||||
return colnames, rows
|
||||
|
||||
def _results_changed(self):
|
||||
self.selected_dupes = [d for d in self.selected_dupes
|
||||
if self.results.get_group_of_duplicate(d) is not None]
|
||||
@@ -238,7 +252,7 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
result = []
|
||||
for file in files:
|
||||
try:
|
||||
inode = io.stat(file.path).st_ino
|
||||
inode = file.path.stat().st_ino
|
||||
except OSError:
|
||||
# The file was probably deleted or something
|
||||
continue
|
||||
@@ -265,11 +279,10 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
try:
|
||||
self.directories.add_path(Path(d))
|
||||
self.notify('directories_changed')
|
||||
return 0
|
||||
except directories.AlreadyThereError:
|
||||
return 1
|
||||
self.view.show_message(tr("'{}' already is in the list.").format(d))
|
||||
except directories.InvalidPathError:
|
||||
return 2
|
||||
self.view.show_message(tr("'{}' does not exist.").format(d))
|
||||
|
||||
def add_selected_to_ignore_list(self):
|
||||
dupes = self.without_ref(self.selected_dupes)
|
||||
@@ -310,8 +323,8 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
if dest_type == DestType.Relative:
|
||||
source_base = source_base[location_path:]
|
||||
dest_path = dest_path + source_base
|
||||
if not io.exists(dest_path):
|
||||
io.makedirs(dest_path)
|
||||
if not dest_path.exists():
|
||||
dest_path.makedirs()
|
||||
# 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)
|
||||
@@ -352,22 +365,21 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
return
|
||||
if not self.deletion_options.show(self.results.mark_count):
|
||||
return
|
||||
args = [self.deletion_options.hardlink, self.deletion_options.direct]
|
||||
args = [self.deletion_options.link_deleted, self.deletion_options.use_hardlinks,
|
||||
self.deletion_options.direct]
|
||||
logging.debug("Starting deletion job with args %r", args)
|
||||
self.view.start_job(JobType.Delete, self._do_delete, args=args)
|
||||
|
||||
def export_to_xhtml(self):
|
||||
columns = [col for col in self.result_table.columns.ordered_columns
|
||||
if col.visible and col.name != 'marked']
|
||||
colnames = [col.display for col in columns]
|
||||
rows = []
|
||||
for group in self.results.groups:
|
||||
for dupe in group:
|
||||
data = self.get_display_info(dupe, group)
|
||||
row = [data[col.name] for col in columns]
|
||||
row.insert(0, dupe is not group.ref)
|
||||
rows.append(row)
|
||||
return export.export_to_xhtml(colnames, rows)
|
||||
colnames, rows = self._get_export_data()
|
||||
export_path = export.export_to_xhtml(colnames, rows)
|
||||
self.view.open_path(export_path)
|
||||
|
||||
def export_to_csv(self):
|
||||
dest_file = self.view.select_dest_file(tr("Select a destination for your exported CSV"), 'csv')
|
||||
if dest_file:
|
||||
colnames, rows = self._get_export_data()
|
||||
export.export_to_csv(dest_file, colnames, rows)
|
||||
|
||||
def get_display_info(self, dupe, group, delta=False):
|
||||
def empty_data():
|
||||
@@ -502,9 +514,13 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
return False
|
||||
|
||||
def reprioritize_groups(self, sort_key):
|
||||
count = 0
|
||||
for group in self.results.groups:
|
||||
group.prioritize(key_func=sort_key)
|
||||
if group.prioritize(key_func=sort_key):
|
||||
count += 1
|
||||
self._results_changed()
|
||||
msg = tr("{} duplicate groups were changed by the re-prioritization.").format(count)
|
||||
self.view.show_message(msg)
|
||||
|
||||
def reveal_selected(self):
|
||||
if self.selected_dupes:
|
||||
|
||||
@@ -10,7 +10,6 @@ from xml.etree import ElementTree as ET
|
||||
import logging
|
||||
|
||||
from jobprogress import job
|
||||
from hscommon import io
|
||||
from hscommon.path import Path
|
||||
from hscommon.util import FileOrPath
|
||||
|
||||
@@ -73,9 +72,9 @@ class Directories:
|
||||
file.is_ref = state == DirectoryState.Reference
|
||||
filepaths.add(file.path)
|
||||
yield file
|
||||
subpaths = [from_path + name for name in io.listdir(from_path)]
|
||||
subpaths = [from_path + name for name in from_path.listdir()]
|
||||
# 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]
|
||||
subfolders = [p for p in subpaths if not p.islink() and p.isdir() and p not in filepaths]
|
||||
for subfolder in subfolders:
|
||||
for file in self._get_files(subfolder, j):
|
||||
yield file
|
||||
@@ -106,7 +105,7 @@ class Directories:
|
||||
"""
|
||||
if path in self:
|
||||
raise AlreadyThereError()
|
||||
if not io.exists(path):
|
||||
if not path.exists():
|
||||
raise InvalidPathError()
|
||||
self._dirs = [p for p in self._dirs if p not in path]
|
||||
self._dirs.append(path)
|
||||
@@ -115,7 +114,7 @@ class Directories:
|
||||
def get_subfolders(path):
|
||||
"""returns a sorted list of paths corresponding to subfolders in `path`"""
|
||||
try:
|
||||
names = [name for name in io.listdir(path) if io.isdir(path + name)]
|
||||
names = [name for name in path.listdir() if (path + name).isdir()]
|
||||
names.sort(key=lambda x:x.lower())
|
||||
return [path + name for name in names]
|
||||
except EnvironmentError:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user