Un-xibless-ified ResultWindow

This commit is contained in:
Virgil Dupras 2017-04-03 23:04:01 -04:00
parent c8c3f127ab
commit b0dcf86e05
8 changed files with 397 additions and 216 deletions

View File

@ -84,7 +84,6 @@ def build_xibless(dest='cocoa/autogen'):
('problem_dialog.py', 'ProblemDialog_UI'), ('problem_dialog.py', 'ProblemDialog_UI'),
('directory_panel.py', 'DirectoryPanel_UI'), ('directory_panel.py', 'DirectoryPanel_UI'),
('prioritize_dialog.py', 'PrioritizeDialog_UI'), ('prioritize_dialog.py', 'PrioritizeDialog_UI'),
('result_window.py', 'ResultWindow_UI'),
('main_menu.py', 'MainMenu_UI'), ('main_menu.py', 'MainMenu_UI'),
('details_panel.py', 'DetailsPanel_UI'), ('details_panel.py', 'DetailsPanel_UI'),
('details_panel_picture.py', 'DetailsPanelPicture_UI'), ('details_panel_picture.py', 'DetailsPanelPicture_UI'),

View File

@ -0,0 +1,275 @@
<?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="ResultWindow">
<connections>
<outlet property="filterField" destination="41" id="61"/>
<outlet property="matches" destination="8" id="66"/>
<outlet property="optionsSwitch" destination="43" id="64"/>
<outlet property="optionsToolbarItem" destination="15" id="92"/>
<outlet property="stats" destination="5" id="65"/>
<outlet property="window" destination="1" id="46"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application"/>
<menu title="Menu" id="67" userLabel="matches_context">
<items>
<menuItem title="Remove Selected from Results" id="71">
<connections>
<action selector="removeSelected:" target="-2" id="76"/>
</connections>
</menuItem>
<menuItem title="Add Selected to Ignore List" id="68">
<connections>
<action selector="ignoreSelected:" target="-2" id="77"/>
</connections>
</menuItem>
<menuItem title="Make Selected Reference" id="72">
<connections>
<action selector="switchSelected:" target="-2" id="78"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="69">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Open Selected with Default Application" id="74">
<connections>
<action selector="openSelected:" target="-2" id="79"/>
</connections>
</menuItem>
<menuItem title="Reveal Selected in Finder" id="73">
<connections>
<action selector="revealSelected:" target="-2" id="80"/>
</connections>
</menuItem>
<menuItem title="Rename Selected" id="70">
<connections>
<action selector="renameSelected:" target="-2" id="81"/>
</connections>
</menuItem>
</items>
</menu>
<window title="dupeGuru Results" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="MainWindow" animationBehavior="default" id="1" userLabel="Window">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="47" y="310" width="557" height="400"/>
<rect key="screenRect" x="0.0" y="0.0" width="1920" height="1058"/>
<value key="minSize" type="size" width="340" height="340"/>
<view key="contentView" id="3">
<rect key="frame" x="0.0" y="0.0" width="557" height="400"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="5">
<rect key="frame" x="17" y="6" width="523" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="center" title="Marked: 0 files, 0 B. Total: 0 files, 0 B." id="6">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<scrollView autohidesScrollers="YES" horizontalLineScroll="16" horizontalPageScroll="10" verticalLineScroll="16" verticalPageScroll="10" usesPredominantAxisScrolling="NO" id="4">
<rect key="frame" x="0.0" y="28" width="559" height="373"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<clipView key="contentView" id="F1z-AN-Fbf">
<rect key="frame" x="1" y="0.0" width="557" height="372"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" emptySelection="NO" autosaveColumns="NO" rowHeight="14" headerView="7" id="8" customClass="HSTableView">
<rect key="frame" x="0.0" y="0.0" width="557" height="349"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<tableViewGridLines key="gridStyleMask" horizontal="YES"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<connections>
<binding destination="88" name="rowHeight" keyPath="values.TableFontSize" id="90">
<dictionary key="options">
<string key="NSValueTransformerName">vtRowHeightOffset</string>
</dictionary>
</binding>
<outlet property="menu" destination="67" id="83"/>
</connections>
</tableView>
</subviews>
</clipView>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="9">
<rect key="frame" x="1" y="119" width="223" height="15"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="37" horizontal="NO" id="10">
<rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<tableHeaderView key="headerView" id="7">
<rect key="frame" x="0.0" y="0.0" width="557" height="23"/>
<autoresizingMask key="autoresizingMask"/>
</tableHeaderView>
</scrollView>
</subviews>
</view>
<toolbar key="toolbar" implicitIdentifier="184FCE08-7704-43E1-B7CA-394621354414" displayMode="iconOnly" sizeMode="regular" id="2">
<allowedToolbarItems>
<toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="22"/>
<toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="21"/>
<toolbarItem implicitItemIdentifier="F37510C7-955F-4141-9D09-AC2881ADCCFA" label="Action" paletteLabel="Action" image="NSActionTemplate" id="17">
<nil key="toolTip"/>
<size key="minSize" width="30" height="25"/>
<size key="maxSize" width="40" height="26"/>
<popUpButton key="view" verticalHuggingPriority="750" misplaced="YES" imageHugsTitle="YES" id="24">
<rect key="frame" x="0.0" y="14" width="42" height="25"/>
<autoresizingMask key="autoresizingMask"/>
<popUpButtonCell key="cell" type="roundTextured" title=" " bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" pullsDown="YES" preferredEdge="maxY" selectedItem="28" id="25">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<menu key="menu" title="OtherViews" id="26">
<items>
<menuItem title=" " state="on" image="NSActionTemplate" hidden="YES" id="28"/>
<menuItem title="Send Marked to Trash..." id="29">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="trashMarked:" target="-1" id="93"/>
</connections>
</menuItem>
<menuItem title="Move Marked to..." id="30">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="moveMarked:" target="-2" id="52"/>
</connections>
</menuItem>
<menuItem title="Copy Marked to..." id="31">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="copyMarked:" target="-2" id="53"/>
</connections>
</menuItem>
<menuItem title="Remove Marked from Results" id="32">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="removeMarked:" target="-2" id="54"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="33">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Remove Selected from Results" id="34">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="removeSelected:" target="-2" id="55"/>
</connections>
</menuItem>
<menuItem title="Add Selected to Ignore List" id="35">
<connections>
<action selector="ignoreSelected:" target="-2" id="56"/>
</connections>
</menuItem>
<menuItem title="Make Selected Reference" id="36">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="switchSelected:" target="-2" id="57"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="37">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Open Selected with Default Application" id="38">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="openSelected:" target="-2" id="58"/>
</connections>
</menuItem>
<menuItem title="Reveal Selected in Finder" id="39">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="revealSelected:" target="-2" id="59"/>
</connections>
</menuItem>
<menuItem title="Rename Selected" id="40">
<connections>
<action selector="renameSelected:" target="-2" id="60"/>
</connections>
</menuItem>
</items>
</menu>
</popUpButtonCell>
</popUpButton>
</toolbarItem>
<toolbarItem implicitItemIdentifier="8E5ADD0F-24AD-452A-BE68-464FE9E5E240" label="Filter" paletteLabel="Filter" id="16">
<nil key="toolTip"/>
<size key="minSize" width="81" height="22"/>
<size key="maxSize" width="300" height="22"/>
<searchField key="view" wantsLayer="YES" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" textCompletion="NO" id="41">
<rect key="frame" x="0.0" y="14" width="81" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES"/>
<searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" placeholderString="Filter" bezelStyle="round" sendsWholeSearchString="YES" maximumRecents="10" id="42">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</searchFieldCell>
<connections>
<action selector="filter:" target="-2" id="62"/>
</connections>
</searchField>
</toolbarItem>
<toolbarItem implicitItemIdentifier="4BD1D94E-8A70-48E1-AF8A-CEDC80CD0A5E" label="Options" paletteLabel="Options" id="15">
<nil key="toolTip"/>
<size key="minSize" width="195" height="20"/>
<size key="maxSize" width="195" height="25"/>
<segmentedControl key="view" verticalHuggingPriority="750" id="43">
<rect key="frame" x="0.0" y="14" width="195" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<segmentedCell key="cell" borderStyle="border" alignment="left" style="automatic" trackingMode="selectAny" id="44">
<font key="font" metaFont="system"/>
<segments>
<segment label="Details" width="57"/>
<segment label="Dupes Only" width="82" tag="1"/>
<segment label="Delta" width="48"/>
</segments>
</segmentedCell>
<connections>
<action selector="changeOptions:" target="-2" id="63"/>
</connections>
</segmentedControl>
</toolbarItem>
<toolbarItem implicitItemIdentifier="A85CDEA8-333B-47CF-960E-DDC65B0C56BC" label="Quick Look" paletteLabel="Quick Look" image="NSQuickLookTemplate" id="86">
<nil key="toolTip"/>
<size key="minSize" width="30" height="25"/>
<size key="maxSize" width="44" height="32"/>
<button key="view" verticalHuggingPriority="750" imageHugsTitle="YES" id="84">
<rect key="frame" x="11" y="14" width="44" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="85">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
<connections>
<action selector="toggleQuicklookPanel:" target="-2" id="87"/>
</connections>
</toolbarItem>
</allowedToolbarItems>
<defaultToolbarItems>
<toolbarItem reference="17"/>
<toolbarItem reference="15"/>
<toolbarItem reference="86"/>
<toolbarItem reference="21"/>
<toolbarItem reference="16"/>
</defaultToolbarItems>
</toolbar>
<connections>
<outlet property="delegate" destination="-2" id="45"/>
</connections>
</window>
<userDefaultsController representsSharedInstance="YES" id="88"/>
</objects>
<resources>
<image name="NSActionTemplate" width="14" height="14"/>
<image name="NSQuickLookTemplate" width="19" height="12"/>
</resources>
</document>

