@@ -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) | |||
@@ -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]; | |||
} | |||
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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) |
@@ -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 = ( | |||
@@ -1,4 +1,3 @@ | |||
-r dupeguru/requirements.txt | |||
objp>=1.3.1 | |||
xibless>=0.4.1 | |||