1
0
mirror of https://github.com/arsenetar/dupeguru-cocoa.git synced 2024-12-21 10:59:03 +00:00

Un-xibless-ified Preferences

Goodbye xibless
This commit is contained in:
Virgil Dupras 2017-04-05 22:17:28 -04:00
parent 4c0a66379b
commit a007ccb1ec
8 changed files with 1149 additions and 222 deletions

View File

@ -53,10 +53,6 @@ def parse_args():
'--cocoa-compile', action='store_true', dest='cocoa_compile',
help="Build only Cocoa executable"
)
parser.add_option(
'--xibless', action='store_true', dest='xibless',
help="Build only xibless UIs"
)
parser.add_option(
'--updatepot', action='store_true', dest='updatepot',
help="Generate .pot files from source code."
@ -76,21 +72,8 @@ def cocoa_app():
app_path = 'build/dupeGuru.app'
return OSXAppStructure(app_path)
def build_xibless(dest='cocoa/autogen'):
import xibless
ensure_folder(dest)
for appmode in ('standard', 'music', 'picture'):
xibless.generate(
op.join('cocoa', 'ui', 'preferences_panel.py'),
op.join(dest, 'PreferencesPanel%s_UI' % appmode.capitalize()),
localizationTable='Localizable',
args={'appmode': appmode},
)
def build_cocoa(dev):
build_localizations()
build_xibless()
build_cocoa_proxy_module()
build_cocoa_bridging_interfaces()
@ -155,7 +138,6 @@ def build_localizations():
def build_updatepot():
print("Updating Cocoa strings file.")
loc.generate_cocoa_strings_from_code('cocoalib', 'cocoalib/en.lproj')
build_xibless()
loc.generate_cocoa_strings_from_code('cocoa', 'cocoa/en.lproj')
def build_mergepot():
@ -280,8 +262,6 @@ def main():
print_and_do('{0} waf configure && {0} waf'.format(sys.executable))
os.chdir('..')
cocoa_app().copy_executable('cocoa/build/dupeGuru')
elif options.xibless:
build_xibless()
else:
build_normal(options.dev)

View File

@ -14,9 +14,6 @@ http://www.gnu.org/licenses/gpl-3.0.html
#import "Utils.h"
#import "ValueTransformers.h"
#import "DetailsPanelPicture.h"
#import "PreferencesPanelStandard_UI.h"
#import "PreferencesPanelMusic_UI.h"
#import "PreferencesPanelPicture_UI.h"
@implementation AppDelegate
@ -236,18 +233,15 @@ http://www.gnu.org/licenses/gpl-3.0.html
- (IBAction)showPreferencesPanel:(id)sender
{
if (_preferencesPanel == nil) {
NSWindow *window;
NSString *nibName = @"Preferences";
NSInteger appMode = [model getAppMode];
if (appMode == AppModePicture) {
window = createPreferencesPanelPicture_UI(nil);
nibName = @"PreferencesPicture";
}
else if (appMode == AppModeMusic) {
window = createPreferencesPanelMusic_UI(nil);
nibName = @"PreferencesMusic";
}
else {
window = createPreferencesPanelStandard_UI(nil);
}
_preferencesPanel = [[NSWindowController alloc] initWithWindow:window];
_preferencesPanel = [[NSWindowController alloc] initWithWindowNibName:nibName];
}
[_preferencesPanel showWindow:nil];
}

View File

@ -0,0 +1,334 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12118" systemVersion="16E195" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12118"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSWindowController">
<connections>
<outlet property="window" destination="52" id="118"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application"/>
<userDefaultsController representsSharedInstance="YES" id="51" userLabel="Shared Defaults"/>
<window title="dupeGuru Preferences" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="52" userLabel="preferences">
<windowStyleMask key="styleMask" titled="YES" closable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="92" y="277" width="409" height="297"/>
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="878"/>
<value key="minSize" type="size" width="213" height="107"/>
<view key="contentView" misplaced="YES" id="53">
<rect key="frame" x="0.0" y="0.0" width="409" height="297"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<tabView misplaced="YES" id="123">
<rect key="frame" x="13" y="40" width="383" height="251"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<font key="font" metaFont="system"/>
<tabViewItems>
<tabViewItem label="Basic" identifier="1" id="124">
<view key="view" id="127">
<rect key="frame" x="10" y="33" width="363" height="205"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<slider verticalHuggingPriority="750" misplaced="YES" id="72">
<rect key="frame" x="118" y="183" width="198" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<sliderCell key="cell" alignment="left" minValue="1" maxValue="100" doubleValue="80" tickMarkPosition="above" sliderType="linear" id="73">
<font key="font" size="12" name="Helvetica"/>
</sliderCell>
<connections>
<binding destination="51" name="enabled" keyPath="values.scanTypeStandard" id="JEc-U3-tIR">
<dictionary key="options">
<string key="NSValueTransformerName">vtScanTypeIsNotContent</string>
</dictionary>
</binding>
<binding destination="51" name="value" keyPath="values.minMatchPercentage" id="103"/>
</connections>
</slider>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="71">
<rect key="frame" x="120" y="166" width="80" height="13"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="More results" id="74">
<font key="font" metaFont="label"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="69">
<rect key="frame" x="15" y="188" width="100" height="14"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Filter hardness:" id="76">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="154">
<rect key="frame" x="15" y="138" width="100" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Font size:" id="155">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button misplaced="YES" imageHugsTitle="YES" id="66">
<rect key="frame" x="16" y="114" width="333" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Word weighting" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="82">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="51" name="enabled" keyPath="values.scanTypeStandard" id="i5x-g7-oqn">
<dictionary key="options">
<string key="NSValueTransformerName">vtScanTypeIsNotContent</string>
</dictionary>
</binding>
<binding destination="51" name="value" keyPath="values.wordWeighting" id="108"/>
</connections>
</button>
<button misplaced="YES" imageHugsTitle="YES" id="65">
<rect key="frame" x="16" y="74" width="333" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Can mix file kind" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="83">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="51" name="value" keyPath="values.mixFileKind" id="109"/>
</connections>
</button>
<button misplaced="YES" imageHugsTitle="YES" id="62">
<rect key="frame" x="16" y="94" width="333" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Match similar words" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="87">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="51" name="enabled" keyPath="values.scanTypeStandard" id="oNf-97-T9c">
<dictionary key="options">
<string key="NSValueTransformerName">vtScanTypeIsNotContent</string>
</dictionary>
</binding>
<binding destination="51" name="value" keyPath="values.matchSimilarWords" id="102"/>
</connections>
</button>
<button misplaced="YES" imageHugsTitle="YES" id="57">
<rect key="frame" x="16" y="54" width="333" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Remove empty folders on delete or move" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="96">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="51" name="value" keyPath="values.removeEmptyFolders" id="113"/>
</connections>
</button>
<button misplaced="YES" imageHugsTitle="YES" id="56">
<rect key="frame" x="16" y="32" width="333" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Ignore files smaller than:" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="97">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="51" name="value" keyPath="values.ignoreSmallFiles" id="110"/>
</connections>
</button>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="55">
<rect key="frame" x="41" y="10" width="59" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="98">
<numberFormatter key="formatter" formatterBehavior="custom10_4" positiveFormat="#0" numberStyle="decimal" allowsFloats="NO" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="1" maximumIntegerDigits="2000000000" id="99">
<nil key="negativeInfinitySymbol"/>
<nil key="positiveInfinitySymbol"/>
</numberFormatter>
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="51" name="value" keyPath="values.smallFileThreshold" id="121">
<dictionary key="options">
<integer key="NSContinuouslyUpdatesValue" value="1"/>
</dictionary>
</binding>
</connections>
</textField>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="54">
<rect key="frame" x="105" y="9" width="30" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="KB" id="100">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<comboBox verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" textCompletion="NO" id="151">
<rect key="frame" x="120" y="134" width="69" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" numberOfVisibleItems="6" id="152">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
<objectValues>
<string>11</string>
<string>12</string>
<string>13</string>
<string>14</string>
<string>18</string>
<string>24</string>
</objectValues>
</comboBoxCell>
<connections>
<binding destination="51" name="value" keyPath="values.TableFontSize" id="156"/>
</connections>
</comboBox>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="70">
<rect key="frame" x="236" y="166" width="80" height="13"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Fewer results" id="75">
<font key="font" metaFont="label"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="64">
<rect key="frame" x="320" y="214" width="31" height="14"/>
<autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="84">
<numberFormatter key="formatter" formatterBehavior="10_0" positiveFormat="0" negativeFormat="-0" hasThousandSeparators="NO" thousandSeparator="," id="85">
<attributedString key="attributedStringForZero">
<fragment content="0"/>
</attributedString>
<decimal key="minimum" value="NaN"/>
<decimal key="maximum" value="NaN"/>
</numberFormatter>
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="51" name="value" keyPath="values.minMatchPercentage" id="107"/>
</connections>
</textField>
</subviews>
</view>
</tabViewItem>
<tabViewItem label="Advanced" identifier="2" id="125">
<view key="view" id="126">
<rect key="frame" x="10" y="33" width="363" height="205"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button imageHugsTitle="YES" id="128">
<rect key="frame" x="15" y="186" width="346" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Use regular expressions when filtering" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="129">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="51" name="value" keyPath="values.useRegexpFilter" id="130"/>
</connections>
</button>
<button imageHugsTitle="YES" id="141">
<rect key="frame" x="15" y="166" width="346" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Ignore duplicates hardlinking to the same file" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="142">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="51" name="value" keyPath="values.ignoreHardlinkMatches" id="144"/>
</connections>
</button>
<button imageHugsTitle="YES" id="145">
<rect key="frame" x="15" y="146" width="346" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Debug mode (restart required)" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="146">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="51" name="value" keyPath="values.DebugMode" id="148"/>
</connections>
</button>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="133">
<rect key="frame" x="14" y="123" width="348" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Custom command (arguments: %d for dupe, %r for ref):" id="134">
<font key="font" metaFont="label"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="138">
<rect key="frame" x="17" y="93" width="329" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="139">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="51" name="value" keyPath="values.CustomCommand" id="140"/>
</connections>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="61">
<rect key="frame" x="14" y="72" width="348" height="13"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Copy and Move:" id="88">
<font key="font" metaFont="label"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" imageHugsTitle="YES" id="60">
<rect key="frame" x="14" y="40" width="234" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Right in destination" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="93" id="89">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<menu key="menu" title="OtherViews" id="90">
<items>
<menuItem title="Right in destination" state="on" id="93"/>
<menuItem title="Recreate relative path" id="91"/>
<menuItem title="Recreate absolute path" id="92"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<binding destination="51" name="selectedIndex" keyPath="values.recreatePathType" id="116"/>
</connections>
</popUpButton>
</subviews>
</view>
</tabViewItem>
</tabViewItems>
</tabView>
<button verticalHuggingPriority="750" misplaced="YES" imageHugsTitle="YES" id="63">
<rect key="frame" x="247" y="13" width="148" height="32"/>
<autoresizingMask key="autoresizingMask"/>
<buttonCell key="cell" type="push" title="Reset to Defaults" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="86">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="revertToInitialValues:" target="51" id="101"/>
</connections>
</button>
</subviews>
<connections>
<outlet property="nextKeyView" destination="62" id="106"/>
</connections>
</view>
<point key="canvasLocation" x="131.5" y="137.5"/>
</window>
</objects>
</document>

View File

@ -0,0 +1,408 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12118" systemVersion="16E195" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12118"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSWindowController">
<connections>
<outlet property="window" destination="2" id="112"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application"/>
<userDefaultsController representsSharedInstance="YES" id="1" userLabel="Shared Defaults"/>
<window title="dupeGuru Preferences (Music)" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="2" userLabel="preferences">
<windowStyleMask key="styleMask" titled="YES" closable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="92" y="259" width="406" height="306"/>
<rect key="screenRect" x="0.0" y="0.0" width="1920" height="1058"/>
<value key="minSize" type="size" width="213" height="107"/>
<view key="contentView" misplaced="YES" id="3">
<rect key="frame" x="0.0" y="0.0" width="406" height="306"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<button verticalHuggingPriority="750" imageHugsTitle="YES" id="18">
<rect key="frame" x="244" y="5" width="148" height="32"/>
<autoresizingMask key="autoresizingMask"/>
<buttonCell key="cell" type="push" title="Reset to Defaults" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="45">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="revertToInitialValues:" target="1" id="113"/>
</connections>
</button>
<tabView misplaced="YES" id="115">
<rect key="frame" x="13" y="31" width="380" height="269"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<font key="font" metaFont="system"/>
<tabViewItems>
<tabViewItem label="Basic" identifier="1" id="116">
<view key="view" id="119">
<rect key="frame" x="10" y="33" width="360" height="223"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<slider verticalHuggingPriority="750" misplaced="YES" id="27">
<rect key="frame" x="118" y="201" width="190" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<sliderCell key="cell" alignment="left" minValue="1" maxValue="100" doubleValue="80" tickMarkPosition="above" sliderType="linear" id="28">
<font key="font" size="12" name="Helvetica"/>
</sliderCell>
<connections>
<binding destination="1" name="enabled" keyPath="values.scanTypeMusic" id="IEC-EW-O84">
<dictionary key="options">
<string key="NSValueTransformerName">vtScanTypeMusicIsNotContent</string>
</dictionary>
</binding>
<binding destination="1" name="value" keyPath="values.minMatchPercentage" id="72"/>
<outlet property="nextKeyView" destination="9" id="82"/>
</connections>
</slider>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="26">
<rect key="frame" x="120" y="184" width="80" height="13"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="More results" id="29">
<font key="font" metaFont="label"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="25">
<rect key="frame" x="226" y="184" width="80" height="13"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Fewer results" id="30">
<font key="font" metaFont="label"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="24">
<rect key="frame" x="15" y="206" width="100" height="14"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Filter hardness:" id="31">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button misplaced="YES" imageHugsTitle="YES" id="21">
<rect key="frame" x="16" y="71" width="330" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Word weighting" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="41">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="enabled" keyPath="values.scanTypeMusic" id="mEk-iv-joX">
<dictionary key="options">
<string key="NSValueTransformerName">vtScanTypeMusicIsNotContent</string>
</dictionary>
</binding>
<binding destination="1" name="value" keyPath="values.wordWeighting" id="87"/>
<outlet property="nextKeyView" destination="17" id="73"/>
</connections>
</button>
<button misplaced="YES" imageHugsTitle="YES" id="20">
<rect key="frame" x="16" y="31" width="325" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Can mix file kind" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="42">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="value" keyPath="values.mixFileKind" id="93"/>
<outlet property="nextKeyView" destination="12" id="109"/>
</connections>
</button>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="19">
<rect key="frame" x="314" y="206" width="31" height="14"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="43">
<numberFormatter key="formatter" formatterBehavior="10_0" positiveFormat="0" negativeFormat="-0" hasThousandSeparators="NO" thousandSeparator="," id="44">
<attributedString key="attributedStringForZero">
<fragment content="0"/>
</attributedString>
<decimal key="minimum" value="NaN"/>
<decimal key="maximum" value="NaN"/>
</numberFormatter>
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="1" name="value" keyPath="values.minMatchPercentage" id="102"/>
</connections>
</textField>
<button misplaced="YES" imageHugsTitle="YES" id="17">
<rect key="frame" x="16" y="51" width="330" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Match similar words" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="46">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="enabled" keyPath="values.scanTypeMusic" id="D1J-Cd-t9h">
<dictionary key="options">
<string key="NSValueTransformerName">vtScanTypeMusicIsNotContent</string>
</dictionary>
</binding>
<binding destination="1" name="value" keyPath="values.matchSimilarWords" id="83"/>
<outlet property="nextKeyView" destination="20" id="111"/>
</connections>
</button>
<button misplaced="YES" imageHugsTitle="YES" id="11">
<rect key="frame" x="16" y="11" width="330" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Remove empty folders after delete and move" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="62">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="value" keyPath="values.removeEmptyFolders" id="103"/>
</connections>
</button>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="10">
<rect key="frame" x="15" y="131" width="100" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Tags to scan:" id="63">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button misplaced="YES" imageHugsTitle="YES" id="9">
<rect key="frame" x="25" y="111" width="66" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Track" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="64">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="enabled" keyPath="values.scanTypeMusic" id="v2y-u6-gpL">
<dictionary key="options">
<string key="NSValueTransformerName">vtScanTypeIsTag</string>
</dictionary>
</binding>
<binding destination="1" name="value" keyPath="values.scanTagTrack" id="71"/>
<outlet property="nextKeyView" destination="8" id="84"/>
</connections>
</button>
<button misplaced="YES" imageHugsTitle="YES" id="8">
<rect key="frame" x="95" y="111" width="66" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Artist" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="65">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="enabled" keyPath="values.scanTypeMusic" id="N1M-yd-Fei">
<dictionary key="options">
<string key="NSValueTransformerName">vtScanTypeIsTag</string>
</dictionary>
</binding>
<binding destination="1" name="value" keyPath="values.scanTagArtist" id="97"/>
<outlet property="nextKeyView" destination="7" id="99"/>
</connections>
</button>
<button misplaced="YES" imageHugsTitle="YES" id="7">
<rect key="frame" x="165" y="111" width="66" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Album" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="66">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="enabled" keyPath="values.scanTypeMusic" id="Drg-pN-BWb">
<dictionary key="options">
<string key="NSValueTransformerName">vtScanTypeIsTag</string>
</dictionary>
</binding>
<binding destination="1" name="value" keyPath="values.scanTagAlbum" id="89"/>
<outlet property="nextKeyView" destination="6" id="88"/>
</connections>
</button>
<button misplaced="YES" imageHugsTitle="YES" id="6">
<rect key="frame" x="25" y="91" width="66" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Title" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="67">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="enabled" keyPath="values.scanTypeMusic" id="lrt-ME-8Kt">
<dictionary key="options">
<string key="NSValueTransformerName">vtScanTypeIsTag</string>
</dictionary>
</binding>
<binding destination="1" name="value" keyPath="values.scanTagTitle" id="79"/>
<outlet property="nextKeyView" destination="5" id="90"/>
</connections>
</button>
<button misplaced="YES" imageHugsTitle="YES" id="5">
<rect key="frame" x="95" y="91" width="66" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Genre" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="68">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="enabled" keyPath="values.scanTypeMusic" id="1V1-MS-Wg5">
<dictionary key="options">
<string key="NSValueTransformerName">vtScanTypeIsTag</string>
</dictionary>
</binding>
<binding destination="1" name="value" keyPath="values.scanTagGenre" id="94"/>
<outlet property="nextKeyView" destination="4" id="107"/>
</connections>
</button>
<button misplaced="YES" imageHugsTitle="YES" id="4">
<rect key="frame" x="165" y="91" width="66" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Year" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="69">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="enabled" keyPath="values.scanTypeMusic" id="dkK-l1-CQf">
<dictionary key="options">
<string key="NSValueTransformerName">vtScanTypeIsTag</string>
</dictionary>
</binding>
<binding destination="1" name="value" keyPath="values.scanTagYear" id="74"/>
<outlet property="nextKeyView" destination="21" id="108"/>
</connections>
</button>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="133">
<rect key="frame" x="15" y="156" width="100" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Font size:" id="136">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<comboBox verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" textCompletion="NO" id="134">
<rect key="frame" x="120" y="152" width="69" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" numberOfVisibleItems="6" id="135">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
<objectValues>
<string>11</string>
<string>12</string>
<string>13</string>
<string>14</string>
<string>18</string>
<string>24</string>
</objectValues>
</comboBoxCell>
<connections>
<binding destination="1" name="value" keyPath="values.TableFontSize" id="137"/>
</connections>
</comboBox>
</subviews>
</view>
</tabViewItem>
<tabViewItem label="Advanced" identifier="2" id="117">
<view key="view" id="118">
<rect key="frame" x="10" y="33" width="360" height="223"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button imageHugsTitle="YES" id="12">
<rect key="frame" x="15" y="204" width="340" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Use regular expressions when filtering" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="61">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="value" keyPath="values.useRegexpFilter" id="106"/>
<outlet property="nextKeyView" destination="11" id="104"/>
</connections>
</button>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="15">
<rect key="frame" x="14" y="98" width="332" height="13"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Copy and Move:" id="54">
<font key="font" metaFont="label"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="120">
<rect key="frame" x="14" y="141" width="332" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Custom Command (arguments: %d for dupe, %r for ref):" id="121">
<font key="font" metaFont="label"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" imageHugsTitle="YES" id="14">
<rect key="frame" x="14" y="66" width="256" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Right in destination" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="59" id="55">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<menu key="menu" title="OtherViews" id="56">
<items>
<menuItem title="Right in destination" state="on" id="59"/>
<menuItem title="Recreate relative path" id="57"/>
<menuItem title="Recreate absolute path" id="58"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<binding destination="1" name="selectedIndex" keyPath="values.recreatePathType" id="98"/>
<outlet property="nextKeyView" destination="18" id="86"/>
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="122">
<rect key="frame" x="17" y="119" width="326" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="123">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="1" name="value" keyPath="values.CustomCommand" id="124"/>
</connections>
</textField>
<button imageHugsTitle="YES" id="125">
<rect key="frame" x="15" y="184" width="340" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Ignore duplicates hardlinking to the same file" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="126">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="value" keyPath="values.ignoreHardlinkMatches" id="128"/>
</connections>
</button>
<button imageHugsTitle="YES" id="129">
<rect key="frame" x="15" y="164" width="340" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Debug mode (restart required)" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="130">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="value" keyPath="values.DebugMode" id="132"/>
</connections>
</button>
</subviews>
</view>
</tabViewItem>
</tabViewItems>
</tabView>
</subviews>
</view>
<point key="canvasLocation" x="132" y="133"/>
</window>
</objects>
</document>

View File

@ -0,0 +1,277 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12118" systemVersion="16E195" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12118"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSWindowController">
<connections>
<outlet property="window" destination="2" id="51"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application"/>
<userDefaultsController representsSharedInstance="YES" id="1" userLabel="Shared Defaults"/>
<window title="dupeGuru PE Preferences" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="2" userLabel="preferences">
<windowStyleMask key="styleMask" titled="YES" closable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="92" y="348" width="392" height="239"/>
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="878"/>
<value key="minSize" type="size" width="213" height="107"/>
<view key="contentView" misplaced="YES" id="3">
<rect key="frame" x="0.0" y="0.0" width="392" height="239"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<button verticalHuggingPriority="750" imageHugsTitle="YES" id="10">
<rect key="frame" x="230" y="3" width="148" height="32"/>
<autoresizingMask key="autoresizingMask"/>
<buttonCell key="cell" type="push" title="Reset to Defaults" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="24">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="revertToInitialValues:" target="1" id="41"/>
</connections>
</button>
<tabView misplaced="YES" id="59">
<rect key="frame" x="13" y="28" width="366" height="205"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<font key="font" metaFont="system"/>
<tabViewItems>
<tabViewItem label="Basic" identifier="1" id="60">
<view key="view" id="63">
<rect key="frame" x="10" y="33" width="346" height="159"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<slider verticalHuggingPriority="750" misplaced="YES" id="16">
<rect key="frame" x="118" y="137" width="181" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<sliderCell key="cell" alignment="left" minValue="1" maxValue="100" doubleValue="80" tickMarkPosition="above" sliderType="linear" id="17">
<font key="font" size="12" name="Helvetica"/>
</sliderCell>
<connections>
<binding destination="1" name="enabled" keyPath="values.scanTypePicture" id="nGV-Zy-bzJ">
<dictionary key="options">
<string key="NSValueTransformerName">vtScanTypeIsFuzzy</string>
</dictionary>
</binding>
<binding destination="1" name="value" keyPath="values.minMatchPercentage" id="49"/>
<outlet property="nextKeyView" destination="7" id="50"/>
</connections>
</slider>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="15">
<rect key="frame" x="120" y="120" width="80" height="13"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="More results" id="18">
<font key="font" metaFont="label"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="14">
<rect key="frame" x="217" y="120" width="80" height="13"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Fewer results" id="19">
<font key="font" metaFont="label"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="13">
<rect key="frame" x="15" y="142" width="100" height="14"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Filter hardness:" id="20">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button misplaced="YES" imageHugsTitle="YES" id="12">
<rect key="frame" x="16" y="48" width="316" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Can mix file kind" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="21">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="value" keyPath="values.mixFileKind" id="38"/>
<outlet property="nextKeyView" destination="4" id="43"/>
</connections>
</button>
<button misplaced="YES" imageHugsTitle="YES" id="7">
<rect key="frame" x="16" y="68" width="316" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Match pictures of different dimensions" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="31">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="value" keyPath="values.matchScaled" id="35"/>
<outlet property="nextKeyView" destination="12" id="47"/>
</connections>
</button>
<button misplaced="YES" imageHugsTitle="YES" id="5">
<rect key="frame" x="16" y="28" width="316" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Remove empty folders on delete or move" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="33">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="value" keyPath="values.removeEmptyFolders" id="45"/>
</connections>
</button>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="11">
<rect key="frame" x="302" y="142" width="31" height="14"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="22">
<numberFormatter key="formatter" formatterBehavior="10_0" positiveFormat="0" negativeFormat="-0" hasThousandSeparators="NO" thousandSeparator="," id="23">
<attributedString key="attributedStringForZero">
<fragment content="0"/>
</attributedString>
<decimal key="minimum" value="NaN"/>
<decimal key="maximum" value="NaN"/>
</numberFormatter>
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="1" name="value" keyPath="values.minMatchPercentage" id="37"/>
</connections>
</textField>
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" id="101">
<rect key="frame" x="15" y="92" width="100" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Font size:" id="104">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<comboBox verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" textCompletion="NO" id="102">
<rect key="frame" x="120" y="88" width="69" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" numberOfVisibleItems="6" id="103">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
<objectValues>
<string>11</string>
<string>12</string>
<string>13</string>
<string>14</string>
<string>18</string>
<string>24</string>
</objectValues>
</comboBoxCell>
<connections>
<binding destination="1" name="value" keyPath="values.TableFontSize" id="105"/>
</connections>
</comboBox>
</subviews>
</view>
</tabViewItem>
<tabViewItem label="Advanced" identifier="2" id="61">
<view key="view" id="62">
<rect key="frame" x="10" y="33" width="346" height="159"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button imageHugsTitle="YES" id="4">
<rect key="frame" x="15" y="140" width="316" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Use regular expressions when filtering" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="34">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="value" keyPath="values.useRegexpFilter" id="42"/>
<outlet property="nextKeyView" destination="5" id="39"/>
</connections>
</button>
<button imageHugsTitle="YES" id="69">
<rect key="frame" x="15" y="120" width="316" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Ignore duplicates hardlinking to the same file" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="70">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="value" keyPath="values.ignoreHardlinkMatches" id="73"/>
<outlet property="nextKeyView" destination="5" id="72"/>
</connections>
</button>
<button imageHugsTitle="YES" id="74">
<rect key="frame" x="15" y="100" width="316" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Debug mode (restart required)" bezelStyle="regularSquare" imagePosition="leading" alignment="left" inset="2" id="75">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="1" name="value" keyPath="values.DebugMode" id="78"/>
<outlet property="nextKeyView" destination="5" id="77"/>
</connections>
</button>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="9">
<rect key="frame" x="14" y="34" width="318" height="13"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Copy and Move:" id="25">
<font key="font" metaFont="label"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="64">
<rect key="frame" x="14" y="77" width="318" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Custom Command (arguments: %d for dupe, %r for ref):" id="65">
<font key="font" metaFont="label"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" imageHugsTitle="YES" id="8">
<rect key="frame" x="14" y="2" width="216" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Right in destination" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="30" id="26">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<menu key="menu" title="OtherViews" id="27">
<items>
<menuItem title="Right in destination" state="on" id="30"/>
<menuItem title="Recreate relative path" id="28"/>
<menuItem title="Recreate absolute path" id="29"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<binding destination="1" name="selectedIndex" keyPath="values.recreatePathType" id="46"/>
<outlet property="nextKeyView" destination="10" id="44"/>
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="66">
<rect key="frame" x="17" y="55" width="312" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="67">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="1" name="value" keyPath="values.CustomCommand" id="68"/>
</connections>
</textField>
</subviews>
</view>
</tabViewItem>
</tabViewItems>
</tabView>
</subviews>
</view>
<point key="canvasLocation" x="132" y="146.5"/>
</window>
</objects>
</document>

View File

@ -1,173 +0,0 @@
appmode = args.get('appmode', 'standard')
dialogHeights = {
'standard': 325,
'music': 345,
'picture': 255,
}
result = Window(410, dialogHeights[appmode], "dupeGuru Preferences")
tabView = TabView(result)
basicTab = tabView.addTab("Basic")
advancedTab = tabView.addTab("Advanced")
thresholdSlider = Slider(basicTab.view, 1, 100, 80)
thresholdLabel = Label(basicTab.view, "Filter hardness:")
moreResultsLabel = Label(basicTab.view, "More results")
fewerResultsLabel = Label(basicTab.view, "Fewer results")
thresholdValueLabel = Label(basicTab.view, "")
fontSizeCombo = Combobox(basicTab.view, ["11", "12", "13", "14", "18", "24"])
fontSizeLabel = Label(basicTab.view, "Font Size:")
if appmode in ('standard', 'music'):
wordWeightingBox = Checkbox(basicTab.view, "Word weighting")
matchSimilarWordsBox = Checkbox(basicTab.view, "Match similar words")
elif appmode == 'picture':
matchDifferentDimensionsBox = Checkbox(basicTab.view, "Match pictures of different dimensions")
mixKindBox = Checkbox(basicTab.view, "Can mix file kind")
removeEmptyFoldersBox = Checkbox(basicTab.view, "Remove empty folders on delete or move")
checkForUpdatesBox = Checkbox(basicTab.view, "Automatically check for updates")
if appmode == 'standard':
ignoreSmallFilesBox = Checkbox(basicTab.view, "Ignore files smaller than:")
smallFilesThresholdText = TextField(basicTab.view, "")
smallFilesThresholdSuffixLabel = Label(basicTab.view, "KB")
elif appmode == 'music':
tagsToScanLabel = Label(basicTab.view, "Tags to scan:")
trackBox = Checkbox(basicTab.view, "Track")
artistBox = Checkbox(basicTab.view, "Artist")
albumBox = Checkbox(basicTab.view, "Album")
titleBox = Checkbox(basicTab.view, "Title")
genreBox = Checkbox(basicTab.view, "Genre")
yearBox = Checkbox(basicTab.view, "Year")
tagBoxes = [trackBox, artistBox, albumBox, titleBox, genreBox, yearBox]
regexpCheckbox = Checkbox(advancedTab.view, "Use regular expressions when filtering")
ignoreHardlinksBox = Checkbox(advancedTab.view, "Ignore duplicates hardlinking to the same file")
debugModeCheckbox = Checkbox(advancedTab.view, "Debug mode (restart required)")
customCommandLabel = Label(advancedTab.view, "Custom command (arguments: %d for dupe, %r for ref):")
customCommandText = TextField(advancedTab.view, "")
copyMoveLabel = Label(advancedTab.view, "Copy and Move:")
copyMovePopup = Popup(advancedTab.view, ["Right in destination", "Recreate relative path", "Recreate absolute path"])
resetToDefaultsButton = Button(result, "Reset To Defaults")
thresholdSlider.bind('value', defaults, 'values.minMatchPercentage')
thresholdValueLabel.bind('value', defaults, 'values.minMatchPercentage')
fontSizeCombo.bind('value', defaults, 'values.TableFontSize')
mixKindBox.bind('value', defaults, 'values.mixFileKind')
removeEmptyFoldersBox.bind('value', defaults, 'values.removeEmptyFolders')
checkForUpdatesBox.bind('value', defaults, 'values.SUEnableAutomaticChecks')
regexpCheckbox.bind('value', defaults, 'values.useRegexpFilter')
ignoreHardlinksBox.bind('value', defaults, 'values.ignoreHardlinkMatches')
debugModeCheckbox.bind('value', defaults, 'values.DebugMode')
customCommandText.bind('value', defaults, 'values.CustomCommand')
copyMovePopup.bind('selectedIndex', defaults, 'values.recreatePathType')
if appmode in ('standard', 'music'):
wordWeightingBox.bind('value', defaults, 'values.wordWeighting')
matchSimilarWordsBox.bind('value', defaults, 'values.matchSimilarWords')
disableWhenContentScan = [thresholdSlider, wordWeightingBox, matchSimilarWordsBox]
for control in disableWhenContentScan:
vtname = 'vtScanTypeMusicIsNotContent' if appmode == 'music' else 'vtScanTypeIsNotContent'
prefname = 'values.scanTypeMusic' if appmode == 'music' else 'values.scanTypeStandard'
control.bind('enabled', defaults, prefname, valueTransformer=vtname)
if appmode == 'standard':
ignoreSmallFilesBox.bind('value', defaults, 'values.ignoreSmallFiles')
smallFilesThresholdText.bind('value', defaults, 'values.smallFileThreshold')
elif appmode == 'music':
for box in tagBoxes:
box.bind('enabled', defaults, 'values.scanTypeMusic', valueTransformer='vtScanTypeIsTag')
trackBox.bind('value', defaults, 'values.scanTagTrack')
artistBox.bind('value', defaults, 'values.scanTagArtist')
albumBox.bind('value', defaults, 'values.scanTagAlbum')
titleBox.bind('value', defaults, 'values.scanTagTitle')
genreBox.bind('value', defaults, 'values.scanTagGenre')
yearBox.bind('value', defaults, 'values.scanTagYear')
elif appmode == 'picture':
matchDifferentDimensionsBox.bind('value', defaults, 'values.matchScaled')
thresholdSlider.bind('enabled', defaults, 'values.scanTypePicture', valueTransformer='vtScanTypeIsFuzzy')
result.canResize = False
result.canMinimize = False
thresholdValueLabel.formatter = NumberFormatter(NumberStyle.Decimal)
thresholdValueLabel.formatter.maximumFractionDigits = 0
allLabels = [thresholdValueLabel, moreResultsLabel, fewerResultsLabel,
thresholdLabel, fontSizeLabel, customCommandLabel, copyMoveLabel]
allCheckboxes = [mixKindBox, removeEmptyFoldersBox, checkForUpdatesBox, regexpCheckbox,
ignoreHardlinksBox, debugModeCheckbox]
if appmode == 'standard':
allLabels += [smallFilesThresholdSuffixLabel]
allCheckboxes += [ignoreSmallFilesBox, wordWeightingBox, matchSimilarWordsBox]
elif appmode == 'music':
allLabels += [tagsToScanLabel]
allCheckboxes += tagBoxes + [wordWeightingBox, matchSimilarWordsBox]
elif appmode == 'picture':
allCheckboxes += [matchDifferentDimensionsBox]
for label in allLabels:
label.controlSize = ControlSize.Small
fewerResultsLabel.alignment = TextAlignment.Right
for checkbox in allCheckboxes:
checkbox.font = thresholdValueLabel.font
resetToDefaultsButton.action = Action(defaults, 'revertToInitialValues:')
thresholdLabel.width = fontSizeLabel.width = 94
fontSizeCombo.width = 66
thresholdValueLabel.width = 25
resetToDefaultsButton.width = 136
if appmode == 'standard':
smallFilesThresholdText.width = 60
smallFilesThresholdSuffixLabel.width = 40
elif appmode == 'music':
for box in tagBoxes:
box.width = 70
tabView.packToCorner(Pack.UpperLeft)
tabView.fill(Pack.Right)
resetToDefaultsButton.packRelativeTo(tabView, Pack.Below, align=Pack.Right)
tabView.fill(Pack.Below, margin=14)
tabView.setAnchor(Pack.UpperLeft, growX=True, growY=True)
thresholdLayout = HLayout([thresholdLabel, thresholdSlider, thresholdValueLabel], filler=thresholdSlider)
thresholdLayout.packToCorner(Pack.UpperLeft)
thresholdLayout.fill(Pack.Right)
# We want to give the labels as much space as possible, and we only "know" how much is available
# after the slider's fill operation.
moreResultsLabel.width = fewerResultsLabel.width = thresholdSlider.width // 2
moreResultsLabel.packRelativeTo(thresholdSlider, Pack.Below, align=Pack.Left, margin=6)
fewerResultsLabel.packRelativeTo(thresholdSlider, Pack.Below, align=Pack.Right, margin=6)
fontSizeCombo.packRelativeTo(moreResultsLabel, Pack.Below)
fontSizeLabel.packRelativeTo(fontSizeCombo, Pack.Left)
if appmode == 'music':
tagsToScanLabel.packRelativeTo(fontSizeCombo, Pack.Below)
tagsToScanLabel.fill(Pack.Left)
tagsToScanLabel.fill(Pack.Right)
trackBox.packRelativeTo(tagsToScanLabel, Pack.Below)
trackBox.x += 10
artistBox.packRelativeTo(trackBox, Pack.Right)
albumBox.packRelativeTo(artistBox, Pack.Right)
titleBox.packRelativeTo(trackBox, Pack.Below)
genreBox.packRelativeTo(titleBox, Pack.Right)
yearBox.packRelativeTo(genreBox, Pack.Right)
viewToPackCheckboxesUnder = titleBox
else:
viewToPackCheckboxesUnder = fontSizeCombo
if appmode == 'standard':
checkboxesToLayout = [wordWeightingBox, matchSimilarWordsBox, mixKindBox, removeEmptyFoldersBox,
ignoreSmallFilesBox]
elif appmode == 'music':
checkboxesToLayout = [wordWeightingBox, matchSimilarWordsBox, mixKindBox, removeEmptyFoldersBox,
checkForUpdatesBox]
elif appmode == 'picture':
checkboxesToLayout = [matchDifferentDimensionsBox, mixKindBox, removeEmptyFoldersBox,
checkForUpdatesBox]
checkboxLayout = VLayout(checkboxesToLayout)
checkboxLayout.packRelativeTo(viewToPackCheckboxesUnder, Pack.Below)
checkboxLayout.fill(Pack.Left)
checkboxLayout.fill(Pack.Right)
if appmode == 'standard':
smallFilesThresholdText.packRelativeTo(ignoreSmallFilesBox, Pack.Below, margin=4)
checkForUpdatesBox.packRelativeTo(smallFilesThresholdText, Pack.Below, margin=4)
checkForUpdatesBox.fill(Pack.Right)
smallFilesThresholdText.x += 20
smallFilesThresholdSuffixLabel.packRelativeTo(smallFilesThresholdText, Pack.Right)
advancedLayout = VLayout(advancedTab.view.subviews[:])
advancedLayout.packToCorner(Pack.UpperLeft)
advancedLayout.fill(Pack.Right)

View File

@ -10,6 +10,9 @@
CE0559871E762105008EB4F8 /* IgnoreListDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE0559851E762105008EB4F8 /* IgnoreListDialog.xib */; };
CE05598E1E76217C008EB4F8 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE05598C1E76217C008EB4F8 /* Localizable.strings */; };
CE0559921E7626E7008EB4F8 /* locale in Resources */ = {isa = PBXBuildFile; fileRef = CE0559911E7626E7008EB4F8 /* locale */; };
CE41E6BD1E95D4B600D9F8FF /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE41E6B71E95D4B600D9F8FF /* Preferences.xib */; };
CE41E6BE1E95D4B600D9F8FF /* PreferencesMusic.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE41E6B91E95D4B600D9F8FF /* PreferencesMusic.xib */; };
CE41E6BF1E95D4B600D9F8FF /* PreferencesPicture.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE41E6BB1E95D4B600D9F8FF /* PreferencesPicture.xib */; };
CE549CDC1E933C7600C75A05 /* ResultWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE549CDA1E933C7600C75A05 /* ResultWindow.xib */; };
CE54FEBE1E9487D600BE559F /* DirectoryPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE54FEBC1E9487D600BE559F /* DirectoryPanel.xib */; };
CE65D0CC1E7781640092126E /* progress.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE65D0CA1E7781640092126E /* progress.xib */; };
@ -55,9 +58,6 @@
CE9720F41E74E40300A598C9 /* ResultWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9720E51E74E40300A598C9 /* ResultWindow.m */; };
CE9720F51E74E40300A598C9 /* StatsLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9720E71E74E40300A598C9 /* StatsLabel.m */; };
CE9721451E74E41D00A598C9 /* ObjP.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9721081E74E41C00A598C9 /* ObjP.m */; };
CE9721461E74E41D00A598C9 /* PreferencesPanelMusic_UI.m in Sources */ = {isa = PBXBuildFile; fileRef = CE97210A1E74E41C00A598C9 /* PreferencesPanelMusic_UI.m */; };
CE9721471E74E41D00A598C9 /* PreferencesPanelPicture_UI.m in Sources */ = {isa = PBXBuildFile; fileRef = CE97210C1E74E41C00A598C9 /* PreferencesPanelPicture_UI.m */; };
CE9721481E74E41D00A598C9 /* PreferencesPanelStandard_UI.m in Sources */ = {isa = PBXBuildFile; fileRef = CE97210E1E74E41C00A598C9 /* PreferencesPanelStandard_UI.m */; };
CE97214C1E74E41D00A598C9 /* PyBaseApp.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9721161E74E41D00A598C9 /* PyBaseApp.m */; };
CE97214D1E74E41D00A598C9 /* PyColumns.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9721181E74E41D00A598C9 /* PyColumns.m */; };
CE97214E1E74E41D00A598C9 /* PyDeletionOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE97211A1E74E41D00A598C9 /* PyDeletionOptions.m */; };
@ -137,6 +137,54 @@
CE0559CD1E762A94008EB4F8 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "cocoa/zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
CE0559CE1E762A9A008EB4F8 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = cocoa/vi.lproj/IgnoreListDialog.strings; sourceTree = "<group>"; };
CE0559D01E762A9A008EB4F8 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = cocoa/vi.lproj/Localizable.strings; sourceTree = "<group>"; };
CE41E6B81E95D4B600D9F8FF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = cocoa/Base.lproj/Preferences.xib; sourceTree = "<group>"; };
CE41E6BA1E95D4B600D9F8FF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = cocoa/Base.lproj/PreferencesMusic.xib; sourceTree = "<group>"; };
CE41E6BC1E95D4B600D9F8FF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = cocoa/Base.lproj/PreferencesPicture.xib; sourceTree = "<group>"; };
CE41E6C11E95D50200D9F8FF /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = cocoa/fr.lproj/Preferences.strings; sourceTree = "<group>"; };
CE41E6C31E95D50300D9F8FF /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = cocoa/de.lproj/Preferences.strings; sourceTree = "<group>"; };
CE41E6C51E95D50500D9F8FF /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cocoa/cs.lproj/Preferences.strings; sourceTree = "<group>"; };
CE41E6C71E95D50600D9F8FF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = cocoa/es.lproj/Preferences.strings; sourceTree = "<group>"; };
CE41E6C91E95D50800D9F8FF /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = cocoa/el.lproj/Preferences.strings; sourceTree = "<group>"; };
CE41E6CB1E95D50900D9F8FF /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = cocoa/it.lproj/Preferences.strings; sourceTree = "<group>"; };
CE41E6CD1E95D50A00D9F8FF /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = cocoa/nl.lproj/Preferences.strings; sourceTree = "<group>"; };
CE41E6CF1E95D50C00D9F8FF /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = cocoa/pl.lproj/Preferences.strings; sourceTree = "<group>"; };
CE41E6D11E95D50D00D9F8FF /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = cocoa/ko.lproj/Preferences.strings; sourceTree = "<group>"; };
CE41E6D31E95D50F00D9F8FF /* hy */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hy; path = cocoa/hy.lproj/Preferences.strings; sourceTree = "<group>"; };
CE41E6D51E95D51100D9F8FF /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "cocoa/pt-BR.lproj/Preferences.strings"; sourceTree = "<group>"; };
CE41E6D71E95D51200D9F8FF /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = cocoa/ru.lproj/Preferences.strings; sourceTree = "<group>"; };
CE41E6D91E95D51400D9F8FF /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = cocoa/uk.lproj/Preferences.strings; sourceTree = "<group>"; };
CE41E6DB1E95D51500D9F8FF /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "cocoa/zh-Hans.lproj/Preferences.strings"; sourceTree = "<group>"; };
CE41E6DD1E95D51800D9F8FF /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = cocoa/vi.lproj/Preferences.strings; sourceTree = "<group>"; };
CE41E6DF1E95D76800D9F8FF /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = cocoa/fr.lproj/PreferencesMusic.strings; sourceTree = "<group>"; };
CE41E6E11E95D76A00D9F8FF /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = cocoa/de.lproj/PreferencesMusic.strings; sourceTree = "<group>"; };
CE41E6E31E95D76B00D9F8FF /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cocoa/cs.lproj/PreferencesMusic.strings; sourceTree = "<group>"; };
CE41E6E51E95D76C00D9F8FF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = cocoa/es.lproj/PreferencesMusic.strings; sourceTree = "<group>"; };
CE41E6E71E95D76E00D9F8FF /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = cocoa/el.lproj/PreferencesMusic.strings; sourceTree = "<group>"; };
CE41E6E91E95D76F00D9F8FF /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = cocoa/it.lproj/PreferencesMusic.strings; sourceTree = "<group>"; };
CE41E6EB1E95D77100D9F8FF /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = cocoa/nl.lproj/PreferencesMusic.strings; sourceTree = "<group>"; };
CE41E6ED1E95D77200D9F8FF /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = cocoa/pl.lproj/PreferencesMusic.strings; sourceTree = "<group>"; };
CE41E6EF1E95D77300D9F8FF /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = cocoa/ko.lproj/PreferencesMusic.strings; sourceTree = "<group>"; };
CE41E6F11E95D77600D9F8FF /* hy */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hy; path = cocoa/hy.lproj/PreferencesMusic.strings; sourceTree = "<group>"; };
CE41E6F31E95D77700D9F8FF /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "cocoa/pt-BR.lproj/PreferencesMusic.strings"; sourceTree = "<group>"; };
CE41E6F51E95D77800D9F8FF /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = cocoa/ru.lproj/PreferencesMusic.strings; sourceTree = "<group>"; };
CE41E6F71E95D77A00D9F8FF /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = cocoa/uk.lproj/PreferencesMusic.strings; sourceTree = "<group>"; };
CE41E6F91E95D77B00D9F8FF /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "cocoa/zh-Hans.lproj/PreferencesMusic.strings"; sourceTree = "<group>"; };
CE41E6FB1E95D77C00D9F8FF /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = cocoa/vi.lproj/PreferencesMusic.strings; sourceTree = "<group>"; };
CE41E6FD1E95D7F500D9F8FF /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = cocoa/fr.lproj/PreferencesPicture.strings; sourceTree = "<group>"; };
CE41E6FF1E95D7F700D9F8FF /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = cocoa/de.lproj/PreferencesPicture.strings; sourceTree = "<group>"; };
CE41E7011E95D7F800D9F8FF /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cocoa/cs.lproj/PreferencesPicture.strings; sourceTree = "<group>"; };
CE41E7031E95D7F900D9F8FF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = cocoa/es.lproj/PreferencesPicture.strings; sourceTree = "<group>"; };
CE41E7051E95D7FA00D9F8FF /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = cocoa/el.lproj/PreferencesPicture.strings; sourceTree = "<group>"; };
CE41E7071E95D7FC00D9F8FF /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = cocoa/it.lproj/PreferencesPicture.strings; sourceTree = "<group>"; };
CE41E7091E95D7FD00D9F8FF /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = cocoa/nl.lproj/PreferencesPicture.strings; sourceTree = "<group>"; };
CE41E70B1E95D7FF00D9F8FF /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = cocoa/pl.lproj/PreferencesPicture.strings; sourceTree = "<group>"; };
CE41E70D1E95D80100D9F8FF /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = cocoa/ko.lproj/PreferencesPicture.strings; sourceTree = "<group>"; };
CE41E70F1E95D80200D9F8FF /* hy */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hy; path = cocoa/hy.lproj/PreferencesPicture.strings; sourceTree = "<group>"; };
CE41E7111E95D80300D9F8FF /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "cocoa/pt-BR.lproj/PreferencesPicture.strings"; sourceTree = "<group>"; };
CE41E7131E95D80500D9F8FF /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = cocoa/ru.lproj/PreferencesPicture.strings; sourceTree = "<group>"; };
CE41E7151E95D80700D9F8FF /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = cocoa/uk.lproj/PreferencesPicture.strings; sourceTree = "<group>"; };
CE41E7171E95D80900D9F8FF /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "cocoa/zh-Hans.lproj/PreferencesPicture.strings"; sourceTree = "<group>"; };
CE41E7191E95D80A00D9F8FF /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = cocoa/vi.lproj/PreferencesPicture.strings; sourceTree = "<group>"; };
CE549CDB1E933C7600C75A05 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = cocoa/Base.lproj/ResultWindow.xib; sourceTree = "<group>"; };
CE549CDE1E933D4A00C75A05 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = cocoa/fr.lproj/ResultWindow.strings; sourceTree = "<group>"; };
CE549CE01E933D4C00C75A05 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = cocoa/de.lproj/ResultWindow.strings; sourceTree = "<group>"; };
@ -313,12 +361,6 @@
CE9720E71E74E40300A598C9 /* StatsLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = StatsLabel.m; path = cocoa/StatsLabel.m; sourceTree = "<group>"; };
CE9721071E74E41C00A598C9 /* ObjP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ObjP.h; path = cocoa/autogen/ObjP.h; sourceTree = "<group>"; };
CE9721081E74E41C00A598C9 /* ObjP.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ObjP.m; path = cocoa/autogen/ObjP.m; sourceTree = "<group>"; };
CE9721091E74E41C00A598C9 /* PreferencesPanelMusic_UI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PreferencesPanelMusic_UI.h; path = cocoa/autogen/PreferencesPanelMusic_UI.h; sourceTree = "<group>"; };
CE97210A1E74E41C00A598C9 /* PreferencesPanelMusic_UI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PreferencesPanelMusic_UI.m; path = cocoa/autogen/PreferencesPanelMusic_UI.m; sourceTree = "<group>"; };
CE97210B1E74E41C00A598C9 /* PreferencesPanelPicture_UI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PreferencesPanelPicture_UI.h; path = cocoa/autogen/PreferencesPanelPicture_UI.h; sourceTree = "<group>"; };
CE97210C1E74E41C00A598C9 /* PreferencesPanelPicture_UI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PreferencesPanelPicture_UI.m; path = cocoa/autogen/PreferencesPanelPicture_UI.m; sourceTree = "<group>"; };
CE97210D1E74E41C00A598C9 /* PreferencesPanelStandard_UI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PreferencesPanelStandard_UI.h; path = cocoa/autogen/PreferencesPanelStandard_UI.h; sourceTree = "<group>"; };
CE97210E1E74E41C00A598C9 /* PreferencesPanelStandard_UI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PreferencesPanelStandard_UI.m; path = cocoa/autogen/PreferencesPanelStandard_UI.m; sourceTree = "<group>"; };
CE9721151E74E41D00A598C9 /* PyBaseApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyBaseApp.h; path = cocoa/autogen/PyBaseApp.h; sourceTree = "<group>"; };
CE9721161E74E41D00A598C9 /* PyBaseApp.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PyBaseApp.m; path = cocoa/autogen/PyBaseApp.m; sourceTree = "<group>"; };
CE9721171E74E41D00A598C9 /* PyColumns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyColumns.h; path = cocoa/autogen/PyColumns.h; sourceTree = "<group>"; };
@ -484,6 +526,9 @@
CEF0941E1E947AF700CD0BF3 /* DetailsPanelPicture.xib */,
CEF0943F1E947CAB00CD0BF3 /* PrioritizeDialog.xib */,
CEF094601E94828600CD0BF3 /* ProblemDialog.xib */,
CE41E6B71E95D4B600D9F8FF /* Preferences.xib */,
CE41E6B91E95D4B600D9F8FF /* PreferencesMusic.xib */,
CE41E6BB1E95D4B600D9F8FF /* PreferencesPicture.xib */,
);
name = xib;
sourceTree = "<group>";
@ -619,12 +664,6 @@
children = (
CE9721071E74E41C00A598C9 /* ObjP.h */,
CE9721081E74E41C00A598C9 /* ObjP.m */,
CE9721091E74E41C00A598C9 /* PreferencesPanelMusic_UI.h */,
CE97210A1E74E41C00A598C9 /* PreferencesPanelMusic_UI.m */,
CE97210B1E74E41C00A598C9 /* PreferencesPanelPicture_UI.h */,
CE97210C1E74E41C00A598C9 /* PreferencesPanelPicture_UI.m */,
CE97210D1E74E41C00A598C9 /* PreferencesPanelStandard_UI.h */,
CE97210E1E74E41C00A598C9 /* PreferencesPanelStandard_UI.m */,
CE9721151E74E41D00A598C9 /* PyBaseApp.h */,
CE9721161E74E41D00A598C9 /* PyBaseApp.m */,
CE9721171E74E41D00A598C9 /* PyColumns.h */,
@ -780,6 +819,7 @@
CE05598E1E76217C008EB4F8 /* Localizable.strings in Resources */,
CE65D0ED1E7783C40092126E /* ErrorReportWindow.xib in Resources */,
CE549CDC1E933C7600C75A05 /* ResultWindow.xib in Resources */,
CE41E6BF1E95D4B600D9F8FF /* PreferencesPicture.xib in Resources */,
CEF094411E947CAB00CD0BF3 /* PrioritizeDialog.xib in Resources */,
CEFC8A251E74F23000965F37 /* dg_cocoa.py in Resources */,
CEF093DE1E9474F700CD0BF3 /* DeletionOptions.xib in Resources */,
@ -789,6 +829,8 @@
CE0559871E762105008EB4F8 /* IgnoreListDialog.xib in Resources */,
CEF094621E94828600CD0BF3 /* ProblemDialog.xib in Resources */,
CEF094201E947AF700CD0BF3 /* DetailsPanelPicture.xib in Resources */,
CE41E6BE1E95D4B600D9F8FF /* PreferencesMusic.xib in Resources */,
CE41E6BD1E95D4B600D9F8FF /* Preferences.xib in Resources */,
CEFC8A261E74F23000965F37 /* dupeguru.icns in Resources */,
CE65D0CC1E7781640092126E /* progress.xib in Resources */,
CE9EF6DF1E9345100089CA20 /* MainMenu.xib in Resources */,
@ -827,7 +869,6 @@
CE9720F51E74E40300A598C9 /* StatsLabel.m in Sources */,
CE6F7DEA1E74E9E4004C0518 /* HSQuicklook.m in Sources */,
CE97214C1E74E41D00A598C9 /* PyBaseApp.m in Sources */,
CE9721461E74E41D00A598C9 /* PreferencesPanelMusic_UI.m in Sources */,
CE6F7DF11E74E9E4004C0518 /* ValueTransformers.m in Sources */,
CE9720E91E74E40300A598C9 /* DeletionOptions.m in Sources */,
CE6F7E061E74EA12004C0518 /* HSOutline.m in Sources */,
@ -836,7 +877,6 @@
CE6F7DE71E74E9E4004C0518 /* HSAboutBox.m in Sources */,
CE9720EF1E74E40300A598C9 /* main.m in Sources */,
CE9721591E74E41D00A598C9 /* PyResultTable.m in Sources */,
CE9721481E74E41D00A598C9 /* PreferencesPanelStandard_UI.m in Sources */,
CE9720E81E74E40300A598C9 /* AppDelegate.m in Sources */,
CE9721561E74E41D00A598C9 /* PyPrioritizeList.m in Sources */,
CE6F7DEF1E74E9E4004C0518 /* ProgressController.m in Sources */,
@ -858,7 +898,6 @@
CE6F7E141E74EA26004C0518 /* HSOutlineView.m in Sources */,
CE97214F1E74E41D00A598C9 /* PyDetailsPanel.m in Sources */,
CE6F7E171E74EA26004C0518 /* NSTableViewAdditions.m in Sources */,
CE9721471E74E41D00A598C9 /* PreferencesPanelPicture_UI.m in Sources */,
CE97215C1E74E41D00A598C9 /* PyTable.m in Sources */,
CE9721581E74E41D00A598C9 /* PyProgressWindow.m in Sources */,
CE6F7DEC1E74E9E4004C0518 /* NSEventAdditions.m in Sources */,
@ -916,6 +955,75 @@
name = Localizable.strings;
sourceTree = "<group>";
};
CE41E6B71E95D4B600D9F8FF /* Preferences.xib */ = {
isa = PBXVariantGroup;
children = (
CE41E6B81E95D4B600D9F8FF /* Base */,
CE41E6C11E95D50200D9F8FF /* fr */,
CE41E6C31E95D50300D9F8FF /* de */,
CE41E6C51E95D50500D9F8FF /* cs */,
CE41E6C71E95D50600D9F8FF /* es */,
CE41E6C91E95D50800D9F8FF /* el */,
CE41E6CB1E95D50900D9F8FF /* it */,
CE41E6CD1E95D50A00D9F8FF /* nl */,
CE41E6CF1E95D50C00D9F8FF /* pl */,
CE41E6D11E95D50D00D9F8FF /* ko */,
CE41E6D31E95D50F00D9F8FF /* hy */,
CE41E6D51E95D51100D9F8FF /* pt-BR */,
CE41E6D71E95D51200D9F8FF /* ru */,
CE41E6D91E95D51400D9F8FF /* uk */,
CE41E6DB1E95D51500D9F8FF /* zh-Hans */,
CE41E6DD1E95D51800D9F8FF /* vi */,
);
name = Preferences.xib;
sourceTree = "<group>";
};
CE41E6B91E95D4B600D9F8FF /* PreferencesMusic.xib */ = {
isa = PBXVariantGroup;
children = (
CE41E6BA1E95D4B600D9F8FF /* Base */,
CE41E6DF1E95D76800D9F8FF /* fr */,
CE41E6E11E95D76A00D9F8FF /* de */,
CE41E6E31E95D76B00D9F8FF /* cs */,
CE41E6E51E95D76C00D9F8FF /* es */,
CE41E6E71E95D76E00D9F8FF /* el */,
CE41E6E91E95D76F00D9F8FF /* it */,
CE41E6EB1E95D77100D9F8FF /* nl */,
CE41E6ED1E95D77200D9F8FF /* pl */,
CE41E6EF1E95D77300D9F8FF /* ko */,
CE41E6F11E95D77600D9F8FF /* hy */,
CE41E6F31E95D77700D9F8FF /* pt-BR */,
CE41E6F51E95D77800D9F8FF /* ru */,
CE41E6F71E95D77A00D9F8FF /* uk */,
CE41E6F91E95D77B00D9F8FF /* zh-Hans */,
CE41E6FB1E95D77C00D9F8FF /* vi */,
);
name = PreferencesMusic.xib;
sourceTree = "<group>";
};
CE41E6BB1E95D4B600D9F8FF /* PreferencesPicture.xib */ = {
isa = PBXVariantGroup;
children = (
CE41E6BC1E95D4B600D9F8FF /* Base */,
CE41E6FD1E95D7F500D9F8FF /* fr */,
CE41E6FF1E95D7F700D9F8FF /* de */,
CE41E7011E95D7F800D9F8FF /* cs */,
CE41E7031E95D7F900D9F8FF /* es */,
CE41E7051E95D7FA00D9F8FF /* el */,
CE41E7071E95D7FC00D9F8FF /* it */,
CE41E7091E95D7FD00D9F8FF /* nl */,
CE41E70B1E95D7FF00D9F8FF /* pl */,
CE41E70D1E95D80100D9F8FF /* ko */,
CE41E70F1E95D80200D9F8FF /* hy */,
CE41E7111E95D80300D9F8FF /* pt-BR */,
CE41E7131E95D80500D9F8FF /* ru */,
CE41E7151E95D80700D9F8FF /* uk */,
CE41E7171E95D80900D9F8FF /* zh-Hans */,
CE41E7191E95D80A00D9F8FF /* vi */,
);
name = PreferencesPicture.xib;
sourceTree = "<group>";
};
CE549CDA1E933C7600C75A05 /* ResultWindow.xib */ = {
isa = PBXVariantGroup;
children = (

View File

@ -1,4 +1,3 @@
-r dupeguru/requirements.txt
objp>=1.3.1
xibless>=0.4.1