View File

@ -1,5 +1,5 @@
/* /*
Copyright 2015 Hardcoded Software (http://www.hardcoded.net) Copyright 2017 Virgil Dupras
This software is licensed under the "GPLv3" License as described in the "LICENSE" file, This software is licensed under the "GPLv3" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at which should be included with this package. The terms are also available at
@ -46,31 +46,31 @@ http://www.gnu.org/licenses/gpl-3.0.html
- (void)initResultColumns:(ResultTable *)aTable; - (void)initResultColumns:(ResultTable *)aTable;
/* Actions */ /* Actions */
- (void)changeOptions; - (IBAction)changeOptions:(id)sender;
- (void)copyMarked; - (IBAction)copyMarked:(id)sender;
- (void)trashMarked; - (IBAction)trashMarked:(id)sender;
- (void)filter; - (IBAction)filter:(id)sender;
- (void)focusOnFilterField; - (IBAction)focusOnFilterField:(id)sender;
- (void)ignoreSelected; - (IBAction)ignoreSelected:(id)sender;
- (void)invokeCustomCommand; - (IBAction)invokeCustomCommand:(id)sender;
- (void)markAll; - (IBAction)markAll:(id)sender;
- (void)markInvert; - (IBAction)markInvert:(id)sender;
- (void)markNone; - (IBAction)markNone:(id)sender;
- (void)markSelected; - (IBAction)markSelected:(id)sender;
- (void)moveMarked; - (IBAction)moveMarked:(id)sender;
- (void)openClicked; - (IBAction)openClicked:(id)sender;
- (void)openSelected; - (IBAction)openSelected:(id)sender;
- (void)removeMarked; - (IBAction)removeMarked:(id)sender;
- (void)removeSelected; - (IBAction)removeSelected:(id)sender;
- (void)renameSelected; - (IBAction)renameSelected:(id)sender;
- (void)reprioritizeResults; - (IBAction)reprioritizeResults:(id)sender;
- (void)resetColumnsToDefault; - (IBAction)resetColumnsToDefault:(id)sender;
- (void)revealSelected; - (IBAction)revealSelected:(id)sender;
- (void)saveResults; - (IBAction)saveResults:(id)sender;
- (void)switchSelected; - (IBAction)switchSelected:(id)sender;
- (void)toggleColumn:(id)sender; - (IBAction)toggleColumn:(id)sender;
- (void)toggleDelta; - (IBAction)toggleDelta:(id)sender;
- (void)toggleDetailsPanel; - (IBAction)toggleDetailsPanel:(id)sender;
- (void)togglePowerMarker; - (IBAction)togglePowerMarker:(id)sender;
- (void)toggleQuicklookPanel; - (IBAction)toggleQuicklookPanel:(id)sender;
@end @end

