1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2026-01-25 08:01:39 +00:00

Compare commits

...

97 Commits

Author SHA1 Message Date
Virgil Dupras
57375f83f6 activated "todo" extension in help conf file. 2012-03-29 11:26:42 -04:00
Virgil Dupras
2d75ffefa7 se v3.4.0 2012-03-29 10:48:48 -04:00
Virgil Dupras
87aa181e4b Added tag me6.3.0 for changeset 236cf9b690a1 2012-03-27 12:38:34 -04:00
Virgil Dupras
1f359e0391 Updated qtlib subrepo. 2012-03-27 11:07:43 -04:00
Virgil Dupras
c8af8ccc61 me v 6.3.0 2012-03-27 10:03:37 -04:00
Virgil Dupras
2daaaee893 Work around a crash in picture analysis where there's sometimes a null path and improved debug logging calls in the matchblock unit. 2012-03-23 16:10:58 -04:00
Virgil Dupras
03712860b1 Added debug message on sending to trash. 2012-03-23 15:51:39 -04:00
Virgil Dupras
9e1f79c152 Added runtime adjustments to UI elements depending on active localization. 2012-03-20 15:43:47 -04:00
Virgil Dupras
edc385cfbc Updated french loc. 2012-03-20 15:42:43 -04:00
Virgil Dupras
0f62917b55 Fixed folder sorting under ME when the folder is the iTunes library. 2012-03-20 11:01:25 -04:00
Virgil Dupras
515c195780 Updated jobprogress requirements. 2012-03-20 10:16:02 -04:00
Virgil Dupras
c63df97dd6 Fixed prioritize dialog which was broken. 2012-03-19 16:52:08 -04:00
Virgil Dupras
1f312d8532 Fixed renaming under Qt which was broken since the addition of the 'marked' column. 2012-03-19 16:20:51 -04:00
Virgil Dupras
fa547bb95e Fixed details window geometry save/restore which sometimes caused the dialog to appear in inconvenient places (partially out of the screen). 2012-03-19 15:09:44 -04:00
Virgil Dupras
b500b34ef1 Updated qtlib subrepo. 2012-03-19 11:09:57 -04:00
Virgil Dupras
23cb71b522 Fixed results loading for iTunes songs. 2012-03-17 12:13:58 -04:00
Virgil Dupras
720d2fce83 Added Move and iPhoto/iTunes warning in help file. 2012-03-17 10:59:50 -04:00
Virgil Dupras
97f447fc27 Activated the ability to sort by 'marked' status under Cocoa. 2012-03-16 15:10:33 -04:00
Virgil Dupras
6ee56dc55c Under Qt, added a 'marked' column thus uncoupling the marked' attribute from the 'filename' column.
Also, added the ability to sort by 'marked' status.
2012-03-16 15:05:52 -04:00
Virgil Dupras
771f22f208 Removed code duplication among editions in sorting algorithms. 2012-03-16 14:57:21 -04:00
Virgil Dupras
80ff5f64f7 Updated qtlib subrepo. 2012-03-16 14:20:23 -04:00
Virgil Dupras
d0bfa2a6ca Converted dupeguru to the new automated QVariant conversion protocol introduced in PyQt (which is the default protocol when running under python 3). 2012-03-16 14:07:29 -04:00
Virgil Dupras
04a547656e Modernized qt.base.results_model by leveraging more of qtlib's table. 2012-03-16 13:50:17 -04:00
Virgil Dupras
657f6743c2 Changed copyright year to 2012 2012-03-15 14:28:40 -04:00
Virgil Dupras
42b57431e0 Added a close button the the qt ignore list dialog. 2012-03-15 14:23:38 -04:00
Virgil Dupras
3fc83d6245 Added an Ignore List dialog. 2012-03-14 12:47:21 -04:00
Virgil Dupras
ae16845477 Removed old automatically generated strings files in Cocoa.
They were kept around to make sure that the new localization system behaved correctly, and it does. We can remove them now.
2012-03-14 12:20:29 -04:00
Virgil Dupras
49a7043b4d Updated hscommon to its tip.
Because the latest changes in hscommon include the introduction of a base GUIObject which significantly changes view setting mechanisms, significant adjustments had to be made in dupeGuru.
2012-03-13 14:27:08 -04:00
Virgil Dupras
878c744c21 Refactoring: de-notified problems_dialog. It simplifies things. 2012-03-13 11:58:07 -04:00
Virgil Dupras
b4b9393e14 Updated loc. 2012-03-13 11:56:49 -04:00
Virgil Dupras
bf17eb715a Pushed some action confirmation logic down from GUI layers to the core. 2012-03-10 14:32:56 -05:00
Virgil Dupras
cd9f54163b Pushed some action confirmation logic down from GUI layers to the core. 2012-03-10 10:58:08 -05:00
Virgil Dupras
ef0a66f794 Pushed job_finished logic down from GUI layers to the core. 2012-03-09 13:47:28 -05:00
Virgil Dupras
5fb7742cf4 [#188 state:fixed] Instead of showing a crash report on iTunes communication problems, show a friendlier message. 2012-03-09 11:34:08 -05:00
Virgil Dupras
22de2d803a [#196 state:fixed] [#188] Fixed a crash on crash reporting under Cocoa and improved job management to allow threaded error handling on _job_finished(). 2012-03-05 14:09:42 -05:00
Virgil Dupras
188aa4bf2e Removed code duplication in qt.base.util.
createActions was also in qtlib.util (it had been moved for reuse in moneyGuru). Also, updated qtlib subrepo which wasn't correctly updated in previous commits.
2012-03-04 11:14:59 -05:00
Virgil Dupras
05552c160c Updated loc. 2012-03-04 11:08:34 -05:00
Virgil Dupras
dd70bd6d41 Improved Qt UI by adding a couple of widgets at the top of the results window.
Theres; now an Actions button, delta/dupes only checkboxes and a search field. Apply/Cancel filter menu items are gone.
2012-03-04 11:04:47 -05:00
Virgil Dupras
70f88ba39c Modernized signal handling/emitting in result_window and results_model. 2012-03-04 09:55:21 -05:00
Virgil Dupras
496f29b5c3 Fixed localization for ME/PE specific messages under Cocoa.
Despite having localizations for these message, dupeGuru would previously display the english message.
2012-02-27 10:12:36 -05:00
Virgil Dupras
b0818f2bdf Added russian localization to PE's cocoa proj.
For some reason, it wasn't there.
2012-02-27 10:07:12 -05:00
Virgil Dupras
e0efd660f6 Updated localizations.
There was the removal of the extra fairware reminder and the addition of iTunes-related messages.
2012-02-27 09:52:40 -05:00
Virgil Dupras
4592000464 Removed extra_fairware_reminder.
With the introduction of dual-mode fairware, the presence of the extra fairware reminder has been made rather useless.
2012-02-27 09:44:51 -05:00
Virgil Dupras
93781a0f35 [#195 state:fixed] Fixed bug where there would be a false reporting of discarded matches. 2012-02-26 11:18:29 -05:00
Virgil Dupras
7dfb42fb41 [#190 state:fixed] Fixed "Open with default application" which didn't work. 2012-02-26 10:36:13 -05:00
Virgil Dupras
a1fc64cd36 Ignore files in the scanning list that point to the same path as another file in the scanning list. 2012-02-21 11:14:12 -05:00
Virgil Dupras
b12b70b0a1 Added real iTunes support in dgme (similar to iPhoto support in dgpe). 2012-02-21 10:23:23 -05:00
Virgil Dupras
9457a43993 Added tag se3.3.3 for changeset fad463ae749b 2012-02-01 11:03:54 -05:00
Virgil Dupras
ab201bfae0 se v3.3.3 2012-02-01 09:56:05 -05:00
Virgil Dupras
66204ff0b5 Added the language confreplace in help build. 2012-02-01 09:53:24 -05:00
Virgil Dupras
95f77aef3f Added cocoalib locale in updatepot/mergepot build actions.
Also, updated subrepos to include error window restart notice change.
2012-02-01 09:45:33 -05:00
Virgil Dupras
1e96b6f9c4 Updated objp requirement to fix crash on getUTI(). 2012-02-01 09:18:21 -05:00
Virgil Dupras
f813673d6c Moved help changelog and conf tmpl files to the root of the help folder instead of having one copy per language.
--HG--
rename : help/en/changelog.tmpl => help/changelog.tmpl
rename : help/en/conf.tmpl => help/conf.tmpl
2012-01-24 08:28:23 -05:00
Virgil Dupras
1da325a56b Added tag pe2.4.1 for changeset a619f313712e 2012-01-23 15:48:00 -05:00
Virgil Dupras
d885bf0b18 Fixed tests. 2012-01-23 15:09:13 -05:00
Virgil Dupras
5f7e7fbb13 pe v2.4.1 2012-01-23 14:39:41 -05:00
Virgil Dupras
757f8569e6 Added "crash" terminology notice in changelog. 2012-01-23 14:38:15 -05:00
Virgil Dupras
bf86f56371 Added tag me6.2.1 for changeset 6a08c1205dfe 2012-01-20 12:31:33 -05:00
Virgil Dupras
7d0948cd23 me v6.2.1 2012-01-20 11:42:28 -05:00
Virgil Dupras
c4824b0f16 [#185 state:fixed] Made an iPhoto-appscript error a bit friendlier. 2012-01-20 11:34:46 -05:00
Virgil Dupras
ea32af04fb Fixed cocoa dev build. 2012-01-18 12:33:54 -05:00
Virgil Dupras
e519e41e42 Ukrainian help file by Yuri Petrashko. 2012-01-17 20:51:16 -05:00
Virgil Dupras
c937f2b20f Ukrainian localization by Yuri Petrashko. 2012-01-17 20:15:09 -05:00
Virgil Dupras
fc477ab3b5 Added tag se3.3.2 for changeset 2a96f2fb3ddb 2012-01-16 14:41:00 -05:00
Virgil Dupras
c53ddcdee1 Fixed crash under Cocoa when dupeGuru was launched from a path containing non-ascii characters. 2012-01-16 14:20:51 -05:00
Virgil Dupras
9e668b11b8 se v3.3.2 2012-01-16 13:09:20 -05:00
Virgil Dupras
f53a4c261c Updated requirements for Cocoa. 2012-01-16 13:02:40 -05:00
Virgil Dupras
9a2554d24e Merge with objp branch. 2012-01-16 12:52:50 -05:00
Virgil Dupras
b9ac135b89 Fixed a crash on sorting by dimensions (in PE) while being in dupesonly/delta mode. 2012-01-16 12:00:14 -05:00
Virgil Dupras
235d3ae521 Fixed a crash under Qt on Export to HTML. 2012-01-16 11:52:51 -05:00
Virgil Dupras
a487e83f3c Converted ME and PE cocoa projects to objp.
--HG--
branch : objp
rename : cocoa/se/main.m => cocoa/base/main.m
2012-01-16 10:30:45 -05:00
Virgil Dupras
4aaff8ffb1 Adapted qt layer to recent changes to the core (core initialization and core connection).
--HG--
branch : objp
2012-01-16 09:29:57 -05:00
Virgil Dupras
302050b2d6 Delegate model instantiation to HSGUIController where possible.
--HG--
branch : objp
2012-01-15 18:07:32 -05:00
Virgil Dupras
1b571f6fd2 Create the extra fairware reminder on-the-fly rather than on launch time.
--HG--
branch : objp
2012-01-15 17:31:15 -05:00
Virgil Dupras
baa2177439 Fixed a bug where re-prioritization criteria list would initially be empty.
That was because the dialog was created on launch time rather than on-the-fly.

--HG--
branch : objp
2012-01-15 17:24:30 -05:00
Virgil Dupras
29796e87b7 Put all cocoa callback views in the same extension module.
--HG--
branch : objp
2012-01-15 11:49:04 -05:00
Virgil Dupras
017e483b5a Re-added error handling.
--HG--
branch : objp
2012-01-15 11:00:34 -05:00
Virgil Dupras
7a167208d0 Allow cocoa dev builds again.
--HG--
branch : objp
2012-01-13 17:03:00 -05:00
Virgil Dupras
475f2c7238 Fixed PyDupeGuru which didn't have its callback set.
--HG--
branch : objp
2012-01-13 17:02:41 -05:00
Virgil Dupras
9392f818cc Pushed connect() calls in objc into the core.
--HG--
branch : objp
2012-01-13 16:34:21 -05:00
Virgil Dupras
58347bc36f Removed view arguments from core.gui classes's init methods.
--HG--
branch : objp
2012-01-13 16:14:06 -05:00
Virgil Dupras
55db21f3e0 Removed temporary objp conversion hacks.
--HG--
branch : objp
2012-01-13 15:25:34 -05:00
Virgil Dupras
950cd0c341 Completed the conversion wo objp with the conversion of PyDupeGuru. I had to temporarily disable error handling though.
--HG--
branch : objp
2012-01-13 14:43:43 -05:00
Virgil Dupras
937ea73c87 Converted ProblemDialog to objp.
--HG--
branch : objp
2012-01-13 12:19:23 -05:00
Virgil Dupras
7bce70c128 Converted ResultsTable to objp.
--HG--
branch : objp
2012-01-13 11:49:34 -05:00
Virgil Dupras
f9ced08e6d Fixed the mess I had to introduce earlier to make selectable list work by using objp's new inheritance capabilities.
--HG--
branch : objp
2012-01-13 10:20:46 -05:00
Virgil Dupras
4c8ce4b52d Converted the prioritize dialog to objp. A bit hackish though. Refactorings required before going further.
--HG--
branch : objp
2012-01-12 17:40:23 -05:00
Virgil Dupras
0d78201548 Comverted DirectoryOutline to objp. I converted HSColumns and I realized at the end that I didn't need to do it yet, but well, it will be done for ResultsTable.
--HG--
branch : objp
2012-01-12 15:19:40 -05:00
Virgil Dupras
45d4915d88 Converted objp code to 2-steps instantiation.
--HG--
branch : objp
2012-01-12 14:23:10 -05:00
Virgil Dupras
a699a2ef45 Converted .h view objp bridge interfaces to python ones. It simplifies them and allows for subclassing.
--HG--
branch : objp
2012-01-12 12:34:20 -05:00
Virgil Dupras
f6dd1a6a42 Pushed common py wrapper creation code to cocoalib.
--HG--
branch : objp
2012-01-12 10:23:31 -05:00
Virgil Dupras
e6819781f6 Converted details_panel to objp.
--HG--
branch : objp
2012-01-12 09:41:03 -05:00
Virgil Dupras
12467c9493 Converted extra_fairware_reminder to objp.
--HG--
branch : objp
2012-01-11 15:55:25 -05:00
Virgil Dupras
0c7d73854d Converted stats_label to objp.
--HG--
branch : objp
2012-01-11 15:14:59 -05:00
Virgil Dupras
a7eeb7db89 Directly embed python rather than going through a plugin.
--HG--
branch : objp
2012-01-11 12:18:03 -05:00
Virgil Dupras
989026051c Converted PyStatsLabel to a core instance mode.
--HG--
branch : objp
2012-01-09 11:15:20 -05:00
Virgil Dupras
56fd94e205 Added tag pe2.4.0 for changeset 8178bda48324 2012-01-06 16:49:03 -05:00
325 changed files with 6633 additions and 9430 deletions

View File

@@ -14,6 +14,7 @@ build
dist
install
installer_tmp-cache
cocoa/autogen
cocoa/*/Info.plist
cocoa/*/build
cocoa/*/*.app
@@ -23,10 +24,14 @@ cocoa/*/de.lproj/*.xib
cocoa/*/zh_CN.lproj/*.xib
cocoa/*/cs.lproj/*.xib
cocoa/*/it.lproj/*.xib
# We keep old strings files in the repo for a while to be sure that auto-generated strings work
# fine, but we'll eventually only have en.lproj in the repo.
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

View File

@@ -63,3 +63,9 @@ a2f7b7302e178f08725a6404ddc28464409510b1 se3.2.0
9ea9af1b886cd1adc4f42fd2276cc2b38376eab0 se3.3.0
6e3379be6821bb36d7f0877a17dd6c07aa037b0a se3.3.1
015ba7e2c10d09afb944f387c2a9c97f7eff7571 me6.2.0
8178bda48324461a17118c98634241952c074f29 pe2.4.0
2a96f2fb3ddb6f1e0ae87951586733fc3e4a28a0 se3.3.2
6a08c1205dfe5e537e5c2dc99d05e05d1d3928f6 me6.2.1
a619f313712e2923160b8f90d8250ee0e184c7b9 pe2.4.1
fad463ae749b7189dce92f1e42a57ac4ee03987d se3.3.3
236cf9b690a144392e7e86e7c9749fc834a8b271 me6.3.0

View File

@@ -1,4 +1,4 @@
Copyright 2011 Hardcoded Software Inc. (http://www.hardcoded.net)
Copyright 2012 Hardcoded Software Inc. (http://www.hardcoded.net)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

4
README
View File

@@ -39,8 +39,8 @@ OS X prerequisites
- XCode 4.1
- Sparkle (http://sparkle.andymatuschak.org/)
- PyObjC 2.3 (http://pyobjc.sourceforge.net/)
- pluginbuilder 1.0.1 (http://bitbucket.org/hsoft/pluginbuilder)
- 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/)
Windows prerequisites

106
build.py
View File

@@ -1,22 +1,25 @@
# Created By: Virgil Dupras
# Created On: 2009-12-30
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
# 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 sys
import os
import os.path as op
from optparse import OptionParser
import shutil
import json
import importlib
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)
get_module_version, build_all_cocoa_locs, move_all, copy_sysconfig_files_for_embed, copy_all,
move)
from hscommon import loc
def parse_args():
@@ -28,6 +31,8 @@ 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('--updatepot', action='store_true', dest='updatepot',
help="Generate .pot files from source code.")
parser.add_option('--mergepot', action='store_true', dest='mergepot',
@@ -36,26 +41,32 @@ def parse_args():
return options
def build_cocoa(edition, dev):
from pluginbuilder import build_plugin
build_cocoa_proxy_module()
print("Building dg_cocoa.plugin")
build_cocoa_bridging_interfaces(edition)
print("Building the cocoa layer")
from pluginbuilder import copy_embeddable_python_dylib, get_python_header_folder, 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)
shutil.copy(op.join(cocoa_project_path, 'dg_cocoa.py'), 'build')
specific_packages = {
'se': ['core_se'],
'me': ['core_me'],
'pe': ['core_pe'],
}[edition]
tocopy = ['core', 'hscommon', 'cocoa/inter', 'cocoalib/cocoa'] + specific_packages
copy_packages(tocopy, 'build', create_links=dev)
cocoa_project_path = 'cocoa/{0}'.format(edition)
shutil.copy(op.join(cocoa_project_path, 'dg_cocoa.py'), 'build')
os.chdir('build')
# We have to exclude PyQt4 specifically because it's conditionally imported in hscommon.trans
build_plugin('dg_cocoa.py', excludes=['PyQt4'], alias=dev)
os.chdir('..')
pluginpath = op.join(cocoa_project_path, 'dg_cocoa.plugin')
if op.exists(pluginpath):
shutil.rmtree(pluginpath)
shutil.move('build/dist/dg_cocoa.plugin', pluginpath)
copy_packages(tocopy, 'build')
sys.path.insert(0, 'build')
collect_dependencies('build/dg_cocoa.py', 'build/py', excludes=['PyQt4'])
del sys.path[0]
if dev:
copy_packages(tocopy, 'build/py', 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))
@@ -96,8 +107,10 @@ def build_help(edition):
tixurl = "https://hardcoded.lighthouseapp.com/projects/31699-dupeguru/tickets/{0}"
appname = {'se': 'dupeGuru', 'me': 'dupeGuru Music Edition', 'pe': 'dupeGuru Picture Edition'}[edition]
homepage = 'http://www.hardcoded.net/dupeguru{}/'.format('_' + edition if edition != 'se' else '')
confrepl = {'edition': edition, 'appname': appname, 'homepage': homepage}
sphinxgen.gen(help_basepath, help_destpath, changelog_path, tixurl, confrepl)
confrepl = {'edition': edition, 'appname': appname, 'homepage': homepage, 'language': 'en'}
changelogtmpl = op.join(current_path, 'help', 'changelog.tmpl')
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")
@@ -142,6 +155,8 @@ 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'])
print("Building cocoalib.pot")
loc.allstrings2pot(op.join('cocoalib', 'en.lproj'), op.join('cocoalib', 'locale', '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'})
@@ -154,20 +169,56 @@ def build_mergepot():
loc.merge_pots_into_pos('locale')
loc.merge_pots_into_pos(op.join('hscommon', 'locale'))
loc.merge_pots_into_pos(op.join('qtlib', 'locale'))
loc.merge_pots_into_pos(op.join('cocoalib', 'locale'))
def build_cocoa_ext(extname, dest, source_files, extra_frameworks=(), extra_includes=()):
extra_link_args = ["-framework", "CoreFoundation", "-framework", "Foundation"]
for extra in extra_frameworks:
extra_link_args += ['-framework', extra]
ext = Extension(extname, source_files, extra_link_args=extra_link_args, include_dirs=extra_includes)
setup(script_args=['build_ext', '--inplace'], ext_modules=[ext])
fn = extname + '.so'
assert op.exists(fn)
move(fn, op.join(dest, fn))
def build_cocoa_proxy_module():
print("Building Cocoa Proxy")
import objp.p2o
objp.p2o.generate_python_proxy_code('cocoalib/cocoa/CocoaProxy.h', 'build/CocoaProxy.m')
exts = [
Extension("CocoaProxy", ['cocoalib/cocoa/CocoaProxy.m', 'build/CocoaProxy.m', 'build/ObjP.m'],
extra_link_args=["-framework", "CoreFoundation", "-framework", "Foundation", "-framework", "AppKit"]),
]
setup(
script_args = ['build_ext', '--inplace'],
ext_modules = exts,
)
move_all('CocoaProxy*', 'cocoalib/cocoa')
build_cocoa_ext("CocoaProxy", 'cocoalib/cocoa',
['cocoalib/cocoa/CocoaProxy.m', 'build/CocoaProxy.m', 'build/ObjP.m', 'cocoalib/HSErrorReportWindow.m'],
['AppKit', 'CoreServices'],
['cocoalib'])
def build_cocoa_bridging_interfaces(edition):
print("Building Cocoa Bridging Interfaces")
import objp.o2p
import objp.p2o
add_to_pythonpath('cocoa')
add_to_pythonpath('cocoalib')
from cocoa.inter import (PyGUIObject, GUIObjectView, PyColumns, ColumnsView, PyOutline,
OutlineView, PySelectableList, SelectableListView, PyTable, TableView, PyFairware)
from inter.details_panel import PyDetailsPanel, DetailsPanelView
from inter.directory_outline import PyDirectoryOutline, DirectoryOutlineView
from inter.prioritize_dialog import PyPrioritizeDialog, PrioritizeDialogView
from inter.prioritize_list import PyPrioritizeList, PrioritizeListView
from inter.problem_dialog import PyProblemDialog
from inter.ignore_list_dialog import PyIgnoreListDialog, IgnoreListDialogView
from inter.result_table import PyResultTable, ResultTableView
from inter.stats_label import PyStatsLabel, StatsLabelView
from inter.app import PyDupeGuruBase, DupeGuruView
appmod = importlib.import_module('inter.app_{}'.format(edition))
allclasses = [PyGUIObject, PyColumns, PyOutline, PySelectableList, PyTable, PyFairware,
PyDetailsPanel, PyDirectoryOutline, PyPrioritizeDialog, PyPrioritizeList, PyProblemDialog,
PyIgnoreListDialog, PyResultTable, PyStatsLabel, PyDupeGuruBase, appmod.PyDupeGuru]
for class_ in allclasses:
objp.o2p.generate_objc_code(class_, 'cocoa/autogen', inherit=True)
allclasses = [GUIObjectView, ColumnsView, OutlineView, SelectableListView, TableView,
DetailsPanelView, DirectoryOutlineView, PrioritizeDialogView, PrioritizeListView,
IgnoreListDialogView, ResultTableView, StatsLabelView, DupeGuruView]
clsspecs = [objp.o2p.spec_from_python_class(class_) for class_ in allclasses]
objp.p2o.generate_python_proxy_code_from_clsspec(clsspecs, 'build/CocoaViews.m')
build_cocoa_ext('CocoaViews', 'cocoa/inter', ['build/CocoaViews.m', 'build/ObjP.m'])
def build_pe_modules(ui):
print("Building PE Modules")
@@ -227,6 +278,9 @@ def main():
build_updatepot()
elif options.mergepot:
build_mergepot()
elif options.cocoamod:
build_cocoa_proxy_module()
build_cocoa_bridging_interfaces(edition)
else:
build_normal(edition, ui, dev)

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -11,26 +11,28 @@ http://www.hardcoded.net/licenses/bsd_license
#import "ResultWindow.h"
#import "DetailsPanel.h"
#import "DirectoryPanel.h"
#import "IgnoreListDialog.h"
#import "HSAboutBox.h"
#import "HSRecentFiles.h"
@interface AppDelegateBase : NSObject
{
IBOutlet PyDupeGuruBase *py;
IBOutlet NSMenu *recentResultsMenu;
IBOutlet NSMenu *actionsMenu;
IBOutlet NSMenu *columnsMenu;
PyDupeGuru *model;
ResultWindowBase *_resultWindow;
DirectoryPanel *_directoryPanel;
DetailsPanel *_detailsPanel;
IgnoreListDialog *_ignoreListDialog;
NSWindowController *_preferencesPanel;
HSAboutBox *_aboutBox;
HSRecentFiles *_recentResults;
}
/* Virtual */
- (PyDupeGuruBase *)py;
- (PyDupeGuru *)model;
- (ResultWindowBase *)createResultWindow;
- (DirectoryPanel *)createDirectoryPanel;
- (DetailsPanel *)createDetailsPanel;
@@ -58,10 +60,10 @@ http://www.hardcoded.net/licenses/bsd_license
- (IBAction)showDirectoryWindow:(id)sender;
- (IBAction)showPreferencesPanel:(id)sender;
- (IBAction)showResultWindow:(id)sender;
- (IBAction)showIgnoreList:(id)sender;
- (IBAction)startScanning:(id)sender;
/* model --> view */
- (void)showExtraFairwareReminder;
- (void)showMessage:(NSString *)msg;
- (void)setupAsRegistered;
- (void)showFairwareNagWithPrompt:(NSString *)prompt;

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -9,7 +9,6 @@ http://www.hardcoded.net/licenses/bsd_license
#import "AppDelegate.h"
#import "ProgressController.h"
#import "HSFairwareReminder.h"
#import "ExtraFairwareReminder.h"
#import "Utils.h"
#import "Consts.h"
#import "Dialogs.h"
@@ -25,7 +24,8 @@ http://www.hardcoded.net/licenses/bsd_license
- (void)awakeFromNib
{
[py bindCocoa:self];
model = [[PyDupeGuru alloc] init];
[model bindCallback:createCallback(@"DupeGuruView", self)];
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
/* Because the pref pane is lazily loaded, we have to manually do the update check if the
preference is set.
@@ -37,7 +37,8 @@ http://www.hardcoded.net/licenses/bsd_license
[_recentResults setDelegate:self];
_resultWindow = [self createResultWindow];
_directoryPanel = [self createDirectoryPanel];
_detailsPanel = nil; // Lazily loaded
_detailsPanel = [self createDetailsPanel];
_ignoreListDialog = [[IgnoreListDialog alloc] initWithPyRef:[model ignoreListDialog]];
_aboutBox = nil; // Lazily loaded
_preferencesPanel = nil; // Lazily loaded
[[[self directoryPanel] window] makeKeyAndOrderFront:self];
@@ -45,7 +46,10 @@ http://www.hardcoded.net/licenses/bsd_license
/* Virtual */
- (PyDupeGuruBase *)py { return py; }
- (PyDupeGuru *)model
{
return model;
}
- (ResultWindowBase *)createResultWindow
{
@@ -59,7 +63,7 @@ http://www.hardcoded.net/licenses/bsd_license
- (DetailsPanel *)createDetailsPanel
{
return [[DetailsPanel alloc] initWithPy:py];
return [[DetailsPanel alloc] initWithPyRef:[model detailsPanel]];
}
- (NSString *)homepageURL
@@ -80,8 +84,6 @@ http://www.hardcoded.net/licenses/bsd_license
- (DetailsPanel *)detailsPanel
{
if (!_detailsPanel)
_detailsPanel = [self createDetailsPanel];
return _detailsPanel;
}
@@ -104,7 +106,7 @@ http://www.hardcoded.net/licenses/bsd_license
[op setTitle:TR(@"Select a results file to load")];
if ([op runModal] == NSOKButton) {
NSString *filename = [[op filenames] objectAtIndex:0];
[py loadResultsFrom:filename];
[model loadResultsFrom:filename];
[[self recentResults] addFile:filename];
}
}
@@ -125,7 +127,7 @@ http://www.hardcoded.net/licenses/bsd_license
- (IBAction)showAboutBox:(id)sender
{
if (_aboutBox == nil) {
_aboutBox = [[HSAboutBox alloc] initWithApp:py];
_aboutBox = [[HSAboutBox alloc] initWithApp:model];
}
[[_aboutBox window] makeKeyAndOrderFront:sender];
}
@@ -148,6 +150,11 @@ http://www.hardcoded.net/licenses/bsd_license
[[[self resultWindow] window] makeKeyAndOrderFront:nil];
}
- (IBAction)showIgnoreList:(id)sender
{
[model showIgnoreList];
}
- (IBAction)startScanning:(id)sender
{
[[self resultWindow] startDuplicateScan:sender];
@@ -157,9 +164,9 @@ http://www.hardcoded.net/licenses/bsd_license
/* Delegate */
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[[ProgressController mainProgressController] setWorker:py];
[py initialRegistrationSetup];
[py loadSession];
[[ProgressController mainProgressController] setWorker:model];
[model initialRegistrationSetup];
[model loadSession];
}
- (void)applicationWillBecomeActive:(NSNotification *)aNotification
@@ -171,7 +178,7 @@ http://www.hardcoded.net/licenses/bsd_license
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
if ([py resultsAreModified]) {
if ([model resultsAreModified]) {
NSString *msg = TR(@"You have unsaved results, do you really want to quit?");
if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) { // NO
return NSTerminateCancel;
@@ -186,10 +193,10 @@ http://www.hardcoded.net/licenses/bsd_license
NSInteger sc = [ud integerForKey:@"sessionCountSinceLastIgnorePurge"];
if (sc >= 10) {
sc = -1;
[py purgeIgnoreList];
[model purgeIgnoreList];
}
sc++;
[py saveSession];
[model saveSession];
[ud setInteger:sc forKey:@"sessionCountSinceLastIgnorePurge"];
// NSApplication does not release nib instances objects, we must do it manually
// Well, it isn't needed because the memory is freed anyway (we are quitting the application
@@ -200,24 +207,26 @@ http://www.hardcoded.net/licenses/bsd_license
- (void)recentFileClicked:(NSString *)path
{
[py loadResultsFrom:path];
[model loadResultsFrom:path];
}
/* model --> view */
- (void)showExtraFairwareReminder
{
ExtraFairwareReminder *dialog = [[ExtraFairwareReminder alloc] initWithPy:py];
[dialog start];
[NSApp runModalForWindow:[dialog window]];
[dialog release];
}
- (void)showMessage:(NSString *)msg
{
[Dialogs showMessage:msg];
}
- (BOOL)askYesNoWithPrompt:(NSString *)prompt
{
return [Dialogs askYesNo:prompt] == NSAlertFirstButtonReturn;
}
- (void)showProblemDialog
{
[[self resultWindow] showProblemDialog];
}
- (void)setupAsRegistered
{
// Nothing to do.
@@ -225,11 +234,28 @@ http://www.hardcoded.net/licenses/bsd_license
- (void)showFairwareNagWithPrompt:(NSString *)prompt
{
[HSFairwareReminder showFairwareNagWithApp:[self py] prompt:prompt];
[HSFairwareReminder showFairwareNagWithApp:[self model] prompt:prompt];
}
- (void)showDemoNagWithPrompt:(NSString *)prompt
{
[HSFairwareReminder showDemoNagWithApp:[self py] prompt:prompt];
[HSFairwareReminder showDemoNagWithApp:[self model] prompt:prompt];
}
- (NSString *)selectDestFolderWithPrompt:(NSString *)prompt
{
NSOpenPanel *op = [NSOpenPanel openPanel];
[op setCanChooseFiles:NO];
[op setCanChooseDirectories:YES];
[op setCanCreateDirectories:YES];
[op setAllowsMultipleSelection:NO];
[op setTitle:prompt];
if ([op runModal] == NSOKButton) {
return [[op filenames] objectAtIndex:0];
}
else {
return nil;
}
}
@end

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -7,16 +7,17 @@ http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import "HSWindowController.h"
#import "PyApp.h"
#import <Python.h>
#import "PyDetailsPanel.h"
@interface DetailsPanel : HSWindowController
@interface DetailsPanel : NSWindowController
{
IBOutlet NSTableView *detailsTable;
PyDetailsPanel *model;
}
- (id)initWithPy:(PyApp *)aPy;
- (PyDetailsPanel *)py;
- (id)initWithPyRef:(PyObject *)aPyRef;
- (PyDetailsPanel *)model;
- (BOOL)isVisible;
- (void)toggleVisibility;

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -10,23 +10,24 @@ http://www.hardcoded.net/licenses/bsd_license
#import "Utils.h"
@implementation DetailsPanel
- (id)initWithPy:(PyApp *)aPy
- (id)initWithPyRef:(PyObject *)aPyRef
{
self = [super initWithNibName:@"DetailsPanel" pyClassName:@"PyDetailsPanel" pyParent:aPy];
self = [super initWithWindowNibName:@"DetailsPanel"];
[self window]; //So the detailsTable is initialized.
[self connect];
model = [[PyDetailsPanel alloc] initWithModel:aPyRef];
[model bindCallback:createCallback(@"DetailsPanelView", self)];
return self;
}
- (void)dealloc
{
[self disconnect];
[model release];
[super dealloc];
}
- (PyDetailsPanel *)py
- (PyDetailsPanel *)model
{
return (PyDetailsPanel *)py;
return (PyDetailsPanel *)model;
}
- (void)refreshDetails
@@ -53,12 +54,12 @@ http://www.hardcoded.net/licenses/bsd_license
/* NSTableView Delegate */
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
{
return [[self py] numberOfRows];
return [[self model] numberOfRows];
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)column row:(NSInteger)row
{
return [[self py] valueForColumn:[column identifier] row:row];
return [[self model] valueForColumn:[column identifier] row:row];
}
/* Python --> Cocoa */

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -7,12 +7,13 @@ http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import <Python.h>
#import "HSOutline.h"
#import "PyDirectoryOutline.h"
#define DGAddedFoldersNotification @"DGAddedFoldersNotification"
@interface DirectoryOutline : HSOutline {}
- (id)initWithPyParent:(id)aPyParent view:(HSOutlineView *)aOutlineView;
- (PyDirectoryOutline *)py;
- (id)initWithPyRef:(PyObject *)aPyRef outlineView:(HSOutlineView *)aOutlineView;
- (PyDirectoryOutline *)model;
@end;

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -9,23 +9,17 @@ http://www.hardcoded.net/licenses/bsd_license
#import "DirectoryOutline.h"
@implementation DirectoryOutline
- (id)initWithPyParent:(id)aPyParent view:(HSOutlineView *)aOutlineView
- (id)initWithPyRef:(PyObject *)aPyRef outlineView:(HSOutlineView *)aOutlineView
{
self = [super initWithPyClassName:@"PyDirectoryOutline" pyParent:aPyParent view:aOutlineView];
[outlineView registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
[self connect];
self = [super initWithPyRef:aPyRef wrapperClass:[PyDirectoryOutline class]
callbackClassName:@"DirectoryOutlineView" view:aOutlineView];
[[self view] registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
return self;
}
- (void)dealloc
- (PyDirectoryOutline *)model
{
[self disconnect];
[super dealloc];
}
- (PyDirectoryOutline *)py
{
return (PyDirectoryOutline *)py;
return (PyDirectoryOutline *)model;
}
/* Delegate */
@@ -53,7 +47,7 @@ http://www.hardcoded.net/licenses/bsd_license
if (!(sourceDragMask & NSDragOperationLink))
return NO;
for (NSString *foldername in foldernames) {
[[self py] addDirectory:foldername];
[[self model] addDirectory:foldername];
}
NSDictionary *userInfo = [NSDictionary dictionaryWithObject:foldernames forKey:@"foldernames"];
[[NSNotificationCenter defaultCenter] postNotificationName:DGAddedFoldersNotification
@@ -67,7 +61,7 @@ http://www.hardcoded.net/licenses/bsd_license
if ([cell isKindOfClass:[NSTextFieldCell class]]) {
NSTextFieldCell *textCell = cell;
NSIndexPath *path = item;
BOOL selected = [path isEqualTo:[outlineView selectedPath]];
BOOL selected = [path isEqualTo:[[self view] selectedPath]];
if (selected) {
[textCell setTextColor:[NSColor blackColor]];
return;

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -20,9 +20,10 @@ http://www.hardcoded.net/licenses/bsd_license
IBOutlet NSPopUpButton *loadRecentButtonPopUp;
IBOutlet HSOutlineView *outlineView;
IBOutlet NSButton *removeButton;
IBOutlet NSButton *loadResultsButton;
AppDelegateBase *_app;
PyDupeGuruBase *_py;
PyDupeGuru *model;
HSRecentFiles *_recentDirectories;
DirectoryOutline *outline;
BOOL _alwaysShowPopUp;
@@ -30,6 +31,7 @@ http://www.hardcoded.net/licenses/bsd_license
- (id)initWithParentApp:(AppDelegateBase *)aParentApp;
- (void)fillPopUpMenu; // Virtual
- (void)adjustUIToLocalization;
- (IBAction)askForDirectory:(id)sender;
- (IBAction)popupAddDirectoryMenu:(id)sender;

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -18,14 +18,16 @@ http://www.hardcoded.net/licenses/bsd_license
self = [super initWithWindowNibName:@"DirectoryPanel"];
[self window];
_app = aParentApp;
_py = [_app py];
[[self window] setTitle:[_py appName]];
model = [_app model];
[[self window] setTitle:[model appName]];
_alwaysShowPopUp = NO;
[self fillPopUpMenu];
_recentDirectories = [[HSRecentFiles alloc] initWithName:@"recentDirectories" menu:[addButtonPopUp menu]];
[_recentDirectories setDelegate:self];
outline = [[DirectoryOutline alloc] initWithPyParent:_py view:outlineView];
outline = [[DirectoryOutline alloc] initWithPyRef:[model directoryTree] outlineView:outlineView];
[self refreshRemoveButtonText];
[self adjustUIToLocalization];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(directorySelectionChanged:)
name:NSOutlineViewSelectionDidChangeNotification object:outlineView];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(outlineAddedFolders:)
@@ -40,7 +42,7 @@ http://www.hardcoded.net/licenses/bsd_license
[super dealloc];
}
/* Virtual */
/* Private */
- (void)fillPopUpMenu
{
@@ -50,6 +52,27 @@ http://www.hardcoded.net/licenses/bsd_license
[m addItem:[NSMenuItem separatorItem]];
}
- (void)adjustUIToLocalization
{
NSString *lang = [[NSBundle preferredLocalizationsFromArray:[[NSBundle mainBundle] localizations]] objectAtIndex:0];
NSInteger loadResultsWidthDelta = 0;
if ([lang isEqual:@"ru"]) {
loadResultsWidthDelta = 50;
}
else if ([lang isEqual:@"uk"]) {
loadResultsWidthDelta = 70;
}
else if ([lang isEqual:@"hy"]) {
loadResultsWidthDelta = 30;
}
if (loadResultsWidthDelta) {
NSRect r = [loadResultsButton frame];
r.size.width += loadResultsWidthDelta;
r.origin.x -= loadResultsWidthDelta;
[loadResultsButton setFrame:r];
}
}
/* Actions */
- (IBAction)askForDirectory:(id)sender
@@ -100,14 +123,14 @@ http://www.hardcoded.net/licenses/bsd_license
- (IBAction)removeSelectedDirectory:(id)sender
{
[[self window] makeKeyAndOrderFront:nil];
[[outline py] removeSelectedDirectory];
[[outline model] removeSelectedDirectory];
[self refreshRemoveButtonText];
}
/* Public */
- (void)addDirectory:(NSString *)directory
{
NSInteger r = [[_py addDirectory:directory] intValue];
NSInteger r = [model addDirectory:directory];
if (r) {
NSString *m = @"";
if (r == 1) {

View File

@@ -1,27 +0,0 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
This software is licensed under the "BSD" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import "PyExtraFairwareReminder.h"
#import "HSWindowController.h"
#import "PyApp.h"
@interface ExtraFairwareReminder : HSWindowController
{
IBOutlet NSButton *continueButton;
NSTimer *timer;
}
- (id)initWithPy:(PyApp *)aPy;
- (PyExtraFairwareReminder *)py;
- (void)start;
- (void)updateButton;
- (IBAction)continue:(id)sender;
- (IBAction)contribute:(id)sender;
@end

View File

@@ -1,74 +0,0 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
This software is licensed under the "BSD" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
http://www.hardcoded.net/licenses/bsd_license
*/
#import "ExtraFairwareReminder.h"
@implementation ExtraFairwareReminder
- (id)initWithPy:(PyApp *)aPy
{
self = [super initWithNibName:@"ExtraFairwareReminder" pyClassName:@"PyExtraFairwareReminder" pyParent:aPy];
[self window];
[continueButton setEnabled:NO];
return self;
}
- (void)dealloc
{
[timer release];
[super dealloc];
}
- (PyExtraFairwareReminder *)py
{
return (PyExtraFairwareReminder *)py;
}
- (void)start
{
[[self py] start];
}
- (void)updateButton
{
[[self py] updateButton];
}
- (IBAction)continue:(id)sender
{
[NSApp stopModal];
}
- (IBAction)contribute:(id)sender
{
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://open.hardcoded.net/contribute/"]];
}
/* Model --> View */
- (void)startTimer
{
timer = [[NSTimer timerWithTimeInterval:0.2 target:self selector:@selector(updateButton)
userInfo:nil repeats:YES] retain];
// Needed for the timer to work in modal mode.
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSModalPanelRunLoopMode];
}
- (void)stopTimer
{
[timer invalidate];
}
- (void)setButtonText:(NSString *)text
{
[continueButton setTitle:text];
}
- (void)enableButton
{
[continueButton setEnabled:YES];
}
@end

View File

@@ -0,0 +1,25 @@
/*
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 "PyIgnoreListDialog.h"
#import "HSTable.h"
@interface IgnoreListDialog : NSWindowController
{
IBOutlet NSTableView *ignoreListTableView;
PyIgnoreListDialog *model;
HSTable *ignoreListTable;
}
- (id)initWithPyRef:(PyObject *)aPyRef;
- (void)initializeColumns;
- (IBAction)removeSelected:(id)sender;
- (IBAction)clear:(id)sender;
@end

View File

@@ -0,0 +1,57 @@
/*
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 "IgnoreListDialog.h"
#import "Utils.h"
@implementation IgnoreListDialog
- (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)];
ignoreListTable = [[HSTable alloc] initWithPyRef:[model ignoreListTable] tableView:ignoreListTableView];
[self initializeColumns];
return self;
}
- (void)dealloc
{
[ignoreListTable release];
[model release];
[super dealloc];
}
- (void)initializeColumns
{
HSColumnDef defs[] = {
{@"path1", 240, 40, 0, NO, nil},
{@"path2", 240, 40, 0, NO, nil},
nil
};
[[ignoreListTable columns] initializeColumns:defs];
[[ignoreListTable columns] setColumnsAsReadOnly];
}
- (IBAction)removeSelected:(id)sender
{
[model removeSelected];
}
- (IBAction)clear:(id)sender
{
[model clear];
}
/* model --> view */
- (void)show
{
[self showWindow:self];
}
@end

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -7,25 +7,25 @@ http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import "HSWindowController.h"
#import "PyApp.h"
#import "PyPrioritizeDialog.h"
#import "HSPopUpList.h"
#import "HSSelectableList.h"
#import "PrioritizeList.h"
#import "PyDupeGuru.h"
@interface PrioritizeDialog : HSWindowController
@interface PrioritizeDialog : NSWindowController
{
IBOutlet NSPopUpButton *categoryPopUpView;
IBOutlet NSTableView *criteriaTableView;
IBOutlet NSTableView *prioritizationTableView;
PyPrioritizeDialog *model;
HSPopUpList *categoryPopUp;
HSSelectableList *criteriaList;
PrioritizeList *prioritizationList;
}
- (id)initWithPy:(PyApp *)aPy;
- (PyPrioritizeDialog *)py;
- (id)initWithApp:(PyDupeGuru *)aApp;
- (PyPrioritizeDialog *)model;
- (IBAction)addSelected:(id)sender;
- (IBAction)removeSelected:(id)sender;

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -7,50 +7,54 @@ http://www.hardcoded.net/licenses/bsd_license
*/
#import "PrioritizeDialog.h"
#import "Utils.h"
@implementation PrioritizeDialog
- (id)initWithPy:(PyApp *)aPy
- (id)initWithApp:(PyDupeGuru *)aApp
{
self = [super initWithNibName:@"PrioritizeDialog" pyClassName:@"PyPrioritizeDialog" pyParent:aPy];
self = [super initWithWindowNibName:@"PrioritizeDialog"];
[self window];
categoryPopUp = [[HSPopUpList alloc] initWithPy:[[self py] categoryList] view:categoryPopUpView];
criteriaList = [[HSSelectableList alloc] initWithPy:[[self py] criteriaList] view:criteriaTableView];
prioritizationList = [[PrioritizeList alloc] initWithPy:[[self py] prioritizationList] view:prioritizationTableView];
[self connect];
model = [[PyPrioritizeDialog alloc] initWithApp:[aApp pyRef]];
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];
[model bindCallback:createCallback(@"PrioritizeDialogView", self)];
return self;
}
- (void)dealloc
{
[self disconnect];
[categoryPopUp release];
[criteriaList release];
[prioritizationList release];
[model release];
[super dealloc];
}
- (PyPrioritizeDialog *)py
- (PyPrioritizeDialog *)model
{
return (PyPrioritizeDialog *)py;
return (PyPrioritizeDialog *)model;
}
- (IBAction)addSelected:(id)sender
{
[[self py] addSelected];
[[self model] addSelected];
}
- (IBAction)removeSelected:(id)sender
{
[[self py] removeSelected];
[[self model] removeSelected];
}
- (IBAction)ok:(id)sender
{
[NSApp stopModal];
[self close];
}
- (IBAction)cancel:(id)sender
{
[NSApp abortModal];
[self close];
}
@end

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -11,5 +11,6 @@ http://www.hardcoded.net/licenses/bsd_license
#import "PyPrioritizeList.h"
@interface PrioritizeList : HSSelectableList {}
- (PyPrioritizeList *)py;
- (id)initWithPyRef:(PyObject *)aPyRef tableView:(NSTableView *)aTableView;
- (PyPrioritizeList *)model;
@end

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -11,9 +11,16 @@ http://www.hardcoded.net/licenses/bsd_license
#import "Consts.h"
@implementation PrioritizeList
- (PyPrioritizeList *)py
- (id)initWithPyRef:(PyObject *)aPyRef tableView:(NSTableView *)aTableView
{
return (PyPrioritizeList *)py;
self = [super initWithPyRef:aPyRef wrapperClass:[PyPrioritizeList class]
callbackClassName:@"PrioritizeListView" view:aTableView];
return self;
}
- (PyPrioritizeList *)model
{
return (PyPrioritizeList *)model;
}
- (void)setView:(NSTableView *)aTableView
@@ -45,7 +52,7 @@ http://www.hardcoded.net/licenses/bsd_license
NSPasteboard* pboard = [info draggingPasteboard];
NSData* rowData = [pboard dataForType:DGPrioritizeIndexPasteboardType];
NSIndexSet* rowIndexes = [NSKeyedUnarchiver unarchiveObjectWithData:rowData];
[[self py] moveIndexes:[Utils indexSet2Array:rowIndexes] toIndex:row];
[[self model] moveIndexes:[Utils indexSet2Array:rowIndexes] toIndex:row];
return YES;
}
@end

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -7,19 +7,17 @@ http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import "HSWindowController.h"
#import "PyApp.h"
#import "PyProblemDialog.h"
#import "HSTable.h"
@interface ProblemDialog : HSWindowController
@interface ProblemDialog : NSWindowController
{
IBOutlet NSTableView *problemTableView;
PyProblemDialog *model;
HSTable *problemTable;
}
- (id)initWithPy:(PyApp *)aPy;
- (PyProblemDialog *)py;
- (id)initWithPyRef:(PyObject *)aPyRef;
- (void)initializeColumns;
- (IBAction)revealSelected:(id)sender;

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -10,30 +10,23 @@ http://www.hardcoded.net/licenses/bsd_license
#import "Utils.h"
@implementation ProblemDialog
- (id)initWithPy:(PyApp *)aPy
- (id)initWithPyRef:(PyObject *)aPyRef
{
self = [super initWithNibName:@"ProblemDialog" pyClassName:@"PyProblemDialog" pyParent:aPy];
self = [super initWithWindowNibName:@"ProblemDialog"];
[self window]; //So the detailsTable is initialized.
problemTable = [[HSTable alloc] initWithPyClassName:@"PyProblemTable" pyParent:[self py] view:problemTableView];
model = [[PyProblemDialog alloc] initWithModel:aPyRef];
problemTable = [[HSTable alloc] initWithPyRef:[model problemTable] tableView:problemTableView];
[self initializeColumns];
[self connect];
[problemTable connect];
return self;
}
- (void)dealloc
{
[problemTable disconnect];
[self disconnect];
[problemTable release];
[model release];
[super dealloc];
}
- (PyProblemDialog *)py
{
return (PyProblemDialog *)py;
}
- (void)initializeColumns
{
HSColumnDef defs[] = {
@@ -46,6 +39,6 @@ http://www.hardcoded.net/licenses/bsd_license
- (IBAction)revealSelected:(id)sender
{
[[self py] revealSelected];
[model revealSelected];
}
@end

View File

@@ -1,15 +0,0 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
This software is licensed under the "BSD" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import "PyGUI.h"
@interface PyDetailsPanel : PyGUI
- (NSInteger)numberOfRows;
- (id)valueForColumn:(NSString *)column row:(NSInteger)row;
@end

View File

@@ -1,15 +0,0 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
This software is licensed under the "BSD" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import "PyOutline.h"
@interface PyDirectoryOutline : PyOutline
- (void)addDirectory:(NSString *)directoryPath;
- (void)removeSelectedDirectory;
@end

View File

@@ -1,59 +0,0 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
This software is licensed under the "BSD" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import "PyResultTable.h"
#import "PyApp.h"
@interface PyDupeGuruBase : PyApp
- (void)bindCocoa:(id)cocoa;
- (PyResultTable *)resultTable;
//Actions
- (NSNumber *)addDirectory:(NSString *)name;
- (void)loadResultsFrom:(NSString *)filename;
- (void)saveResultsAs:(NSString *)filename;
- (void)loadSession;
- (void)saveSession;
- (void)clearIgnoreList;
- (void)purgeIgnoreList;
- (NSString *)exportToXHTML;
- (void)invokeCommand:(NSString *)cmd;
- (void)doScan;
- (void)toggleSelectedMark;
- (void)markAll;
- (void)markInvert;
- (void)markNone;
- (void)addSelectedToIgnoreList;
- (void)openSelected;
- (void)revealSelected;
- (void)makeSelectedReference;
- (void)applyFilter:(NSString *)filter;
- (void)copyOrMove:(NSNumber *)aCopy markedTo:(NSString *)destination recreatePath:(NSNumber *)aRecreateType;
- (void)deleteMarked;
- (void)hardlinkMarked;
- (void)removeMarked;
//Data
- (NSNumber *)getIgnoreListCount;
- (NSNumber *)getMarkCount;
- (BOOL)scanWasProblematic;
- (BOOL)resultsAreModified;
//Scanning options
- (void)setScanType:(NSNumber *)scan_type;
- (void)setMinMatchPercentage:(NSNumber *)percentage;
- (void)setMixFileKind:(BOOL)mix_file_kind;
- (void)setEscapeFilterRegexp:(BOOL)escape_filter_regexp;
- (void)setRemoveEmptyFolders:(BOOL)remove_empty_folders;
- (void)setIgnoreHardlinkMatches:(BOOL)ignore_hardlink_matches;
- (void)setSizeThreshold:(NSInteger)size_threshold;
@end

View File

@@ -1,15 +0,0 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
This software is licensed under the "BSD" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import "PyGUI.h"
@interface PyExtraFairwareReminder : PyGUI
- (void)start;
- (void)updateButton;
@end

View File

@@ -1,20 +0,0 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
This software is licensed under the "BSD" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import "PyGUI.h"
#import "PySelectableList.h"
@interface PyPrioritizeDialog : PyGUI
- (PySelectableList *)categoryList;
- (PySelectableList *)criteriaList;
- (PySelectableList *)prioritizationList;
- (void)addSelected;
- (void)removeSelected;
- (void)performReprioritization;
@end

View File

@@ -1,14 +0,0 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
This software is licensed under the "BSD" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import "PySelectableList.h"
@interface PyPrioritizeList : PySelectableList
- (void)moveIndexes:(NSArray *)indexes toIndex:(NSInteger)destIndex;
@end

View File

@@ -1,14 +0,0 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
This software is licensed under the "BSD" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import "PyGUI.h"
@interface PyProblemDialog : PyGUI
- (void)revealSelected;
@end

View File

@@ -1,26 +0,0 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
This software is licensed under the "BSD" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import "PyTable.h"
@interface PyResultTable : PyTable
- (BOOL)powerMarkerMode;
- (void)setPowerMarkerMode:(BOOL)aPowerMarkerMode;
- (BOOL)deltaValuesMode;
- (void)setDeltaValuesMode:(BOOL)aDeltaValuesMode;
- (NSArray *)deltaColumns;
- (NSString *)valueForRow:(NSInteger)rowIndex column:(NSString *)aColumn;
- (BOOL)renameSelected:(NSString *)aNewName;
- (void)sortBy:(NSString *)aIdentifier ascending:(BOOL)aAscending;
- (void)markSelected;
- (void)removeSelected;
- (NSInteger)selectedDupeCount;
- (NSString *)pathAtIndex:(NSInteger)index;
@end

View File

@@ -1,14 +0,0 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
This software is licensed under the "BSD" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import "PyGUI.h"
@interface PyStatsLabel : PyGUI
- (NSString *)display;
@end

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -15,12 +15,10 @@ http://www.hardcoded.net/licenses/bsd_license
{
NSSet *_deltaColumns;
}
- (id)initWithPy:(id)aPy view:(NSTableView *)aTableView;
- (PyResultTable *)py;
- (id)initWithPyRef:(PyObject *)aPyRef view:(NSTableView *)aTableView;
- (PyResultTable *)model;
- (BOOL)powerMarkerMode;
- (void)setPowerMarkerMode:(BOOL)aPowerMarkerMode;
- (BOOL)deltaValuesMode;
- (void)setDeltaValuesMode:(BOOL)aDeltaValuesMode;
- (NSInteger)selectedDupeCount;
- (void)removeSelected;
@end;

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -18,24 +18,22 @@ http://www.hardcoded.net/licenses/bsd_license
@end
@implementation ResultTable
- (id)initWithPy:(id)aPy view:(NSTableView *)aTableView
- (id)initWithPyRef:(PyObject *)aPyRef view:(NSTableView *)aTableView
{
self = [super initWithPy:aPy view:aTableView];
_deltaColumns = [[NSSet setWithArray:[[self py] deltaColumns]] retain];
[self connect];
self = [super initWithPyRef:aPyRef wrapperClass:[PyResultTable class] callbackClassName:@"ResultTableView" view:aTableView];
_deltaColumns = [[NSSet setWithArray:[[self model] deltaColumns]] retain];
return self;
}
- (void)dealloc
{
[self disconnect];
[_deltaColumns release];
[super dealloc];
}
- (PyResultTable *)py
- (PyResultTable *)model
{
return (PyResultTable *)py;
return (PyResultTable *)model;
}
/* Private */
@@ -61,39 +59,22 @@ http://www.hardcoded.net/licenses/bsd_license
/* Public */
- (BOOL)powerMarkerMode
{
return [[self py] powerMarkerMode];
return [[self model] powerMarkerMode];
}
- (void)setPowerMarkerMode:(BOOL)aPowerMarkerMode
{
[[self py] setPowerMarkerMode:aPowerMarkerMode];
[[self model] setPowerMarkerMode:aPowerMarkerMode];
}
- (BOOL)deltaValuesMode
{
return [[self py] deltaValuesMode];
return [[self model] deltaValuesMode];
}
- (void)setDeltaValuesMode:(BOOL)aDeltaValuesMode
{
[[self py] setDeltaValuesMode:aDeltaValuesMode];
}
- (NSInteger)selectedDupeCount
{
return [[self py] selectedDupeCount];
}
- (void)removeSelected
{
NSInteger selectedDupeCount = [self selectedDupeCount];
if (!selectedDupeCount)
return;
NSString *msgFmt = TR(@"You are about to remove %d files from results. Continue?");
NSString *msg = [NSString stringWithFormat:msgFmt,selectedDupeCount];
if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) // NO
return;
[[self py] removeSelected];
[[self model] setDeltaValuesMode:aDeltaValuesMode];
}
/* Datasource */
@@ -101,27 +82,27 @@ http://www.hardcoded.net/licenses/bsd_license
{
NSString *identifier = [column identifier];
if ([identifier isEqual:@"marked"]) {
return [[self py] valueForColumn:@"marked" row:row];
return [[self model] valueForColumn:@"marked" row:row];
}
return [[self py] valueForRow:row column:identifier];
return [[self model] valueForRow:row column:identifier];
}
- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)column row:(NSInteger)row
{
NSString *identifier = [column identifier];
if ([identifier isEqual:@"marked"]) {
[[self py] setValue:object forColumn:identifier row:row];
[[self model] setValue:object forColumn:identifier row:row];
}
else if ([identifier isEqual:@"name"]) {
NSString *oldName = [[self py] valueForRow:row column:identifier];
NSString *oldName = [[self model] valueForRow:row column:identifier];
NSString *newName = object;
if (![newName isEqual:oldName]) {
BOOL renamed = [[self py] renameSelected:newName];
BOOL renamed = [[self model] renameSelected:newName];
if (!renamed) {
[Dialogs showMessage:[NSString stringWithFormat:TR(@"The name '%@' already exists."), newName]];
}
else {
[tableView setNeedsDisplay:YES];
[[self view] setNeedsDisplay:YES];
}
}
}
@@ -130,16 +111,16 @@ http://www.hardcoded.net/licenses/bsd_license
/* Delegate */
- (void)tableView:(NSTableView *)aTableView didClickTableColumn:(NSTableColumn *)tableColumn
{
if ([[tableView sortDescriptors] count] < 1)
if ([[[self view] sortDescriptors] count] < 1)
return;
NSSortDescriptor *sd = [[tableView sortDescriptors] objectAtIndex:0];
[[self py] sortBy:[sd key] ascending:[sd ascending]];
NSSortDescriptor *sd = [[[self view] sortDescriptors] objectAtIndex:0];
[[self model] sortBy:[sd key] ascending:[sd ascending]];
}
- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)column row:(NSInteger)row
{
BOOL isSelected = [tableView isRowSelected:row];
BOOL isMarkable = n2b([[self py] valueForColumn:@"markable" row:row]);
BOOL isSelected = [[self view] isRowSelected:row];
BOOL isMarkable = n2b([[self model] valueForColumn:@"markable" row:row]);
if ([[column identifier] isEqual:@"marked"]) {
[cell setEnabled:isMarkable];
// Low-tech solution, for indentation, but it works...
@@ -167,27 +148,27 @@ http://www.hardcoded.net/licenses/bsd_license
- (BOOL)tableViewHadDeletePressed:(NSTableView *)tableView
{
[self removeSelected];
[[self model] removeSelected];
return YES;
}
- (BOOL)tableViewHadSpacePressed:(NSTableView *)tableView
{
[[self py] markSelected];
[[self model] markSelected];
return YES;
}
/* Quicklook */
- (NSInteger)numberOfPreviewItemsInPreviewPanel:(QLPreviewPanel *)panel
{
return [[[self py] selectedRows] count];
return [[[self model] selectedRows] count];
}
- (id <QLPreviewItem>)previewPanel:(QLPreviewPanel *)panel previewItemAtIndex:(NSInteger)index
{
NSArray *selectedRows = [[self py] selectedRows];
NSArray *selectedRows = [[self model] selectedRows];
NSInteger absIndex = n2i([selectedRows objectAtIndex:index]);
NSString *path = [[self py] pathAtIndex:absIndex];
NSString *path = [[self model] pathAtIndex:absIndex];
return [[HSQLPreviewItem alloc] initWithUrl:[NSURL fileURLWithPath:path] title:path];
}
@@ -204,6 +185,6 @@ http://www.hardcoded.net/licenses/bsd_license
/* Python --> Cocoa */
- (void)invalidateMarkings
{
[tableView setNeedsDisplay:YES];
[[self view] setNeedsDisplay:YES];
}
@end

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -20,12 +20,13 @@ http://www.hardcoded.net/licenses/bsd_license
{
@protected
IBOutlet NSSegmentedControl *optionsSwitch;
IBOutlet NSToolbarItem *optionsToolbarItem;
IBOutlet HSTableView *matches;
IBOutlet NSTextField *stats;
IBOutlet NSSearchField *filterField;
AppDelegateBase *app;
PyDupeGuruBase *py;
PyDupeGuru *model;
NSMenu *columnsMenu;
ResultTable *table;
StatsLabel *statsLabel;
@@ -42,9 +43,10 @@ http://www.hardcoded.net/licenses/bsd_license
- (void)fillColumnsMenu;
- (void)sendMarkedToTrash:(BOOL)hardlinkDeleted;
- (void)updateOptionSegments;
- (void)showProblemDialog;
- (void)adjustUIToLocalization;
/* Actions */
- (IBAction)clearIgnoreList:(id)sender;
- (IBAction)changeOptions:(id)sender;
- (IBAction)copyMarked:(id)sender;
- (IBAction)deleteMarked:(id)sender;
@@ -74,7 +76,4 @@ http://www.hardcoded.net/licenses/bsd_license
- (IBAction)toggleDetailsPanel:(id)sender;
- (IBAction)togglePowerMarker:(id)sender;
- (IBAction)toggleQuicklookPanel:(id)sender;
/* Notifications */
- (void)jobCompleted:(NSNotification *)aNotification;
@end

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -19,20 +19,20 @@ http://www.hardcoded.net/licenses/bsd_license
{
self = [super initWithWindowNibName:@"ResultWindow"];
app = aApp;
py = [app py];
[[self window] setTitle:fmt(@"%@ Results", [py appName])];
model = [app model];
[[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] initWithPy:[py resultTable] view:matches];
statsLabel = [[StatsLabel alloc] initWithPyParent:py labelView:stats];
problemDialog = [[ProblemDialog alloc] initWithPy:py];
table = [[ResultTable alloc] initWithPyRef:[model resultTable] view:matches];
statsLabel = [[StatsLabel alloc] initWithPyRef:[model statsLabel] view:stats];
problemDialog = [[ProblemDialog alloc] initWithPyRef:[model problemDialog]];
[self initResultColumns];
[self fillColumnsMenu];
[matches setTarget:self];
[matches setDoubleAction:@selector(openClicked:)];
[self adjustUIToLocalization];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(jobCompleted:) name:JobCompletedNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(jobStarted:) name:JobStarted object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(jobInProgress:) name:JobInProgress object:nil];
return self;
@@ -58,7 +58,7 @@ http://www.hardcoded.net/licenses/bsd_license
/* Helpers */
- (void)fillColumnsMenu
{
NSArray *menuItems = [[[table columns] py] menuItems];
NSArray *menuItems = [[[table columns] model] menuItems];
for (NSInteger i=0; i < [menuItems count]; i++) {
NSArray *pair = [menuItems objectAtIndex:i];
NSString *display = [pair objectAtIndex:0];
@@ -76,24 +76,13 @@ http://www.hardcoded.net/licenses/bsd_license
- (void)sendMarkedToTrash:(BOOL)hardlinkDeleted
{
NSInteger mark_count = [[py getMarkCount] intValue];
if (!mark_count) {
return;
}
NSString *msg = TR(@"You are about to send %d files to Trash. Continue?");
if (hardlinkDeleted) {
msg = TR(@"You are about to send %d files to Trash (and hardlink them afterwards). Continue?");
}
if ([Dialogs askYesNo:[NSString stringWithFormat:msg,mark_count]] == NSAlertSecondButtonReturn) { // NO
return;
}
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[py setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
[model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
if (hardlinkDeleted) {
[py hardlinkMarked];
[model hardlinkMarked];
}
else {
[py deleteMarked];
[model deleteMarked];
}
}
@@ -104,18 +93,36 @@ http://www.hardcoded.net/licenses/bsd_license
[optionsSwitch setSelected:[table deltaValuesMode] forSegment:2];
}
/* Actions */
- (IBAction)clearIgnoreList:(id)sender
- (void)showProblemDialog
{
NSInteger i = n2i([py getIgnoreListCount]);
if (!i)
return;
NSString *msg = [NSString stringWithFormat:TR(@"Do you really want to remove all %d items from the ignore list?"),i];
if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) // NO
return;
[py clearIgnoreList];
[problemDialog showWindow:self];
}
- (void)adjustUIToLocalization
{
NSString *lang = [[NSBundle preferredLocalizationsFromArray:[[NSBundle mainBundle] localizations]] objectAtIndex:0];
NSInteger seg1delta = 0;
NSInteger seg2delta = 0;
if ([lang isEqual:@"ru"]) {
seg2delta = 20;
}
else if ([lang isEqual:@"uk"]) {
seg2delta = 20;
}
else if ([lang isEqual:@"hy"]) {
seg1delta = 20;
}
if (seg1delta || seg2delta) {
[optionsSwitch setWidth:[optionsSwitch widthForSegment:0]+seg1delta forSegment:0];
[optionsSwitch setWidth:[optionsSwitch widthForSegment:1]+seg2delta forSegment:1];
NSSize s = [optionsToolbarItem maxSize];
s.width += seg1delta + seg2delta;
[optionsToolbarItem setMaxSize:s];
[optionsToolbarItem setMinSize:s];
}
}
/* Actions */
- (IBAction)changeOptions:(id)sender
{
NSInteger seg = [optionsSwitch selectedSegment];
@@ -132,20 +139,10 @@ http://www.hardcoded.net/licenses/bsd_license
- (IBAction)copyMarked:(id)sender
{
NSInteger mark_count = [[py getMarkCount] intValue];
if (!mark_count)
return;
NSOpenPanel *op = [NSOpenPanel openPanel];
[op setCanChooseFiles:NO];
[op setCanChooseDirectories:YES];
[op setCanCreateDirectories:YES];
[op setAllowsMultipleSelection:NO];
[op setTitle:TR(@"Select a directory to copy marked files to")];
if ([op runModal] == NSOKButton) {
NSString *directory = [[op filenames] objectAtIndex:0];
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[py copyOrMove:b2n(YES) markedTo:directory recreatePath:[ud objectForKey:@"recreatePathType"]];
}
[model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
[model setCopyMoveDestType:n2i([ud objectForKey:@"recreatePathType"])];
[model copyMarked];
}
- (IBAction)deleteMarked:(id)sender
@@ -160,77 +157,53 @@ http://www.hardcoded.net/licenses/bsd_license
- (IBAction)exportToXHTML:(id)sender
{
NSString *exported = [py exportToXHTML];
NSString *exported = [model exportToXHTML];
[[NSWorkspace sharedWorkspace] openFile:exported];
}
- (IBAction)filter:(id)sender
{
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[py setEscapeFilterRegexp:!n2b([ud objectForKey:@"useRegexpFilter"])];
[py applyFilter:[filterField stringValue]];
[model setEscapeFilterRegexp:!n2b([ud objectForKey:@"useRegexpFilter"])];
[model applyFilter:[filterField stringValue]];
}
- (IBAction)ignoreSelected:(id)sender
{
NSInteger selectedDupeCount = [table selectedDupeCount];
if (!selectedDupeCount)
return;
NSString *msg = [NSString stringWithFormat:TR(@"All selected %d matches are going to be ignored in all subsequent scans. Continue?"),selectedDupeCount];
if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) // NO
return;
[py addSelectedToIgnoreList];
[model addSelectedToIgnoreList];
}
- (IBAction)invokeCustomCommand:(id)sender
{
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
NSString *cmd = [ud stringForKey:@"CustomCommand"];
if ((cmd != nil) && ([cmd length] > 0)) {
[py invokeCommand:cmd];
}
else {
[Dialogs showMessage:TR(@"You have no custom command set up. Set it up in your preferences.")];
}
[model invokeCustomCommand];
}
- (IBAction)markAll:(id)sender
{
[py markAll];
[model markAll];
}
- (IBAction)markInvert:(id)sender
{
[py markInvert];
[model markInvert];
}
- (IBAction)markNone:(id)sender
{
[py markNone];
[model markNone];
}
- (IBAction)markSelected:(id)sender
{
[py toggleSelectedMark];
[model toggleSelectedMark];
}
- (IBAction)moveMarked:(id)sender
{
NSInteger mark_count = [[py getMarkCount] intValue];
if (!mark_count)
return;
NSOpenPanel *op = [NSOpenPanel openPanel];
[op setCanChooseFiles:NO];
[op setCanChooseDirectories:YES];
[op setCanCreateDirectories:YES];
[op setAllowsMultipleSelection:NO];
[op setTitle:TR(@"Select a directory to move marked files to")];
if ([op runModal] == NSOKButton) {
NSString *directory = [[op filenames] objectAtIndex:0];
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[py setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
[py copyOrMove:b2n(NO) markedTo:directory recreatePath:[ud objectForKey:@"recreatePathType"]];
}
[model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
[model setCopyMoveDestType:n2i([ud objectForKey:@"recreatePathType"])];
[model moveMarked];
}
- (IBAction)openClicked:(id)sender
@@ -239,28 +212,22 @@ http://www.hardcoded.net/licenses/bsd_license
return;
}
[matches selectRowIndexes:[NSIndexSet indexSetWithIndex:[matches clickedRow]] byExtendingSelection:NO];
[py openSelected];
[model openSelected];
}
- (IBAction)openSelected:(id)sender
{
[py openSelected];
[model openSelected];
}
- (IBAction)removeMarked:(id)sender
{
int mark_count = [[py getMarkCount] intValue];
if (!mark_count)
return;
NSString *msg = [NSString stringWithFormat:@"You are about to remove %d files from results. Continue?",mark_count];
if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) // NO
return;
[py removeMarked];
[model removeMarked];
}
- (IBAction)removeSelected:(id)sender
{
[table removeSelected];
[model removeSelected];
}
- (IBAction)renameSelected:(id)sender
@@ -272,10 +239,10 @@ http://www.hardcoded.net/licenses/bsd_license
- (IBAction)reprioritizeResults:(id)sender
{
PrioritizeDialog *dlg = [[PrioritizeDialog alloc] initWithPy:py];
PrioritizeDialog *dlg = [[PrioritizeDialog alloc] initWithApp:model];
NSInteger result = [NSApp runModalForWindow:[dlg window]];
if (result == NSRunStoppedResponse) {
[[dlg py] performReprioritization];
[[dlg model] performReprioritization];
}
[dlg release];
[[self window] makeKeyAndOrderFront:nil];
@@ -283,12 +250,12 @@ http://www.hardcoded.net/licenses/bsd_license
- (IBAction)resetColumnsToDefault:(id)sender
{
[[[table columns] py] resetToDefaults];
[[[table columns] model] resetToDefaults];
}
- (IBAction)revealSelected:(id)sender
{
[py revealSelected];
[model revealSelected];
}
- (IBAction)saveResults:(id)sender
@@ -298,30 +265,30 @@ http://www.hardcoded.net/licenses/bsd_license
[sp setAllowedFileTypes:[NSArray arrayWithObject:@"dupeguru"]];
[sp setTitle:TR(@"Select a file to save your results to")];
if ([sp runModal] == NSOKButton) {
[py saveResultsAs:[sp filename]];
[model saveResultsAs:[sp filename]];
[[app recentResults] addFile:[sp filename]];
}
}
- (IBAction)startDuplicateScan:(id)sender
{
if ([py resultsAreModified]) {
if ([model resultsAreModified]) {
if ([Dialogs askYesNo:TR(@"You have unsaved results, do you really want to continue?")] == NSAlertSecondButtonReturn) // NO
return;
}
[self setScanOptions];
[py doScan];
[model doScan];
}
- (IBAction)switchSelected:(id)sender
{
[py makeSelectedReference];
[model makeSelectedReference];
}
- (IBAction)toggleColumn:(id)sender
{
NSMenuItem *mi = sender;
BOOL checked = [[[table columns] py] toggleMenuItem:[mi tag]];
BOOL checked = [[[table columns] model] toggleMenuItem:[mi tag]];
[mi setState:checked ? NSOnState : NSOffState];
}
@@ -377,42 +344,6 @@ http://www.hardcoded.net/licenses/bsd_license
previewPanel = nil;
}
/* Notifications */
- (void)jobCompleted:(NSNotification *)aNotification
{
id lastAction = [[ProgressController mainProgressController] jobId];
if ([lastAction isEqualTo:jobCopy]) {
if ([py scanWasProblematic]) {
[problemDialog showWindow:self];
}
else {
[Dialogs showMessage:TR(@"All marked files were copied sucessfully.")];
}
}
else if ([lastAction isEqualTo:jobMove]) {
if ([py scanWasProblematic]) {
[problemDialog showWindow:self];
}
else {
[Dialogs showMessage:TR(@"All marked files were moved sucessfully.")];
}
}
else if ([lastAction isEqualTo:jobDelete]) {
if ([py scanWasProblematic]) {
[problemDialog showWindow:self];
}
else {
[Dialogs showMessage:TR(@"All marked files were sucessfully sent to Trash.")];
}
}
else if ([lastAction isEqualTo:jobScan]) {
NSInteger rowCount = [[table py] numberOfRows];
if (rowCount == 0) {
[Dialogs showMessage:TR(@"No duplicates found.")];
}
}
}
- (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.")];

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -10,10 +10,8 @@ http://www.hardcoded.net/licenses/bsd_license
#import "HSGUIController.h"
#import "PyStatsLabel.h"
@interface StatsLabel : HSGUIController
{
NSTextField *labelView;
}
- (id)initWithPyParent:(id)aPyParent labelView:(NSTextField *)aLabelView;
- (PyStatsLabel *)py;
@interface StatsLabel : HSGUIController {}
- (id)initWithPyRef:(PyObject *)aPyRef view:(NSTextField *)aLabelView;
- (PyStatsLabel *)model;
- (NSTextField *)labelView;
@end

View File

@@ -1,5 +1,5 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
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
@@ -10,29 +10,25 @@ http://www.hardcoded.net/licenses/bsd_license
#import "Utils.h"
@implementation StatsLabel
- (id)initWithPyParent:(id)aPyParent labelView:(NSTextField *)aLabelView
- (id)initWithPyRef:(PyObject *)aPyRef view:(NSTextField *)aLabelView
{
self = [super initWithPyClassName:@"PyStatsLabel" pyParent:aPyParent];
labelView = [aLabelView retain];
[self connect];
return self;
return [super initWithPyRef:aPyRef wrapperClass:[PyStatsLabel class]
callbackClassName:@"StatsLabelView" view:aLabelView];
}
- (void)dealloc
- (PyStatsLabel *)model
{
[self disconnect];
[labelView release];
[super dealloc];
return (PyStatsLabel *)model;
}
- (PyStatsLabel *)py
- (NSTextField *)labelView
{
return (PyStatsLabel *)py;
return (NSTextField *)view;
}
/* Python --> Cocoa */
- (void)refresh
{
[labelView setStringValue:[[self py] display]];
[[self labelView] setStringValue:[[self model] display]];
}
@end

View File

@@ -1,12 +0,0 @@
/* Class = "NSPanel"; title = "Details of Selected File"; ObjectID = "5"; */
"5.title" = "Detaily vybraného souboru";
/* Class = "NSTableColumn"; headerCell.title = "Selected"; ObjectID = "9"; */
"9.headerCell.title" = "Vybráno";
/* Class = "NSTableColumn"; headerCell.title = "Reference"; ObjectID = "10"; */
"10.headerCell.title" = "Referenční";
/* Class = "NSTableColumn"; headerCell.title = "Attribute"; ObjectID = "11"; */
"11.headerCell.title" = "Atribut";

View File

@@ -1,23 +0,0 @@
/* Class = "NSTableColumn"; headerCell.title = "State"; ObjectID = "13"; */
"13.headerCell.title" = "Stav";
/* Class = "NSTableColumn"; headerCell.title = "Name"; ObjectID = "15"; */
"15.headerCell.title" = "Název";
/* Class = "NSButtonCell"; title = "Scan"; ObjectID = "48"; */
"48.title" = "Prohledat";
/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "55"; */
"55.title" = "Normální";
/* Class = "NSMenuItem"; title = "Reference"; ObjectID = "56"; */
"56.title" = "Referenční";
/* Class = "NSMenuItem"; title = "Excluded"; ObjectID = "57"; */
"57.title" = "Vyjmuto";
/* Class = "NSTextFieldCell"; title = "Select folders to scan and press \"Scan\"."; ObjectID = "71"; */
"71.title" = "Vyberte složky, které chcete prohledat a stiskněte \"Prohledat\".";
/* Class = "NSButtonCell"; title = "Load Results"; ObjectID = "73"; */
"73.title" = "Nahrát výsledky";

View File

@@ -1,11 +0,0 @@
/* Class = "NSWindow"; title = "Sorry, I must insist"; ObjectID = "1"; */
"1.title" = "Je mi líto, musím na tom trvat";
/* Class = "NSTextFieldCell"; title = "This reminder showed up because:1. You are processing more than 100 duplicates2. You have not yet contributed to dupeGuru3. There are unpaid hours in the project"; ObjectID = "4"; */
"4.title" = "Tato připomínka se zobrazila, protože:\n\n1. Zpracováváte více než 100 duplicit\n2. Zatím jste nepřispěli na vývoj dupeGuru\n3. V projektu jsou nezaplacené hodiny";
/* Class = "NSTextFieldCell"; title = "It seems that you found a lot of duplicates. Nice! I must insist, however, that contributions are expected when there are unpaid hours on the project.You might think \"but I'm only going to use this once, I don't have to contribute\". The problem is that most people use dupeGuru only once in a while. If everyone thinks like that, dupeGuru development cannot be funded.If you can't afford to contribute, you can ignore this reminder or send me an e-mail at hsoft@hardcoded.net so I can give you a key to remove this reminder."; ObjectID = "6"; */
"6.title" = "Vypadá to, že jste našli spoustu duplicit. Paráda! Musím ale trvat na tom, že v případě nezaplacených hodin vývoje projektu, očekávám příspěvky.\n\nMůžete si říct \"ale já chci program použít jen jednou, proč bych měl platit\". Problém je, že většina lidí používá dupeGuru jen občas. Kdyby si totéž řekl každý, nemohl by se vývoj dupeGuru zaplatit. Kvůli této vlastnosti, která vychází z podstaty dupeGuru, si zde dovoluji žádat o příspěvek na vývoj.\n\nPokud si nemůžete příspěvek dovolit, můžete tuto připomínku ignorovat nebo mi poslat e-mail na hsoft@hardcoded.net, abych vám dal klíč pro odstranění tohoto vyskakovacího okna.";
/* Class = "NSButtonCell"; title = "Contribute"; ObjectID = "10"; */
"10.title" = "Přispět";

View File

@@ -1,39 +0,0 @@
"Add New Folder..." = "Přidat novou složku...";
"Load from file..." = "Nahrát ze souboru...";
"Reset to Default" = "Výchozí nastavení";
"Select a results file to load" = "Vyberte soubor s výsledky, který chcete nahrát";
"You have unsaved results, do you really want to quit?" = "Máte neuložené výsledky, opravdu si přejete skončit?";
"Select a directory to copy marked files to" = "Select a directory to copy marked files to";
"Select a directory to move marked files to" = "Select a directory to move marked files to";
"Select a file to save your results to" = "Vyberte soubor pro uložení výsledků";
"Select a folder to add to the scanning list" = "Vyberte složku, kterou chcete přidat do prohledávacího seznamu";
"You have unsaved results, do you really want to continue?" = "Máte neuložené výsledky, opravdu si přejete pokračovat?";
"'%@' already is in the list." = "'%@' already is in the list.";
"'%@' does not exist." = "'%@' does not exist.";
"You are about to remove %d files from results. Continue?" = "Chystáte se z výsledků odstranit %d souborů. Pokračovat?";
"The name '%@' already exists." = "The name '%@' already exists.";
"You are about to send %d files to Trash. Continue?" = "Chystáte se vyhodit %d souborů do koše. Pokračovat?";
"You are about to send %d files to Trash (and hardlink them afterwards). Continue?" = "Chystáte se vyhodit %d souborů do koše (a následně na ně vytvořit hardlinky). Pokračovat?";
"Do you really want to remove all %d items from the ignore list?" = "Opravdu chcete odstranit všech %d položek ze seznamu výjimek?";
"All selected %d matches are going to be ignored in all subsequent scans. Continue?" = "Všech %d vybraných shod bude v následujících hledáních ignorováno. Pokračovat?";
"You have no custom command set up. Set it up in your preferences." = "Nedefinoval jste žádný uživatelský příkaz. Nadefinujete ho v předvolbách.";
"All marked files were copied sucessfully." = "All marked files were copied sucessfully.";
"All marked files were moved sucessfully." = "All marked files were moved sucessfully.";
"All marked files were sucessfully sent to Trash." = "All marked files were sucessfully sent to Trash.";
"No duplicates found." = "Nebyli nalezeny žádné duplicity.";
"A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again." = "Předchozí akce stále nebyla ukončena. Novou zatím nemůžete spustit. Počkejte pár sekund a zkuste to znovu.";
"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?" = "Opravdu chcete odstranit veškeré uložené analýzy snímků?";
"Add iTunes Directory" = "Přidat složku iTunes";
"Remove Dead Tracks in iTunes" = "Odstranit z iTunes mrtvé stopy";
"Add iPhoto Library" = "Přidat knihovnu iPhoto";
"Clear Picture Cache" = "Vyčistit cache snímků";
"Yes" = "Yes";
"No" = "No";
"OK" = "OK";

View File

@@ -1,177 +0,0 @@
/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "5"; */
"5.title" = "Vše do popředí";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Okno";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimalizovat";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Okno";
/* Class = "NSMenuItem"; title = "About dupeGuru"; ObjectID = "58"; */
"58.title" = "O aplikaci";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Nápověda";
/* Class = "NSMenu"; title = "Help"; ObjectID = "106"; */
"106.title" = "Nápověda";
/* Class = "NSMenuItem"; title = "dupeGuru Help"; ObjectID = "111"; */
"111.title" = "Nápověda dupeGuru";
/* Class = "NSMenuItem"; title = "Hide dupeGuru"; ObjectID = "134"; */
"134.title" = "Skrýt dupeGuru";
/* Class = "NSMenuItem"; title = "Quit dupeGuru"; ObjectID = "136"; */
"136.title" = "Ukončit dupeGuru";
/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "145"; */
"145.title" = "Skrýt ostatní";
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Zobrazit vše";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "197"; */
"197.title" = "Zoom";
/* Class = "NSMenuItem"; title = "Details Panel"; ObjectID = "398"; */
"398.title" = "Detaily";
/* Class = "NSMenuItem"; title = "Preferences..."; ObjectID = "541"; */
"541.title" = "Předvolby...";
/* Class = "NSMenuItem"; title = "Folder Selection Window"; ObjectID = "579"; */
"579.title" = "Výběr složky";
/* Class = "NSMenuItem"; title = "Actions"; ObjectID = "597"; */
"597.title" = "Akce";
/* Class = "NSMenu"; title = "Actions"; ObjectID = "598"; */
"598.title" = "Akce";
/* Class = "NSMenuItem"; title = "Send Marked to Trash"; ObjectID = "599"; */
"599.title" = "Vyhodit označené do koše";
/* Class = "NSMenuItem"; title = "Move Marked to..."; ObjectID = "600"; */
"600.title" = "Označené přesunout...";
/* Class = "NSMenuItem"; title = "Copy Marked to..."; ObjectID = "601"; */
"601.title" = "Označené kopírovat...";
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "602"; */
"602.title" = "Výběr jako reference";
/* Class = "NSMenuItem"; title = "Remove Marked from Results"; ObjectID = "603"; */
"603.title" = "Odstranit označené z výsledků";
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "605"; */
"605.title" = "Odstranit výběr z výsledků";
/* Class = "NSMenuItem"; title = "Columns"; ObjectID = "618"; */
"618.title" = "Sloupce";
/* Class = "NSMenu"; title = "Columns"; ObjectID = "619"; */
"619.title" = "Sloupce";
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "708"; */
"708.title" = "Vybrané otevřít výchozí aplikací";
/* Class = "NSMenuItem"; title = "Reveal Selected in Finder"; ObjectID = "710"; */
"710.title" = "Vybrané otevřít ve Finderu";
/* Class = "NSMenuItem"; title = "Add Selected to Ignore List"; ObjectID = "922"; */
"922.title" = "Přidat výběr na seznam výjimek";
/* Class = "NSMenuItem"; title = "Close Window"; ObjectID = "924"; */
"924.title" = "Zavřít okno";
/* Class = "NSMenuItem"; title = "Start Duplicate Scan"; ObjectID = "926"; */
"926.title" = "Spustit hledání duplicit";
/* Class = "NSMenuItem"; title = "Clear Ignore List"; ObjectID = "927"; */
"927.title" = "Vyčistit seznam výjimek";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "933"; */
"933.title" = "Vybrané přejmenovat";
/* Class = "NSMenuItem"; title = "Export Results to XHTML"; ObjectID = "947"; */
"947.title" = "Exportovat výsledky do XHTML";
/* Class = "NSMenuItem"; title = "Check for update..."; ObjectID = "950"; */
"950.title" = "Zkontrolovat aktualizace...";
/* Class = "NSMenuItem"; title = "Mode"; ObjectID = "959"; */
"959.title" = "Režim";
/* Class = "NSMenu"; title = "Mode"; ObjectID = "960"; */
"960.title" = "Režim";
/* Class = "NSMenuItem"; title = "Show Dupes Only"; ObjectID = "961"; */
"961.title" = "Zobrazit pouze duplicity";
/* Class = "NSMenuItem"; title = "Show Delta Values"; ObjectID = "962"; */
"962.title" = "Zobrazit rozdíly";
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "965"; */
"965.title" = "Upravit";
/* Class = "NSMenu"; title = "Edit"; ObjectID = "966"; */
"966.title" = "Upravit";
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "985"; */
"985.title" = "Vyjmout";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "986"; */
"986.title" = "Kopírovat";
/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "991"; */
"991.title" = "Vložit";
/* Class = "NSMenuItem"; title = "Mark All"; ObjectID = "1011"; */
"1011.title" = "Označit vše";
/* Class = "NSMenuItem"; title = "Mark None"; ObjectID = "1012"; */
"1012.title" = "Zrušit označení";
/* Class = "NSMenuItem"; title = "Invert Marking"; ObjectID = "1013"; */
"1013.title" = "Invertovat označení";
/* Class = "NSMenuItem"; title = "Mark Selected"; ObjectID = "1014"; */
"1014.title" = "Označit vybrané";
/* Class = "NSMenuItem"; title = "dupeGuru Website"; ObjectID = "1023"; */
"1023.title" = "dupeGuru Website";
/* Class = "NSMenuItem"; title = "Invoke Custom Command"; ObjectID = "1177"; */
"1177.title" = "Spustit vlastní příkaz";
/* Class = "NSMenuItem"; title = "File"; ObjectID = "1203"; */
"1203.title" = "Soubor";
/* Class = "NSMenu"; title = "File"; ObjectID = "1204"; */
"1204.title" = "Soubor";
/* Class = "NSMenuItem"; title = "Load Results..."; ObjectID = "1205"; */
"1205.title" = "Nahrát výsledky...";
/* Class = "NSMenuItem"; title = "Save Results..."; ObjectID = "1206"; */
"1206.title" = "Uložit výsledky...";
/* Class = "NSMenuItem"; title = "Delete Marked and Replace with Hardlinks"; ObjectID = "1227"; */
"1227.title" = "Označené nahradit pevnými odkazy";
/* Class = "NSMenuItem"; title = "Load Recent Results"; ObjectID = "1239"; */
"1239.title" = "Nahrát nedávné výsledky";
/* Class = "NSMenu"; title = "Load Recent Results"; ObjectID = "1240"; */
"1240.title" = "Nahrát nedávné výsledky";
/* Class = "NSMenuItem"; title = "Results Window"; ObjectID = "1272"; */
"1272.title" = "Okno s výsledky";
/* Class = "NSMenuItem"; title = "Re-Prioritize Results"; ObjectID = "1276"; */
"1276.title" = "Změnit prioritu výsledků";

View File

@@ -1,12 +0,0 @@
/* Class = "NSWindow"; title = "Re-Prioritize duplicates"; ObjectID = "1"; */
"1.title" = "Změnit prioritu duplicit";
/* Class = "NSButtonCell"; title = "Ok"; ObjectID = "37"; */
"37.title" = "Ok";
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "39"; */
"39.title" = "Zrušit";
/* 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" = "Do pole vpravo přidejte kritéria a klepnutím na tlačítko OK odešlete duplicity, které těmto kritériím vyhovují do referenčního umístění příslušné skupiny. Více informací naleznete v nápovědě.";

View File

@@ -1,12 +0,0 @@
/* Class = "NSWindow"; title = "Problems!"; ObjectID = "1"; */
"1.title" = "Problémy!";
/* 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" = "Při zpracování některých (nebo všech) souborů se vyskytly problémy. Jejich příčina je popsána v tabulce dole. Dotčené soubory nebyli odstraněny z výsledků.";
/* Class = "NSButtonCell"; title = "Close"; ObjectID = "19"; */
"19.title" = "Zavřít";
/* Class = "NSButtonCell"; title = "Reveal Selected"; ObjectID = "21"; */
"21.title" = "Ukázat vybrané ve správci souborů";

View File

@@ -1,96 +0,0 @@
/* Class = "NSWindow"; title = "dupeGuru Results"; ObjectID = "1"; */
"1.title" = "Výsledky dupeGuru";
/* Class = "NSTextFieldCell"; title = "Marked: 0 files, 0 B. Total: 0 files, 0 B."; ObjectID = "6"; */
"6.title" = "Označeno: 0 souborů, 0 B. Celkem: 0 souborů, 0 B.";
/* Class = "NSToolbarItem"; label = "Options"; ObjectID = "15"; */
"15.label" = "Možnosti";
/* Class = "NSToolbarItem"; paletteLabel = "Options"; ObjectID = "15"; */
"15.paletteLabel" = "Možnosti";
/* Class = "NSToolbarItem"; label = "Filter"; ObjectID = "16"; */
"16.label" = "Filtr";
/* Class = "NSToolbarItem"; paletteLabel = "Filter"; ObjectID = "16"; */
"16.paletteLabel" = "Filtr";
/* Class = "NSToolbarItem"; label = "Action"; ObjectID = "17"; */
"17.label" = "Akce";
/* Class = "NSToolbarItem"; paletteLabel = "Action"; ObjectID = "17"; */
"17.paletteLabel" = "Akce";
/* Class = "NSToolbarItem"; label = "Directories"; ObjectID = "19"; */
"19.label" = "Adresáře";
/* Class = "NSToolbarItem"; paletteLabel = "Directories"; ObjectID = "19"; */
"19.paletteLabel" = "Adresáře";
/* Class = "NSMenuItem"; title = "Delete Marked and Replace with Hardlinks"; ObjectID = "27"; */
"27.title" = "Označené nahradit pevnými odkazy";
/* Class = "NSMenuItem"; title = "Send Marked to Trash"; ObjectID = "29"; */
"29.title" = "Vyhodit označené do koše";
/* Class = "NSMenuItem"; title = "Move Marked to..."; ObjectID = "30"; */
"30.title" = "Označené přesunout...";
/* Class = "NSMenuItem"; title = "Copy Marked to..."; ObjectID = "31"; */
"31.title" = "Označené kopírovat...";
/* Class = "NSMenuItem"; title = "Remove Marked from Results"; ObjectID = "32"; */
"32.title" = "Odstranit označené z výsledků";
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "34"; */
"34.title" = "Odstranit výběr z výsledků";
/* Class = "NSMenuItem"; title = "Add Selected to Ignore List"; ObjectID = "35"; */
"35.title" = "Přidat výběr na seznam výjimek";
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "36"; */
"36.title" = "Výběr jako reference";
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "38"; */
"38.title" = "Vybrané otevřít výchozí aplikací";
/* Class = "NSMenuItem"; title = "Reveal Selected in Finder"; ObjectID = "39"; */
"39.title" = "Vybrané otevřít ve Finderu";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "40"; */
"40.title" = "Vybrané přejmenovat";
/* Class = "NSSearchFieldCell"; placeholderString = "Filter"; ObjectID = "42"; */
"42.placeholderString" = "Filtr";
/* Class = "NSSegmentedCell"; 44.ibShadowedLabels[0] = "Details"; ObjectID = "44"; */
"44.ibShadowedLabels[0]" = "Detaily";
/* Class = "NSSegmentedCell"; 44.ibShadowedLabels[1] = "Dupes Only"; ObjectID = "44"; */
"44.ibShadowedLabels[1]" = "Jen duplicity";
/* 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" = "Přidat výběr na seznam výjimek";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "70"; */
"70.title" = "Vybrané přejmenovat";
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "71"; */
"71.title" = "Odstranit výběr z výsledků";
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "72"; */
"72.title" = "Výběr jako reference";
/* Class = "NSMenuItem"; title = "Reveal Selected in Finder"; ObjectID = "73"; */
"73.title" = "Vybrané otevřít ve Finderu";
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "74"; */
"74.title" = "Vybrané otevřít výchozí aplikací";

View File

@@ -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" = "Ausgewählt";
/* Class = "NSTableColumn"; headerCell.title = "Reference"; ObjectID = "10"; */
"10.headerCell.title" = "Referenz";
/* Class = "NSTableColumn"; headerCell.title = "Attribute"; ObjectID = "11"; */
"11.headerCell.title" = "Attribut";

View File

@@ -1,23 +0,0 @@
/* Class = "NSTableColumn"; headerCell.title = "State"; ObjectID = "13"; */
"13.headerCell.title" = "Zustand";
/* 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" = "Referenz";
/* Class = "NSMenuItem"; title = "Excluded"; ObjectID = "57"; */
"57.title" = "Ausgeschlossen";
/* Class = "NSTextFieldCell"; title = "Select folders to scan and press \"Scan\"."; ObjectID = "71"; */
"71.title" = "Zu scannende Ordner auswählen und \"Scan\" drücken.";
/* Class = "NSButtonCell"; title = "Load Results"; ObjectID = "73"; */
"73.title" = "Lade Ergebnisse";

View File

@@ -1,11 +0,0 @@
/* Class = "NSWindow"; title = "Sorry, I must insist"; ObjectID = "1"; */
"1.title" = "Entschuldigung, ich muss darauf beharren";
/* Class = "NSTextFieldCell"; title = "This reminder showed up because:1. You are processing more than 100 duplicates2. You have not yet contributed to dupeGuru3. There are unpaid hours in the project"; ObjectID = "4"; */
"4.title" = "Diese Erinnerung erschien, weil:\n \n1. Mehr als 100 Duplikate verarbeitet wurden\n2. Sie noch nicht an dupeGuru gespendet haben\n3. Es unbezahlte Arbeitstunden im Projekt gibt";
/* Class = "NSTextFieldCell"; title = "It seems that you found a lot of duplicates. Nice! I must insist, however, that contributions are expected when there are unpaid hours on the project.You might think \"but I'm only going to use this once, I don't have to contribute\". The problem is that most people use dupeGuru only once in a while. If everyone thinks like that, dupeGuru development cannot be funded.If you can't afford to contribute, you can ignore this reminder or send me an e-mail at hsoft@hardcoded.net so I can give you a key to remove this reminder."; ObjectID = "6"; */
"6.title" = "Scheinbar haben Sie eine Menge Duplikate gefunden. Schön! Ich muss Sie jedoch daran erinnern das Spenden gewünscht werden, wenn noch nicht alle Arbeitsstunden bezahlt wurden.\n\nSie denken vielleicht \"aber ich nutze dieses Programm doch nur einmal, da brauche ich nicht zu spenden\". Das Problem ist, das die meisten Menschen dupeGuru nur sehr selten nutzen. Wenn jeder so denkt kann die Entwicklung von dupeGuru nicht finanziert werden. Aufgrund dieser, dem Wesen von dupeGuru innenliegenden Eigenschaft, muss ich hier auf Ihre Unterstützung bestehen. \n\nWenn Sie es sich nicht leisten können zu spenden, können Sie diese Erinnerung entweder ignorieren oder mir eine Nachricht an hsoft@hardcoded.net schicken, damit ich ihnen einen Schlüssel gebe um diesen Hinweis zu entfernen.";
/* Class = "NSButtonCell"; title = "Contribute"; ObjectID = "10"; */
"10.title" = "Spenden";

View File

@@ -1,39 +0,0 @@
"Add New Folder..." = "Add New Folder...";
"Load from file..." = "Load from file...";
"Reset to Default" = "Reset to Default";
"Select a results file to load" = "Wählen Sie eine Ergebnisliste zum Laden aus.";
"You have unsaved results, do you really want to quit?" = "Sie haben ungespeicherte Ergebnisse. Wollen Sie wirklich beenden?";
"Select a directory to copy marked files to" = "Select a directory to copy marked files to";
"Select a directory to move marked files to" = "Select a directory to move marked files to";
"Select a file to save your results to" = "Datei zum Speichern der Ergebnisliste auswählen.";
"Select a folder to add to the scanning list" = "Wählen Sie einen Ordner aus, um ihn der Scanliste hinzuzufügen.";
"You have unsaved results, do you really want to continue?" = "Sie haben ungespeicherte Ergebnisse. Möchten Sie wirklich fortfahren?";
"'%@' already is in the list." = "'%@' already is in the list.";
"'%@' does not exist." = "'%@' does not exist.";
"You are about to remove %d files from results. Continue?" = "%d Dateien werden aus der Ergebnisliste entfernt. Fortfahren?";
"The name '%@' already exists." = "The name '%@' already exists.";
"You are about to send %d files to Trash. Continue?" = "%d Dateien werden in den Mülleimer zu verschoben. Fortfahren?";
"You are about to send %d files to Trash (and hardlink them afterwards). Continue?" = "%d Dateien werden gelöscht und mit physikalischen Verknüpfungen ersetzt. Fortfahren?";
"Do you really want to remove all %d items from the ignore list?" = "Möchten Sie wirklich alle %d Einträge aus der Ignorier-Liste löschen?";
"All selected %d matches are going to be ignored in all subsequent scans. Continue?" = "%d Dateien werden in zukünftigen Scans ignoriert werden. Fortfahren?";
"You have no custom command set up. Set it up in your preferences." = "Sie haben keinen eigenen Befehl erstellt. Bitte in den Einstellungen konfigurieren.";
"All marked files were copied sucessfully." = "All marked files were copied sucessfully.";
"All marked files were moved sucessfully." = "All marked files were moved sucessfully.";
"All marked files were sucessfully sent to Trash." = "All marked files were sucessfully sent to Trash.";
"No duplicates found." = "Keine Duplikate gefunden.";
"A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again." = "Eine vorherige Aktion ist noch in der Bearbeitung. Sie können noch keine Neue starten. Warten Sie einige Sekunden und versuchen es erneut.";
"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?" = "Möchten Sie wirklich alle zwischengespeicherten Bildanalysen entfernen?";
"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" = "Bildzwischenspeicher leeren";
"Yes" = "Yes";
"No" = "No";
"OK" = "OK";

View File

@@ -1,177 +0,0 @@
/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "5"; */
"5.title" = "Alle nach vorne bringen";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Fenster";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Im Dock ablegen";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Fenster";
/* Class = "NSMenuItem"; title = "About dupeGuru"; ObjectID = "58"; */
"58.title" = "Über dupeGuru";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Hilfe";
/* Class = "NSMenu"; title = "Help"; ObjectID = "106"; */
"106.title" = "Hilfe";
/* Class = "NSMenuItem"; title = "dupeGuru Help"; ObjectID = "111"; */
"111.title" = "dupeGuru Hilfe";
/* Class = "NSMenuItem"; title = "Hide dupeGuru"; ObjectID = "134"; */
"134.title" = "dupeGuru ausblenden";
/* Class = "NSMenuItem"; title = "Quit dupeGuru"; ObjectID = "136"; */
"136.title" = "dupeGuru beenden";
/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "145"; */
"145.title" = "Andere ausblenden";
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Alle einblenden";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "197"; */
"197.title" = "Zoomen";
/* 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" = "Aktionen";
/* Class = "NSMenu"; title = "Actions"; ObjectID = "598"; */
"598.title" = "Aktionen";
/* 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" = "Verschiebe Markierte nach...";
/* Class = "NSMenuItem"; title = "Copy Marked to..."; ObjectID = "601"; */
"601.title" = "Kopiere Markierte nach...";
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "602"; */
"602.title" = "Mache Ausgewählte zur Referenz";
/* Class = "NSMenuItem"; title = "Remove Marked from Results"; ObjectID = "603"; */
"603.title" = "Entferne Markierte aus den Ergebnissen";
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "605"; */
"605.title" = "Entferne Ausgewählte aus den Ergebnissen";
/* Class = "NSMenuItem"; title = "Columns"; ObjectID = "618"; */
"618.title" = "Spalten";
/* Class = "NSMenu"; title = "Columns"; ObjectID = "619"; */
"619.title" = "Spalten";
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "708"; */
"708.title" = "Öffne Ausgewählte mit Standardanwendung";
/* 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" = "Füge Ausgewählte der Ignorier-Liste hinzu";
/* Class = "NSMenuItem"; title = "Close Window"; ObjectID = "924"; */
"924.title" = "Fenster Schließen";
/* Class = "NSMenuItem"; title = "Start Duplicate Scan"; ObjectID = "926"; */
"926.title" = "Start Duplicate Scan";
/* Class = "NSMenuItem"; title = "Clear Ignore List"; ObjectID = "927"; */
"927.title" = "Ignorier-Liste leeren";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "933"; */
"933.title" = "Ausgewählte umbenennen";
/* 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" = "Nur Duplikate anzeigen";
/* Class = "NSMenuItem"; title = "Show Delta Values"; ObjectID = "962"; */
"962.title" = "Zeige Deltawerte";
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "965"; */
"965.title" = "Bearbeiten";
/* Class = "NSMenu"; title = "Edit"; ObjectID = "966"; */
"966.title" = "Bearbeiten";
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "985"; */
"985.title" = "Ausschneiden";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "986"; */
"986.title" = "Kopieren";
/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "991"; */
"991.title" = "Einsetzen";
/* Class = "NSMenuItem"; title = "Mark All"; ObjectID = "1011"; */
"1011.title" = "Alles markieren";
/* Class = "NSMenuItem"; title = "Mark None"; ObjectID = "1012"; */
"1012.title" = "Nichts markieren";
/* Class = "NSMenuItem"; title = "Invert Marking"; ObjectID = "1013"; */
"1013.title" = "Markierung invertieren";
/* Class = "NSMenuItem"; title = "Mark Selected"; ObjectID = "1014"; */
"1014.title" = "Ausgewählte markieren";
/* Class = "NSMenuItem"; title = "dupeGuru Website"; ObjectID = "1023"; */
"1023.title" = "dupeGuru Website";
/* Class = "NSMenuItem"; title = "Invoke Custom Command"; ObjectID = "1177"; */
"1177.title" = "Eigenen Befehl ausführen";
/* Class = "NSMenuItem"; title = "File"; ObjectID = "1203"; */
"1203.title" = "Ablage";
/* Class = "NSMenu"; title = "File"; ObjectID = "1204"; */
"1204.title" = "Ablage";
/* Class = "NSMenuItem"; title = "Load Results..."; ObjectID = "1205"; */
"1205.title" = "Lade Ergebnisse...";
/* Class = "NSMenuItem"; title = "Save Results..."; ObjectID = "1206"; */
"1206.title" = "Speichere Ergebnisse...";
/* Class = "NSMenuItem"; title = "Delete Marked and Replace with Hardlinks"; ObjectID = "1227"; */
"1227.title" = "Lösche Markierte und ersetze mit Hardlinks";
/* Class = "NSMenuItem"; title = "Load Recent Results"; ObjectID = "1239"; */
"1239.title" = "Lade letzte Ergebnisse";
/* Class = "NSMenu"; title = "Load Recent Results"; ObjectID = "1240"; */
"1240.title" = "Lade letzte Ergebnisse";
/* Class = "NSMenuItem"; title = "Results Window"; ObjectID = "1272"; */
"1272.title" = "Ergebnisfenster";
/* Class = "NSMenuItem"; title = "Re-Prioritize Results"; ObjectID = "1276"; */
"1276.title" = "Re-Prioritize Results";

View File

@@ -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.";

View File

@@ -1,12 +0,0 @@
/* Class = "NSWindow"; title = "Problems!"; ObjectID = "1"; */
"1.title" = "Probleme!";
/* 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" = "Es gab Probleme bei der Verarbeitung einiger (aller) Dateien. Der Grund der Probleme ist unten in der Tabelle beschrieben.";
/* Class = "NSButtonCell"; title = "Close"; ObjectID = "19"; */
"19.title" = "Schließen";
/* Class = "NSButtonCell"; title = "Reveal Selected"; ObjectID = "21"; */
"21.title" = "Zeige Markierte";

View File

@@ -1,96 +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 = "Delete Marked and Replace with Hardlinks"; ObjectID = "27"; */
"27.title" = "Lösche Markierte und ersetze mit Hardlinks";
/* 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" = "Verschiebe Markierte nach...";
/* Class = "NSMenuItem"; title = "Copy Marked to..."; ObjectID = "31"; */
"31.title" = "Kopiere Markierte nach...";
/* Class = "NSMenuItem"; title = "Remove Marked from Results"; ObjectID = "32"; */
"32.title" = "Entferne Markierte aus den Ergebnissen";
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "34"; */
"34.title" = "Entferne Ausgewählte aus den Ergebnissen";
/* Class = "NSMenuItem"; title = "Add Selected to Ignore List"; ObjectID = "35"; */
"35.title" = "Füge Ausgewählte der Ignorier-Liste hinzu";
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "36"; */
"36.title" = "Mache Ausgewählte zur Referenz";
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "38"; */
"38.title" = "Öffne Ausgewählte mit Standardanwendung";
/* Class = "NSMenuItem"; title = "Reveal Selected in Finder"; ObjectID = "39"; */
"39.title" = "Reveal Selected in Finder";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "40"; */
"40.title" = "Ausgewählte umbenennen";
/* 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" = "Füge Ausgewählte der Ignorier-Liste hinzu";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "70"; */
"70.title" = "Ausgewählte umbenennen";
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "71"; */
"71.title" = "Entferne Ausgewählte aus den Ergebnissen";
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "72"; */
"72.title" = "Mache Ausgewählte zur Referenz";
/* 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" = "Öffne Ausgewählte mit Standardanwendung";

View File

@@ -2,13 +2,13 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1060</int>
<string key="IBDocument.SystemVersion">11C74</string>
<string key="IBDocument.InterfaceBuilderVersion">1938</string>
<string key="IBDocument.AppKitVersion">1138.23</string>
<string key="IBDocument.HIToolboxVersion">567.00</string>
<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">1938</string>
<string key="NS.object.0">2182</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>NSTextField</string>
@@ -48,7 +48,7 @@
<object class="NSWindowTemplate" id="970147395">
<int key="NSWindowStyleMask">11</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{387, 265}, {395, 294}}</string>
<string key="NSWindowRect">{{387, 265}, {422, 294}}</string>
<int key="NSWTFlags">1886913536</int>
<string key="NSWindowTitle">dupeGuru</string>
<string key="NSWindowClass">NSWindow</string>
@@ -72,14 +72,14 @@
<object class="NSOutlineView" id="10140319">
<reference key="NSNextResponder" ref="514281221"/>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{353, 183}</string>
<string key="NSFrameSize">{380, 183}</string>
<reference key="NSSuperview" ref="514281221"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="885660940">
<reference key="NSNextResponder" ref="395832192"/>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{353, 17}</string>
<string key="NSFrameSize">{380, 17}</string>
<reference key="NSSuperview" ref="395832192"/>
<reference key="NSWindow"/>
<reference key="NSTableView" ref="10140319"/>
@@ -94,7 +94,7 @@
<array class="NSMutableArray" key="NSTableColumns">
<object class="NSTableColumn" id="547470852">
<string key="NSIdentifier">name</string>
<double key="NSWidth">262</double>
<double key="NSWidth">289</double>
<double key="NSMinWidth">16</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
@@ -247,7 +247,7 @@
<int key="NSTableViewGroupRowStyle">1</int>
</object>
</array>
<string key="NSFrame">{{1, 17}, {353, 183}}</string>
<string key="NSFrame">{{1, 17}, {380, 183}}</string>
<reference key="NSSuperview" ref="242279311"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="10140319"/>
@@ -282,7 +282,7 @@
<array class="NSMutableArray" key="NSSubviews">
<reference ref="885660940"/>
</array>
<string key="NSFrame">{{1, 0}, {353, 17}}</string>
<string key="NSFrame">{{1, 0}, {380, 17}}</string>
<reference key="NSSuperview" ref="242279311"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="885660940"/>
@@ -292,7 +292,7 @@
</object>
<reference ref="950325122"/>
</array>
<string key="NSFrame">{{20, 48}, {355, 201}}</string>
<string key="NSFrame">{{20, 48}, {382, 201}}</string>
<reference key="NSSuperview" ref="53314480"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="514281221"/>
@@ -387,7 +387,7 @@
<object class="NSButton" id="580397230">
<reference key="NSNextResponder" ref="53314480"/>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{251, 12}, {130, 32}}</string>
<string key="NSFrame">{{278, 13}, {130, 32}}</string>
<reference key="NSSuperview" ref="53314480"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
@@ -459,7 +459,7 @@
<object class="NSTextField" id="186572573">
<reference key="NSNextResponder" ref="53314480"/>
<int key="NSvFlags">266</int>
<string key="NSFrame">{{17, 257}, {361, 17}}</string>
<string key="NSFrame">{{17, 257}, {388, 17}}</string>
<reference key="NSSuperview" ref="53314480"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
@@ -481,7 +481,7 @@
<object class="NSButton" id="84918337">
<reference key="NSNextResponder" ref="53314480"/>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{121, 12}, {130, 32}}</string>
<string key="NSFrame">{{148, 13}, {130, 32}}</string>
<reference key="NSSuperview" ref="53314480"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
@@ -500,7 +500,7 @@
</object>
</object>
</array>
<string key="NSFrameSize">{395, 294}</string>
<string key="NSFrameSize">{422, 294}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
</object>
@@ -577,6 +577,14 @@
</object>
<int key="connectionID">78</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">loadResultsButton</string>
<reference key="source" ref="566600593"/>
<reference key="destination" ref="84918337"/>
</object>
<int key="connectionID">79</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">startScanning:</string>
@@ -889,7 +897,7 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">78</int>
<int key="maxID">79</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -902,6 +910,7 @@
<string key="openWebsite:">id</string>
<string key="showAboutBox:">id</string>
<string key="showDirectoryWindow:">id</string>
<string key="showIgnoreList:">id</string>
<string key="showPreferencesPanel:">id</string>
<string key="showResultWindow:">id</string>
<string key="startScanning:">id</string>
@@ -927,6 +936,10 @@
<string key="name">showDirectoryWindow:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="showIgnoreList:">
<string key="name">showIgnoreList:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="showPreferencesPanel:">
<string key="name">showPreferencesPanel:</string>
<string key="candidateClassName">id</string>
@@ -943,7 +956,6 @@
<dictionary class="NSMutableDictionary" key="outlets">
<string key="actionsMenu">NSMenu</string>
<string key="columnsMenu">NSMenu</string>
<string key="py">PyDupeGuruBase</string>
<string key="recentResultsMenu">NSMenu</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
@@ -955,10 +967,6 @@
<string key="name">columnsMenu</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo" key="py">
<string key="name">py</string>
<string key="candidateClassName">PyDupeGuruBase</string>
</object>
<object class="IBToOneOutletInfo" key="recentResultsMenu">
<string key="name">recentResultsMenu</string>
<string key="candidateClassName">NSMenu</string>
@@ -999,6 +1007,7 @@
<dictionary class="NSMutableDictionary" key="outlets">
<string key="addButtonPopUp">NSPopUpButton</string>
<string key="loadRecentButtonPopUp">NSPopUpButton</string>
<string key="loadResultsButton">NSButton</string>
<string key="outlineView">HSOutlineView</string>
<string key="removeButton">NSButton</string>
</dictionary>
@@ -1011,6 +1020,10 @@
<string key="name">loadRecentButtonPopUp</string>
<string key="candidateClassName">NSPopUpButton</string>
</object>
<object class="IBToOneOutletInfo" key="loadResultsButton">
<string key="name">loadResultsButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="outlineView">
<string key="name">outlineView</string>
<string key="candidateClassName">HSOutlineView</string>
@@ -1044,30 +1057,6 @@
<string key="minorKey">./Classes/HSOutlineView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">PyApp</string>
<string key="superclassName">PyFairware</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/PyApp.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">PyDupeGuruBase</string>
<string key="superclassName">PyApp</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/PyDupeGuruBase.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">PyFairware</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/PyFairware.h</string>
</object>
</object>
</array>
</object>
<int key="IBDocument.localizationMode">0</int>

View File

@@ -1,11 +0,0 @@
/* Class = "NSWindow"; title = "Sorry, I must insist"; ObjectID = "1"; */
"1.title" = "Sorry, I must insist";
/* Class = "NSTextFieldCell"; title = "This reminder showed up because:1. You are processing more than 100 duplicates2. You have not yet contributed to dupeGuru3. There are unpaid hours in the project"; ObjectID = "4"; */
"4.title" = "This reminder showed up because:\n\n1. You are processing more than 100 duplicates\n2. You have not yet contributed to dupeGuru\n3. There are unpaid hours in the project";
/* Class = "NSTextFieldCell"; title = "It seems that you found a lot of duplicates. Nice! I must insist, however, that contributions are expected when there are unpaid hours on the project.You might think \"but I'm only going to use this once, I don't have to contribute\". The problem is that most people use dupeGuru only once in a while. If everyone thinks like that, dupeGuru development cannot be funded.If you can't afford to contribute, you can ignore this reminder or send me an e-mail at hsoft@hardcoded.net so I can give you a key to remove this reminder."; ObjectID = "6"; */
"6.title" = "It seems that you found a lot of duplicates. Nice! I must insist, however, that contributions are expected when there are unpaid hours on the project.\n\nYou might think \"but I'm only going to use this once, I don't have to contribute\". The problem is that most people use dupeGuru only once in a while. If everyone thinks like that, dupeGuru development cannot be funded. It's because of this tendency inherent to dupeGuru's nature that I have to insist here.\n\nIf you can't afford to contribute, you can ignore this reminder or send me an e-mail at hsoft@hardcoded.net so I can give you a key to remove this reminder.";
/* Class = "NSButtonCell"; title = "Contribute"; ObjectID = "10"; */
"10.title" = "Contribute";

View File

@@ -1,402 +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">11C74</string>
<string key="IBDocument.InterfaceBuilderVersion">1938</string>
<string key="IBDocument.AppKitVersion">1138.23</string>
<string key="IBDocument.HIToolboxVersion">567.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">1938</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>NSTextField</string>
<string>NSView</string>
<string>NSWindowTemplate</string>
<string>NSCustomObject</string>
<string>NSButtonCell</string>
<string>NSButton</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">ExtraFairwareReminder</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">1</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{418, 295}, {480, 390}}</string>
<int key="NSWTFlags">1081606144</int>
<string key="NSWindowTitle">Sorry, I must insist</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="NSTextField" id="359672030">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 48}, {446, 85}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="789504727"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="855705720">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents">This reminder showed up because:1. You are processing more than 100 duplicates2. You have not yet contributed to dupeGuru3. There are unpaid hours in the project</string>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande-Bold</string>
<double key="NSSize">12</double>
<int key="NSfFlags">16</int>
</object>
<reference key="NSControlView" ref="359672030"/>
<object class="NSColor" key="NSBackgroundColor" id="732565682">
<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="873511993">
<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="450147645">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 141}, {446, 229}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="359672030"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="307619415">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">205520896</int>
<object class="NSMutableString" key="NSContents">
<bytes key="NS.bytes">SXQgc2VlbXMgdGhhdCB5b3UgZm91bmQgYSBsb3Qgb2YgZHVwbGljYXRlcy4gTmljZSEgSSBtdXN0IGlu
c2lzdCwgaG93ZXZlciwgdGhhdCBjb250cmlidXRpb25zIGFyZSBleHBlY3RlZCB3aGVuIHRoZXJlIGFy
ZSB1bnBhaWQgaG91cnMgb24gdGhlIHByb2plY3Qu4oCo4oCoWW91IG1pZ2h0IHRoaW5rICJidXQgSSdt
IG9ubHkgZ29pbmcgdG8gdXNlIHRoaXMgb25jZSwgSSBkb24ndCBoYXZlIHRvIGNvbnRyaWJ1dGUiLiBU
aGUgcHJvYmxlbSBpcyB0aGF0IG1vc3QgcGVvcGxlIHVzZSBkdXBlR3VydSBvbmx5IG9uY2UgaW4gYSB3
aGlsZS4gSWYgZXZlcnlvbmUgdGhpbmtzIGxpa2UgdGhhdCwgZHVwZUd1cnUgZGV2ZWxvcG1lbnQgY2Fu
bm90IGJlIGZ1bmRlZC4gSXQncyBiZWNhdXNlIG9mIHRoaXMgdGVuZGVuY3kgaW5oZXJlbnQgdG8gZHVw
ZUd1cnUncyBuYXR1cmUgdGhhdCBJIGhhdmUgdG8gaW5zaXN0IGhlcmUu4oCo4oCoSWYgeW91IGNhbid0
IGFmZm9yZCB0byBjb250cmlidXRlLCB5b3UgY2FuIGlnbm9yZSB0aGlzIHJlbWluZGVyIG9yIHNlbmQg
bWUgYW4gZS1tYWlsIGF0IGhzb2Z0QGhhcmRjb2RlZC5uZXQgc28gSSBjYW4gZ2l2ZSB5b3UgYSBrZXkg
dG8gcmVtb3ZlIHRoaXMgcmVtaW5kZXIuA</bytes>
</object>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">12</double>
<int key="NSfFlags">16</int>
</object>
<reference key="NSControlView" ref="450147645"/>
<reference key="NSBackgroundColor" ref="732565682"/>
<reference key="NSTextColor" ref="873511993"/>
</object>
</object>
<object class="NSButton" id="858267836">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{338, 12}, {128, 32}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="444055328">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Continue</string>
<object class="NSFont" key="NSSupport" id="534597488">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">13</double>
<int key="NSfFlags">1044</int>
</object>
<reference key="NSControlView" ref="858267836"/>
<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="789504727">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{210, 12}, {128, 32}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="858267836"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="639557916">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Contribute</string>
<reference key="NSSupport" ref="534597488"/>
<reference key="NSControlView" ref="789504727"/>
<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>
</array>
<string key="NSFrameSize">{480, 390}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="450147645"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</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="IBActionConnection" key="connection">
<string key="label">contribute:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="789504727"/>
</object>
<int key="connectionID">11</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">continue:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="858267836"/>
</object>
<int key="connectionID">12</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">13</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">continueButton</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="858267836"/>
</object>
<int key="connectionID">14</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="450147645"/>
<reference ref="359672030"/>
<reference ref="858267836"/>
<reference ref="789504727"/>
</array>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">3</int>
<reference key="object" ref="359672030"/>
<array class="NSMutableArray" key="children">
<reference ref="855705720"/>
</array>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="855705720"/>
<reference key="parent" ref="359672030"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">5</int>
<reference key="object" ref="450147645"/>
<array class="NSMutableArray" key="children">
<reference ref="307619415"/>
</array>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">6</int>
<reference key="object" ref="307619415"/>
<reference key="parent" ref="450147645"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">7</int>
<reference key="object" ref="858267836"/>
<array class="NSMutableArray" key="children">
<reference ref="444055328"/>
</array>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">8</int>
<reference key="object" ref="444055328"/>
<reference key="parent" ref="858267836"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">9</int>
<reference key="object" ref="789504727"/>
<array class="NSMutableArray" key="children">
<reference ref="639557916"/>
</array>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">10</int>
<reference key="object" ref="639557916"/>
<reference key="parent" ref="789504727"/>
</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">{{418, 295}, {480, 390}}</string>
<boolean value="NO" key="1.NSWindowTemplate.visibleAtLaunch"/>
<string key="10.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="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">14</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">ExtraFairwareReminder</string>
<string key="superclassName">HSWindowController</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="continue:">id</string>
<string key="contribute:">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="continue:">
<string key="name">continue:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="contribute:">
<string key="name">contribute:</string>
<string key="candidateClassName">id</string>
</object>
</dictionary>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">continueButton</string>
<string key="NS.object.0">NSButton</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">continueButton</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">continueButton</string>
<string key="candidateClassName">NSButton</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/ExtraFairwareReminder.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>
<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>

View File

@@ -0,0 +1,12 @@
/* 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";

View File

@@ -0,0 +1,504 @@
<?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>

View File

@@ -4,24 +4,12 @@
"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?";
"Select a directory to copy marked files to" = "Select a directory to copy marked files to";
"Select a directory to move marked files to" = "Select a directory to move marked files to";
"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.";
"You are about to remove %d files from results. Continue?" = "You are about to remove %d files from results. Continue?";
"The name '%@' already exists." = "The name '%@' already exists.";
"You are about to send %d files to Trash. Continue?" = "You are about to send %d files to Trash. Continue?";
"You are about to send %d files to Trash (and hardlink them afterwards). Continue?" = "You are about to send %d files to Trash (and hardlink them afterwards). Continue?";
"Do you really want to remove all %d items from the ignore list?" = "Do you really want to remove all %d items from the ignore list?";
"All selected %d matches are going to be ignored in all subsequent scans. Continue?" = "All selected %d matches are going to be ignored in all subsequent scans. Continue?";
"You have no custom command set up. Set it up in your preferences." = "You have no custom command set up. Set it up in your preferences.";
"All marked files were copied sucessfully." = "All marked files were copied sucessfully.";
"All marked files were moved sucessfully." = "All marked files were moved sucessfully.";
"All marked files were sucessfully sent to Trash." = "All marked files were sucessfully sent to Trash.";
"No duplicates found." = "No duplicates found.";
"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";

View File

@@ -92,9 +92,6 @@
/* Class = "NSMenuItem"; title = "Start Duplicate Scan"; ObjectID = "926"; */
"926.title" = "Start Duplicate Scan";
/* Class = "NSMenuItem"; title = "Clear Ignore List"; ObjectID = "927"; */
"927.title" = "Clear Ignore List";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "933"; */
"933.title" = "Rename Selected";
@@ -175,3 +172,6 @@
/* Class = "NSMenuItem"; title = "Re-Prioritize Results"; ObjectID = "1276"; */
"1276.title" = "Re-Prioritize Results";
/* Class = "NSMenuItem"; title = "Ignore List"; ObjectID = "1283"; */
"1283.title" = "Ignore List";

View File

@@ -2,13 +2,13 @@
<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>
<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">1617</string>
<string key="NS.object.0">2177</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>NSMenu</string>
@@ -18,7 +18,10 @@
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</array>
<dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/>
<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="248533267">
<object class="NSCustomObject" id="77446904">
<string key="NSClassName">NSApplication</string>
@@ -315,15 +318,6 @@
<reference key="NSOnImage" ref="34697260"/>
<reference key="NSMixedImage" ref="201180191"/>
</object>
<object class="NSMenuItem" id="578499792">
<reference key="NSMenu" ref="600111647"/>
<string key="NSTitle">Clear Ignore List</string>
<string key="NSKeyEquiv">G</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="34697260"/>
<reference key="NSMixedImage" ref="201180191"/>
</object>
<object class="NSMenuItem" id="189815600">
<reference key="NSMenu" ref="600111647"/>
<bool key="NSIsDisabled">YES</bool>
@@ -550,6 +544,14 @@
<reference key="NSOnImage" ref="34697260"/>
<reference key="NSMixedImage" ref="201180191"/>
</object>
<object class="NSMenuItem" id="361987512">
<reference key="NSMenu" ref="472719764"/>
<string key="NSTitle">Ignore List</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="34697260"/>
<reference key="NSMixedImage" ref="201180191"/>
</object>
<object class="NSMenuItem" id="961037837">
<reference key="NSMenu" ref="472719764"/>
<string key="NSTitle">Details Panel</string>
@@ -668,31 +670,12 @@
<object class="NSCustomObject" id="91622651">
<string key="NSClassName">AppDelegate</string>
</object>
<object class="NSCustomObject" id="875360857">
<string key="NSClassName">PyDupeGuru</string>
</object>
<object class="NSCustomObject" id="23220930">
<string key="NSClassName">SUUpdater</string>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array class="NSMutableArray" key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">performMiniaturize:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="1033736835"/>
</object>
<int key="connectionID">37</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">arrangeInFront:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="941358624"/>
</object>
<int key="connectionID">39</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">terminate:</string>
@@ -725,14 +708,6 @@
</object>
<int key="connectionID">153</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">performZoom:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="781972485"/>
</object>
<int key="connectionID">198</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">delegate</string>
@@ -742,20 +717,28 @@
<int key="connectionID">207</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="133452984"/>
<reference key="destination" ref="91622651"/>
<object class="IBActionConnection" key="connection">
<string key="label">performMiniaturize:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="1033736835"/>
</object>
<int key="connectionID">208</int>
<int key="connectionID">37</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">py</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="875360857"/>
<object class="IBActionConnection" key="connection">
<string key="label">arrangeInFront:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="941358624"/>
</object>
<int key="connectionID">614</int>
<int key="connectionID">39</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">performZoom:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="781972485"/>
</object>
<int key="connectionID">198</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
@@ -765,14 +748,6 @@
</object>
<int key="connectionID">925</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">checkForUpdates:</string>
<reference key="source" ref="23220930"/>
<reference key="destination" ref="688262014"/>
</object>
<int key="connectionID">951</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">cut:</string>
@@ -797,54 +772,6 @@
</object>
<int key="connectionID">1005</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">openWebsite:</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="440547877"/>
</object>
<int key="connectionID">1024</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="23220930"/>
<reference key="destination" ref="91622651"/>
</object>
<int key="connectionID">1175</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">showAboutBox:</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="436112936"/>
</object>
<int key="connectionID">1232</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">openHelp:</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="914881560"/>
</object>
<int key="connectionID">1233</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">recentResultsMenu</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="782784943"/>
</object>
<int key="connectionID">1242</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">clearIgnoreList:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="578499792"/>
</object>
<int key="connectionID">1243</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">copyMarked:</string>
@@ -1013,6 +940,70 @@
</object>
<int key="connectionID">1266</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">reprioritizeResults:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="200019883"/>
</object>
<int key="connectionID">1278</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">removeMarked:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="733607971"/>
</object>
<int key="connectionID">1279</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">toggleQuicklookPanel:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="343354529"/>
</object>
<int key="connectionID">1282</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="133452984"/>
<reference key="destination" ref="91622651"/>
</object>
<int key="connectionID">208</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">openWebsite:</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="440547877"/>
</object>
<int key="connectionID">1024</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">showAboutBox:</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="436112936"/>
</object>
<int key="connectionID">1232</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">openHelp:</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="914881560"/>
</object>
<int key="connectionID">1233</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">recentResultsMenu</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="782784943"/>
</object>
<int key="connectionID">1242</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">columnsMenu</string>
@@ -1063,27 +1054,27 @@
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">reprioritizeResults:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="200019883"/>
<string key="label">showIgnoreList:</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="361987512"/>
</object>
<int key="connectionID">1278</int>
<int key="connectionID">1285</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">removeMarked:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="733607971"/>
<string key="label">checkForUpdates:</string>
<reference key="source" ref="23220930"/>
<reference key="destination" ref="688262014"/>
</object>
<int key="connectionID">1279</int>
<int key="connectionID">951</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">toggleQuicklookPanel:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="343354529"/>
<object class="IBOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="23220930"/>
<reference key="destination" ref="91622651"/>
</object>
<int key="connectionID">1282</int>
<int key="connectionID">1175</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
@@ -1150,6 +1141,7 @@
<reference ref="762484626"/>
<reference ref="937862901"/>
<reference ref="343354529"/>
<reference ref="361987512"/>
</array>
<reference key="parent" ref="751320875"/>
</object>
@@ -1318,7 +1310,6 @@
<reference ref="616313144"/>
<reference ref="904423169"/>
<reference ref="1035429435"/>
<reference ref="578499792"/>
<reference ref="189815600"/>
<reference ref="564101661"/>
<reference ref="747820446"/>
@@ -1383,11 +1374,6 @@
<reference key="object" ref="1035429435"/>
<reference key="parent" ref="600111647"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">927</int>
<reference key="object" ref="578499792"/>
<reference key="parent" ref="600111647"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">928</int>
<reference key="object" ref="189815600"/>
@@ -1508,12 +1494,6 @@
<reference key="parent" ref="0"/>
<string key="objectName">AppDelegate</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">613</int>
<reference key="object" ref="875360857"/>
<reference key="parent" ref="0"/>
<string key="objectName">PyDupeGuru</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">949</int>
<reference key="object" ref="23220930"/>
@@ -1598,6 +1578,11 @@
<reference key="object" ref="343354529"/>
<reference key="parent" ref="472719764"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1283</int>
<reference key="object" ref="361987512"/>
<reference key="parent" ref="472719764"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -1624,6 +1609,7 @@
<string key="1272.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1276.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1280.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1283.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="136.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="144.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1654,7 +1640,6 @@
<string key="603.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="604.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="605.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="613.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="618.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="619.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="707.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1664,7 +1649,6 @@
<string key="922.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="924.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="926.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="927.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="928.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="933.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="947.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1684,7 +1668,7 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">1282</int>
<int key="maxID">1285</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -1705,6 +1689,7 @@
<string key="openWebsite:">id</string>
<string key="showAboutBox:">id</string>
<string key="showDirectoryWindow:">id</string>
<string key="showIgnoreList:">id</string>
<string key="showPreferencesPanel:">id</string>
<string key="showResultWindow:">id</string>
<string key="startScanning:">id</string>
@@ -1730,6 +1715,10 @@
<string key="name">showDirectoryWindow:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="showIgnoreList:">
<string key="name">showIgnoreList:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="showPreferencesPanel:">
<string key="name">showPreferencesPanel:</string>
<string key="candidateClassName">id</string>
@@ -1746,7 +1735,6 @@
<dictionary class="NSMutableDictionary" key="outlets">
<string key="actionsMenu">NSMenu</string>
<string key="columnsMenu">NSMenu</string>
<string key="py">PyDupeGuruBase</string>
<string key="recentResultsMenu">NSMenu</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
@@ -1758,10 +1746,6 @@
<string key="name">columnsMenu</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo" key="py">
<string key="name">py</string>
<string key="candidateClassName">PyDupeGuruBase</string>
</object>
<object class="IBToOneOutletInfo" key="recentResultsMenu">
<string key="name">recentResultsMenu</string>
<string key="candidateClassName">NSMenu</string>
@@ -1772,6 +1756,25 @@
<string key="minorKey">./Classes/AppDelegateBase.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">HSOutlineView</string>
<string key="superclassName">NSOutlineView</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">copy:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">copy:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">copy:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/HSOutlineView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">HSTableView</string>
<string key="superclassName">NSTableView</string>
@@ -1781,33 +1784,15 @@
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">HSWindowController</string>
<string key="className">IgnoreListDialog</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>
<object class="IBPartialClassDescription">
<string key="className">PrioritizeDialog</string>
<string key="superclassName">HSWindowController</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="addSelected:">id</string>
<string key="cancel:">id</string>
<string key="ok:">id</string>
<string key="clear:">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>
<object class="IBActionInfo" key="clear:">
<string key="name">clear:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="removeSelected:">
@@ -1815,33 +1800,25 @@
<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 class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">ignoreListTableView</string>
<string key="NS.object.0">NSTableView</string>
</object>
<object class="IBToOneOutletInfo" key="criteriaTableView">
<string key="name">criteriaTableView</string>
<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 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>
<string key="minorKey">./Classes/IgnoreListDialog.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">ProblemDialog</string>
<string key="superclassName">HSWindowController</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>
@@ -1869,44 +1846,11 @@
<string key="minorKey">./Classes/ProblemDialog.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">PyApp</string>
<string key="superclassName">PyFairware</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/PyApp.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">PyDupeGuru</string>
<string key="superclassName">PyDupeGuruBase</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/PyDupeGuru.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">PyDupeGuruBase</string>
<string key="superclassName">PyApp</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/PyDupeGuruBase.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">PyFairware</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/PyFairware.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">ResultWindowBase</string>
<string key="superclassName">NSWindowController</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="changeOptions:">id</string>
<string key="clearIgnoreList:">id</string>
<string key="copyMarked:">id</string>
<string key="deleteMarked:">id</string>
<string key="exportToXHTML:">id</string>
@@ -1941,10 +1885,6 @@
<string key="name">changeOptions:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="clearIgnoreList:">
<string key="name">clearIgnoreList:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="copyMarked:">
<string key="name">copyMarked:</string>
<string key="candidateClassName">id</string>
@@ -2127,7 +2067,7 @@
</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"/>
<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>
@@ -2136,8 +2076,8 @@
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="NSMenuCheckmark">{9, 8}</string>
<string key="NSMenuMixedState">{7, 2}</string>
<string key="NSMenuCheckmark">{11, 11}</string>
<string key="NSMenuMixedState">{10, 3}</string>
</dictionary>
</data>
</archive>

View File

@@ -2,13 +2,13 @@
<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>
<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">1617</string>
<string key="NS.object.0">2182</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>NSTextField</string>
@@ -29,7 +29,10 @@
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</array>
<dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/>
<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>
@@ -411,7 +414,7 @@
<object class="NSButton" id="620738811">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{513, 12}, {82, 32}}</string>
<string key="NSFrame">{{495, 12}, {100, 32}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
@@ -435,7 +438,7 @@
<object class="NSButton" id="955319632">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{431, 12}, {82, 32}}</string>
<string key="NSFrame">{{395, 12}, {100, 32}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="620738811"/>
@@ -602,9 +605,9 @@
<reference ref="386461059"/>
<reference ref="878293971"/>
<reference ref="596965746"/>
<reference ref="687805562"/>
<reference ref="620738811"/>
<reference ref="955319632"/>
<reference ref="687805562"/>
</array>
<reference key="parent" ref="1005"/>
</object>
@@ -821,17 +824,9 @@
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<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>
<object class="IBPartialClassDescription">
<string key="className">PrioritizeDialog</string>
<string key="superclassName">HSWindowController</string>
<string key="superclassName">NSWindowController</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="addSelected:">id</string>
<string key="cancel:">id</string>
@@ -888,6 +883,10 @@
<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"/>

View File

@@ -2,13 +2,13 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1060</int>
<string key="IBDocument.SystemVersion">11C74</string>
<string key="IBDocument.InterfaceBuilderVersion">1938</string>
<string key="IBDocument.AppKitVersion">1138.23</string>
<string key="IBDocument.HIToolboxVersion">567.00</string>
<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">1938</string>
<string key="NS.object.0">2182</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>NSTextField</string>
@@ -214,7 +214,7 @@
<object class="NSButton" id="4380169">
<reference key="NSNextResponder" ref="976198330"/>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{370, 12}, {96, 32}}</string>
<string key="NSFrame">{{356, 12}, {110, 32}}</string>
<reference key="NSSuperview" ref="976198330"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
@@ -239,7 +239,7 @@
<object class="NSButton" id="253286088">
<reference key="NSNextResponder" ref="976198330"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{14, 12}, {137, 32}}</string>
<string key="NSFrame">{{14, 12}, {162, 32}}</string>
<reference key="NSSuperview" ref="976198330"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
@@ -262,7 +262,7 @@
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">YES</bool>
</object>
@@ -448,17 +448,9 @@
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<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>
<object class="IBPartialClassDescription">
<string key="className">ProblemDialog</string>
<string key="superclassName">HSWindowController</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>

View File

@@ -2,13 +2,13 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1060</int>
<string key="IBDocument.SystemVersion">11C74</string>
<string key="IBDocument.InterfaceBuilderVersion">1938</string>
<string key="IBDocument.AppKitVersion">1138.23</string>
<string key="IBDocument.HIToolboxVersion">567.00</string>
<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">1938</string>
<string key="NS.object.0">2182</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>NSPopUpButton</string>
@@ -157,9 +157,12 @@
<string key="NSToolbarItemPaletteLabel">Options</string>
<nil key="NSToolbarItemToolTip"/>
<object class="NSSegmentedControl" key="NSToolbarItemView" id="452019408">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{0, 14}, {195, 23}}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSSegmentedCell" key="NSCell" id="993391476">
<int key="NSCellFlags">67239424</int>
@@ -212,9 +215,12 @@
<string key="NSToolbarItemPaletteLabel">Filter</string>
<nil key="NSToolbarItemToolTip"/>
<object class="NSSearchField" key="NSToolbarItemView" id="363479146">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder"/>
<int key="NSvFlags">258</int>
<string key="NSFrame">{{0, 14}, {81, 22}}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSSearchFieldCell" key="NSCell" id="830851754">
<int key="NSCellFlags">343014976</int>
@@ -302,9 +308,12 @@
<string key="NSToolbarItemPaletteLabel">Quick Look</string>
<nil key="NSToolbarItemToolTip"/>
<object class="NSButton" key="NSToolbarItemView" id="796071131">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{12, 14}, {44, 25}}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:161</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="560045192">
@@ -367,9 +376,12 @@
<string key="NSToolbarItemPaletteLabel">Action</string>
<nil key="NSToolbarItemToolTip"/>
<object class="NSPopUpButton" key="NSToolbarItemView" id="1050768959">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<string key="NSFrame">{{1, 14}, {40, 25}}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="302095930">
<int key="NSCellFlags">-2076049856</int>
@@ -1014,6 +1026,14 @@
</object>
<int key="connectionID">87</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">optionsToolbarItem</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="234109357"/>
</object>
<int key="connectionID">92</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">showDirectoryWindow:</string>
@@ -1450,7 +1470,7 @@
<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>
<integer value="0" key="44.IBNSSegmentedControlInspectorSelectedSegmentMetadataKey"/>
<integer value="2" key="44.IBNSSegmentedControlInspectorSelectedSegmentMetadataKey"/>
<string key="44.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="2" key="44.IBSegmentedControlInspectorSelectedSegmentMetadataKey"/>
<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1476,7 +1496,7 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">90</int>
<int key="maxID">92</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -1489,6 +1509,7 @@
<string key="openWebsite:">id</string>
<string key="showAboutBox:">id</string>
<string key="showDirectoryWindow:">id</string>
<string key="showIgnoreList:">id</string>
<string key="showPreferencesPanel:">id</string>
<string key="showResultWindow:">id</string>
<string key="startScanning:">id</string>
@@ -1514,6 +1535,10 @@
<string key="name">showDirectoryWindow:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="showIgnoreList:">
<string key="name">showIgnoreList:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="showPreferencesPanel:">
<string key="name">showPreferencesPanel:</string>
<string key="candidateClassName">id</string>
@@ -1530,7 +1555,6 @@
<dictionary class="NSMutableDictionary" key="outlets">
<string key="actionsMenu">NSMenu</string>
<string key="columnsMenu">NSMenu</string>
<string key="py">PyDupeGuruBase</string>
<string key="recentResultsMenu">NSMenu</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
@@ -1542,10 +1566,6 @@
<string key="name">columnsMenu</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo" key="py">
<string key="name">py</string>
<string key="candidateClassName">PyDupeGuruBase</string>
</object>
<object class="IBToOneOutletInfo" key="recentResultsMenu">
<string key="name">recentResultsMenu</string>
<string key="candidateClassName">NSMenu</string>
@@ -1564,33 +1584,20 @@
<string key="minorKey">./Classes/HSTableView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">PyApp</string>
<string key="superclassName">PyFairware</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/PyApp.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">PyDupeGuruBase</string>
<string key="superclassName">PyApp</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/PyDupeGuruBase.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">PyFairware</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/PyFairware.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">ResultWindow</string>
<string key="superclassName">ResultWindowBase</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">removeDeadTracks:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">removeDeadTracks:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">removeDeadTracks:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/ResultWindow.h</string>
@@ -1601,7 +1608,6 @@
<string key="superclassName">NSWindowController</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="changeOptions:">id</string>
<string key="clearIgnoreList:">id</string>
<string key="copyMarked:">id</string>
<string key="deleteMarked:">id</string>
<string key="exportToXHTML:">id</string>
@@ -1636,10 +1642,6 @@
<string key="name">changeOptions:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="clearIgnoreList:">
<string key="name">clearIgnoreList:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="copyMarked:">
<string key="name">copyMarked:</string>
<string key="candidateClassName">id</string>
@@ -1757,6 +1759,7 @@
<string key="filterField">NSSearchField</string>
<string key="matches">HSTableView</string>
<string key="optionsSwitch">NSSegmentedControl</string>
<string key="optionsToolbarItem">NSToolbarItem</string>
<string key="stats">NSTextField</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
@@ -1772,6 +1775,10 @@
<string key="name">optionsSwitch</string>
<string key="candidateClassName">NSSegmentedControl</string>
</object>
<object class="IBToOneOutletInfo" key="optionsToolbarItem">
<string key="name">optionsToolbarItem</string>
<string key="candidateClassName">NSToolbarItem</string>
</object>
<object class="IBToOneOutletInfo" key="stats">
<string key="name">stats</string>
<string key="candidateClassName">NSTextField</string>
@@ -1802,8 +1809,8 @@
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="NSActionTemplate">{15, 15}</string>
<string key="NSMenuCheckmark">{9, 8}</string>
<string key="NSMenuMixedState">{7, 2}</string>
<string key="NSMenuCheckmark">{11, 11}</string>
<string key="NSMenuMixedState">{10, 3}</string>
<string key="NSQuickLookTemplate">{21, 16}</string>
<string key="folder32">{32, 32}</string>
</dictionary>

View File

@@ -1,12 +0,0 @@
/* Class = "NSPanel"; title = "Details of Selected File"; ObjectID = "5"; */
"5.title" = "Détails du fichier sélectionné";
/* Class = "NSTableColumn"; headerCell.title = "Selected"; ObjectID = "9"; */
"9.headerCell.title" = "Sélectionné";
/* Class = "NSTableColumn"; headerCell.title = "Reference"; ObjectID = "10"; */
"10.headerCell.title" = "Référence";
/* Class = "NSTableColumn"; headerCell.title = "Attribute"; ObjectID = "11"; */
"11.headerCell.title" = "Attribut";

View File

@@ -1,23 +0,0 @@
/* Class = "NSTableColumn"; headerCell.title = "State"; ObjectID = "13"; */
"13.headerCell.title" = "Type";
/* Class = "NSTableColumn"; headerCell.title = "Name"; ObjectID = "15"; */
"15.headerCell.title" = "Nom";
/* 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" = "Référence";
/* Class = "NSMenuItem"; title = "Excluded"; ObjectID = "57"; */
"57.title" = "Exclu";
/* Class = "NSTextFieldCell"; title = "Select folders to scan and press \"Scan\"."; ObjectID = "71"; */
"71.title" = "Sélectionnez les dossiers à scanner puis faites \"Scan\".";
/* Class = "NSButtonCell"; title = "Load Results"; ObjectID = "73"; */
"73.title" = "Charger";

View File

@@ -1,11 +0,0 @@
/* Class = "NSWindow"; title = "Sorry, I must insist"; ObjectID = "1"; */
"1.title" = "Désolé, je dois insister";
/* Class = "NSTextFieldCell"; title = "This reminder showed up because:1. You are processing more than 100 duplicates2. You have not yet contributed to dupeGuru3. There are unpaid hours in the project"; ObjectID = "4"; */
"4.title" = "Ce rappel apparaît parce que:\n\n1. Plus de 100 doublons sont traités\n2. Vous n'avez pas encore contribué à dupeGuru\n3. Il y a des heures non-payées au projet";
/* Class = "NSTextFieldCell"; title = "It seems that you found a lot of duplicates. Nice! I must insist, however, that contributions are expected when there are unpaid hours on the project.You might think \"but I'm only going to use this once, I don't have to contribute\". The problem is that most people use dupeGuru only once in a while. If everyone thinks like that, dupeGuru development cannot be funded.If you can't afford to contribute, you can ignore this reminder or send me an e-mail at hsoft@hardcoded.net so I can give you a key to remove this reminder."; ObjectID = "6"; */
"6.title" = "Il semble que vous ayez trouvé beaucoup de doublons. Super! Je dois par contre insister que des contributions sont attendues lorsqu'il y'a des heures non-payées au projet.\n\nVous pensez peut-être \"je n'utiliserai ce programme qu'une fois, pas besoin de contribuer\". Le problème c'est que la plupart des utilisateurs de dupeGuru ne l'utilisent qu'une fois. Si tous suivent ce raisonnement, le développement de dupeGuru ne peut pas continuer. C'est à cause de cette tendance inhérente à la nature de dupeGuru que je me vois contraint d'insister ici.\n\nSi vous n'avez pas les moyens de contribuer, ignorez ce message ou envoyez moi un message à hsoft@hardcoded.net pour que je vous envoie une clé d'enregistrement.";
/* Class = "NSButtonCell"; title = "Contribute"; ObjectID = "10"; */
"10.title" = "Contribuer";

View File

@@ -1,39 +0,0 @@
"Add New Folder..." = "Ajouter dossier...";
"Load from file..." = "Charger un fichier...";
"Reset to Default" = "Colonnes par défault";
"Select a results file to load" = "Sélectionnez un fichier résultats à charger";
"You have unsaved results, do you really want to quit?" = "Vos résultats ne sont pas sauvegardés. Voulez-vous vraiment quitter?";
"Select a directory to copy marked files to" = "Sélectionnez un dossier vers lequel copier les fichiers";
"Select a directory to move marked files to" = "Sélectionnez un dossier vers lequel déplacer les fichiers";
"Select a file to save your results to" = "Sélectionnez un fichier résultats dans lequel sauvegarder";
"Select a folder to add to the scanning list" = "Sélectionnez un dossier à ajouter à la liste";
"You have unsaved results, do you really want to continue?" = "Vos résultats ne sont pas sauvegardés. Voulez-vous vraiment continuer?";
"'%@' already is in the list." = "'%@' est déjà dans la liste.";
"'%@' does not exist." = "'%@' n'existe pas.";
"You are about to remove %d files from results. Continue?" = "%d fichiers seront retirés des résultats. Continuer?";
"The name '%@' already exists." = "Le nom '%@' existe déjà.";
"You are about to send %d files to Trash. Continue?" = "%d fichiers seront envoyés à la corbeille. Continuer?";
"You are about to send %d files to Trash (and hardlink them afterwards). Continue?" = "%d fichiers seront envoyés à la corbeille (puis 'hardlinkés'). Continuer?";
"Do you really want to remove all %d items from the ignore list?" = "Voulez-vous vider la liste de fichiers ignorés des %d items qu'elle contient?";
"All selected %d matches are going to be ignored in all subsequent scans. Continue?" = "%d fichiers seront ignorés des prochains scans. Continuer?";
"You have no custom command set up. Set it up in your preferences." = "Vous n'avez pas de commande personnalisée. Ajoutez-la dans vos préférences.";
"All marked files were copied sucessfully." = "Tous les fichiers marqués ont été copiés correctement.";
"All marked files were moved sucessfully." = "Tous les fichiers déplacés ont été copiés correctement.";
"All marked files were sucessfully sent to Trash." = "Tous les fichiers marqués ont été correctement envoyés à la corbeille.";
"No duplicates found." = "Aucun doublon trouvé.";
"A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again." = "Une action précédente est encore en cours. Attendez quelques secondes avant d'en repartir une nouvelle.";
"Your iTunes Library contains %d dead tracks ready to be removed. Continue?" = "Votre librairie iTunes contient %d tracks mortes qui seront retirées. Continuer?";
"You have no dead tracks in your iTunes Library" = "Votre librairie iTunes ne contient aucune track morte.";
"Do you really want to remove all your cached picture analysis?" = "Voulez-vous vraiment vider la cache de vos analyses précédentes?";
"Add iTunes Directory" = "Ajouter librairie iTunes";
"Remove Dead Tracks in iTunes" = "Retirer les tracks mortes dans iTunes";
"Add iPhoto Library" = "Ajouter librairie iPhoto";
"Clear Picture Cache" = "Vider la cache d'images";
"Yes" = "Oui";
"No" = "Non";
"OK" = "OK";

View File

@@ -1,177 +0,0 @@
/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "5"; */
"5.title" = "Tout ramener au premier plan";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Fenêtre";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Placer dans le Dock";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Fenêtre";
/* Class = "NSMenuItem"; title = "About dupeGuru"; ObjectID = "58"; */
"58.title" = "À propos de dupeGuru";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Aide";
/* Class = "NSMenu"; title = "Help"; ObjectID = "106"; */
"106.title" = "Aide";
/* Class = "NSMenuItem"; title = "dupeGuru Help"; ObjectID = "111"; */
"111.title" = "Aide dupeGuru";
/* Class = "NSMenuItem"; title = "Hide dupeGuru"; ObjectID = "134"; */
"134.title" = "Masquer dupeGuru";
/* Class = "NSMenuItem"; title = "Quit dupeGuru"; ObjectID = "136"; */
"136.title" = "Quitter dupeGuru";
/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "145"; */
"145.title" = "Masquer les autres";
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Tout afficher";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "197"; */
"197.title" = "Réduire/agrandir";
/* Class = "NSMenuItem"; title = "Details Panel"; ObjectID = "398"; */
"398.title" = "Fenêtre de détails";
/* Class = "NSMenuItem"; title = "Preferences..."; ObjectID = "541"; */
"541.title" = "Préférences...";
/* Class = "NSMenuItem"; title = "Folder Selection Window"; ObjectID = "579"; */
"579.title" = "Fenêtre de sélection de dossiers";
/* 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" = "Envoyer marqués à la corbeille";
/* Class = "NSMenuItem"; title = "Move Marked to..."; ObjectID = "600"; */
"600.title" = "Déplacer marqués vers...";
/* Class = "NSMenuItem"; title = "Copy Marked to..."; ObjectID = "601"; */
"601.title" = "Copier marqués vers...";
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "602"; */
"602.title" = "Transformer sélectionnés en références";
/* Class = "NSMenuItem"; title = "Remove Marked from Results"; ObjectID = "603"; */
"603.title" = "Retirer marqués des résultats";
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "605"; */
"605.title" = "Retirer sélectionnés des résultats";
/* Class = "NSMenuItem"; title = "Columns"; ObjectID = "618"; */
"618.title" = "Colonnes";
/* Class = "NSMenu"; title = "Columns"; ObjectID = "619"; */
"619.title" = "Colonnes";
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "708"; */
"708.title" = "Ouvrir sélectionné avec l'application par défaut";
/* Class = "NSMenuItem"; title = "Reveal Selected in Finder"; ObjectID = "710"; */
"710.title" = "Révéler sélectionné dans Finder";
/* Class = "NSMenuItem"; title = "Add Selected to Ignore List"; ObjectID = "922"; */
"922.title" = "Ajouter sélectionnés à la liste de fichiers ignorés";
/* Class = "NSMenuItem"; title = "Close Window"; ObjectID = "924"; */
"924.title" = "Fermer";
/* Class = "NSMenuItem"; title = "Start Duplicate Scan"; ObjectID = "926"; */
"926.title" = "Commencer à scanner";
/* Class = "NSMenuItem"; title = "Clear Ignore List"; ObjectID = "927"; */
"927.title" = "Vider la liste de fichiers ignorés";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "933"; */
"933.title" = "Renommer sélectionné";
/* Class = "NSMenuItem"; title = "Export Results to XHTML"; ObjectID = "947"; */
"947.title" = "Exporter les résultats vers HTML";
/* Class = "NSMenuItem"; title = "Check for update..."; ObjectID = "950"; */
"950.title" = "Mise à jour...";
/* 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" = "Ne pas montrer les références";
/* Class = "NSMenuItem"; title = "Show Delta Values"; ObjectID = "962"; */
"962.title" = "Montrer les valeurs en tant que delta";
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "965"; */
"965.title" = "Édition";
/* Class = "NSMenu"; title = "Edit"; ObjectID = "966"; */
"966.title" = "Édition";
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "985"; */
"985.title" = "Couper";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "986"; */
"986.title" = "Copier";
/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "991"; */
"991.title" = "Coller";
/* Class = "NSMenuItem"; title = "Mark All"; ObjectID = "1011"; */
"1011.title" = "Tout marquer";
/* Class = "NSMenuItem"; title = "Mark None"; ObjectID = "1012"; */
"1012.title" = "Tout démarquer";
/* Class = "NSMenuItem"; title = "Invert Marking"; ObjectID = "1013"; */
"1013.title" = "Inverser le marquage";
/* Class = "NSMenuItem"; title = "Mark Selected"; ObjectID = "1014"; */
"1014.title" = "Marquer sélectionnés";
/* Class = "NSMenuItem"; title = "dupeGuru Website"; ObjectID = "1023"; */
"1023.title" = "Site web de dupeGuru";
/* Class = "NSMenuItem"; title = "Invoke Custom Command"; ObjectID = "1177"; */
"1177.title" = "Invoquer commande personnalisée";
/* Class = "NSMenuItem"; title = "File"; ObjectID = "1203"; */
"1203.title" = "Fichier";
/* Class = "NSMenu"; title = "File"; ObjectID = "1204"; */
"1204.title" = "Fichier";
/* Class = "NSMenuItem"; title = "Load Results..."; ObjectID = "1205"; */
"1205.title" = "Charger résultats...";
/* Class = "NSMenuItem"; title = "Save Results..."; ObjectID = "1206"; */
"1206.title" = "Sauvegarder résultats...";
/* Class = "NSMenuItem"; title = "Delete Marked and Replace with Hardlinks"; ObjectID = "1227"; */
"1227.title" = "Remplacer marqués par des hardlinks";
/* Class = "NSMenuItem"; title = "Load Recent Results"; ObjectID = "1239"; */
"1239.title" = "Charger résultats récents";
/* Class = "NSMenu"; title = "Load Recent Results"; ObjectID = "1240"; */
"1240.title" = "Charger résultats récents";
/* Class = "NSMenuItem"; title = "Results Window"; ObjectID = "1272"; */
"1272.title" = "Fenêtre de résultats";
/* Class = "NSMenuItem"; title = "Re-Prioritize Results"; ObjectID = "1276"; */
"1276.title" = "Re-prioriser les résultats";

View File

@@ -1,12 +0,0 @@
/* Class = "NSWindow"; title = "Re-Prioritize duplicates"; ObjectID = "1"; */
"1.title" = "Re-prioriser les doublons";
/* Class = "NSButtonCell"; title = "Ok"; ObjectID = "37"; */
"37.title" = "Ok";
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "39"; */
"39.title" = "Annuler";
/* 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" = "Ajoutez des critères dans la liste de droite pour envoyer les doublons qui correspondent le plus à ces critère à la position de référence. Une lecture préalable du fichier d'aide est conseillée.";

View File

@@ -1,12 +0,0 @@
/* Class = "NSWindow"; title = "Problems!"; ObjectID = "1"; */
"1.title" = "Problèmes!";
/* 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" = "Des problèmes ont été rencontrés lors du traitement de certains fichiers. La nature de ces problèmes est décrite dans la liste ci-dessous. Ces fichiers n'ont pas été retirés des résultats.";
/* Class = "NSButtonCell"; title = "Close"; ObjectID = "19"; */
"19.title" = "Fermer";
/* Class = "NSButtonCell"; title = "Reveal Selected"; ObjectID = "21"; */
"21.title" = "Révéler Fichier";

View File

@@ -1,96 +0,0 @@
/* Class = "NSWindow"; title = "dupeGuru Results"; ObjectID = "1"; */
"1.title" = "dupeGuru (Résultats)";
/* Class = "NSTextFieldCell"; title = "Marked: 0 files, 0 B. Total: 0 files, 0 B."; ObjectID = "6"; */
"6.title" = "Marqués: 0 fichiers, 0 B. Total: 0 fichiers, 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" = "Filtre";
/* Class = "NSToolbarItem"; paletteLabel = "Filter"; ObjectID = "16"; */
"16.paletteLabel" = "Filtre";
/* 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" = "Dossiers";
/* Class = "NSToolbarItem"; paletteLabel = "Directories"; ObjectID = "19"; */
"19.paletteLabel" = "Dossiers";
/* Class = "NSMenuItem"; title = "Delete Marked and Replace with Hardlinks"; ObjectID = "27"; */
"27.title" = "Remplacer marqués par des hardlinks";
/* Class = "NSMenuItem"; title = "Send Marked to Trash"; ObjectID = "29"; */
"29.title" = "Envoyer marqués à la corbeille";
/* Class = "NSMenuItem"; title = "Move Marked to..."; ObjectID = "30"; */
"30.title" = "Déplacer marqués vers...";
/* Class = "NSMenuItem"; title = "Copy Marked to..."; ObjectID = "31"; */
"31.title" = "Copier marqués vers...";
/* Class = "NSMenuItem"; title = "Remove Marked from Results"; ObjectID = "32"; */
"32.title" = "Retirer marqués des résultats";
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "34"; */
"34.title" = "Retirer sélectionnés des résultats";
/* Class = "NSMenuItem"; title = "Add Selected to Ignore List"; ObjectID = "35"; */
"35.title" = "Ajouter sélectionnés à la liste de fichiers ignorés";
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "36"; */
"36.title" = "Transformer sélectionnés en références";
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "38"; */
"38.title" = "Ouvrir sélectionné avec l'application par défaut";
/* Class = "NSMenuItem"; title = "Reveal Selected in Finder"; ObjectID = "39"; */
"39.title" = "Révéler sélectionné dans Finder";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "40"; */
"40.title" = "Renommer sélectionné";
/* Class = "NSSearchFieldCell"; placeholderString = "Filter"; ObjectID = "42"; */
"42.placeholderString" = "Filtre";
/* Class = "NSSegmentedCell"; 44.ibShadowedLabels[0] = "Details"; ObjectID = "44"; */
"44.ibShadowedLabels[0]" = "Détails";
/* Class = "NSSegmentedCell"; 44.ibShadowedLabels[1] = "Dupes Only"; ObjectID = "44"; */
"44.ibShadowedLabels[1]" = "Sans réf.";
/* 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" = "Ajouter sélectionnés à la liste de fichiers ignorés";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "70"; */
"70.title" = "Renommer sélectionné";
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "71"; */
"71.title" = "Retirer sélectionnés des résultats";
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "72"; */
"72.title" = "Transformer sélectionnés en références";
/* Class = "NSMenuItem"; title = "Reveal Selected in Finder"; ObjectID = "73"; */
"73.title" = "Révéler sélectionné dans Finder";
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "74"; */
"74.title" = "Ouvrir sélectionné avec l'application par défaut";

View File

@@ -1,12 +0,0 @@
/* Class = "NSPanel"; title = "Details of Selected File"; ObjectID = "5"; */
"5.title" = "Dettagli del file selezionato";
/* Class = "NSTableColumn"; headerCell.title = "Selected"; ObjectID = "9"; */
"9.headerCell.title" = "Selezionato";
/* Class = "NSTableColumn"; headerCell.title = "Reference"; ObjectID = "10"; */
"10.headerCell.title" = "Riferimento";
/* Class = "NSTableColumn"; headerCell.title = "Attribute"; ObjectID = "11"; */
"11.headerCell.title" = "Attributo";

View File

@@ -1,23 +0,0 @@
/* Class = "NSTableColumn"; headerCell.title = "State"; ObjectID = "13"; */
"13.headerCell.title" = "Stato";
/* Class = "NSTableColumn"; headerCell.title = "Name"; ObjectID = "15"; */
"15.headerCell.title" = "Nome";
/* Class = "NSButtonCell"; title = "Scan"; ObjectID = "48"; */
"48.title" = "Scansiona";
/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "55"; */
"55.title" = "Normale";
/* Class = "NSMenuItem"; title = "Reference"; ObjectID = "56"; */
"56.title" = "Riferimento";
/* Class = "NSMenuItem"; title = "Excluded"; ObjectID = "57"; */
"57.title" = "Escluso";
/* Class = "NSTextFieldCell"; title = "Select folders to scan and press \"Scan\"."; ObjectID = "71"; */
"71.title" = "Seleziona le cartelle da scansionare e premi \"Scansiona\".";
/* Class = "NSButtonCell"; title = "Load Results"; ObjectID = "73"; */
"73.title" = "Carica i risultati";

View File

@@ -1,11 +0,0 @@
/* Class = "NSWindow"; title = "Sorry, I must insist"; ObjectID = "1"; */
"1.title" = "Chiedo scusa, devo insistere";
/* Class = "NSTextFieldCell"; title = "This reminder showed up because:1. You are processing more than 100 duplicates2. You have not yet contributed to dupeGuru3. There are unpaid hours in the project"; ObjectID = "4"; */
"4.title" = "Questo promemoria viene visualizzato perché:\n\n1. Avete trovato più di 100 duplicati\n2. Non avete ancora contribuito per dupeGuru\n3. Ci sono ore non pagate nel progetto";
/* Class = "NSTextFieldCell"; title = "It seems that you found a lot of duplicates. Nice! I must insist, however, that contributions are expected when there are unpaid hours on the project.You might think \"but I'm only going to use this once, I don't have to contribute\". The problem is that most people use dupeGuru only once in a while. If everyone thinks like that, dupeGuru development cannot be funded.If you can't afford to contribute, you can ignore this reminder or send me an e-mail at hsoft@hardcoded.net so I can give you a key to remove this reminder."; ObjectID = "6"; */
"6.title" = "Sembra che abbiate trovato molti duplicati. Ottimo! Devo insistere, però, affinché contribuiate per tutte le ore non pagate che rimangono nel progetto.\n\nVoi penserete: \"ma io l'userò solo una volta, non devo contribuire\". Il problema è che la maggior parte delle persone userà dupeGuru solo una volta. Se tutti la pensassero così lo sviluppo di dupeGuru non potrebbe proseguire. E' proprio per la natura dei programmi come dupeGuru che devo insistere su questo punto.\n\nSe non siete in grado di offrire questo contributo potete ignorare questo avviso o spedirmi una e-mail a hsoft@hardcoded.net, così che possa darvi un codice per rimuovere questo avviso.";
/* Class = "NSButtonCell"; title = "Contribute"; ObjectID = "10"; */
"10.title" = "Contribuisci";

View File

@@ -1,39 +0,0 @@
"Add New Folder..." = "Aggiungi una nuova cartella...";
"Load from file..." = "Carica dal file...";
"Reset to Default" = "Ripristina le impostazioni predefinite";
"Select a results file to load" = "Seleziona un risultato (file) da caricare";
"You have unsaved results, do you really want to quit?" = "Hai dei risultati non salvati. Vuoi veramente chiudere?";
"Select a directory to copy marked files to" = "Seleziona una cartella in cui copiare i file marcati";
"Select a directory to move marked files to" = "Seleziona una cartella in cui spostare i file marcati";
"Select a file to save your results to" = "Seleziona un file dove salvare i tuoi risultati";
"Select a folder to add to the scanning list" = "Seleziona una cartella da aggiungere alla lista delle cartelle da scansionare";
"You have unsaved results, do you really want to continue?" = "Hai dei risultati non salvati. Vuoi veramente continuare?";
"'%@' already is in the list." = "'%@' è già nella lista.";
"'%@' does not exist." = "'%@' non esiste.";
"You are about to remove %d files from results. Continue?" = "Stai per rimuovere %d file dai risultati. Continuare?";
"The name '%@' already exists." = "Il nome '%@' è già esistente.";
"You are about to send %d files to Trash. Continue?" = "Stai per inviare %d file nel cestino. Continuare?";
"You are about to send %d files to Trash (and hardlink them afterwards). Continue?" = "Stai per inviare %d file nel cestino (compresi gli hardlink). Continuare?";
"Do you really want to remove all %d items from the ignore list?" = "Vuoi veramente rimuovere tutti i %d elementi dalla lista dei file da ignorare?";
"All selected %d matches are going to be ignored in all subsequent scans. Continue?" = "Tutti i %d elementi che coincidono verranno ignorati in tutte le scansioni successive. Continuare?";
"You have no custom command set up. Set it up in your preferences." = "Non hai impostato nessun comando personalizzato. Impostalo nelle tue preferenze.";
"All marked files were copied sucessfully." = "Tutti i file marcati sono stati copiati correttamente.";
"All marked files were moved sucessfully." = "Tutti i file marcati sono stati spostati correttamente.";
"All marked files were sucessfully sent to Trash." = "Tutti i file marcati sono stati inviati nel cestino.";
"No duplicates found." = "Non sono stati trovati dei duplicati.";
"A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again." = "Un'azione precedente è ancora in corso. Non puoi cominciarne una nuova. Aspetta qualche secondo e quindi riprova.";
"Your iTunes Library contains %d dead tracks ready to be removed. Continue?" = "La tua libreria di iTunes contiene %d tracce inesistenti pronte per essere rimosse. Continuare?";
"You have no dead tracks in your iTunes Library" = "La tua libreria di iTunes non contiene tracce inesistenti";
"Do you really want to remove all your cached picture analysis?" = "Vuoi veramente rimuovere tutte le analisi delle immagini memorizzate nella cache?";
"Add iTunes Directory" = "Aggiungi alla lista di iTunes";
"Remove Dead Tracks in iTunes" = "Rimuovi le tracce inesistenti da iTunes";
"Add iPhoto Library" = "Aggiungi alla libreria di iPhoto";
"Clear Picture Cache" = "Cancella la cache delle immagini";
"Yes" = "Si";
"No" = "No";
"OK" = "OK";

View File

@@ -1,177 +0,0 @@
/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "5"; */
"5.title" = "Porta tutto in primo piano";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Finestra";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimizza";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Finestra";
/* Class = "NSMenuItem"; title = "About dupeGuru"; ObjectID = "58"; */
"58.title" = "Informazioni su dupeGuru";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Aiuto";
/* Class = "NSMenu"; title = "Help"; ObjectID = "106"; */
"106.title" = "Aiuto";
/* Class = "NSMenuItem"; title = "dupeGuru Help"; ObjectID = "111"; */
"111.title" = "Aiuto di dupeGuru";
/* Class = "NSMenuItem"; title = "Hide dupeGuru"; ObjectID = "134"; */
"134.title" = "Nascondi dupeGuru";
/* Class = "NSMenuItem"; title = "Quit dupeGuru"; ObjectID = "136"; */
"136.title" = "Chiudi dupeGuru";
/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "145"; */
"145.title" = "Nascondi gli altri";
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Mostra tutto";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "197"; */
"197.title" = "Zoom";
/* Class = "NSMenuItem"; title = "Details Panel"; ObjectID = "398"; */
"398.title" = "Scheda dettagliata";
/* Class = "NSMenuItem"; title = "Preferences..."; ObjectID = "541"; */
"541.title" = "Preferenze...";
/* Class = "NSMenuItem"; title = "Folder Selection Window"; ObjectID = "579"; */
"579.title" = "Finestra di selezione della cartella";
/* Class = "NSMenuItem"; title = "Actions"; ObjectID = "597"; */
"597.title" = "Azioni";
/* Class = "NSMenu"; title = "Actions"; ObjectID = "598"; */
"598.title" = "Azioni";
/* Class = "NSMenuItem"; title = "Send Marked to Trash"; ObjectID = "599"; */
"599.title" = "Sposta gli elementi marcati nel cestino";
/* Class = "NSMenuItem"; title = "Move Marked to..."; ObjectID = "600"; */
"600.title" = "Sposta gli elementi marcati nel...";
/* Class = "NSMenuItem"; title = "Copy Marked to..."; ObjectID = "601"; */
"601.title" = "Copia gli elementi evidenziati nel...";
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "602"; */
"602.title" = "Imposta gli elementi selezionati come riferimento";
/* Class = "NSMenuItem"; title = "Remove Marked from Results"; ObjectID = "603"; */
"603.title" = "Rimuovi gli elementi marcati dai risultati";
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "605"; */
"605.title" = "Rimuovi gli elementi selezionati dai risultati";
/* Class = "NSMenuItem"; title = "Columns"; ObjectID = "618"; */
"618.title" = "Colonne";
/* Class = "NSMenu"; title = "Columns"; ObjectID = "619"; */
"619.title" = "Colonne";
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "708"; */
"708.title" = "Apri gli elementi selezionati con l'applicazione predefinita";
/* Class = "NSMenuItem"; title = "Reveal Selected in Finder"; ObjectID = "710"; */
"710.title" = "Mostra gli elementi selezionati nel Finder";
/* Class = "NSMenuItem"; title = "Add Selected to Ignore List"; ObjectID = "922"; */
"922.title" = "Aggiungi gli elementi selezionati alla lista da ignorare";
/* Class = "NSMenuItem"; title = "Close Window"; ObjectID = "924"; */
"924.title" = "Chiudi la finestra";
/* Class = "NSMenuItem"; title = "Start Duplicate Scan"; ObjectID = "926"; */
"926.title" = "Inizia la scansione dei duplicati";
/* Class = "NSMenuItem"; title = "Clear Ignore List"; ObjectID = "927"; */
"927.title" = "Cancella la lista degli elementi da ignorare";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "933"; */
"933.title" = "Rinomina gli elementi selezionati";
/* Class = "NSMenuItem"; title = "Export Results to XHTML"; ObjectID = "947"; */
"947.title" = "Esporta i risultati in formato XHTML";
/* Class = "NSMenuItem"; title = "Check for update..."; ObjectID = "950"; */
"950.title" = "Controlla gli aggiornamenti...";
/* Class = "NSMenuItem"; title = "Mode"; ObjectID = "959"; */
"959.title" = "Modo";
/* Class = "NSMenu"; title = "Mode"; ObjectID = "960"; */
"960.title" = "Modo";
/* Class = "NSMenuItem"; title = "Show Dupes Only"; ObjectID = "961"; */
"961.title" = "Visualizza solo i duplicati";
/* Class = "NSMenuItem"; title = "Show Delta Values"; ObjectID = "962"; */
"962.title" = "Visualizza le differenze";
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "965"; */
"965.title" = "Edita";
/* Class = "NSMenu"; title = "Edit"; ObjectID = "966"; */
"966.title" = "Edita";
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "985"; */
"985.title" = "Taglia";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "986"; */
"986.title" = "Copia";
/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "991"; */
"991.title" = "Incolla";
/* Class = "NSMenuItem"; title = "Mark All"; ObjectID = "1011"; */
"1011.title" = "Marca tutti";
/* Class = "NSMenuItem"; title = "Mark None"; ObjectID = "1012"; */
"1012.title" = "Deseleziona tutti";
/* Class = "NSMenuItem"; title = "Invert Marking"; ObjectID = "1013"; */
"1013.title" = "Inverti la selezione";
/* Class = "NSMenuItem"; title = "Mark Selected"; ObjectID = "1014"; */
"1014.title" = "Marca i selezionati";
/* Class = "NSMenuItem"; title = "dupeGuru Website"; ObjectID = "1023"; */
"1023.title" = "Sito Web di dupeGuru";
/* Class = "NSMenuItem"; title = "Invoke Custom Command"; ObjectID = "1177"; */
"1177.title" = "Invoca comando personalizzato";
/* 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" = "Carica i risultati...";
/* Class = "NSMenuItem"; title = "Save Results..."; ObjectID = "1206"; */
"1206.title" = "Salva i risultati...";
/* Class = "NSMenuItem"; title = "Delete Marked and Replace with Hardlinks"; ObjectID = "1227"; */
"1227.title" = "Cancella gli elementi marcati e sostituiscili con degli Hardlinks";
/* Class = "NSMenuItem"; title = "Load Recent Results"; ObjectID = "1239"; */
"1239.title" = "Carica i risultati recenti";
/* Class = "NSMenu"; title = "Load Recent Results"; ObjectID = "1240"; */
"1240.title" = "Carica i risultati recenti";
/* Class = "NSMenuItem"; title = "Results Window"; ObjectID = "1272"; */
"1272.title" = "Finestra dei risultati";
/* Class = "NSMenuItem"; title = "Re-Prioritize Results"; ObjectID = "1276"; */
"1276.title" = "Cambia la priorità dei risultati";

View File

@@ -1,12 +0,0 @@
/* Class = "NSWindow"; title = "Re-Prioritize duplicates"; ObjectID = "1"; */
"1.title" = "Cambia la priorità dei duplicati";
/* Class = "NSButtonCell"; title = "Ok"; ObjectID = "37"; */
"37.title" = "Ok";
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "39"; */
"39.title" = "Cancella";
/* 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" = "Aggiungi dei criteri di selezione nel riquadro a destra e clicca su 'OK' per inviare i duplicati che meglio corrispondono a questi criteri al loro gruppo di appartenenza. Per maggiori informazioni leggere il file di 'help'.";

View File

@@ -1,12 +0,0 @@
/* Class = "NSWindow"; title = "Problems!"; ObjectID = "1"; */
"1.title" = "Problemi!";
/* 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" = "Sono stati riscontrati dei problemi elaborando alcuni (o tutti) i file. La causa di questi problemi è descritta nella tabella sottostante. Questi file non stati rimossi dai vostri risultati.";
/* Class = "NSButtonCell"; title = "Close"; ObjectID = "19"; */
"19.title" = "Chiudi";
/* Class = "NSButtonCell"; title = "Reveal Selected"; ObjectID = "21"; */
"21.title" = "Mostra i selezionati";

View File

@@ -1,96 +0,0 @@
/* Class = "NSWindow"; title = "dupeGuru Results"; ObjectID = "1"; */
"1.title" = "Risultati di dupeGuru";
/* Class = "NSTextFieldCell"; title = "Marked: 0 files, 0 B. Total: 0 files, 0 B."; ObjectID = "6"; */
"6.title" = "Marcati: 0 files, 0 B. Totale: 0 files, 0 B.";
/* Class = "NSToolbarItem"; label = "Options"; ObjectID = "15"; */
"15.label" = "Opzioni";
/* Class = "NSToolbarItem"; paletteLabel = "Options"; ObjectID = "15"; */
"15.paletteLabel" = "Opzioni";
/* Class = "NSToolbarItem"; label = "Filter"; ObjectID = "16"; */
"16.label" = "Filtro";
/* Class = "NSToolbarItem"; paletteLabel = "Filter"; ObjectID = "16"; */
"16.paletteLabel" = "Filtro";
/* Class = "NSToolbarItem"; label = "Action"; ObjectID = "17"; */
"17.label" = "Azione";
/* Class = "NSToolbarItem"; paletteLabel = "Action"; ObjectID = "17"; */
"17.paletteLabel" = "Azione";
/* Class = "NSToolbarItem"; label = "Directories"; ObjectID = "19"; */
"19.label" = "Cartelle";
/* Class = "NSToolbarItem"; paletteLabel = "Directories"; ObjectID = "19"; */
"19.paletteLabel" = "Cartelle";
/* Class = "NSMenuItem"; title = "Delete Marked and Replace with Hardlinks"; ObjectID = "27"; */
"27.title" = "Cancella gli elementi marcati e sostituiscili con degli Hardlinks";
/* Class = "NSMenuItem"; title = "Send Marked to Trash"; ObjectID = "29"; */
"29.title" = "Sposta gli elementi marcati nel cestino";
/* Class = "NSMenuItem"; title = "Move Marked to..."; ObjectID = "30"; */
"30.title" = "Sposta gli elementi marcati nel...";
/* Class = "NSMenuItem"; title = "Copy Marked to..."; ObjectID = "31"; */
"31.title" = "Copia gli elementi evidenziati nel...";
/* Class = "NSMenuItem"; title = "Remove Marked from Results"; ObjectID = "32"; */
"32.title" = "Rimuovi gli elementi marcati dai risultati";
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "34"; */
"34.title" = "Rimuovi gli elementi selezionati dai risultati";
/* Class = "NSMenuItem"; title = "Add Selected to Ignore List"; ObjectID = "35"; */
"35.title" = "Aggiungi gli elementi selezionati alla lista da ignorare";
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "36"; */
"36.title" = "Imposta gli elementi selezionati come riferimento";
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "38"; */
"38.title" = "Apri gli elementi selezionati con l'applicazione predefinita";
/* Class = "NSMenuItem"; title = "Reveal Selected in Finder"; ObjectID = "39"; */
"39.title" = "Mostra gli elementi selezionati nel Finder";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "40"; */
"40.title" = "Rinomina gli elementi selezionati";
/* Class = "NSSearchFieldCell"; placeholderString = "Filter"; ObjectID = "42"; */
"42.placeholderString" = "Filtro";
/* Class = "NSSegmentedCell"; 44.ibShadowedLabels[0] = "Details"; ObjectID = "44"; */
"44.ibShadowedLabels[0]" = "Dettagli";
/* Class = "NSSegmentedCell"; 44.ibShadowedLabels[1] = "Dupes Only"; ObjectID = "44"; */
"44.ibShadowedLabels[1]" = "Solo duplicati";
/* 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" = "Aggiungi gli elementi selezionati alla lista da ignorare";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "70"; */
"70.title" = "Rinomina gli elementi selezionati";
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "71"; */
"71.title" = "Rimuovi gli elementi selezionati dai risultati";
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "72"; */
"72.title" = "Imposta gli elementi selezionati come riferimento";
/* Class = "NSMenuItem"; title = "Reveal Selected in Finder"; ObjectID = "73"; */
"73.title" = "Mostra gli elementi selezionati nel Finder";
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "74"; */
"74.title" = "Apri gli elementi selezionati con l'applicazione predefinita";

41
cocoa/base/main.m Normal file
View File

@@ -0,0 +1,41 @@
/*
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 <Python.h>
#import <wchar.h>
#import <locale.h>
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
/* We have to set the locate to UTF8 for mbstowcs() to correctly convert non-ascii chars in paths */
setlocale(LC_ALL, "en_US.UTF-8");
NSString *respath = [[NSBundle mainBundle] resourcePath];
NSString *mainpy = [respath stringByAppendingPathComponent:@"dg_cocoa.py"];
wchar_t wPythonPath[PATH_MAX+1];
NSString *pypath = [respath stringByAppendingPathComponent:@"py"];
mbstowcs(wPythonPath, [pypath fileSystemRepresentation], PATH_MAX+1);
Py_SetPath(wPythonPath);
Py_SetPythonHome(wPythonPath);
Py_Initialize();
PyEval_InitThreads();
PyGILState_STATE gilState = PyGILState_Ensure();
FILE* fp = fopen([mainpy UTF8String], "r");
PyRun_SimpleFile(fp, [mainpy UTF8String]);
fclose(fp);
PyGILState_Release(gilState);
if (gilState == PyGILState_LOCKED) {
PyThreadState_Swap(NULL);
PyEval_ReleaseLock();
}
int result = NSApplicationMain(argc, (const char **) argv);
Py_Finalize();
[pool release];
return result;
}

View File

@@ -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" = "已选择";
/* Class = "NSTableColumn"; headerCell.title = "Reference"; ObjectID = "10"; */
"10.headerCell.title" = "参照文件";
/* Class = "NSTableColumn"; headerCell.title = "Attribute"; ObjectID = "11"; */
"11.headerCell.title" = "属性";

View File

@@ -1,23 +0,0 @@
/* Class = "NSTableColumn"; headerCell.title = "State"; ObjectID = "13"; */
"13.headerCell.title" = "说明";
/* Class = "NSTableColumn"; headerCell.title = "Name"; ObjectID = "15"; */
"15.headerCell.title" = "名称";
/* Class = "NSButtonCell"; title = "Scan"; ObjectID = "48"; */
"48.title" = "扫描";
/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "55"; */
"55.title" = "正常";
/* Class = "NSMenuItem"; title = "Reference"; ObjectID = "56"; */
"56.title" = "参照文件";
/* Class = "NSMenuItem"; title = "Excluded"; ObjectID = "57"; */
"57.title" = "不包含";
/* Class = "NSTextFieldCell"; title = "Select folders to scan and press \"Scan\"."; ObjectID = "71"; */
"71.title" = "请选择要扫描的文件夹,然后点击 \"扫描\"。";
/* Class = "NSButtonCell"; title = "Load Results"; ObjectID = "73"; */
"73.title" = "载入结果";

View File

@@ -1,11 +0,0 @@
/* Class = "NSWindow"; title = "Sorry, I must insist"; ObjectID = "1"; */
"1.title" = "抱歉,现在仍要继续";
/* Class = "NSTextFieldCell"; title = "This reminder showed up because:1. You are processing more than 100 duplicates2. You have not yet contributed to dupeGuru3. There are unpaid hours in the project"; ObjectID = "4"; */
"4.title" = "此提醒框弹出的原因如下:\n\n1. 您正在处理超过100个重复文件\n2. 您没有捐助过dupeGuru\n3. 此软件中还有未支付时间";
/* Class = "NSTextFieldCell"; title = "It seems that you found a lot of duplicates. Nice! I must insist, however, that contributions are expected when there are unpaid hours on the project.You might think \"but I'm only going to use this once, I don't have to contribute\". The problem is that most people use dupeGuru only once in a while. If everyone thinks like that, dupeGuru development cannot be funded.If you can't afford to contribute, you can ignore this reminder or send me an e-mail at hsoft@hardcoded.net so I can give you a key to remove this reminder."; ObjectID = "6"; */
"6.title" = "看起来似乎您找到了很多重复文件。这也是我继续精进这个软件的动力之一。然而,我衷心的希望能够得到您的捐助,因为我会日夜奋战于这个软件并且没有任何报酬。\n\n您可能会觉得 \"反正这个软件我只用一次,我不需要给开发者任何捐助\". 问题是大多数人都只用一次dupeGuru。如果每一位都这样想dupeGuru的开发也就没有资金支持了。也正是因为dupeGuru自身的性质决定了它有着仅用一次的内在倾向所以我还必须坚持致力于这个软件的开发与精进。\n\n如果您无法承担捐助您也可以忽略此提醒或者发送电子邮件至 support@hardcoded.net ,我会发送给您一个注册密钥。";
/* Class = "NSButtonCell"; title = "Contribute"; ObjectID = "10"; */
"10.title" = "捐助";

View File

@@ -1,39 +0,0 @@
"Add New Folder..." = "Add New Folder...";
"Load from file..." = "Load from file...";
"Reset to Default" = "Reset to Default";
"Select a results file to load" = "选择一个结果文件并载入";
"You have unsaved results, do you really want to quit?" = "您还没有保存扫描结果,确定要退出吗?";
"Select a directory to copy marked files to" = "Select a directory to copy marked files to";
"Select a directory to move marked files to" = "Select a directory to move marked files to";
"Select a file to save your results to" = "将结果保存为...";
"Select a folder to add to the scanning list" = "请选择一个文件夹并加入到扫描列表中";
"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.";
"You are about to remove %d files from results. Continue?" = "你将从结果中移除 %d 个文件。继续吗?";
"The name '%@' already exists." = "The name '%@' already exists.";
"You are about to send %d files to Trash. Continue?" = "即将有 %d 个文件被移到回收站。继续吗?";
"You are about to send %d files to Trash (and hardlink them afterwards). Continue?" = "即将有 %d 个文件被移动垃圾桶并删除硬盘上的文件。继续吗?";
"Do you really want to remove all %d items from the ignore list?" = "确定要从忽略列表中移除 %d 项吗?";
"All selected %d matches are going to be ignored in all subsequent scans. Continue?" = "目前已选的 %d 个匹配项将在后续的扫描中被忽略。继续吗?";
"You have no custom command set up. Set it up in your preferences." = "你没有设定自定义命令。请在首选项中进行设定。";
"All marked files were copied sucessfully." = "All marked files were copied sucessfully.";
"All marked files were moved sucessfully." = "All marked files were moved sucessfully.";
"All marked files were sucessfully sent to Trash." = "All marked files were sucessfully sent to Trash.";
"No duplicates found." = "没有找到重复文件。";
"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?" = "确定要移除所有缓存图片?";
"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" = "清空图片缓存";
"Yes" = "Yes";
"No" = "No";
"OK" = "OK";

View File

@@ -1,177 +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" = "关于dupeGuru";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "帮助";
/* Class = "NSMenu"; title = "Help"; ObjectID = "106"; */
"106.title" = "帮助";
/* Class = "NSMenuItem"; title = "dupeGuru Help"; ObjectID = "111"; */
"111.title" = "dupeGuru帮助";
/* 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" = "行为";
/* Class = "NSMenu"; title = "Actions"; ObjectID = "598"; */
"598.title" = "行为";
/* 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" = "将标记的文件移动到...";
/* Class = "NSMenuItem"; title = "Copy Marked to..."; ObjectID = "601"; */
"601.title" = "将标记的文件复制到...";
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "602"; */
"602.title" = "将所选文件设定为参照文件";
/* Class = "NSMenuItem"; title = "Remove Marked from Results"; ObjectID = "603"; */
"603.title" = "从结果中移除所标记的文件";
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "605"; */
"605.title" = "从结果中移除所选的文件";
/* Class = "NSMenuItem"; title = "Columns"; ObjectID = "618"; */
"618.title" = "显示列";
/* Class = "NSMenu"; title = "Columns"; ObjectID = "619"; */
"619.title" = "显示列";
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "708"; */
"708.title" = "使用默认程序打开所选文件";
/* 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" = "将所选文件添加到忽略列表中";
/* 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 = "Clear Ignore List"; ObjectID = "927"; */
"927.title" = "清空忽略列表";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "933"; */
"933.title" = "重命名所选文件";
/* 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" = "仅显示重复文件";
/* Class = "NSMenuItem"; title = "Show Delta Values"; ObjectID = "962"; */
"962.title" = "显示Delta值";
/* 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" = "标记全部";
/* Class = "NSMenuItem"; title = "Mark None"; ObjectID = "1012"; */
"1012.title" = "全部取消标记";
/* Class = "NSMenuItem"; title = "Invert Marking"; ObjectID = "1013"; */
"1013.title" = "反选标记文件";
/* Class = "NSMenuItem"; title = "Mark Selected"; ObjectID = "1014"; */
"1014.title" = "标记所选文件";
/* Class = "NSMenuItem"; title = "dupeGuru Website"; ObjectID = "1023"; */
"1023.title" = "dupeGuru Website";
/* Class = "NSMenuItem"; title = "Invoke Custom Command"; ObjectID = "1177"; */
"1177.title" = "调用自定义命令";
/* Class = "NSMenuItem"; title = "File"; ObjectID = "1203"; */
"1203.title" = "文件";
/* Class = "NSMenu"; title = "File"; ObjectID = "1204"; */
"1204.title" = "文件";
/* Class = "NSMenuItem"; title = "Load Results..."; ObjectID = "1205"; */
"1205.title" = "载入结果...";
/* Class = "NSMenuItem"; title = "Save Results..."; ObjectID = "1206"; */
"1206.title" = "保存结果...";
/* Class = "NSMenuItem"; title = "Delete Marked and Replace with Hardlinks"; ObjectID = "1227"; */
"1227.title" = "删除标记文件并用硬连接进行替换";
/* Class = "NSMenuItem"; title = "Load Recent Results"; ObjectID = "1239"; */
"1239.title" = "载入最近的结果";
/* Class = "NSMenu"; title = "Load Recent Results"; ObjectID = "1240"; */
"1240.title" = "载入最近的结果";
/* Class = "NSMenuItem"; title = "Results Window"; ObjectID = "1272"; */
"1272.title" = "结果窗口";
/* Class = "NSMenuItem"; title = "Re-Prioritize Results"; ObjectID = "1276"; */
"1276.title" = "Re-Prioritize Results";

View File

@@ -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.";

View File

@@ -1,12 +0,0 @@
/* Class = "NSWindow"; title = "Problems!"; ObjectID = "1"; */
"1.title" = "有问题!";
/* 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" = "在处理部分或全部文件时发现问题。产生问题的原因在下表中进行描述。这些文件将不会从结果中移除。";
/* Class = "NSButtonCell"; title = "Close"; ObjectID = "19"; */
"19.title" = "关闭";
/* Class = "NSButtonCell"; title = "Reveal Selected"; ObjectID = "21"; */
"21.title" = "显示选择";

View File

@@ -1,96 +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 = "Delete Marked and Replace with Hardlinks"; ObjectID = "27"; */
"27.title" = "删除标记文件并用硬连接进行替换";
/* 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" = "将标记的文件移动到...";
/* Class = "NSMenuItem"; title = "Copy Marked to..."; ObjectID = "31"; */
"31.title" = "将标记的文件复制到...";
/* Class = "NSMenuItem"; title = "Remove Marked from Results"; ObjectID = "32"; */
"32.title" = "从结果中移除所标记的文件";
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "34"; */
"34.title" = "从结果中移除所选的文件";
/* Class = "NSMenuItem"; title = "Add Selected to Ignore List"; ObjectID = "35"; */
"35.title" = "将所选文件添加到忽略列表中";
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "36"; */
"36.title" = "将所选文件设定为参照文件";
/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "38"; */
"38.title" = "使用默认程序打开所选文件";
/* Class = "NSMenuItem"; title = "Reveal Selected in Finder"; ObjectID = "39"; */
"39.title" = "Reveal Selected in Finder";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "40"; */
"40.title" = "重命名所选文件";
/* Class = "NSSearchFieldCell"; placeholderString = "Filter"; ObjectID = "42"; */
"42.placeholderString" = "Filter";
/* Class = "NSSegmentedCell"; 44.ibShadowedLabels[0] = "Details"; ObjectID = "44"; */
"44.ibShadowedLabels[0]" = "详细说明";
/* 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" = "将所选文件添加到忽略列表中";
/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "70"; */
"70.title" = "重命名所选文件";
/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "71"; */
"71.title" = "从结果中移除所选的文件";
/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "72"; */
"72.title" = "将所选文件设定为参照文件";
/* 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" = "使用默认程序打开所选文件";

View File

@@ -1,13 +1,13 @@
import logging
from objp.util import pyref, dontwrap
from jobprogress import job
import cocoa
from cocoa import install_exception_hook, proxy
from cocoa.inter import signature, subproxy, PyFairware
from cocoa.inter import PyFairware, FairwareView
from hscommon.trans import trget
from core.app import JobType
from .result_table import PyResultTable
tr = trget('ui')
@@ -19,128 +19,141 @@ JOBID2TITLE = {
JobType.Delete: tr("Sending to Trash"),
}
class DupeGuruView(FairwareView):
def askYesNoWithPrompt_(self, prompt: str) -> bool: pass
def showProblemDialog(self): pass
def selectDestFolderWithPrompt_(self, prompt: str) -> str: pass
class PyDupeGuruBase(PyFairware):
FOLLOW_PROTOCOLS = ['Worker']
@dontwrap
def _init(self, modelclass):
logging.basicConfig(level=logging.WARNING, format='%(levelname)s %(message)s')
install_exception_hook()
appdata = proxy.getAppdataPath()
self.py = modelclass(self, appdata)
self.model = modelclass(self, appdata)
self.progress = cocoa.ThreadedJobPerformer()
def bindCocoa_(self, cocoa):
self.cocoa = cocoa
#---Sub-proxies
def detailsPanel(self) -> pyref:
return self.model.details_panel
resultTable = subproxy('resultTable', 'result_table', PyResultTable)
def directoryTree(self) -> pyref:
return self.model.directory_tree
def problemDialog(self) -> pyref:
return self.model.problem_dialog
def statsLabel(self) -> pyref:
return self.model.stats_label
def resultTable(self) -> pyref:
return self.model.result_table
def ignoreListDialog(self) -> pyref:
return self.model.ignore_list_dialog
#---Directories
def addDirectory_(self, directory):
return self.py.add_directory(directory)
def addDirectory_(self, directory: str) -> int:
return self.model.add_directory(directory)
#---Results
def clearIgnoreList(self):
self.py.scanner.ignore_list.Clear()
def doScan(self):
self.py.start_scanning()
self.model.start_scanning()
def exportToXHTML(self):
return self.py.export_to_xhtml()
def exportToXHTML(self) -> str:
return self.model.export_to_xhtml()
def loadSession(self):
self.py.load()
self.model.load()
def loadResultsFrom_(self, filename):
self.py.load_from(filename)
def loadResultsFrom_(self, filename: str):
self.model.load_from(filename)
def markAll(self):
self.py.mark_all()
self.model.mark_all()
def markNone(self):
self.py.mark_none()
self.model.mark_none()
def markInvert(self):
self.py.mark_invert()
self.model.mark_invert()
def purgeIgnoreList(self):
self.py.purge_ignore_list()
self.model.purge_ignore_list()
def toggleSelectedMark(self):
self.py.toggle_selected_mark_state()
self.model.toggle_selected_mark_state()
def saveSession(self):
self.py.save()
self.model.save()
def saveResultsAs_(self, filename):
self.py.save_as(filename)
def saveResultsAs_(self, filename: str):
self.model.save_as(filename)
#---Actions
def addSelectedToIgnoreList(self):
self.py.add_selected_to_ignore_list()
self.model.add_selected_to_ignore_list()
def deleteMarked(self):
self.py.delete_marked()
self.model.delete_marked()
def hardlinkMarked(self):
self.py.delete_marked(replace_with_hardlinks=True)
self.model.delete_marked(replace_with_hardlinks=True)
def applyFilter_(self, filter):
self.py.apply_filter(filter)
def applyFilter_(self, filter: str):
self.model.apply_filter(filter)
def makeSelectedReference(self):
self.py.make_selected_reference()
self.model.make_selected_reference()
def copyOrMove_markedTo_recreatePath_(self, copy, destination, recreate_path):
self.py.copy_or_move_marked(copy, destination, recreate_path)
def copyMarked(self):
self.model.copy_or_move_marked(copy=True)
def moveMarked(self):
self.model.copy_or_move_marked(copy=False)
def openSelected(self):
self.py.open_selected()
self.model.open_selected()
def removeMarked(self):
self.py.remove_marked()
self.model.remove_marked()
def renameSelected_(self,newname):
return self.py.rename_selected(newname)
def removeSelected(self):
self.model.remove_selected()
def revealSelected(self):
self.py.reveal_selected()
self.model.reveal_selected()
def invokeCommand_(self, cmd):
self.py.invoke_command(cmd)
def invokeCustomCommand(self):
self.model.invoke_custom_command()
def showIgnoreList(self):
self.model.ignore_list_dialog.show()
#---Information
def getIgnoreListCount(self):
return len(self.py.scanner.ignore_list)
def getMarkCount(self):
return self.py.results.mark_count
@signature('i@:')
def scanWasProblematic(self):
return bool(self.py.results.problems)
@signature('i@:')
def resultsAreModified(self):
return self.py.results.is_modified
def resultsAreModified(self) -> bool:
return self.model.results.is_modified
#---Properties
@signature('v@:c')
def setMixFileKind_(self, mix_file_kind):
self.py.scanner.mix_file_kind = mix_file_kind
def setMixFileKind_(self, mix_file_kind: bool):
self.model.scanner.mix_file_kind = mix_file_kind
@signature('v@:c')
def setEscapeFilterRegexp_(self, escape_filter_regexp):
self.py.options['escape_filter_regexp'] = escape_filter_regexp
def setEscapeFilterRegexp_(self, escape_filter_regexp: bool):
self.model.options['escape_filter_regexp'] = escape_filter_regexp
@signature('v@:c')
def setRemoveEmptyFolders_(self, remove_empty_folders):
self.py.options['clean_empty_dirs'] = remove_empty_folders
def setRemoveEmptyFolders_(self, remove_empty_folders: bool):
self.model.options['clean_empty_dirs'] = remove_empty_folders
@signature('v@:c')
def setIgnoreHardlinkMatches_(self, ignore_hardlink_matches):
self.py.options['ignore_hardlink_matches'] = ignore_hardlink_matches
def setIgnoreHardlinkMatches_(self, ignore_hardlink_matches: bool):
self.model.options['ignore_hardlink_matches'] = ignore_hardlink_matches
def setCopyMoveDestType_(self, copymove_dest_type: int):
self.model.options['copymove_dest_type'] = copymove_dest_type
#---Worker
def getJobProgress(self):
def getJobProgress(self) -> object: # NSNumber
try:
return self.progress.last_progress
except AttributeError:
@@ -149,7 +162,7 @@ class PyDupeGuruBase(PyFairware):
# is sent), but it happens anyway, so there we go. ref: #106
return -1
def getJobDesc(self):
def getJobDesc(self) -> str:
try:
return self.progress.last_desc
except AttributeError:
@@ -159,16 +172,21 @@ class PyDupeGuruBase(PyFairware):
def cancelJob(self):
self.progress.job_cancelled = True
def jobCompleted_(self, jobid):
self.py._job_completed(jobid)
def jobCompleted_(self, jobid: str):
result = self.model._job_completed(jobid, self.progress.last_error)
if not result:
self.progress.reraise_if_error()
#--- model --> view
@dontwrap
def open_path(self, path):
proxy.openPath_(str(path))
@dontwrap
def reveal_path(self, path):
proxy.revealPath_(str(path))
@dontwrap
def start_job(self, jobid, func, args=()):
try:
j = self.progress.create_job()
@@ -180,9 +198,22 @@ class PyDupeGuruBase(PyFairware):
ud = {'desc': JOBID2TITLE[jobid], 'jobid':jobid}
proxy.postNotification_userInfo_('JobStarted', ud)
def show_extra_fairware_reminder(self):
self.cocoa.showExtraFairwareReminder()
@dontwrap
def ask_yes_no(self, prompt):
return self.callback.askYesNoWithPrompt_(prompt)
def show_message(self, msg):
self.cocoa.showMessage_(msg)
@dontwrap
def show_results_window(self):
# Not needed yet because our progress dialog is shown as a sheet of the results window,
# which causes it to be already visible when the scan/load ends.
# XXX Make progress sheet be a child of the folder selection window.
pass
@dontwrap
def show_problem_dialog(self):
self.callback.showProblemDialog()
@dontwrap
def select_dest_folder(self, prompt):
return self.callback.selectDestFolderWithPrompt_(prompt)

View File

@@ -1,22 +1,30 @@
# Created By: Virgil Dupras
# Created On: 2006/11/16
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
# 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 logging
from appscript import app, k, CommandError
from appscript import app, its, k, CommandError, ApplicationNotFoundError
import plistlib
import time
import os.path as op
from cocoa import as_fetch
from hscommon.trans import tr
from cocoa import as_fetch, proxy
from hscommon import io
from hscommon.trans import trget
from hscommon.path import Path
from core import directories
from core.app import JobType
from core.scanner import ScanType
from core_me.app import DupeGuru as DupeGuruBase
from .app import JOBID2TITLE
from core_me import fs
from .app import JOBID2TITLE, PyDupeGuruBase
tr = trget('ui')
JobType.RemoveDeadTracks = 'jobRemoveDeadTracks'
JobType.ScanDeadTracks = 'jobScanDeadTracks'
@@ -26,15 +34,186 @@ JOBID2TITLE.update({
JobType.ScanDeadTracks: tr("Scanning the iTunes Library"),
})
ITUNES = 'iTunes'
ITUNES_PATH = Path('iTunes Library')
def get_itunes_library(a):
try:
[source] = [s for s in a.sources(timeout=0) if s.kind(timeout=0) == k.library]
[library] = source.library_playlists(timeout=0)
return library
except ValueError:
logging.warning('Some unexpected iTunes configuration encountered')
return None
class ITunesSong(fs.MusicFile):
def __init__(self, song_data):
path = Path(proxy.url2path_(song_data['Location']))
fs.MusicFile.__init__(self, path)
self.id = song_data['Track ID']
def remove_from_library(self):
try:
a = app(ITUNES)
library = get_itunes_library(a)
if library is None:
return
[song] = library.file_tracks[its.database_ID == self.id]()
a.delete(song, timeout=0)
except ValueError:
msg = "Could not find song '{}' (trackid: {}) in iTunes Library".format(str(self.path), self.id)
raise EnvironmentError(msg)
except (CommandError, RuntimeError) as e:
raise EnvironmentError(str(e))
display_folder_path = ITUNES_PATH
def get_itunes_database_path():
plisturls = proxy.prefValue_inDomain_('iTunesRecentDatabases', 'com.apple.iApps')
if not plisturls:
raise directories.InvalidPathError()
plistpath = proxy.url2path_(plisturls[0])
return Path(plistpath)
def get_itunes_songs(plistpath):
if not io.exists(plistpath):
return []
plist = plistlib.readPlist(str(plistpath))
result = []
for song_data in plist['Tracks'].values():
if song_data['Track Type'] != 'File':
continue
song = ITunesSong(song_data)
if io.exists(song.path):
result.append(song)
return result
class Directories(directories.Directories):
def __init__(self, fileclasses):
directories.Directories.__init__(self, fileclasses)
try:
self.itunes_libpath = get_itunes_database_path()
except directories.InvalidPathError:
self.itunes_libpath = None
def _get_files(self, from_path, j):
if from_path == ITUNES_PATH:
if self.itunes_libpath is None:
return []
is_ref = self.get_state(from_path) == directories.DirectoryState.Reference
songs = get_itunes_songs(self.itunes_libpath)
for song in songs:
song.is_ref = is_ref
return songs
else:
return directories.Directories._get_files(self, from_path, j)
@staticmethod
def get_subfolders(path):
if path == ITUNES_PATH:
return []
else:
return directories.Directories.get_subfolders(path)
def add_path(self, path):
if path == ITUNES_PATH:
if path not in self:
self._dirs.append(path)
else:
directories.Directories.add_path(self, path)
def has_itunes_path(self):
return any(path == ITUNES_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
# checking if there's any file to scan involves reading the whole library. If we have the
# iTunes library, we assume we have at least one file.
if self.has_itunes_path():
return True
else:
return directories.Directories.has_any_file(self)
class DupeGuruME(DupeGuruBase):
def __init__(self, view, appdata):
appdata = op.join(appdata, 'dupeGuru Music Edition')
DupeGuruBase.__init__(self, view, appdata)
# Use fileclasses set in DupeGuruBase.__init__()
self.directories = Directories(fileclasses=self.directories.fileclasses)
self.dead_tracks = []
def _do_delete(self, j, replace_with_hardlinks):
# 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)
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.activate(timeout=0)
except (CommandError, RuntimeError, ApplicationNotFoundError):
pass
self.results.perform_on_marked(op, True)
def _do_delete_dupe(self, dupe, replace_with_hardlinks):
if isinstance(dupe, ITunesSong):
dupe.remove_from_library()
DupeGuruBase._do_delete_dupe(self, dupe, replace_with_hardlinks)
def _create_file(self, path):
if (self.directories.itunes_libpath is not None) and (path in self.directories.itunes_libpath[:-1]):
if not hasattr(self, 'itunes_songs'):
songs = get_itunes_songs(self.directories.itunes_libpath)
self.itunes_songs = {song.path: song for song in songs}
if path in self.itunes_songs:
return self.itunes_songs[path]
else:
pass # We'll return the default file type, as per the last line of this method
return DupeGuruBase._create_file(self, path)
def _job_completed(self, jobid, exc):
if (jobid in {JobType.RemoveDeadTracks, JobType.ScanDeadTracks}) and (exc is not None):
msg = tr("There were communication problems with iTunes. The operation couldn't be completed.")
self.view.show_message(msg)
return True
if jobid == JobType.ScanDeadTracks:
dead_tracks_count = len(self.dead_tracks)
if dead_tracks_count > 0:
msg = tr("Your iTunes Library contains %d dead tracks ready to be removed. Continue?")
if self.view.ask_yes_no(msg % dead_tracks_count):
self.remove_dead_tracks()
else:
msg = tr("You have no dead tracks in your iTunes Library")
self.view.show_message(msg)
if jobid == JobType.Load:
if hasattr(self, 'itunes_songs'):
# If we load another file, we want a refresh song list
del self.itunes_songs
DupeGuruBase._job_completed(self, jobid, exc)
def copy_or_move(self, dupe, copy, destination, dest_type):
if isinstance(dupe, ITunesSong):
copy = True
return DupeGuruBase.copy_or_move(self, dupe, copy, destination, dest_type)
def start_scanning(self):
if self.directories.has_itunes_path():
try:
app(ITUNES)
except ApplicationNotFoundError:
self.view.show_message(tr("The iTunes application couldn't be found."))
return
DupeGuruBase.start_scanning(self)
def remove_dead_tracks(self):
def do(j):
a = app('iTunes')
a = app(ITUNES)
a.activate(timeout=0)
for index, track in enumerate(j.iter_with_progress(self.dead_tracks)):
if index % 100 == 0:
@@ -48,13 +227,10 @@ class DupeGuruME(DupeGuruBase):
def scan_dead_tracks(self):
def do(j):
a = app('iTunes')
a = app(ITUNES)
a.activate(timeout=0)
try:
[source] = [s for s in a.sources(timeout=0) if s.kind(timeout=0) == k.library]
[library] = source.library_playlists(timeout=0)
except ValueError:
logging.warning('Some unexpected iTunes configuration encountered')
library = get_itunes_library(a)
if library is None:
return
self.dead_tracks = []
tracks = as_fetch(library.file_tracks, k.file_track)
@@ -67,3 +243,38 @@ class DupeGuruME(DupeGuruBase):
self.view.start_job(JobType.ScanDeadTracks, do)
class PyDupeGuru(PyDupeGuruBase):
def __init__(self):
self._init(DupeGuruME)
def scanDeadTracks(self):
self.model.scan_dead_tracks()
#---Properties
def setMinMatchPercentage_(self, percentage: int):
self.model.scanner.min_match_percentage = percentage
def setScanType_(self, scan_type: int):
try:
self.model.scanner.scan_type = [
ScanType.Filename,
ScanType.Fields,
ScanType.FieldsNoOrder,
ScanType.Tag,
ScanType.Contents,
ScanType.ContentsAudio,
][scan_type]
except IndexError:
pass
def setWordWeighting_(self, words_are_weighted: bool):
self.model.scanner.word_weighting = words_are_weighted
def setMatchSimilarWords_(self, match_similar_words: bool):
self.model.scanner.match_similar_words = match_similar_words
def enable_scanForTag_(self, enable: bool, scan_tag: str):
if enable:
self.model.scanner.scanned_tags.add(scan_tag)
else:
self.model.scanner.scanned_tags.discard(scan_tag)

View File

@@ -1,6 +1,6 @@
# Created By: Virgil Dupras
# Created On: 2006/11/13
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
# 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
@@ -16,13 +16,17 @@ from appscript import app, its, CommandError, ApplicationNotFoundError
from hscommon import io
from hscommon.util import remove_invalid_xml
from hscommon.path import Path
from hscommon.trans import tr
from hscommon.trans import trget
from cocoa import proxy
from core.scanner import ScanType
from core import directories
from core_pe import _block_osx
from core_pe.photo import Photo as PhotoBase
from core_pe.app import DupeGuru as DupeGuruBase
from .app import PyDupeGuruBase
tr = trget('ui')
IPHOTO_PATH = Path('iPhoto Library')
@@ -152,7 +156,11 @@ class DupeGuruPE(DupeGuruBase):
if isinstance(dupe, IPhoto):
try:
a = app('iPhoto')
[photo] = a.photo_library_album().photos[its.image_path == str(dupe.path)]()
album = a.photo_library_album()
if album is None:
msg = "There are communication problems with iPhoto. Try opening iPhoto first, it might solve it."
raise EnvironmentError(msg)
[photo] = album.photos[its.image_path == str(dupe.path)]()
a.remove(photo, timeout=0)
except ValueError:
msg = "Could not find photo '{}' in iPhoto Library".format(str(dupe.path))
@@ -194,3 +202,32 @@ class DupeGuruPE(DupeGuruBase):
return
DupeGuruBase.start_scanning(self)
class PyDupeGuru(PyDupeGuruBase):
def __init__(self):
self._init(DupeGuruPE)
def clearPictureCache(self):
self.model.scanner.clear_picture_cache()
#---Information
def getSelectedDupePath(self) -> str:
return str(self.model.selected_dupe_path())
def getSelectedDupeRefPath(self) -> str:
return str(self.model.selected_dupe_ref_path())
#---Properties
def setScanType_(self, scan_type: int):
try:
self.model.scanner.scan_type = [
ScanType.FuzzyBlock,
ScanType.ExifTimestamp,
][scan_type]
except IndexError:
pass
def setMatchScaled_(self, match_scaled: bool):
self.model.scanner.match_scaled = match_scaled
def setMinMatchPercentage_(self, percentage: int):
self.model.scanner.threshold = percentage

View File

@@ -1,6 +1,6 @@
# Created By: Virgil Dupras
# Created On: 2009-05-24
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
# 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
@@ -13,9 +13,11 @@ from hscommon import io
from hscommon.path import Path
from cocoa import proxy
from core.scanner import ScanType
from core import fs
from core.directories import Directories as DirectoriesBase, DirectoryState
from core_se.app import DupeGuru as DupeGuruBase
from .app import PyDupeGuruBase
def is_bundle(str_path):
uti = proxy.getUTI_(str_path)
@@ -70,3 +72,31 @@ class DupeGuru(DupeGuruBase):
DupeGuruBase.__init__(self, view, appdata)
self.directories = Directories()
class PyDupeGuru(PyDupeGuruBase):
def __init__(self):
self._init(DupeGuru)
#---Properties
def setMinMatchPercentage_(self, percentage: int):
self.model.scanner.min_match_percentage = int(percentage)
def setScanType_(self, scan_type: int):
try:
self.model.scanner.scan_type = [
ScanType.Filename,
ScanType.Contents,
ScanType.Folders,
][scan_type]
except IndexError:
pass
def setWordWeighting_(self, words_are_weighted: bool):
self.model.scanner.word_weighting = words_are_weighted
def setMatchSimilarWords_(self, match_similar_words: bool):
self.model.scanner.match_similar_words = match_similar_words
def setSizeThreshold_(self, size_threshold: int):
self.model.scanner.size_threshold = size_threshold

View File

@@ -1,13 +1,11 @@
from cocoa.inter import signature, PyGUIObject
from cocoa.inter import PyGUIObject, GUIObjectView
from core.gui.details_panel import DetailsPanel
class DetailsPanelView(GUIObjectView):
pass
class PyDetailsPanel(PyGUIObject):
py_class = DetailsPanel
@signature('i@:')
def numberOfRows(self):
return self.py.row_count()
def numberOfRows(self) -> int:
return self.model.row_count()
@signature('@@:@i')
def valueForColumn_row_(self, column, row):
return self.py.row(row)[int(column)]
def valueForColumn_row_(self, column: str, row: int) -> object:
return self.model.row(row)[int(column)]

View File

@@ -1,17 +1,18 @@
from cocoa.inter import PyOutline
from objp.util import dontwrap
from cocoa.inter import PyOutline, GUIObjectView
from core.gui.directory_tree import DirectoryTree
class DirectoryOutlineView(GUIObjectView):
pass
class PyDirectoryOutline(PyOutline):
py_class = DirectoryTree
def addDirectory_(self, path):
self.py.add_directory(path)
def addDirectory_(self, path: str):
self.model.add_directory(path)
def removeSelectedDirectory(self):
self.py.remove_selected()
self.model.remove_selected()
# python --> cocoa
@dontwrap
def refresh_states(self):
# Under cocoa, both refresh() and refresh_states() do the same thing.
self.cocoa.refresh()
self.callback.refresh()

View File

@@ -1,25 +0,0 @@
from cocoa.inter import PyGUIObject
from core.gui.extra_fairware_reminder import ExtraFairwareReminder
class PyExtraFairwareReminder(PyGUIObject):
py_class = ExtraFairwareReminder
def start(self):
self.py.start()
def updateButton(self):
self.py.update_button()
# model --> view
def start_timer(self):
self.cocoa.startTimer()
def stop_timer(self):
self.cocoa.stopTimer()
def enable_button(self):
self.cocoa.enableButton()
def set_button_text(self, text):
self.cocoa.setButtonText_(text)

View File

@@ -0,0 +1,20 @@
from objp.util import pyref
from cocoa.inter import PyGUIObject, GUIObjectView
class IgnoreListDialogView(GUIObjectView):
def show(self): pass
class PyIgnoreListDialog(PyGUIObject):
def ignoreListTable(self) -> pyref:
return self.model.ignore_list_table
def removeSelected(self):
self.model.remove_selected()
def clear(self):
self.model.clear()
#--- model --> view
def show(self):
self.callback.show()

View File

@@ -1,31 +1,29 @@
from cocoa.inter import PyGUIObject, PySelectableList
from objp.util import pyref
from cocoa.inter import PyGUIObject, GUIObjectView
from core.gui.prioritize_dialog import PrioritizeDialog
from .prioritize_list import PyPrioritizeList
class PrioritizeDialogView(GUIObjectView):
pass
class PyPrioritizeDialog(PyGUIObject):
py_class = PrioritizeDialog
def __init__(self, app: pyref):
model = PrioritizeDialog(app.model)
PyGUIObject.__init__(self, model)
def categoryList(self):
if not hasattr(self, '_categoryList'):
self._categoryList = PySelectableList.alloc().initWithPy_(self.py.category_list)
return self._categoryList
def categoryList(self) -> pyref:
return self.model.category_list
def criteriaList(self):
if not hasattr(self, '_criteriaList'):
self._criteriaList = PySelectableList.alloc().initWithPy_(self.py.criteria_list)
return self._criteriaList
def criteriaList(self) -> pyref:
return self.model.criteria_list
def prioritizationList(self):
if not hasattr(self, '_prioritizationList'):
self._prioritizationList = PyPrioritizeList.alloc().initWithPy_(self.py.prioritization_list)
return self._prioritizationList
def prioritizationList(self) -> pyref:
return self.model.prioritization_list
def addSelected(self):
self.py.add_selected()
self.model.add_selected()
def removeSelected(self):
self.py.remove_selected()
self.model.remove_selected()
def performReprioritization(self):
self.py.perform_reprioritization()
self.model.perform_reprioritization()

Some files were not shown because too many files have changed in this diff Show More