View File

@ -1,5 +1,5 @@
/* /*
Copyright 2015 Hardcoded Software (http://www.hardcoded.net) Copyright 2017 Virgil Dupras
This software is licensed under the "GPLv3" License as described in the "LICENSE" file, This software is licensed under the "GPLv3" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at which should be included with this package. The terms are also available at
@ -7,7 +7,6 @@ http://www.gnu.org/licenses/gpl-3.0.html
*/ */
#import "ResultWindow.h" #import "ResultWindow.h"
#import "ResultWindow_UI.h"
#import "Dialogs.h" #import "Dialogs.h"
#import "ProgressController.h" #import "ProgressController.h"
#import "Utils.h" #import "Utils.h"
@ -25,11 +24,10 @@ http://www.gnu.org/licenses/gpl-3.0.html
- (id)initWithParentApp:(AppDelegate *)aApp; - (id)initWithParentApp:(AppDelegate *)aApp;
{ {
self = [super initWithWindow:nil]; self = [super initWithWindowNibName:@"ResultWindow"];
[self window];
app = aApp; app = aApp;
model = [app model]; model = [app model];
[self setWindow:createResultWindow_UI(self)];
[[self window] setTitle:fmt(NSLocalizedString(@"%@ Results", @""), [model appName])];
/* Put a cute iTunes-like bottom bar */ /* Put a cute iTunes-like bottom bar */
[[self window] setContentBorderThickness:28 forEdge:NSMinYEdge]; [[self window] setContentBorderThickness:28 forEdge:NSMinYEdge];
table = [[ResultTable alloc] initWithPyRef:[model resultTable] view:matches]; table = [[ResultTable alloc] initWithPyRef:[model resultTable] view:matches];
@ -183,21 +181,21 @@ http://www.gnu.org/licenses/gpl-3.0.html
} }
/* Actions */ /* Actions */
- (void)changeOptions - (IBAction)changeOptions:(id)sender
{ {
NSInteger seg = [optionsSwitch selectedSegment]; NSInteger seg = [optionsSwitch selectedSegment];
if (seg == 0) { if (seg == 0) {
[self toggleDetailsPanel]; [self toggleDetailsPanel:sender];
} }
else if (seg == 1) { else if (seg == 1) {
[self togglePowerMarker]; [self togglePowerMarker:sender];
} }
else if (seg == 2) { else if (seg == 2) {
[self toggleDelta]; [self toggleDelta:sender];
} }
} }
- (void)copyMarked - (IBAction)copyMarked:(id)sender
{ {
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])]; [model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
@ -205,56 +203,56 @@ http://www.gnu.org/licenses/gpl-3.0.html
[model copyMarked]; [model copyMarked];
} }
- (void)trashMarked - (IBAction)trashMarked:(id)sender
{ {
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])]; [model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
[model deleteMarked]; [model deleteMarked];
} }
- (void)filter - (IBAction)filter:(id)sender
{ {
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[model setEscapeFilterRegexp:!n2b([ud objectForKey:@"useRegexpFilter"])]; [model setEscapeFilterRegexp:!n2b([ud objectForKey:@"useRegexpFilter"])];
[model applyFilter:[filterField stringValue]]; [model applyFilter:[filterField stringValue]];
} }
- (void)focusOnFilterField - (IBAction)focusOnFilterField:(id)sender
{ {
[[self window] makeFirstResponder:filterField]; [[self window] makeFirstResponder:filterField];
} }
- (void)ignoreSelected - (IBAction)ignoreSelected:(id)sender
{ {
[model addSelectedToIgnoreList]; [model addSelectedToIgnoreList];
} }
- (void)invokeCustomCommand - (IBAction)invokeCustomCommand:(id)sender
{ {
[model invokeCustomCommand]; [model invokeCustomCommand];
} }
- (void)markAll - (IBAction)markAll:(id)sender
{ {
[model markAll]; [model markAll];
} }
- (void)markInvert - (IBAction)markInvert:(id)sender
{ {
[model markInvert]; [model markInvert];
} }
- (void)markNone - (IBAction)markNone:(id)sender
{ {
[model markNone]; [model markNone];
} }
- (void)markSelected - (IBAction)markSelected:(id)sender
{ {
[model toggleSelectedMark]; [model toggleSelectedMark];
} }
- (void)moveMarked - (IBAction)moveMarked:(id)sender
{ {
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])]; [model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
@ -262,7 +260,7 @@ http://www.gnu.org/licenses/gpl-3.0.html
[model moveMarked]; [model moveMarked];
} }
- (void)openClicked - (IBAction)openClicked:(id)sender
{ {
if ([matches clickedRow] < 0) { if ([matches clickedRow] < 0) {
return; return;
@ -271,29 +269,29 @@ http://www.gnu.org/licenses/gpl-3.0.html
[model openSelected]; [model openSelected];
} }
- (void)openSelected - (IBAction)openSelected:(id)sender
{ {
[model openSelected]; [model openSelected];
} }
- (void)removeMarked - (IBAction)removeMarked:(id)sender
{ {
[model removeMarked]; [model removeMarked];
} }
- (void)removeSelected - (IBAction)removeSelected:(id)sender
{ {
[model removeSelected]; [model removeSelected];
} }
- (void)renameSelected - (IBAction)renameSelected:(id)sender
{ {
NSInteger col = [matches columnWithIdentifier:@"name"]; NSInteger col = [matches columnWithIdentifier:@"name"];
NSInteger row = [matches selectedRow]; NSInteger row = [matches selectedRow];
[matches editColumn:col row:row withEvent:[NSApp currentEvent] select:YES]; [matches editColumn:col row:row withEvent:[NSApp currentEvent] select:YES];
} }
- (void)reprioritizeResults - (IBAction)reprioritizeResults:(id)sender
{ {
PrioritizeDialog *dlg = [[PrioritizeDialog alloc] initWithApp:model]; PrioritizeDialog *dlg = [[PrioritizeDialog alloc] initWithApp:model];
NSInteger result = [NSApp runModalForWindow:[dlg window]]; NSInteger result = [NSApp runModalForWindow:[dlg window]];
@ -304,18 +302,18 @@ http://www.gnu.org/licenses/gpl-3.0.html
[[self window] makeKeyAndOrderFront:nil]; [[self window] makeKeyAndOrderFront:nil];
} }
- (void)resetColumnsToDefault - (IBAction)resetColumnsToDefault:(id)sender
{ {
[[[table columns] model] resetToDefaults]; [[[table columns] model] resetToDefaults];
[self fillColumnsMenu]; [self fillColumnsMenu];
} }
- (void)revealSelected - (IBAction)revealSelected:(id)sender
{ {
[model revealSelected]; [model revealSelected];
} }
- (void)saveResults - (IBAction)saveResults:(id)sender
{ {
NSSavePanel *sp = [NSSavePanel savePanel]; NSSavePanel *sp = [NSSavePanel savePanel];
[sp setCanCreateDirectories:YES]; [sp setCanCreateDirectories:YES];
@ -327,37 +325,37 @@ http://www.gnu.org/licenses/gpl-3.0.html
} }
} }
- (void)switchSelected - (IBAction)switchSelected:(id)sender
{ {
[model makeSelectedReference]; [model makeSelectedReference];
} }
- (void)toggleColumn:(id)sender - (IBAction)toggleColumn:(id)sender
{ {
NSMenuItem *mi = sender; NSMenuItem *mi = sender;
BOOL checked = [[[table columns] model] toggleMenuItem:[mi tag]]; BOOL checked = [[[table columns] model] toggleMenuItem:[mi tag]];
[mi setState:checked ? NSOnState : NSOffState]; [mi setState:checked ? NSOnState : NSOffState];
} }
- (void)toggleDetailsPanel - (IBAction)toggleDetailsPanel:(id)sender
{ {
[[app detailsPanel] toggleVisibility]; [[app detailsPanel] toggleVisibility];
[self updateOptionSegments]; [self updateOptionSegments];
} }
- (void)toggleDelta - (IBAction)toggleDelta:(id)sender
{ {
[table setDeltaValuesMode:![table deltaValuesMode]]; [table setDeltaValuesMode:![table deltaValuesMode]];
[self updateOptionSegments]; [self updateOptionSegments];
} }
- (void)togglePowerMarker - (IBAction)togglePowerMarker:(id)sender
{ {
[table setPowerMarkerMode:![table powerMarkerMode]]; [table setPowerMarkerMode:![table powerMarkerMode]];
[self updateOptionSegments]; [self updateOptionSegments];
} }
- (void)toggleQuicklookPanel - (IBAction)toggleQuicklookPanel:(id)sender
{ {
if ([QLPreviewPanel sharedPreviewPanelExists] && [[QLPreviewPanel sharedPreviewPanel] isVisible]) { if ([QLPreviewPanel sharedPreviewPanelExists] && [[QLPreviewPanel sharedPreviewPanel] isVisible]) {
[[QLPreviewPanel sharedPreviewPanel] orderOut:nil]; [[QLPreviewPanel sharedPreviewPanel] orderOut:nil];

View File

@ -1,30 +0,0 @@
ownerclass = 'IgnoreListDialog'
ownerimport = 'IgnoreListDialog.h'
result = Window(550, 350, "Ignore List")
table = TableView(result)
removeSelectedButton = Button(result, "Remove Selected")
clearButton = Button(result, "Clear")
closeButton = Button(result, "Close")
owner.ignoreListTableView = table
result.canMinimize = False
removeSelectedButton.action = Action(owner.model, 'removeSelected')
clearButton.action = Action(owner.model, 'clear')
closeButton.action = Action(result, 'performClose:')
closeButton.keyEquivalent = '\\r'
table.allowsColumnReordering = False
table.allowsColumnSelection = False
table.allowsMultipleSelection = True
removeSelectedButton.width = 142
clearButton.width = 142
closeButton.width = 84
buttonLayout = HLayout([removeSelectedButton, clearButton, None, closeButton])
buttonLayout.packToCorner(Pack.LowerLeft)
buttonLayout.fill(Pack.Right)
buttonLayout.setAnchor(Pack.Below)
table.packRelativeTo(buttonLayout, Pack.Above)
table.fill(Pack.UpperRight)
table.setAnchor(Pack.UpperLeft, growX=True, growY=True)

View File

@ -25,7 +25,7 @@ appMenu.addItem("Quit dupeGuru", Action(NSApp, 'terminate:'), 'cmd+q')
fileMenu.addItem("Load Results...", Action(None, 'loadResults'), 'cmd+o') fileMenu.addItem("Load Results...", Action(None, 'loadResults'), 'cmd+o')
owner.recentResultsMenu = fileMenu.addMenu("Load Recent Results") owner.recentResultsMenu = fileMenu.addMenu("Load Recent Results")
fileMenu.addItem("Save Results...", Action(None, 'saveResults'), 'cmd+s') fileMenu.addItem("Save Results...", Action(None, 'saveResults:'), 'cmd+s')
fileMenu.addItem("Export Results to XHTML", Action(owner.model, 'exportToXHTML'), 'cmd+shift+e') fileMenu.addItem("Export Results to XHTML", Action(owner.model, 'exportToXHTML'), 'cmd+shift+e')
fileMenu.addItem("Export Results to CSV", Action(owner.model, 'exportToCSV')) fileMenu.addItem("Export Results to CSV", Action(owner.model, 'exportToCSV'))
fileMenu.addItem("Clear Picture Cache", Action(owner, 'clearPictureCache'), 'cmd+shift+p') fileMenu.addItem("Clear Picture Cache", Action(owner, 'clearPictureCache'), 'cmd+shift+p')
@ -39,35 +39,35 @@ editMenu.addItem("Cut", Action(None, 'cut:'), 'cmd+x')
editMenu.addItem("Copy", Action(None, 'copy:'), 'cmd+c') editMenu.addItem("Copy", Action(None, 'copy:'), 'cmd+c')
editMenu.addItem("Paste", Action(None, 'paste:'), 'cmd+v') editMenu.addItem("Paste", Action(None, 'paste:'), 'cmd+v')
editMenu.addSeparator() editMenu.addSeparator()
editMenu.addItem("Filter Results...", Action(None, 'focusOnFilterField'), 'cmd+alt+f') editMenu.addItem("Filter Results...", Action(None, 'focusOnFilterField:'), 'cmd+alt+f')
actionMenu.addItem("Start Duplicate Scan", Action(owner, 'startScanning'), 'cmd+d') actionMenu.addItem("Start Duplicate Scan", Action(owner, 'startScanning'), 'cmd+d')
actionMenu.addSeparator() actionMenu.addSeparator()
actionMenu.addItem("Send Marked to Trash...", Action(None, 'trashMarked'), 'cmd+t') actionMenu.addItem("Send Marked to Trash...", Action(None, 'trashMarked:'), 'cmd+t')
actionMenu.addItem("Move Marked to...", Action(None, 'moveMarked'), 'cmd+m') actionMenu.addItem("Move Marked to...", Action(None, 'moveMarked:'), 'cmd+m')
actionMenu.addItem("Copy Marked to...", Action(None, 'copyMarked'), 'cmd+alt+m') actionMenu.addItem("Copy Marked to...", Action(None, 'copyMarked:'), 'cmd+alt+m')
actionMenu.addItem("Remove Marked from Results", Action(None, 'removeMarked'), 'cmd+r') actionMenu.addItem("Remove Marked from Results", Action(None, 'removeMarked:'), 'cmd+r')
actionMenu.addItem("Re-Prioritize Results...", Action(None, 'reprioritizeResults')) actionMenu.addItem("Re-Prioritize Results...", Action(None, 'reprioritizeResults:'))
actionMenu.addSeparator() actionMenu.addSeparator()
actionMenu.addItem("Remove Selected from Results", Action(None, 'removeSelected'), 'cmd+backspace') actionMenu.addItem("Remove Selected from Results", Action(None, 'removeSelected:'), 'cmd+backspace')
actionMenu.addItem("Add Selected to Ignore List", Action(None, 'ignoreSelected'), 'cmd+g') actionMenu.addItem("Add Selected to Ignore List", Action(None, 'ignoreSelected:'), 'cmd+g')
actionMenu.addItem("Make Selected into Reference", Action(None, 'switchSelected'), 'cmd+arrowup') actionMenu.addItem("Make Selected into Reference", Action(None, 'switchSelected:'), 'cmd+arrowup')
actionMenu.addSeparator() actionMenu.addSeparator()
actionMenu.addItem("Open Selected with Default Application", Action(None, 'openSelected'), 'cmd+return') actionMenu.addItem("Open Selected with Default Application", Action(None, 'openSelected:'), 'cmd+return')
actionMenu.addItem("Reveal Selected in Finder", Action(None, 'revealSelected'), 'cmd+alt+return') actionMenu.addItem("Reveal Selected in Finder", Action(None, 'revealSelected:'), 'cmd+alt+return')
actionMenu.addItem("Invoke Custom Command", Action(None, 'invokeCustomCommand'), 'cmd+shift+c') actionMenu.addItem("Invoke Custom Command", Action(None, 'invokeCustomCommand:'), 'cmd+shift+c')
actionMenu.addItem("Rename Selected", Action(None, 'renameSelected'), 'enter') actionMenu.addItem("Rename Selected", Action(None, 'renameSelected:'), 'enter')
modeMenu.addItem("Show Dupes Only", Action(None, 'togglePowerMarker'), 'cmd+1') modeMenu.addItem("Show Dupes Only", Action(None, 'togglePowerMarker:'), 'cmd+1')
modeMenu.addItem("Show Delta Values", Action(None, 'toggleDelta'), 'cmd+2') modeMenu.addItem("Show Delta Values", Action(None, 'toggleDelta:'), 'cmd+2')
windowMenu.addItem("Results Window", Action(owner, 'showResultWindow')) windowMenu.addItem("Results Window", Action(owner, 'showResultWindow'))
windowMenu.addItem("Folder Selection Window", Action(owner, 'showDirectoryWindow')) windowMenu.addItem("Folder Selection Window", Action(owner, 'showDirectoryWindow'))
windowMenu.addItem("Ignore List", Action(owner, 'showIgnoreList')) windowMenu.addItem("Ignore List", Action(owner, 'showIgnoreList'))
windowMenu.addItem("Details Panel", Action(None, 'toggleDetailsPanel'), 'cmd+i') windowMenu.addItem("Details Panel", Action(None, 'toggleDetailsPanel:'), 'cmd+i')
windowMenu.addItem("Quick Look", Action(None, 'toggleQuicklookPanel'), 'cmd+l') windowMenu.addItem("Quick Look", Action(None, 'toggleQuicklookPanel:'), 'cmd+l')
windowMenu.addSeparator() windowMenu.addSeparator()
windowMenu.addItem("Minimize", Action(None, 'performMinimize:')) windowMenu.addItem("Minimize", Action(None, 'performMiniaturize:'))
windowMenu.addItem("Zoom", Action(None, 'performZoom:')) windowMenu.addItem("Zoom", Action(None, 'performZoom:'))
windowMenu.addItem("Close Window", Action(None, 'performClose:'), 'cmd+w') windowMenu.addItem("Close Window", Action(None, 'performClose:'), 'cmd+w')
windowMenu.addSeparator() windowMenu.addSeparator()

View File

@ -1,97 +0,0 @@
ownerclass = 'ResultWindow'
ownerimport = 'ResultWindow.h'
result = Window(557, 400, "dupeGuru Results")
toolbar = result.createToolbar('ResultsToolbar')
table = TableView(result)
table.OBJC_CLASS = 'HSTableView'
statsLabel = Label(result, "")
contextMenu = Menu("")
#Setup toolbar items
toolbar.displayMode = const.NSToolbarDisplayModeIconOnly
directoriesToolItem = toolbar.addItem('Directories', "Directories", image='folder32')
actionToolItem = toolbar.addItem('Action', "Action")
filterToolItem = toolbar.addItem('Filter', "Filter")
optionsToolItem = toolbar.addItem('Options', "Options")
quicklookToolItem = toolbar.addItem('QuickLook', "Quick Look")
toolbar.defaultItems = [actionToolItem, optionsToolItem, quicklookToolItem, directoriesToolItem,
toolbar.flexibleSpace(), filterToolItem]
actionPopup = Popup(None)
actionPopup.pullsdown = True
actionPopup.bezelStyle = const.NSTexturedRoundedBezelStyle
actionPopup.arrowPosition = const.NSPopUpArrowAtBottom
item = actionPopup.menu.addItem("") # First item is invisible
item.hidden = True
item.image = 'NSActionTemplate'
actionPopup.width = 44
actionToolItem.view = actionPopup
filterField = SearchField(None, "Filter")
filterField.action = Action(owner, 'filter')
filterField.sendsWholeSearchString = True
filterToolItem.view = filterField
filterToolItem.minSize = Size(80, 22)
filterToolItem.maxSize = Size(300, 22)
quickLookButton = Button(None, "")
quickLookButton.bezelStyle = const.NSTexturedRoundedBezelStyle
quickLookButton.image = 'NSQuickLookTemplate'
quickLookButton.width = 44
quickLookButton.action = Action(owner, 'toggleQuicklookPanel')
quicklookToolItem.view = quickLookButton
optionsSegments = SegmentedControl(None)
optionsSegments.segmentStyle = const.NSSegmentStyleCapsule
optionsSegments.trackingMode = const.NSSegmentSwitchTrackingSelectAny
optionsSegments.font = Font(FontFamily.System, 11)
optionsSegments.addSegment("Details", 57)
optionsSegments.addSegment("Dupes Only", 82)
optionsSegments.addSegment("Delta", 48)
optionsSegments.action = Action(owner, 'changeOptions')
optionsToolItem.view = optionsSegments
# Popuplate menus
actionPopup.menu.addItem("Send Marked to Trash...", action=Action(owner, 'trashMarked'))
actionPopup.menu.addItem("Move Marked to...", action=Action(owner, 'moveMarked'))
actionPopup.menu.addItem("Copy Marked to...", action=Action(owner, 'copyMarked'))
actionPopup.menu.addItem("Remove Marked from Results", action=Action(owner, 'removeMarked'))
actionPopup.menu.addSeparator()
for menu in (actionPopup.menu, contextMenu):
menu.addItem("Remove Selected from Results", action=Action(owner, 'removeSelected'))
menu.addItem("Add Selected to Ignore List", action=Action(owner, 'ignoreSelected'))
menu.addItem("Make Selected into Reference", action=Action(owner, 'switchSelected'))
menu.addSeparator()
menu.addItem("Open Selected with Default Application", action=Action(owner, 'openSelected'))
menu.addItem("Reveal Selected in Finder", action=Action(owner, 'revealSelected'))
menu.addItem("Rename Selected", action=Action(owner, 'renameSelected'))
# Doing connections
owner.filterField = filterField
owner.matches = table
owner.optionsSwitch = optionsSegments
owner.optionsToolbarItem = optionsToolItem
owner.stats = statsLabel
table.bind('rowHeight', defaults, 'values.TableFontSize', valueTransformer='vtRowHeightOffset')
# Rest of the setup
result.minSize = Size(340, 340)
result.autosaveName = 'MainWindow'
statsLabel.alignment = TextAlignment.Center
table.alternatingRows = True
table.menu = contextMenu
table.allowsColumnReordering = True
table.allowsColumnResizing = True
table.allowsColumnSelection = False
table.allowsEmptySelection = False
table.allowsMultipleSelection = True
table.allowsTypeSelect = True
table.gridStyleMask = const.NSTableViewSolidHorizontalGridLineMask
table.setAnchor(Pack.UpperLeft, growX=True, growY=True)
statsLabel.setAnchor(Pack.LowerLeft, growX=True)
# Layout
# It's a little weird to pack with a margin of -1, but if I don't do that, I get too thick of a
# border on the upper side of the table.
table.packToCorner(Pack.UpperLeft, margin=-1)
table.fill(Pack.Right, margin=0)
statsLabel.packRelativeTo(table, Pack.Below, margin=6)
statsLabel.fill(Pack.Right, margin=0)
table.fill(Pack.Below, margin=5)

View File

@ -10,6 +10,7 @@
CE0559871E762105008EB4F8 /* IgnoreListDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE0559851E762105008EB4F8 /* IgnoreListDialog.xib */; }; CE0559871E762105008EB4F8 /* IgnoreListDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE0559851E762105008EB4F8 /* IgnoreListDialog.xib */; };
CE05598E1E76217C008EB4F8 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE05598C1E76217C008EB4F8 /* Localizable.strings */; }; CE05598E1E76217C008EB4F8 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE05598C1E76217C008EB4F8 /* Localizable.strings */; };
CE0559921E7626E7008EB4F8 /* locale in Resources */ = {isa = PBXBuildFile; fileRef = CE0559911E7626E7008EB4F8 /* locale */; }; CE0559921E7626E7008EB4F8 /* locale in Resources */ = {isa = PBXBuildFile; fileRef = CE0559911E7626E7008EB4F8 /* locale */; };
CE549CDC1E933C7600C75A05 /* ResultWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE549CDA1E933C7600C75A05 /* ResultWindow.xib */; };
CE65D0CC1E7781640092126E /* progress.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE65D0CA1E7781640092126E /* progress.xib */; }; CE65D0CC1E7781640092126E /* progress.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE65D0CA1E7781640092126E /* progress.xib */; };
CE65D0ED1E7783C40092126E /* ErrorReportWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE65D0EB1E7783C40092126E /* ErrorReportWindow.xib */; }; CE65D0ED1E7783C40092126E /* ErrorReportWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE65D0EB1E7783C40092126E /* ErrorReportWindow.xib */; };
CE6F7D8D1E74E71C004C0518 /* Python in Frameworks */ = {isa = PBXBuildFile; fileRef = CE6F7D8C1E74E71C004C0518 /* Python */; settings = {ATTRIBUTES = (Required, ); }; }; CE6F7D8D1E74E71C004C0518 /* Python in Frameworks */ = {isa = PBXBuildFile; fileRef = CE6F7D8C1E74E71C004C0518 /* Python */; settings = {ATTRIBUTES = (Required, ); }; };
@ -81,7 +82,6 @@
CE97215B1E74E41D00A598C9 /* PyStatsLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9721341E74E41D00A598C9 /* PyStatsLabel.m */; }; CE97215B1E74E41D00A598C9 /* PyStatsLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9721341E74E41D00A598C9 /* PyStatsLabel.m */; };
CE97215C1E74E41D00A598C9 /* PyTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9721361E74E41D00A598C9 /* PyTable.m */; }; CE97215C1E74E41D00A598C9 /* PyTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9721361E74E41D00A598C9 /* PyTable.m */; };
CE97215D1E74E41D00A598C9 /* PyTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9721381E74E41D00A598C9 /* PyTextField.m */; }; CE97215D1E74E41D00A598C9 /* PyTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9721381E74E41D00A598C9 /* PyTextField.m */; };
CE97215E1E74E41D00A598C9 /* ResultWindow_UI.m in Sources */ = {isa = PBXBuildFile; fileRef = CE97213A1E74E41D00A598C9 /* ResultWindow_UI.m */; };
CE97215F1E74E41D00A598C9 /* XiblessSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = CE97213C1E74E41D00A598C9 /* XiblessSupport.m */; }; CE97215F1E74E41D00A598C9 /* XiblessSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = CE97213C1E74E41D00A598C9 /* XiblessSupport.m */; };
CED88C1F1E763F2700C9B98C /* py in Resources */ = {isa = PBXBuildFile; fileRef = CED88C1E1E763F2700C9B98C /* py */; }; CED88C1F1E763F2700C9B98C /* py in Resources */ = {isa = PBXBuildFile; fileRef = CED88C1E1E763F2700C9B98C /* py */; };
CEFC8A251E74F23000965F37 /* dg_cocoa.py in Resources */ = {isa = PBXBuildFile; fileRef = CEFC8A231E74F23000965F37 /* dg_cocoa.py */; }; CEFC8A251E74F23000965F37 /* dg_cocoa.py in Resources */ = {isa = PBXBuildFile; fileRef = CEFC8A231E74F23000965F37 /* dg_cocoa.py */; };
@ -137,6 +137,22 @@
CE0559CD1E762A94008EB4F8 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "cocoa/zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; }; 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>"; }; 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>"; }; CE0559D01E762A9A008EB4F8 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = cocoa/vi.lproj/Localizable.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>"; };
CE549CE21E933D4D00C75A05 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cocoa/cs.lproj/ResultWindow.strings; sourceTree = "<group>"; };
CE549CE41E933D4F00C75A05 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = cocoa/es.lproj/ResultWindow.strings; sourceTree = "<group>"; };
CE549CE61E933D5000C75A05 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = cocoa/el.lproj/ResultWindow.strings; sourceTree = "<group>"; };
CE549CE81E933D5100C75A05 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = cocoa/it.lproj/ResultWindow.strings; sourceTree = "<group>"; };
CE549CEA1E933D5300C75A05 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = cocoa/nl.lproj/ResultWindow.strings; sourceTree = "<group>"; };
CE549CEC1E933D5500C75A05 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = cocoa/pl.lproj/ResultWindow.strings; sourceTree = "<group>"; };
CE549CEE1E933D5700C75A05 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = cocoa/ko.lproj/ResultWindow.strings; sourceTree = "<group>"; };
CE549CF01E933D5A00C75A05 /* hy */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hy; path = cocoa/hy.lproj/ResultWindow.strings; sourceTree = "<group>"; };
CE549CF21E933D5B00C75A05 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "cocoa/pt-BR.lproj/ResultWindow.strings"; sourceTree = "<group>"; };
CE549CF41E933D5C00C75A05 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = cocoa/ru.lproj/ResultWindow.strings; sourceTree = "<group>"; };
CE549CF61E933D5D00C75A05 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = cocoa/uk.lproj/ResultWindow.strings; sourceTree = "<group>"; };
CE549CF81E933D5F00C75A05 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "cocoa/zh-Hans.lproj/ResultWindow.strings"; sourceTree = "<group>"; };
CE549CFA1E933D6000C75A05 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = cocoa/vi.lproj/ResultWindow.strings; sourceTree = "<group>"; };
CE65D0CB1E7781640092126E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = cocoalib/Base.lproj/progress.xib; sourceTree = "<group>"; }; CE65D0CB1E7781640092126E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = cocoalib/Base.lproj/progress.xib; sourceTree = "<group>"; };
CE65D0CE1E7781730092126E /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = cocoalib/fr.lproj/progress.strings; sourceTree = "<group>"; }; CE65D0CE1E7781730092126E /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = cocoalib/fr.lproj/progress.strings; sourceTree = "<group>"; };
CE65D0D01E7781740092126E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = cocoalib/de.lproj/progress.strings; sourceTree = "<group>"; }; CE65D0D01E7781740092126E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = cocoalib/de.lproj/progress.strings; sourceTree = "<group>"; };
@ -337,8 +353,6 @@
CE9721361E74E41D00A598C9 /* PyTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PyTable.m; path = cocoa/autogen/PyTable.m; sourceTree = "<group>"; }; CE9721361E74E41D00A598C9 /* PyTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PyTable.m; path = cocoa/autogen/PyTable.m; sourceTree = "<group>"; };
CE9721371E74E41D00A598C9 /* PyTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyTextField.h; path = cocoa/autogen/PyTextField.h; sourceTree = "<group>"; }; CE9721371E74E41D00A598C9 /* PyTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyTextField.h; path = cocoa/autogen/PyTextField.h; sourceTree = "<group>"; };
CE9721381E74E41D00A598C9 /* PyTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PyTextField.m; path = cocoa/autogen/PyTextField.m; sourceTree = "<group>"; }; CE9721381E74E41D00A598C9 /* PyTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PyTextField.m; path = cocoa/autogen/PyTextField.m; sourceTree = "<group>"; };
CE9721391E74E41D00A598C9 /* ResultWindow_UI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResultWindow_UI.h; path = cocoa/autogen/ResultWindow_UI.h; sourceTree = "<group>"; };
CE97213A1E74E41D00A598C9 /* ResultWindow_UI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ResultWindow_UI.m; path = cocoa/autogen/ResultWindow_UI.m; sourceTree = "<group>"; };
CE97213B1E74E41D00A598C9 /* XiblessSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XiblessSupport.h; path = cocoa/autogen/XiblessSupport.h; sourceTree = "<group>"; }; CE97213B1E74E41D00A598C9 /* XiblessSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XiblessSupport.h; path = cocoa/autogen/XiblessSupport.h; sourceTree = "<group>"; };
CE97213C1E74E41D00A598C9 /* XiblessSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = XiblessSupport.m; path = cocoa/autogen/XiblessSupport.m; sourceTree = "<group>"; }; CE97213C1E74E41D00A598C9 /* XiblessSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = XiblessSupport.m; path = cocoa/autogen/XiblessSupport.m; sourceTree = "<group>"; };
CE9C2E9D1E74E1640099B9FB /* dupeGuru.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = dupeGuru.app; sourceTree = BUILT_PRODUCTS_DIR; }; CE9C2E9D1E74E1640099B9FB /* dupeGuru.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = dupeGuru.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -363,6 +377,7 @@
CE1891011E75D5A6008CE1AE /* xib */ = { CE1891011E75D5A6008CE1AE /* xib */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
CE549CDA1E933C7600C75A05 /* ResultWindow.xib */,
CE0559851E762105008EB4F8 /* IgnoreListDialog.xib */, CE0559851E762105008EB4F8 /* IgnoreListDialog.xib */,
); );
name = xib; name = xib;
@ -555,8 +570,6 @@
CE9721361E74E41D00A598C9 /* PyTable.m */, CE9721361E74E41D00A598C9 /* PyTable.m */,
CE9721371E74E41D00A598C9 /* PyTextField.h */, CE9721371E74E41D00A598C9 /* PyTextField.h */,
CE9721381E74E41D00A598C9 /* PyTextField.m */, CE9721381E74E41D00A598C9 /* PyTextField.m */,
CE9721391E74E41D00A598C9 /* ResultWindow_UI.h */,
CE97213A1E74E41D00A598C9 /* ResultWindow_UI.m */,
CE97213B1E74E41D00A598C9 /* XiblessSupport.h */, CE97213B1E74E41D00A598C9 /* XiblessSupport.h */,
CE97213C1E74E41D00A598C9 /* XiblessSupport.m */, CE97213C1E74E41D00A598C9 /* XiblessSupport.m */,
); );
@ -675,6 +688,7 @@
CED88C1F1E763F2700C9B98C /* py in Resources */, CED88C1F1E763F2700C9B98C /* py in Resources */,
CE05598E1E76217C008EB4F8 /* Localizable.strings in Resources */, CE05598E1E76217C008EB4F8 /* Localizable.strings in Resources */,
CE65D0ED1E7783C40092126E /* ErrorReportWindow.xib in Resources */, CE65D0ED1E7783C40092126E /* ErrorReportWindow.xib in Resources */,
CE549CDC1E933C7600C75A05 /* ResultWindow.xib in Resources */,
CEFC8A251E74F23000965F37 /* dg_cocoa.py in Resources */, CEFC8A251E74F23000965F37 /* dg_cocoa.py in Resources */,
CE7CA6061E76337700874874 /* about.xib in Resources */, CE7CA6061E76337700874874 /* about.xib in Resources */,
CE7CA6071E76337700874874 /* cocoalib.strings in Resources */, CE7CA6071E76337700874874 /* cocoalib.strings in Resources */,
@ -692,7 +706,6 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
CE97215E1E74E41D00A598C9 /* ResultWindow_UI.m in Sources */,
CE97213F1E74E41D00A598C9 /* DetailsPanelPicture_UI.m in Sources */, CE97213F1E74E41D00A598C9 /* DetailsPanelPicture_UI.m in Sources */,
CE6F7E041E74EA12004C0518 /* HSColumns.m in Sources */, CE6F7E041E74EA12004C0518 /* HSColumns.m in Sources */,
CE9720ED1E74E40300A598C9 /* DirectoryPanel.m in Sources */, CE9720ED1E74E40300A598C9 /* DirectoryPanel.m in Sources */,
@ -812,6 +825,29 @@
name = Localizable.strings; name = Localizable.strings;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
CE549CDA1E933C7600C75A05 /* ResultWindow.xib */ = {
isa = PBXVariantGroup;
children = (
CE549CDB1E933C7600C75A05 /* Base */,
CE549CDE1E933D4A00C75A05 /* fr */,
CE549CE01E933D4C00C75A05 /* de */,
CE549CE21E933D4D00C75A05 /* cs */,
CE549CE41E933D4F00C75A05 /* es */,
CE549CE61E933D5000C75A05 /* el */,
CE549CE81E933D5100C75A05 /* it */,
CE549CEA1E933D5300C75A05 /* nl */,
CE549CEC1E933D5500C75A05 /* pl */,
CE549CEE1E933D5700C75A05 /* ko */,
CE549CF01E933D5A00C75A05 /* hy */,
CE549CF21E933D5B00C75A05 /* pt-BR */,
CE549CF41E933D5C00C75A05 /* ru */,
CE549CF61E933D5D00C75A05 /* uk */,
CE549CF81E933D5F00C75A05 /* zh-Hans */,
CE549CFA1E933D6000C75A05 /* vi */,
);
name = ResultWindow.xib;
sourceTree = "<group>";
};
CE65D0CA1E7781640092126E /* progress.xib */ = { CE65D0CA1E7781640092126E /* progress.xib */ = {
isa = PBXVariantGroup; isa = PBXVariantGroup;
children = ( children = (