1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2025-03-10 05:34:36 +00:00

Completed the conversion wo objp with the conversion of PyDupeGuru. I had to temporarily disable error handling though.

--HG--
branch : objp
This commit is contained in:
Virgil Dupras 2012-01-13 14:43:43 -05:00
parent 937ea73c87
commit 950cd0c341
35 changed files with 425 additions and 548 deletions

View File

@ -179,8 +179,8 @@ def build_cocoa_bridging_interfaces():
import objp.p2o import objp.p2o
add_to_pythonpath('cocoa') add_to_pythonpath('cocoa')
add_to_pythonpath('cocoalib') add_to_pythonpath('cocoalib')
from cocoa.inter2 import (PyGUIObject2, GUIObjectView, PyColumns2, ColumnsView, PyOutline2, from cocoa.inter2 import (PyGUIObject, GUIObjectView, PyColumns, ColumnsView, PyOutline,
OutlineView, PySelectableList2, SelectableListView, PyTable2, TableView) OutlineView, PySelectableList, SelectableListView, PyTable, TableView, PyFairware)
from inter.details_panel import PyDetailsPanel, DetailsPanelView from inter.details_panel import PyDetailsPanel, DetailsPanelView
from inter.directory_outline import PyDirectoryOutline, DirectoryOutlineView from inter.directory_outline import PyDirectoryOutline, DirectoryOutlineView
from inter.extra_fairware_reminder import PyExtraFairwareReminder, ExtraFairwareReminderView from inter.extra_fairware_reminder import PyExtraFairwareReminder, ExtraFairwareReminderView
@ -189,14 +189,16 @@ def build_cocoa_bridging_interfaces():
from inter.problem_dialog import PyProblemDialog from inter.problem_dialog import PyProblemDialog
from inter.result_table import PyResultTable, ResultTableView from inter.result_table import PyResultTable, ResultTableView
from inter.stats_label import PyStatsLabel, StatsLabelView from inter.stats_label import PyStatsLabel, StatsLabelView
allclasses = [PyGUIObject2, PyColumns2, PyOutline2, PySelectableList2, PyTable2, PyDetailsPanel, from inter.app import PyDupeGuruBase, DupeGuruView
PyDirectoryOutline, PyExtraFairwareReminder, PyPrioritizeDialog, PyPrioritizeList, from inter.app_se import PyDupeGuru
PyProblemDialog, PyResultTable, PyStatsLabel] allclasses = [PyGUIObject, PyColumns, PyOutline, PySelectableList, PyTable, PyFairware,
PyDetailsPanel, PyDirectoryOutline, PyExtraFairwareReminder, PyPrioritizeDialog,
PyPrioritizeList, PyProblemDialog, PyResultTable, PyStatsLabel, PyDupeGuruBase, PyDupeGuru]
for class_ in allclasses: for class_ in allclasses:
objp.o2p.generate_objc_code(class_, 'cocoa/autogen', inherit=True) objp.o2p.generate_objc_code(class_, 'cocoa/autogen', inherit=True)
allclasses = [GUIObjectView, ColumnsView, OutlineView, SelectableListView, TableView, allclasses = [GUIObjectView, ColumnsView, OutlineView, SelectableListView, TableView,
DetailsPanelView, DirectoryOutlineView, ExtraFairwareReminderView, PrioritizeDialogView, DetailsPanelView, DirectoryOutlineView, ExtraFairwareReminderView, PrioritizeDialogView,
PrioritizeListView, ResultTableView, StatsLabelView] PrioritizeListView, ResultTableView, StatsLabelView, DupeGuruView]
for class_ in allclasses: for class_ in allclasses:
clsspec = objp.o2p.spec_from_python_class(class_) clsspec = objp.o2p.spec_from_python_class(class_)
clsname = class_.__name__ clsname = class_.__name__

View File

@ -16,11 +16,11 @@ http://www.hardcoded.net/licenses/bsd_license
@interface AppDelegateBase : NSObject @interface AppDelegateBase : NSObject
{ {
IBOutlet PyDupeGuruBase *py;
IBOutlet NSMenu *recentResultsMenu; IBOutlet NSMenu *recentResultsMenu;
IBOutlet NSMenu *actionsMenu; IBOutlet NSMenu *actionsMenu;
IBOutlet NSMenu *columnsMenu; IBOutlet NSMenu *columnsMenu;
PyDupeGuru *model;
ResultWindowBase *_resultWindow; ResultWindowBase *_resultWindow;
DirectoryPanel *_directoryPanel; DirectoryPanel *_directoryPanel;
DetailsPanel *_detailsPanel; DetailsPanel *_detailsPanel;
@ -30,7 +30,7 @@ http://www.hardcoded.net/licenses/bsd_license
} }
/* Virtual */ /* Virtual */
- (PyDupeGuruBase *)py; - (PyDupeGuru *)model;
- (ResultWindowBase *)createResultWindow; - (ResultWindowBase *)createResultWindow;
- (DirectoryPanel *)createDirectoryPanel; - (DirectoryPanel *)createDirectoryPanel;
- (DetailsPanel *)createDetailsPanel; - (DetailsPanel *)createDetailsPanel;

View File

@ -25,7 +25,7 @@ http://www.hardcoded.net/licenses/bsd_license
- (void)awakeFromNib - (void)awakeFromNib
{ {
[py bindCocoa:self]; model = [[PyDupeGuru alloc] init];
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
/* Because the pref pane is lazily loaded, we have to manually do the update check if the /* Because the pref pane is lazily loaded, we have to manually do the update check if the
preference is set. preference is set.
@ -45,7 +45,10 @@ http://www.hardcoded.net/licenses/bsd_license
/* Virtual */ /* Virtual */
- (PyDupeGuruBase *)py { return py; } - (PyDupeGuru *)model
{
return model;
}
- (ResultWindowBase *)createResultWindow - (ResultWindowBase *)createResultWindow
{ {
@ -104,7 +107,7 @@ http://www.hardcoded.net/licenses/bsd_license
[op setTitle:TR(@"Select a results file to load")]; [op setTitle:TR(@"Select a results file to load")];
if ([op runModal] == NSOKButton) { if ([op runModal] == NSOKButton) {
NSString *filename = [[op filenames] objectAtIndex:0]; NSString *filename = [[op filenames] objectAtIndex:0];
[py loadResultsFrom:filename]; [model loadResultsFrom:filename];
[[self recentResults] addFile:filename]; [[self recentResults] addFile:filename];
} }
} }
@ -125,7 +128,7 @@ http://www.hardcoded.net/licenses/bsd_license
- (IBAction)showAboutBox:(id)sender - (IBAction)showAboutBox:(id)sender
{ {
if (_aboutBox == nil) { if (_aboutBox == nil) {
_aboutBox = [[HSAboutBox alloc] initWithApp:py]; _aboutBox = [[HSAboutBox alloc] initWithApp:model];
} }
[[_aboutBox window] makeKeyAndOrderFront:sender]; [[_aboutBox window] makeKeyAndOrderFront:sender];
} }
@ -157,9 +160,9 @@ http://www.hardcoded.net/licenses/bsd_license
/* Delegate */ /* Delegate */
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{ {
[[ProgressController mainProgressController] setWorker:py]; [[ProgressController mainProgressController] setWorker:model];
[py initialRegistrationSetup]; [model initialRegistrationSetup];
[py loadSession]; [model loadSession];
} }
- (void)applicationWillBecomeActive:(NSNotification *)aNotification - (void)applicationWillBecomeActive:(NSNotification *)aNotification
@ -171,7 +174,7 @@ http://www.hardcoded.net/licenses/bsd_license
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{ {
if ([py resultsAreModified]) { if ([model resultsAreModified]) {
NSString *msg = TR(@"You have unsaved results, do you really want to quit?"); NSString *msg = TR(@"You have unsaved results, do you really want to quit?");
if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) { // NO if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) { // NO
return NSTerminateCancel; return NSTerminateCancel;
@ -186,10 +189,10 @@ http://www.hardcoded.net/licenses/bsd_license
NSInteger sc = [ud integerForKey:@"sessionCountSinceLastIgnorePurge"]; NSInteger sc = [ud integerForKey:@"sessionCountSinceLastIgnorePurge"];
if (sc >= 10) { if (sc >= 10) {
sc = -1; sc = -1;
[py purgeIgnoreList]; [model purgeIgnoreList];
} }
sc++; sc++;
[py saveSession]; [model saveSession];
[ud setInteger:sc forKey:@"sessionCountSinceLastIgnorePurge"]; [ud setInteger:sc forKey:@"sessionCountSinceLastIgnorePurge"];
// NSApplication does not release nib instances objects, we must do it manually // NSApplication does not release nib instances objects, we must do it manually
// Well, it isn't needed because the memory is freed anyway (we are quitting the application // Well, it isn't needed because the memory is freed anyway (we are quitting the application
@ -200,7 +203,7 @@ http://www.hardcoded.net/licenses/bsd_license
- (void)recentFileClicked:(NSString *)path - (void)recentFileClicked:(NSString *)path
{ {
[py loadResultsFrom:path]; [model loadResultsFrom:path];
} }
@ -226,11 +229,11 @@ http://www.hardcoded.net/licenses/bsd_license
- (void)showFairwareNagWithPrompt:(NSString *)prompt - (void)showFairwareNagWithPrompt:(NSString *)prompt
{ {
[HSFairwareReminder showFairwareNagWithApp:[self py] prompt:prompt]; [HSFairwareReminder showFairwareNagWithApp:[self model] prompt:prompt];
} }
- (void)showDemoNagWithPrompt:(NSString *)prompt - (void)showDemoNagWithPrompt:(NSString *)prompt
{ {
[HSFairwareReminder showDemoNagWithApp:[self py] prompt:prompt]; [HSFairwareReminder showDemoNagWithApp:[self model] prompt:prompt];
} }
@end @end

View File

@ -7,8 +7,6 @@ http://www.hardcoded.net/licenses/bsd_license
*/ */
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
#import "HSWindowController.h"
#import "PyApp.h"
#import "PyDetailsPanel.h" #import "PyDetailsPanel.h"
@interface DetailsPanel : NSWindowController @interface DetailsPanel : NSWindowController

View File

@ -7,12 +7,12 @@ http://www.hardcoded.net/licenses/bsd_license
*/ */
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
#import "HSOutline2.h" #import "HSOutline.h"
#import "PyDirectoryOutline.h" #import "PyDirectoryOutline.h"
#define DGAddedFoldersNotification @"DGAddedFoldersNotification" #define DGAddedFoldersNotification @"DGAddedFoldersNotification"
@interface DirectoryOutline : HSOutline2 {} @interface DirectoryOutline : HSOutline {}
- (id)initWithOutlineView:(HSOutlineView *)aOutlineView; - (id)initWithOutlineView:(HSOutlineView *)aOutlineView;
- (PyDirectoryOutline *)py; - (PyDirectoryOutline *)py;
@end; @end;

View File

@ -22,7 +22,7 @@ http://www.hardcoded.net/licenses/bsd_license
IBOutlet NSButton *removeButton; IBOutlet NSButton *removeButton;
AppDelegateBase *_app; AppDelegateBase *_app;
PyDupeGuruBase *_py; PyDupeGuru *model;
HSRecentFiles *_recentDirectories; HSRecentFiles *_recentDirectories;
DirectoryOutline *outline; DirectoryOutline *outline;
BOOL _alwaysShowPopUp; BOOL _alwaysShowPopUp;

View File

@ -18,8 +18,8 @@ http://www.hardcoded.net/licenses/bsd_license
self = [super initWithWindowNibName:@"DirectoryPanel"]; self = [super initWithWindowNibName:@"DirectoryPanel"];
[self window]; [self window];
_app = aParentApp; _app = aParentApp;
_py = [_app py]; model = [_app model];
[[self window] setTitle:[_py appName]]; [[self window] setTitle:[model appName]];
_alwaysShowPopUp = NO; _alwaysShowPopUp = NO;
[self fillPopUpMenu]; [self fillPopUpMenu];
_recentDirectories = [[HSRecentFiles alloc] initWithName:@"recentDirectories" menu:[addButtonPopUp menu]]; _recentDirectories = [[HSRecentFiles alloc] initWithName:@"recentDirectories" menu:[addButtonPopUp menu]];
@ -107,7 +107,7 @@ http://www.hardcoded.net/licenses/bsd_license
/* Public */ /* Public */
- (void)addDirectory:(NSString *)directory - (void)addDirectory:(NSString *)directory
{ {
NSInteger r = [[_py addDirectory:directory] intValue]; NSInteger r = [model addDirectory:directory];
if (r) { if (r) {
NSString *m = @""; NSString *m = @"";
if (r == 1) { if (r == 1) {

View File

@ -8,8 +8,6 @@ http://www.hardcoded.net/licenses/bsd_license
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
#import "PyExtraFairwareReminder.h" #import "PyExtraFairwareReminder.h"
#import "HSWindowController.h"
#import "PyApp.h"
@interface ExtraFairwareReminder : NSWindowController @interface ExtraFairwareReminder : NSWindowController
{ {

View File

@ -7,10 +7,9 @@ http://www.hardcoded.net/licenses/bsd_license
*/ */
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
#import "PyApp.h"
#import "PyPrioritizeDialog.h" #import "PyPrioritizeDialog.h"
#import "HSPopUpList2.h" #import "HSPopUpList.h"
#import "HSSelectableList2.h" #import "HSSelectableList.h"
#import "PrioritizeList.h" #import "PrioritizeList.h"
@interface PrioritizeDialog : NSWindowController @interface PrioritizeDialog : NSWindowController
@ -20,8 +19,8 @@ http://www.hardcoded.net/licenses/bsd_license
IBOutlet NSTableView *prioritizationTableView; IBOutlet NSTableView *prioritizationTableView;
PyPrioritizeDialog *py; PyPrioritizeDialog *py;
HSPopUpList2 *categoryPopUp; HSPopUpList *categoryPopUp;
HSSelectableList2 *criteriaList; HSSelectableList *criteriaList;
PrioritizeList *prioritizationList; PrioritizeList *prioritizationList;
} }
- (id)init; - (id)init;

View File

@ -16,8 +16,8 @@ http://www.hardcoded.net/licenses/bsd_license
[self window]; [self window];
py = [[PyPrioritizeDialog alloc] initWithModel:findHackishModel(@"prioritize_dialog")]; py = [[PyPrioritizeDialog alloc] initWithModel:findHackishModel(@"prioritize_dialog")];
[py bindCallback:createCallback(@"PrioritizeDialogView", self)]; [py bindCallback:createCallback(@"PrioritizeDialogView", self)];
categoryPopUp = [[HSPopUpList2 alloc] initWithPyRef:[[self py] categoryList] popupView:categoryPopUpView]; categoryPopUp = [[HSPopUpList alloc] initWithPyRef:[[self py] categoryList] popupView:categoryPopUpView];
criteriaList = [[HSSelectableList2 alloc] initWithPyRef:[[self py] criteriaList] tableView:criteriaTableView]; criteriaList = [[HSSelectableList alloc] initWithPyRef:[[self py] criteriaList] tableView:criteriaTableView];
prioritizationList = [[PrioritizeList alloc] initWithPyRef:[[self py] prioritizationList] tableView:prioritizationTableView]; prioritizationList = [[PrioritizeList alloc] initWithPyRef:[[self py] prioritizationList] tableView:prioritizationTableView];
[py connect]; [py connect];
return self; return self;

View File

@ -7,10 +7,10 @@ http://www.hardcoded.net/licenses/bsd_license
*/ */
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
#import "HSSelectableList2.h" #import "HSSelectableList.h"
#import "PyPrioritizeList.h" #import "PyPrioritizeList.h"
@interface PrioritizeList : HSSelectableList2 {} @interface PrioritizeList : HSSelectableList {}
- (id)initWithPyRef:(PyObject *)aPyRef tableView:(NSTableView *)aTableView; - (id)initWithPyRef:(PyObject *)aPyRef tableView:(NSTableView *)aTableView;
- (PyPrioritizeList *)model; - (PyPrioritizeList *)model;
@end @end

View File

@ -8,14 +8,14 @@ http://www.hardcoded.net/licenses/bsd_license
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
#import "PyProblemDialog.h" #import "PyProblemDialog.h"
#import "HSTable2.h" #import "HSTable.h"
@interface ProblemDialog : NSWindowController @interface ProblemDialog : NSWindowController
{ {
IBOutlet NSTableView *problemTableView; IBOutlet NSTableView *problemTableView;
PyProblemDialog *model; PyProblemDialog *model;
HSTable2 *problemTable; HSTable *problemTable;
} }
- (id)init; - (id)init;

View File

@ -15,7 +15,7 @@ http://www.hardcoded.net/licenses/bsd_license
self = [super initWithWindowNibName:@"ProblemDialog"]; self = [super initWithWindowNibName:@"ProblemDialog"];
[self window]; //So the detailsTable is initialized. [self window]; //So the detailsTable is initialized.
model = [[PyProblemDialog alloc] initWithModel:findHackishModel(@"problem_dialog")]; model = [[PyProblemDialog alloc] initWithModel:findHackishModel(@"problem_dialog")];
problemTable = [[HSTable2 alloc] initWithPyRef:[model problemTable] tableView:problemTableView]; problemTable = [[HSTable alloc] initWithPyRef:[model problemTable] tableView:problemTableView];
[self initializeColumns]; [self initializeColumns];
[model connect]; [model connect];
[[problemTable model] connect]; [[problemTable model] connect];

View File

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

View File

@ -8,10 +8,10 @@ http://www.hardcoded.net/licenses/bsd_license
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
#import <Quartz/Quartz.h> #import <Quartz/Quartz.h>
#import "HSTable2.h" #import "HSTable.h"
#import "PyResultTable.h" #import "PyResultTable.h"
@interface ResultTable : HSTable2 <QLPreviewPanelDataSource, QLPreviewPanelDelegate> @interface ResultTable : HSTable <QLPreviewPanelDataSource, QLPreviewPanelDelegate>
{ {
NSSet *_deltaColumns; NSSet *_deltaColumns;
} }

View File

@ -12,7 +12,7 @@ http://www.hardcoded.net/licenses/bsd_license
#import "Consts.h" #import "Consts.h"
#import "HSQuicklook.h" #import "HSQuicklook.h"
@interface HSTable2 (private) @interface HSTable (private)
- (void)setPySelection; - (void)setPySelection;
- (void)setViewSelection; - (void)setViewSelection;
@end @end

View File

@ -25,7 +25,7 @@ http://www.hardcoded.net/licenses/bsd_license
IBOutlet NSSearchField *filterField; IBOutlet NSSearchField *filterField;
AppDelegateBase *app; AppDelegateBase *app;
PyDupeGuruBase *py; PyDupeGuru *model;
NSMenu *columnsMenu; NSMenu *columnsMenu;
ResultTable *table; ResultTable *table;
StatsLabel *statsLabel; StatsLabel *statsLabel;

View File

@ -19,8 +19,8 @@ http://www.hardcoded.net/licenses/bsd_license
{ {
self = [super initWithWindowNibName:@"ResultWindow"]; self = [super initWithWindowNibName:@"ResultWindow"];
app = aApp; app = aApp;
py = [app py]; model = [app model];
[[self window] setTitle:fmt(@"%@ Results", [py appName])]; [[self window] setTitle:fmt(@"%@ Results", [model appName])];
columnsMenu = [app columnsMenu]; columnsMenu = [app columnsMenu];
/* 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];
@ -76,7 +76,7 @@ http://www.hardcoded.net/licenses/bsd_license
- (void)sendMarkedToTrash:(BOOL)hardlinkDeleted - (void)sendMarkedToTrash:(BOOL)hardlinkDeleted
{ {
NSInteger mark_count = [[py getMarkCount] intValue]; NSInteger mark_count = [model getMarkCount];
if (!mark_count) { if (!mark_count) {
return; return;
} }
@ -88,12 +88,12 @@ http://www.hardcoded.net/licenses/bsd_license
return; return;
} }
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[py setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])]; [model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
if (hardlinkDeleted) { if (hardlinkDeleted) {
[py hardlinkMarked]; [model hardlinkMarked];
} }
else { else {
[py deleteMarked]; [model deleteMarked];
} }
} }
@ -107,13 +107,13 @@ http://www.hardcoded.net/licenses/bsd_license
/* Actions */ /* Actions */
- (IBAction)clearIgnoreList:(id)sender - (IBAction)clearIgnoreList:(id)sender
{ {
NSInteger i = n2i([py getIgnoreListCount]); NSInteger i = [model getIgnoreListCount];
if (!i) if (!i)
return; return;
NSString *msg = [NSString stringWithFormat:TR(@"Do you really want to remove all %d items from the ignore list?"),i]; NSString *msg = [NSString stringWithFormat:TR(@"Do you really want to remove all %d items from the ignore list?"),i];
if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) // NO if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) // NO
return; return;
[py clearIgnoreList]; [model clearIgnoreList];
} }
- (IBAction)changeOptions:(id)sender - (IBAction)changeOptions:(id)sender
@ -132,7 +132,7 @@ http://www.hardcoded.net/licenses/bsd_license
- (IBAction)copyMarked:(id)sender - (IBAction)copyMarked:(id)sender
{ {
NSInteger mark_count = [[py getMarkCount] intValue]; NSInteger mark_count = [model getMarkCount];
if (!mark_count) if (!mark_count)
return; return;
NSOpenPanel *op = [NSOpenPanel openPanel]; NSOpenPanel *op = [NSOpenPanel openPanel];
@ -144,7 +144,7 @@ http://www.hardcoded.net/licenses/bsd_license
if ([op runModal] == NSOKButton) { if ([op runModal] == NSOKButton) {
NSString *directory = [[op filenames] objectAtIndex:0]; NSString *directory = [[op filenames] objectAtIndex:0];
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[py copyOrMove:b2n(YES) markedTo:directory recreatePath:[ud objectForKey:@"recreatePathType"]]; [model copyOrMove:YES markedTo:directory recreatePath:n2b([ud objectForKey:@"recreatePathType"])];
} }
} }
@ -160,15 +160,15 @@ http://www.hardcoded.net/licenses/bsd_license
- (IBAction)exportToXHTML:(id)sender - (IBAction)exportToXHTML:(id)sender
{ {
NSString *exported = [py exportToXHTML]; NSString *exported = [model exportToXHTML];
[[NSWorkspace sharedWorkspace] openFile:exported]; [[NSWorkspace sharedWorkspace] openFile:exported];
} }
- (IBAction)filter:(id)sender - (IBAction)filter:(id)sender
{ {
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[py setEscapeFilterRegexp:!n2b([ud objectForKey:@"useRegexpFilter"])]; [model setEscapeFilterRegexp:!n2b([ud objectForKey:@"useRegexpFilter"])];
[py applyFilter:[filterField stringValue]]; [model applyFilter:[filterField stringValue]];
} }
- (IBAction)ignoreSelected:(id)sender - (IBAction)ignoreSelected:(id)sender
@ -179,7 +179,7 @@ http://www.hardcoded.net/licenses/bsd_license
NSString *msg = [NSString stringWithFormat:TR(@"All selected %d matches are going to be ignored in all subsequent scans. Continue?"),selectedDupeCount]; NSString *msg = [NSString stringWithFormat:TR(@"All selected %d matches are going to be ignored in all subsequent scans. Continue?"),selectedDupeCount];
if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) // NO if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) // NO
return; return;
[py addSelectedToIgnoreList]; [model addSelectedToIgnoreList];
} }
- (IBAction)invokeCustomCommand:(id)sender - (IBAction)invokeCustomCommand:(id)sender
@ -187,7 +187,7 @@ http://www.hardcoded.net/licenses/bsd_license
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
NSString *cmd = [ud stringForKey:@"CustomCommand"]; NSString *cmd = [ud stringForKey:@"CustomCommand"];
if ((cmd != nil) && ([cmd length] > 0)) { if ((cmd != nil) && ([cmd length] > 0)) {
[py invokeCommand:cmd]; [model invokeCommand:cmd];
} }
else { else {
[Dialogs showMessage:TR(@"You have no custom command set up. Set it up in your preferences.")]; [Dialogs showMessage:TR(@"You have no custom command set up. Set it up in your preferences.")];
@ -196,27 +196,27 @@ http://www.hardcoded.net/licenses/bsd_license
- (IBAction)markAll:(id)sender - (IBAction)markAll:(id)sender
{ {
[py markAll]; [model markAll];
} }
- (IBAction)markInvert:(id)sender - (IBAction)markInvert:(id)sender
{ {
[py markInvert]; [model markInvert];
} }
- (IBAction)markNone:(id)sender - (IBAction)markNone:(id)sender
{ {
[py markNone]; [model markNone];
} }
- (IBAction)markSelected:(id)sender - (IBAction)markSelected:(id)sender
{ {
[py toggleSelectedMark]; [model toggleSelectedMark];
} }
- (IBAction)moveMarked:(id)sender - (IBAction)moveMarked:(id)sender
{ {
NSInteger mark_count = [[py getMarkCount] intValue]; NSInteger mark_count = [model getMarkCount];
if (!mark_count) if (!mark_count)
return; return;
NSOpenPanel *op = [NSOpenPanel openPanel]; NSOpenPanel *op = [NSOpenPanel openPanel];
@ -228,8 +228,8 @@ http://www.hardcoded.net/licenses/bsd_license
if ([op runModal] == NSOKButton) { if ([op runModal] == NSOKButton) {
NSString *directory = [[op filenames] objectAtIndex:0]; NSString *directory = [[op filenames] objectAtIndex:0];
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[py setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])]; [model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
[py copyOrMove:b2n(NO) markedTo:directory recreatePath:[ud objectForKey:@"recreatePathType"]]; [model copyOrMove:NO markedTo:directory recreatePath:n2b([ud objectForKey:@"recreatePathType"])];
} }
} }
@ -239,23 +239,23 @@ http://www.hardcoded.net/licenses/bsd_license
return; return;
} }
[matches selectRowIndexes:[NSIndexSet indexSetWithIndex:[matches clickedRow]] byExtendingSelection:NO]; [matches selectRowIndexes:[NSIndexSet indexSetWithIndex:[matches clickedRow]] byExtendingSelection:NO];
[py openSelected]; [model openSelected];
} }
- (IBAction)openSelected:(id)sender - (IBAction)openSelected:(id)sender
{ {
[py openSelected]; [model openSelected];
} }
- (IBAction)removeMarked:(id)sender - (IBAction)removeMarked:(id)sender
{ {
int mark_count = [[py getMarkCount] intValue]; int mark_count = [model getMarkCount];
if (!mark_count) if (!mark_count)
return; return;
NSString *msg = [NSString stringWithFormat:@"You are about to remove %d files from results. Continue?",mark_count]; NSString *msg = [NSString stringWithFormat:@"You are about to remove %d files from results. Continue?",mark_count];
if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) // NO if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) // NO
return; return;
[py removeMarked]; [model removeMarked];
} }
- (IBAction)removeSelected:(id)sender - (IBAction)removeSelected:(id)sender
@ -288,7 +288,7 @@ http://www.hardcoded.net/licenses/bsd_license
- (IBAction)revealSelected:(id)sender - (IBAction)revealSelected:(id)sender
{ {
[py revealSelected]; [model revealSelected];
} }
- (IBAction)saveResults:(id)sender - (IBAction)saveResults:(id)sender
@ -298,24 +298,24 @@ http://www.hardcoded.net/licenses/bsd_license
[sp setAllowedFileTypes:[NSArray arrayWithObject:@"dupeguru"]]; [sp setAllowedFileTypes:[NSArray arrayWithObject:@"dupeguru"]];
[sp setTitle:TR(@"Select a file to save your results to")]; [sp setTitle:TR(@"Select a file to save your results to")];
if ([sp runModal] == NSOKButton) { if ([sp runModal] == NSOKButton) {
[py saveResultsAs:[sp filename]]; [model saveResultsAs:[sp filename]];
[[app recentResults] addFile:[sp filename]]; [[app recentResults] addFile:[sp filename]];
} }
} }
- (IBAction)startDuplicateScan:(id)sender - (IBAction)startDuplicateScan:(id)sender
{ {
if ([py resultsAreModified]) { if ([model resultsAreModified]) {
if ([Dialogs askYesNo:TR(@"You have unsaved results, do you really want to continue?")] == NSAlertSecondButtonReturn) // NO if ([Dialogs askYesNo:TR(@"You have unsaved results, do you really want to continue?")] == NSAlertSecondButtonReturn) // NO
return; return;
} }
[self setScanOptions]; [self setScanOptions];
[py doScan]; [model doScan];
} }
- (IBAction)switchSelected:(id)sender - (IBAction)switchSelected:(id)sender
{ {
[py makeSelectedReference]; [model makeSelectedReference];
} }
- (IBAction)toggleColumn:(id)sender - (IBAction)toggleColumn:(id)sender
@ -382,7 +382,7 @@ http://www.hardcoded.net/licenses/bsd_license
{ {
id lastAction = [[ProgressController mainProgressController] jobId]; id lastAction = [[ProgressController mainProgressController] jobId];
if ([lastAction isEqualTo:jobCopy]) { if ([lastAction isEqualTo:jobCopy]) {
if ([py scanWasProblematic]) { if ([model scanWasProblematic]) {
[problemDialog showWindow:self]; [problemDialog showWindow:self];
} }
else { else {
@ -390,7 +390,7 @@ http://www.hardcoded.net/licenses/bsd_license
} }
} }
else if ([lastAction isEqualTo:jobMove]) { else if ([lastAction isEqualTo:jobMove]) {
if ([py scanWasProblematic]) { if ([model scanWasProblematic]) {
[problemDialog showWindow:self]; [problemDialog showWindow:self];
} }
else { else {
@ -398,7 +398,7 @@ http://www.hardcoded.net/licenses/bsd_license
} }
} }
else if ([lastAction isEqualTo:jobDelete]) { else if ([lastAction isEqualTo:jobDelete]) {
if ([py scanWasProblematic]) { if ([model scanWasProblematic]) {
[problemDialog showWindow:self]; [problemDialog showWindow:self];
} }
else { else {

View File

@ -2,13 +2,13 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00"> <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data> <data>
<int key="IBDocument.SystemTarget">1060</int> <int key="IBDocument.SystemTarget">1060</int>
<string key="IBDocument.SystemVersion">11B26</string> <string key="IBDocument.SystemVersion">11C74</string>
<string key="IBDocument.InterfaceBuilderVersion">1617</string> <string key="IBDocument.InterfaceBuilderVersion">1938</string>
<string key="IBDocument.AppKitVersion">1138</string> <string key="IBDocument.AppKitVersion">1138.23</string>
<string key="IBDocument.HIToolboxVersion">566.00</string> <string key="IBDocument.HIToolboxVersion">567.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions"> <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">1617</string> <string key="NS.object.0">1938</string>
</object> </object>
<array key="IBDocument.IntegratedClassDependencies"> <array key="IBDocument.IntegratedClassDependencies">
<string>NSMenu</string> <string>NSMenu</string>
@ -18,7 +18,10 @@
<array key="IBDocument.PluginDependencies"> <array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</array> </array>
<dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/> <object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
<integer value="1" key="NS.object.0"/>
</object>
<array class="NSMutableArray" key="IBDocument.RootObjects" id="248533267"> <array class="NSMutableArray" key="IBDocument.RootObjects" id="248533267">
<object class="NSCustomObject" id="77446904"> <object class="NSCustomObject" id="77446904">
<string key="NSClassName">NSApplication</string> <string key="NSClassName">NSApplication</string>
@ -668,31 +671,12 @@
<object class="NSCustomObject" id="91622651"> <object class="NSCustomObject" id="91622651">
<string key="NSClassName">AppDelegate</string> <string key="NSClassName">AppDelegate</string>
</object> </object>
<object class="NSCustomObject" id="875360857">
<string key="NSClassName">PyDupeGuru</string>
</object>
<object class="NSCustomObject" id="23220930"> <object class="NSCustomObject" id="23220930">
<string key="NSClassName">SUUpdater</string> <string key="NSClassName">SUUpdater</string>
</object> </object>
</array> </array>
<object class="IBObjectContainer" key="IBDocument.Objects"> <object class="IBObjectContainer" key="IBDocument.Objects">
<array class="NSMutableArray" key="connectionRecords"> <array class="NSMutableArray" key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">performMiniaturize:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="1033736835"/>
</object>
<int key="connectionID">37</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">arrangeInFront:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="941358624"/>
</object>
<int key="connectionID">39</int>
</object>
<object class="IBConnectionRecord"> <object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection"> <object class="IBActionConnection" key="connection">
<string key="label">terminate:</string> <string key="label">terminate:</string>
@ -725,14 +709,6 @@
</object> </object>
<int key="connectionID">153</int> <int key="connectionID">153</int>
</object> </object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">performZoom:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="781972485"/>
</object>
<int key="connectionID">198</int>
</object>
<object class="IBConnectionRecord"> <object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection"> <object class="IBOutletConnection" key="connection">
<string key="label">delegate</string> <string key="label">delegate</string>
@ -742,20 +718,28 @@
<int key="connectionID">207</int> <int key="connectionID">207</int>
</object> </object>
<object class="IBConnectionRecord"> <object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection"> <object class="IBActionConnection" key="connection">
<string key="label">delegate</string> <string key="label">performMiniaturize:</string>
<reference key="source" ref="133452984"/> <reference key="source" ref="83466988"/>
<reference key="destination" ref="91622651"/> <reference key="destination" ref="1033736835"/>
</object> </object>
<int key="connectionID">208</int> <int key="connectionID">37</int>
</object> </object>
<object class="IBConnectionRecord"> <object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection"> <object class="IBActionConnection" key="connection">
<string key="label">py</string> <string key="label">arrangeInFront:</string>
<reference key="source" ref="91622651"/> <reference key="source" ref="83466988"/>
<reference key="destination" ref="875360857"/> <reference key="destination" ref="941358624"/>
</object> </object>
<int key="connectionID">614</int> <int key="connectionID">39</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">performZoom:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="781972485"/>
</object>
<int key="connectionID">198</int>
</object> </object>
<object class="IBConnectionRecord"> <object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection"> <object class="IBActionConnection" key="connection">
@ -765,14 +749,6 @@
</object> </object>
<int key="connectionID">925</int> <int key="connectionID">925</int>
</object> </object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">checkForUpdates:</string>
<reference key="source" ref="23220930"/>
<reference key="destination" ref="688262014"/>
</object>
<int key="connectionID">951</int>
</object>
<object class="IBConnectionRecord"> <object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection"> <object class="IBActionConnection" key="connection">
<string key="label">cut:</string> <string key="label">cut:</string>
@ -797,46 +773,6 @@
</object> </object>
<int key="connectionID">1005</int> <int key="connectionID">1005</int>
</object> </object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">openWebsite:</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="440547877"/>
</object>
<int key="connectionID">1024</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="23220930"/>
<reference key="destination" ref="91622651"/>
</object>
<int key="connectionID">1175</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">showAboutBox:</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="436112936"/>
</object>
<int key="connectionID">1232</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">openHelp:</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="914881560"/>
</object>
<int key="connectionID">1233</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">recentResultsMenu</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="782784943"/>
</object>
<int key="connectionID">1242</int>
</object>
<object class="IBConnectionRecord"> <object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection"> <object class="IBActionConnection" key="connection">
<string key="label">clearIgnoreList:</string> <string key="label">clearIgnoreList:</string>
@ -1013,6 +949,70 @@
</object> </object>
<int key="connectionID">1266</int> <int key="connectionID">1266</int>
</object> </object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">reprioritizeResults:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="200019883"/>
</object>
<int key="connectionID">1278</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">removeMarked:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="733607971"/>
</object>
<int key="connectionID">1279</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">toggleQuicklookPanel:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="343354529"/>
</object>
<int key="connectionID">1282</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="133452984"/>
<reference key="destination" ref="91622651"/>
</object>
<int key="connectionID">208</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">openWebsite:</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="440547877"/>
</object>
<int key="connectionID">1024</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">showAboutBox:</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="436112936"/>
</object>
<int key="connectionID">1232</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">openHelp:</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="914881560"/>
</object>
<int key="connectionID">1233</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">recentResultsMenu</string>
<reference key="source" ref="91622651"/>
<reference key="destination" ref="782784943"/>
</object>
<int key="connectionID">1242</int>
</object>
<object class="IBConnectionRecord"> <object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection"> <object class="IBOutletConnection" key="connection">
<string key="label">columnsMenu</string> <string key="label">columnsMenu</string>
@ -1063,27 +1063,19 @@
</object> </object>
<object class="IBConnectionRecord"> <object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection"> <object class="IBActionConnection" key="connection">
<string key="label">reprioritizeResults:</string> <string key="label">checkForUpdates:</string>
<reference key="source" ref="83466988"/> <reference key="source" ref="23220930"/>
<reference key="destination" ref="200019883"/> <reference key="destination" ref="688262014"/>
</object> </object>
<int key="connectionID">1278</int> <int key="connectionID">951</int>
</object> </object>
<object class="IBConnectionRecord"> <object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection"> <object class="IBOutletConnection" key="connection">
<string key="label">removeMarked:</string> <string key="label">delegate</string>
<reference key="source" ref="83466988"/> <reference key="source" ref="23220930"/>
<reference key="destination" ref="733607971"/> <reference key="destination" ref="91622651"/>
</object> </object>
<int key="connectionID">1279</int> <int key="connectionID">1175</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">toggleQuicklookPanel:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="343354529"/>
</object>
<int key="connectionID">1282</int>
</object> </object>
</array> </array>
<object class="IBMutableOrderedSet" key="objectRecords"> <object class="IBMutableOrderedSet" key="objectRecords">
@ -1508,12 +1500,6 @@
<reference key="parent" ref="0"/> <reference key="parent" ref="0"/>
<string key="objectName">AppDelegate</string> <string key="objectName">AppDelegate</string>
</object> </object>
<object class="IBObjectRecord">
<int key="objectID">613</int>
<reference key="object" ref="875360857"/>
<reference key="parent" ref="0"/>
<string key="objectName">PyDupeGuru</string>
</object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">949</int> <int key="objectID">949</int>
<reference key="object" ref="23220930"/> <reference key="object" ref="23220930"/>
@ -1654,7 +1640,6 @@
<string key="603.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="603.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="604.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="604.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="605.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="605.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="613.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="618.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="618.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="619.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="619.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="707.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="707.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -1772,6 +1757,25 @@
<string key="minorKey">./Classes/AppDelegateBase.h</string> <string key="minorKey">./Classes/AppDelegateBase.h</string>
</object> </object>
</object> </object>
<object class="IBPartialClassDescription">
<string key="className">HSOutlineView</string>
<string key="superclassName">NSOutlineView</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">copy:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">copy:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">copy:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/HSOutlineView.h</string>
</object>
</object>
<object class="IBPartialClassDescription"> <object class="IBPartialClassDescription">
<string key="className">HSTableView</string> <string key="className">HSTableView</string>
<string key="superclassName">NSTableView</string> <string key="superclassName">NSTableView</string>
@ -1780,17 +1784,9 @@
<string key="minorKey">./Classes/HSTableView.h</string> <string key="minorKey">./Classes/HSTableView.h</string>
</object> </object>
</object> </object>
<object class="IBPartialClassDescription">
<string key="className">HSWindowController</string>
<string key="superclassName">NSWindowController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/HSWindowController.h</string>
</object>
</object>
<object class="IBPartialClassDescription"> <object class="IBPartialClassDescription">
<string key="className">PrioritizeDialog</string> <string key="className">PrioritizeDialog</string>
<string key="superclassName">HSWindowController</string> <string key="superclassName">NSWindowController</string>
<dictionary class="NSMutableDictionary" key="actions"> <dictionary class="NSMutableDictionary" key="actions">
<string key="addSelected:">id</string> <string key="addSelected:">id</string>
<string key="cancel:">id</string> <string key="cancel:">id</string>
@ -1841,7 +1837,7 @@
</object> </object>
<object class="IBPartialClassDescription"> <object class="IBPartialClassDescription">
<string key="className">ProblemDialog</string> <string key="className">ProblemDialog</string>
<string key="superclassName">HSWindowController</string> <string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions"> <object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">revealSelected:</string> <string key="NS.key.0">revealSelected:</string>
<string key="NS.object.0">id</string> <string key="NS.object.0">id</string>
@ -1869,38 +1865,6 @@
<string key="minorKey">./Classes/ProblemDialog.h</string> <string key="minorKey">./Classes/ProblemDialog.h</string>
</object> </object>
</object> </object>
<object class="IBPartialClassDescription">
<string key="className">PyApp</string>
<string key="superclassName">PyFairware</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/PyApp.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">PyDupeGuru</string>
<string key="superclassName">PyDupeGuruBase</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/PyDupeGuru.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">PyDupeGuruBase</string>
<string key="superclassName">PyApp</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/PyDupeGuruBase.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">PyFairware</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/PyFairware.h</string>
</object>
</object>
<object class="IBPartialClassDescription"> <object class="IBPartialClassDescription">
<string key="className">ResultWindowBase</string> <string key="className">ResultWindowBase</string>
<string key="superclassName">NSWindowController</string> <string key="superclassName">NSWindowController</string>
@ -2127,7 +2091,7 @@
</object> </object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults"> <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
<integer value="1050" key="NS.object.0"/> <real value="1060" key="NS.object.0"/>
</object> </object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies"> <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>

View File

@ -1,14 +1,13 @@
import logging import logging
from objp.util import pyref, dontwrap
from jobprogress import job from jobprogress import job
import cocoa import cocoa
from cocoa import install_exception_hook, proxy from cocoa import install_exception_hook, proxy
from cocoa.inter import signature, subproxy, PyFairware from cocoa.inter2 import PyFairware, FairwareView
from hscommon.trans import trget from hscommon.trans import trget
from core.app import JobType from core.app import JobType
from .result_table import PyResultTable
from .stats_label import PyStatsLabel
tr = trget('ui') tr = trget('ui')
@ -20,129 +19,138 @@ JOBID2TITLE = {
JobType.Delete: tr("Sending to Trash"), JobType.Delete: tr("Sending to Trash"),
} }
class DupeGuruView(FairwareView):
def showExtraFairwareReminder(self): pass
class PyDupeGuruBase(PyFairware): class PyDupeGuruBase(PyFairware):
FOLLOW_PROTOCOLS = ['Worker']
def _init(self, modelclass): def _init(self, modelclass):
logging.basicConfig(level=logging.WARNING, format='%(levelname)s %(message)s') logging.basicConfig(level=logging.WARNING, format='%(levelname)s %(message)s')
install_exception_hook() install_exception_hook()
appdata = proxy.getAppdataPath() appdata = proxy.getAppdataPath()
self.py = modelclass(self, appdata) self.model = modelclass(self, appdata)
self.progress = cocoa.ThreadedJobPerformer() self.progress = cocoa.ThreadedJobPerformer()
def bindCocoa_(self, cocoa): #---Sub-proxies
self.cocoa = cocoa def detailsPanel(self) -> pyref:
return self.model.details_panel
resultTable = subproxy('resultTable', 'result_table', PyResultTable) def directoryTree(self) -> pyref:
statsLabel = subproxy('statsLabel', 'stats_label', PyStatsLabel) return self.model.directory_tree
def extraFairwareReminder(self) -> pyref:
return self.model.extra_fairware_reminder
def prioritizeDialog(self) -> pyref:
return self.model.prioritize_dialog
def statsLabel(self) -> pyref:
return self.model.stats_label
def resultTable(self) -> pyref:
return self.model.result_table
#---Directories #---Directories
def addDirectory_(self, directory): def addDirectory_(self, directory: str) -> int:
return self.py.add_directory(directory) return self.model.add_directory(directory)
#---Results #---Results
def clearIgnoreList(self): def clearIgnoreList(self):
self.py.scanner.ignore_list.Clear() self.model.scanner.ignore_list.Clear()
def doScan(self): def doScan(self):
self.py.start_scanning() self.model.start_scanning()
def exportToXHTML(self): def exportToXHTML(self) -> str:
return self.py.export_to_xhtml() return self.model.export_to_xhtml()
def loadSession(self): def loadSession(self):
self.py.load() self.model.load()
def loadResultsFrom_(self, filename): def loadResultsFrom_(self, filename: str):
self.py.load_from(filename) self.model.load_from(filename)
def markAll(self): def markAll(self):
self.py.mark_all() self.model.mark_all()
def markNone(self): def markNone(self):
self.py.mark_none() self.model.mark_none()
def markInvert(self): def markInvert(self):
self.py.mark_invert() self.model.mark_invert()
def purgeIgnoreList(self): def purgeIgnoreList(self):
self.py.purge_ignore_list() self.model.purge_ignore_list()
def toggleSelectedMark(self): def toggleSelectedMark(self):
self.py.toggle_selected_mark_state() self.model.toggle_selected_mark_state()
def saveSession(self): def saveSession(self):
self.py.save() self.model.save()
def saveResultsAs_(self, filename): def saveResultsAs_(self, filename: str):
self.py.save_as(filename) self.model.save_as(filename)
#---Actions #---Actions
def addSelectedToIgnoreList(self): def addSelectedToIgnoreList(self):
self.py.add_selected_to_ignore_list() self.model.add_selected_to_ignore_list()
def deleteMarked(self): def deleteMarked(self):
self.py.delete_marked() self.model.delete_marked()
def hardlinkMarked(self): def hardlinkMarked(self):
self.py.delete_marked(replace_with_hardlinks=True) self.model.delete_marked(replace_with_hardlinks=True)
def applyFilter_(self, filter): def applyFilter_(self, filter: str):
self.py.apply_filter(filter) self.model.apply_filter(filter)
def makeSelectedReference(self): def makeSelectedReference(self):
self.py.make_selected_reference() self.model.make_selected_reference()
def copyOrMove_markedTo_recreatePath_(self, copy, destination, recreate_path): def copyOrMove_markedTo_recreatePath_(self, copy: bool, destination: str, recreate_path: bool):
self.py.copy_or_move_marked(copy, destination, recreate_path) self.model.copy_or_move_marked(copy, destination, recreate_path)
def openSelected(self): def openSelected(self):
self.py.open_selected() self.model.open_selected()
def removeMarked(self): def removeMarked(self):
self.py.remove_marked() self.model.remove_marked()
def renameSelected_(self,newname):
return self.py.rename_selected(newname)
def revealSelected(self): def revealSelected(self):
self.py.reveal_selected() self.model.reveal_selected()
def invokeCommand_(self, cmd): def invokeCommand_(self, cmd: str):
self.py.invoke_command(cmd) self.model.invoke_command(cmd)
#---Information #---Information
def getIgnoreListCount(self): def getIgnoreListCount(self) -> int:
return len(self.py.scanner.ignore_list) return len(self.model.scanner.ignore_list)
def getMarkCount(self): def getMarkCount(self) -> int:
return self.py.results.mark_count return self.model.results.mark_count
@signature('i@:') def scanWasProblematic(self) -> bool:
def scanWasProblematic(self): return bool(self.model.results.problems)
return bool(self.py.results.problems)
@signature('i@:') def resultsAreModified(self) -> bool:
def resultsAreModified(self): return self.model.results.is_modified
return self.py.results.is_modified
#---Properties #---Properties
@signature('v@:c') def setMixFileKind_(self, mix_file_kind: bool):
def setMixFileKind_(self, mix_file_kind): self.model.scanner.mix_file_kind = mix_file_kind
self.py.scanner.mix_file_kind = mix_file_kind
@signature('v@:c') def setEscapeFilterRegexp_(self, escape_filter_regexp: bool):
def setEscapeFilterRegexp_(self, escape_filter_regexp): self.model.options['escape_filter_regexp'] = escape_filter_regexp
self.py.options['escape_filter_regexp'] = escape_filter_regexp
@signature('v@:c') def setRemoveEmptyFolders_(self, remove_empty_folders: bool):
def setRemoveEmptyFolders_(self, remove_empty_folders): self.model.options['clean_empty_dirs'] = remove_empty_folders
self.py.options['clean_empty_dirs'] = remove_empty_folders
@signature('v@:c') def setIgnoreHardlinkMatches_(self, ignore_hardlink_matches: bool):
def setIgnoreHardlinkMatches_(self, ignore_hardlink_matches): self.model.options['ignore_hardlink_matches'] = ignore_hardlink_matches
self.py.options['ignore_hardlink_matches'] = ignore_hardlink_matches
#---Worker #---Worker
def getJobProgress(self): def getJobProgress(self) -> object: # NSNumber
try: try:
return self.progress.last_progress return self.progress.last_progress
except AttributeError: except AttributeError:
@ -151,7 +159,7 @@ class PyDupeGuruBase(PyFairware):
# is sent), but it happens anyway, so there we go. ref: #106 # is sent), but it happens anyway, so there we go. ref: #106
return -1 return -1
def getJobDesc(self): def getJobDesc(self) -> str:
try: try:
return self.progress.last_desc return self.progress.last_desc
except AttributeError: except AttributeError:
@ -161,16 +169,19 @@ class PyDupeGuruBase(PyFairware):
def cancelJob(self): def cancelJob(self):
self.progress.job_cancelled = True self.progress.job_cancelled = True
def jobCompleted_(self, jobid): def jobCompleted_(self, jobid: str):
self.py._job_completed(jobid) self.model._job_completed(jobid)
#--- model --> view #--- model --> view
@dontwrap
def open_path(self, path): def open_path(self, path):
proxy.openPath_(str(path)) proxy.openPath_(str(path))
@dontwrap
def reveal_path(self, path): def reveal_path(self, path):
proxy.revealPath_(str(path)) proxy.revealPath_(str(path))
@dontwrap
def start_job(self, jobid, func, args=()): def start_job(self, jobid, func, args=()):
try: try:
j = self.progress.create_job() j = self.progress.create_job()
@ -182,9 +193,7 @@ class PyDupeGuruBase(PyFairware):
ud = {'desc': JOBID2TITLE[jobid], 'jobid':jobid} ud = {'desc': JOBID2TITLE[jobid], 'jobid':jobid}
proxy.postNotification_userInfo_('JobStarted', ud) proxy.postNotification_userInfo_('JobStarted', ud)
@dontwrap
def show_extra_fairware_reminder(self): def show_extra_fairware_reminder(self):
self.cocoa.showExtraFairwareReminder() self.cocoa.showExtraFairwareReminder()
def show_message(self, msg):
self.cocoa.showMessage_(msg)

View File

@ -13,9 +13,11 @@ from hscommon import io
from hscommon.path import Path from hscommon.path import Path
from cocoa import proxy from cocoa import proxy
from core.scanner import ScanType
from core import fs from core import fs
from core.directories import Directories as DirectoriesBase, DirectoryState from core.directories import Directories as DirectoriesBase, DirectoryState
from core_se.app import DupeGuru as DupeGuruBase from core_se.app import DupeGuru as DupeGuruBase
from .app import PyDupeGuruBase
def is_bundle(str_path): def is_bundle(str_path):
uti = proxy.getUTI_(str_path) uti = proxy.getUTI_(str_path)
@ -70,3 +72,33 @@ class DupeGuru(DupeGuruBase):
DupeGuruBase.__init__(self, view, appdata) DupeGuruBase.__init__(self, view, appdata)
self.directories = Directories() self.directories = Directories()
class PyDupeGuru(PyDupeGuruBase):
def __init__(self):
self._init(DupeGuru)
import __main__
__main__.APP_INSTANCE = self.model
#---Properties
def setMinMatchPercentage_(self, percentage: int):
self.model.scanner.min_match_percentage = int(percentage)
def setScanType_(self, scan_type: int):
try:
self.model.scanner.scan_type = [
ScanType.Filename,
ScanType.Contents,
ScanType.Folders,
][scan_type]
except IndexError:
pass
def setWordWeighting_(self, words_are_weighted: bool):
self.model.scanner.word_weighting = words_are_weighted
def setMatchSimilarWords_(self, match_similar_words: bool):
self.model.scanner.match_similar_words = match_similar_words
def setSizeThreshold_(self, size_threshold: int):
self.model.scanner.size_threshold = size_threshold

View File

@ -1,9 +1,9 @@
from cocoa.inter2 import PyGUIObject2, GUIObjectView from cocoa.inter2 import PyGUIObject, GUIObjectView
class DetailsPanelView(GUIObjectView): class DetailsPanelView(GUIObjectView):
pass pass
class PyDetailsPanel(PyGUIObject2): class PyDetailsPanel(PyGUIObject):
def numberOfRows(self) -> int: def numberOfRows(self) -> int:
return self.model.row_count() return self.model.row_count()

View File

@ -1,10 +1,10 @@
from objp.util import dontwrap from objp.util import dontwrap
from cocoa.inter2 import PyOutline2, GUIObjectView from cocoa.inter2 import PyOutline, GUIObjectView
class DirectoryOutlineView(GUIObjectView): class DirectoryOutlineView(GUIObjectView):
pass pass
class PyDirectoryOutline(PyOutline2): class PyDirectoryOutline(PyOutline):
def addDirectory_(self, path: str): def addDirectory_(self, path: str):
self.model.add_directory(path) self.model.add_directory(path)

View File

@ -1,5 +1,5 @@
from objp.util import dontwrap from objp.util import dontwrap
from cocoa.inter2 import PyGUIObject2 from cocoa.inter2 import PyGUIObject
class ExtraFairwareReminderView: class ExtraFairwareReminderView:
def startTimer(self): pass def startTimer(self): pass
@ -7,7 +7,7 @@ class ExtraFairwareReminderView:
def setButtonText_(self, text: str): pass; def setButtonText_(self, text: str): pass;
def enableButton(self): pass def enableButton(self): pass
class PyExtraFairwareReminder(PyGUIObject2): class PyExtraFairwareReminder(PyGUIObject):
def start(self): def start(self):
self.model.start() self.model.start()

View File

@ -1,10 +1,10 @@
from objp.util import pyref from objp.util import pyref
from cocoa.inter2 import PyGUIObject2, GUIObjectView from cocoa.inter2 import PyGUIObject, GUIObjectView
class PrioritizeDialogView(GUIObjectView): class PrioritizeDialogView(GUIObjectView):
pass pass
class PyPrioritizeDialog(PyGUIObject2): class PyPrioritizeDialog(PyGUIObject):
def categoryList(self) -> pyref: def categoryList(self) -> pyref:
return self.model.category_list return self.model.category_list

View File

@ -1,8 +1,8 @@
from cocoa.inter2 import PySelectableList2, SelectableListView from cocoa.inter2 import PySelectableList, SelectableListView
class PrioritizeListView(SelectableListView): class PrioritizeListView(SelectableListView):
pass pass
class PyPrioritizeList(PySelectableList2): class PyPrioritizeList(PySelectableList):
def moveIndexes_toIndex_(self, indexes: list, dest_index: int): def moveIndexes_toIndex_(self, indexes: list, dest_index: int):
self.model.move_indexes(indexes, dest_index) self.model.move_indexes(indexes, dest_index)

View File

@ -1,7 +1,7 @@
from objp.util import pyref from objp.util import pyref
from cocoa.inter2 import PyGUIObject2 from cocoa.inter2 import PyGUIObject
class PyProblemDialog(PyGUIObject2): class PyProblemDialog(PyGUIObject):
def problemTable(self) -> pyref: def problemTable(self) -> pyref:
return self.model.problem_table return self.model.problem_table

View File

@ -1,10 +1,10 @@
from objp.util import dontwrap from objp.util import dontwrap
from cocoa.inter2 import PyTable2, TableView from cocoa.inter2 import PyTable, TableView
class ResultTableView(TableView): class ResultTableView(TableView):
def invalidateMarkings(self): pass def invalidateMarkings(self): pass
class PyResultTable(PyTable2): class PyResultTable(PyTable):
def powerMarkerMode(self) -> bool: def powerMarkerMode(self) -> bool:
return self.model.power_marker return self.model.power_marker

View File

@ -1,9 +1,9 @@
from cocoa.inter2 import PyGUIObject2, GUIObjectView from cocoa.inter2 import PyGUIObject, GUIObjectView
class StatsLabelView(GUIObjectView): class StatsLabelView(GUIObjectView):
pass pass
class PyStatsLabel(PyGUIObject2): class PyStatsLabel(PyGUIObject):
def display(self) -> str: def display(self) -> str:
return self.model.display return self.model.display

View File

@ -11,5 +11,4 @@ http://www.hardcoded.net/licenses/bsd_license
#import "PyDupeGuru.h" #import "PyDupeGuru.h"
@interface AppDelegate : AppDelegateBase {} @interface AppDelegate : AppDelegateBase {}
- (PyDupeGuru *)py;
@end @end

View File

@ -62,6 +62,4 @@ http://www.hardcoded.net/licenses/bsd_license
{ {
return [[ResultWindow alloc] initWithParentApp:self]; return [[ResultWindow alloc] initWithParentApp:self];
} }
- (PyDupeGuru *)py { return (PyDupeGuru *)py; }
@end @end

View File

@ -1,16 +0,0 @@
/*
Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
This software is licensed under the "BSD" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import "../base/PyDupeGuru.h"
@interface PyDupeGuru : PyDupeGuruBase
//Scanning options
- (void)setWordWeighting:(NSNumber *)words_are_weighted;
- (void)setMatchSimilarWords:(NSNumber *)match_similar_words;
@end

View File

@ -39,15 +39,14 @@ http://www.hardcoded.net/licenses/bsd_license
- (void)setScanOptions - (void)setScanOptions
{ {
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
PyDupeGuru *_py = (PyDupeGuru *)py; [model setScanType:n2b([ud objectForKey:@"scanType"])];
[_py setScanType:[ud objectForKey:@"scanType"]]; [model setMinMatchPercentage:n2i([ud objectForKey:@"minMatchPercentage"])];
[_py setMinMatchPercentage:[ud objectForKey:@"minMatchPercentage"]]; [model setWordWeighting:n2b([ud objectForKey:@"wordWeighting"])];
[_py setWordWeighting:[ud objectForKey:@"wordWeighting"]]; [model setMixFileKind:n2b([ud objectForKey:@"mixFileKind"])];
[_py setMixFileKind:n2b([ud objectForKey:@"mixFileKind"])]; [model setIgnoreHardlinkMatches:n2b([ud objectForKey:@"ignoreHardlinkMatches"])];
[_py setIgnoreHardlinkMatches:n2b([ud objectForKey:@"ignoreHardlinkMatches"])]; [model setMatchSimilarWords:n2b([ud objectForKey:@"matchSimilarWords"])];
[_py setMatchSimilarWords:[ud objectForKey:@"matchSimilarWords"]];
int smallFileThreshold = [ud integerForKey:@"smallFileThreshold"]; // In KB int smallFileThreshold = [ud integerForKey:@"smallFileThreshold"]; // In KB
int sizeThreshold = [ud boolForKey:@"ignoreSmallFiles"] ? smallFileThreshold * 1024 : 0; // The py side wants bytes int sizeThreshold = [ud boolForKey:@"ignoreSmallFiles"] ? smallFileThreshold * 1024 : 0; // The py side wants bytes
[_py setSizeThreshold:sizeThreshold]; [model setSizeThreshold:sizeThreshold];
} }
@end @end

View File

@ -7,12 +7,8 @@
from hscommon.trans import install_gettext_trans_under_cocoa from hscommon.trans import install_gettext_trans_under_cocoa
install_gettext_trans_under_cocoa() install_gettext_trans_under_cocoa()
from cocoa.inter import signature from cocoa.inter2 import PySelectableList, PyColumns, PyTable
from cocoa.inter2 import PySelectableList2, PyColumns2, PyTable2
from core.scanner import ScanType
from inter.app import PyDupeGuruBase
from inter.details_panel import PyDetailsPanel from inter.details_panel import PyDetailsPanel
from inter.directory_outline import PyDirectoryOutline from inter.directory_outline import PyDirectoryOutline
from inter.extra_fairware_reminder import PyExtraFairwareReminder from inter.extra_fairware_reminder import PyExtraFairwareReminder
@ -21,40 +17,4 @@ from inter.prioritize_list import PyPrioritizeList
from inter.problem_dialog import PyProblemDialog from inter.problem_dialog import PyProblemDialog
from inter.result_table import PyResultTable from inter.result_table import PyResultTable
from inter.stats_label import PyStatsLabel from inter.stats_label import PyStatsLabel
from inter.app_se import DupeGuru from inter.app_se import PyDupeGuru
# XXX temporary hack
APP_INSTANCE = None
class PyDupeGuru(PyDupeGuruBase):
def init(self):
self = super(PyDupeGuru,self).init()
self._init(DupeGuru)
global APP_INSTANCE
APP_INSTANCE = self.py
return self
#---Properties
def setMinMatchPercentage_(self,percentage):
self.py.scanner.min_match_percentage = int(percentage)
def setScanType_(self,scan_type):
try:
self.py.scanner.scan_type = [
ScanType.Filename,
ScanType.Contents,
ScanType.Folders,
][scan_type]
except IndexError:
pass
def setWordWeighting_(self,words_are_weighted):
self.py.scanner.word_weighting = words_are_weighted
def setMatchSimilarWords_(self,match_similar_words):
self.py.scanner.match_similar_words = match_similar_words
@signature('v@:i')
def setSizeThreshold_(self, size_threshold):
self.py.scanner.size_threshold = size_threshold

View File

@ -16,10 +16,8 @@
CE19BC6411199231007CCEB0 /* progress.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE19BC6111199231007CCEB0 /* progress.xib */; }; CE19BC6411199231007CCEB0 /* progress.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE19BC6111199231007CCEB0 /* progress.xib */; };
CE1D091814BE0C6400CA6B8C /* ObjP.m in Sources */ = {isa = PBXBuildFile; fileRef = CE1D091514BE0C6400CA6B8C /* ObjP.m */; }; CE1D091814BE0C6400CA6B8C /* ObjP.m in Sources */ = {isa = PBXBuildFile; fileRef = CE1D091514BE0C6400CA6B8C /* ObjP.m */; };
CE1D091914BE0C6400CA6B8C /* PyStatsLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE1D091714BE0C6400CA6B8C /* PyStatsLabel.m */; }; CE1D091914BE0C6400CA6B8C /* PyStatsLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE1D091714BE0C6400CA6B8C /* PyStatsLabel.m */; };
CE275C5014BF6C5600265960 /* HSColumns2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE275C4D14BF6C5600265960 /* HSColumns2.m */; };
CE275C5114BF6C5600265960 /* HSOutline2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE275C4F14BF6C5600265960 /* HSOutline2.m */; };
CE275C5714BF712B00265960 /* PyDirectoryOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = CE275C5514BF712B00265960 /* PyDirectoryOutline.m */; }; CE275C5714BF712B00265960 /* PyDirectoryOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = CE275C5514BF712B00265960 /* PyDirectoryOutline.m */; };
CE275C5A14BF71DF00265960 /* PyColumns2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE275C5914BF71DF00265960 /* PyColumns2.m */; }; CE275C5A14BF71DF00265960 /* PyColumns.m in Sources */ = {isa = PBXBuildFile; fileRef = CE275C5914BF71DF00265960 /* PyColumns.m */; };
CE27D3C412CCA43800859E67 /* HSAboutBox.m in Sources */ = {isa = PBXBuildFile; fileRef = CE27D3C312CCA43800859E67 /* HSAboutBox.m */; }; CE27D3C412CCA43800859E67 /* HSAboutBox.m in Sources */ = {isa = PBXBuildFile; fileRef = CE27D3C312CCA43800859E67 /* HSAboutBox.m */; };
CE31819D13D85D9B00B6D649 /* about.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE31819913D85D9B00B6D649 /* about.xib */; }; CE31819D13D85D9B00B6D649 /* about.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE31819913D85D9B00B6D649 /* about.xib */; };
CE31819E13D85D9B00B6D649 /* ErrorReportWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE31819B13D85D9B00B6D649 /* ErrorReportWindow.xib */; }; CE31819E13D85D9B00B6D649 /* ErrorReportWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE31819B13D85D9B00B6D649 /* ErrorReportWindow.xib */; };
@ -31,12 +29,10 @@
CE4746D314C09C12001A66DE /* PyProblemDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE4746D214C09C12001A66DE /* PyProblemDialog.m */; }; CE4746D314C09C12001A66DE /* PyProblemDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE4746D214C09C12001A66DE /* PyProblemDialog.m */; };
CE5335FC142BBFAF008E5374 /* HSQuicklook.m in Sources */ = {isa = PBXBuildFile; fileRef = CE5335FB142BBFAF008E5374 /* HSQuicklook.m */; }; CE5335FC142BBFAF008E5374 /* HSQuicklook.m in Sources */ = {isa = PBXBuildFile; fileRef = CE5335FB142BBFAF008E5374 /* HSQuicklook.m */; };
CE533603142BC034008E5374 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE533602142BC034008E5374 /* Quartz.framework */; }; CE533603142BC034008E5374 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE533602142BC034008E5374 /* Quartz.framework */; };
CE548CC014BF902000D180CB /* HSPopUpList2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE548CBD14BF902000D180CB /* HSPopUpList2.m */; };
CE548CC114BF902000D180CB /* HSSelectableList2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE548CBF14BF902000D180CB /* HSSelectableList2.m */; };
CE548CC614BF903D00D180CB /* PyPrioritizeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE548CC314BF903D00D180CB /* PyPrioritizeDialog.m */; }; CE548CC614BF903D00D180CB /* PyPrioritizeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE548CC314BF903D00D180CB /* PyPrioritizeDialog.m */; };
CE548CC714BF903D00D180CB /* PyPrioritizeList.m in Sources */ = {isa = PBXBuildFile; fileRef = CE548CC514BF903D00D180CB /* PyPrioritizeList.m */; }; CE548CC714BF903D00D180CB /* PyPrioritizeList.m in Sources */ = {isa = PBXBuildFile; fileRef = CE548CC514BF903D00D180CB /* PyPrioritizeList.m */; };
CE587E9A14C07BCF004CA031 /* PyOutline2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE587E9814C07BCF004CA031 /* PyOutline2.m */; }; CE587E9A14C07BCF004CA031 /* PyOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = CE587E9814C07BCF004CA031 /* PyOutline.m */; };
CE587E9E14C0801F004CA031 /* PySelectableList2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE587E9D14C0801F004CA031 /* PySelectableList2.m */; }; CE587E9E14C0801F004CA031 /* PySelectableList.m in Sources */ = {isa = PBXBuildFile; fileRef = CE587E9D14C0801F004CA031 /* PySelectableList.m */; };
CE647E571173024A006D28BA /* ProblemDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE647E551173024A006D28BA /* ProblemDialog.m */; }; CE647E571173024A006D28BA /* ProblemDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE647E551173024A006D28BA /* ProblemDialog.m */; };
CE665B3013225ADD003F5CFB /* ExtraFairwareReminder.m in Sources */ = {isa = PBXBuildFile; fileRef = CE665B2E13225ADD003F5CFB /* ExtraFairwareReminder.m */; }; CE665B3013225ADD003F5CFB /* ExtraFairwareReminder.m in Sources */ = {isa = PBXBuildFile; fileRef = CE665B2E13225ADD003F5CFB /* ExtraFairwareReminder.m */; };
CE665B3313225AF8003F5CFB /* ExtraFairwareReminder.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE665B3113225AF8003F5CFB /* ExtraFairwareReminder.xib */; }; CE665B3313225AF8003F5CFB /* ExtraFairwareReminder.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE665B3113225AF8003F5CFB /* ExtraFairwareReminder.xib */; };
@ -62,15 +58,22 @@
CE9777CD141F8C2500C13FB5 /* PrioritizeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9777CC141F8C2500C13FB5 /* PrioritizeDialog.m */; }; CE9777CD141F8C2500C13FB5 /* PrioritizeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9777CC141F8C2500C13FB5 /* PrioritizeDialog.m */; };
CE9777D1141F8CB400C13FB5 /* PrioritizeDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE9777CF141F8CB400C13FB5 /* PrioritizeDialog.xib */; }; CE9777D1141F8CB400C13FB5 /* PrioritizeDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE9777CF141F8CB400C13FB5 /* PrioritizeDialog.xib */; };
CE9D842A14BE2AE900184165 /* PyExtraFairwareReminder.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9D842914BE2AE900184165 /* PyExtraFairwareReminder.m */; }; CE9D842A14BE2AE900184165 /* PyExtraFairwareReminder.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9D842914BE2AE900184165 /* PyExtraFairwareReminder.m */; };
CE9FC22D14C080CF005C31FD /* PyGUIObject2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9FC22C14C080CF005C31FD /* PyGUIObject2.m */; }; CE9FC22D14C080CF005C31FD /* PyGUIObject.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9FC22C14C080CF005C31FD /* PyGUIObject.m */; };
CE9FC23014C08622005C31FD /* PyTable2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9FC22F14C08622005C31FD /* PyTable2.m */; }; CE9FC23014C08622005C31FD /* PyTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9FC22F14C08622005C31FD /* PyTable.m */; };
CE9FC23314C0866F005C31FD /* PyResultTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9FC23214C0866F005C31FD /* PyResultTable.m */; }; CE9FC23314C0866F005C31FD /* PyResultTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9FC23214C0866F005C31FD /* PyResultTable.m */; };
CE9FC23614C08A7E005C31FD /* HSTable2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9FC23514C08A7E005C31FD /* HSTable2.m */; };
CE9FC23914C08A92005C31FD /* HSGUIController2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9FC23814C08A92005C31FD /* HSGUIController2.m */; };
CEA175CA1461E8E600776591 /* locale in Resources */ = {isa = PBXBuildFile; fileRef = CEA175C91461E8E600776591 /* locale */; }; CEA175CA1461E8E600776591 /* locale in Resources */ = {isa = PBXBuildFile; fileRef = CEA175C91461E8E600776591 /* locale */; };
CEA450B814BDDFD7002DAAF2 /* dg_cocoa.py in Resources */ = {isa = PBXBuildFile; fileRef = CEA450B714BDDFD7002DAAF2 /* dg_cocoa.py */; }; CEA450B814BDDFD7002DAAF2 /* dg_cocoa.py in Resources */ = {isa = PBXBuildFile; fileRef = CEA450B714BDDFD7002DAAF2 /* dg_cocoa.py */; };
CEE7EA130FE675C80004E467 /* DetailsPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE7EA120FE675C80004E467 /* DetailsPanel.m */; }; CEE7EA130FE675C80004E467 /* DetailsPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE7EA120FE675C80004E467 /* DetailsPanel.m */; };
CEEB135209C837A2004D2330 /* dupeguru.icns in Resources */ = {isa = PBXBuildFile; fileRef = CEEB135109C837A2004D2330 /* dupeguru.icns */; }; CEEB135209C837A2004D2330 /* dupeguru.icns in Resources */ = {isa = PBXBuildFile; fileRef = CEEB135109C837A2004D2330 /* dupeguru.icns */; };
CEEF2A1814C0A5A60082545A /* PyDupeGuru.m in Sources */ = {isa = PBXBuildFile; fileRef = CEEF2A1714C0A5A60082545A /* PyDupeGuru.m */; };
CEEF2A1D14C0A8480082545A /* PyDupeGuruBase.m in Sources */ = {isa = PBXBuildFile; fileRef = CEEF2A1A14C0A8480082545A /* PyDupeGuruBase.m */; };
CEEF2A1E14C0A8480082545A /* PyFairware.m in Sources */ = {isa = PBXBuildFile; fileRef = CEEF2A1C14C0A8480082545A /* PyFairware.m */; };
CEEF2A3C14C0B9050082545A /* HSColumns.m in Sources */ = {isa = PBXBuildFile; fileRef = CEEF2A3114C0B9050082545A /* HSColumns.m */; };
CEEF2A3D14C0B9050082545A /* HSGUIController.m in Sources */ = {isa = PBXBuildFile; fileRef = CEEF2A3314C0B9050082545A /* HSGUIController.m */; };
CEEF2A3E14C0B9050082545A /* HSOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = CEEF2A3514C0B9050082545A /* HSOutline.m */; };
CEEF2A3F14C0B9050082545A /* HSPopUpList.m in Sources */ = {isa = PBXBuildFile; fileRef = CEEF2A3714C0B9050082545A /* HSPopUpList.m */; };
CEEF2A4014C0B9050082545A /* HSSelectableList.m in Sources */ = {isa = PBXBuildFile; fileRef = CEEF2A3914C0B9050082545A /* HSSelectableList.m */; };
CEEF2A4114C0B9050082545A /* HSTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CEEF2A3B14C0B9050082545A /* HSTable.m */; };
CEF0ACCE12DF3C2000B32F7E /* HSRecentFiles.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF0ACCD12DF3C2000B32F7E /* HSRecentFiles.m */; }; CEF0ACCE12DF3C2000B32F7E /* HSRecentFiles.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF0ACCD12DF3C2000B32F7E /* HSRecentFiles.m */; };
CEFC294609C89E3D00D9F998 /* folder32.png in Resources */ = {isa = PBXBuildFile; fileRef = CEFC294509C89E3D00D9F998 /* folder32.png */; }; CEFC294609C89E3D00D9F998 /* folder32.png in Resources */ = {isa = PBXBuildFile; fileRef = CEFC294509C89E3D00D9F998 /* folder32.png */; };
CEFC7F9E0FC9517500CD5728 /* Dialogs.m in Sources */ = {isa = PBXBuildFile; fileRef = CEFC7F8B0FC9517500CD5728 /* Dialogs.m */; }; CEFC7F9E0FC9517500CD5728 /* Dialogs.m in Sources */ = {isa = PBXBuildFile; fileRef = CEFC7F8B0FC9517500CD5728 /* Dialogs.m */; };
@ -140,14 +143,10 @@
CE1D091514BE0C6400CA6B8C /* ObjP.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ObjP.m; sourceTree = "<group>"; }; CE1D091514BE0C6400CA6B8C /* ObjP.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ObjP.m; sourceTree = "<group>"; };
CE1D091614BE0C6400CA6B8C /* PyStatsLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyStatsLabel.h; sourceTree = "<group>"; }; CE1D091614BE0C6400CA6B8C /* PyStatsLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyStatsLabel.h; sourceTree = "<group>"; };
CE1D091714BE0C6400CA6B8C /* PyStatsLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyStatsLabel.m; sourceTree = "<group>"; }; CE1D091714BE0C6400CA6B8C /* PyStatsLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyStatsLabel.m; sourceTree = "<group>"; };
CE275C4C14BF6C5600265960 /* HSColumns2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSColumns2.h; sourceTree = "<group>"; };
CE275C4D14BF6C5600265960 /* HSColumns2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSColumns2.m; sourceTree = "<group>"; };
CE275C4E14BF6C5600265960 /* HSOutline2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSOutline2.h; sourceTree = "<group>"; };
CE275C4F14BF6C5600265960 /* HSOutline2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSOutline2.m; sourceTree = "<group>"; };
CE275C5414BF712B00265960 /* PyDirectoryOutline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyDirectoryOutline.h; sourceTree = "<group>"; }; CE275C5414BF712B00265960 /* PyDirectoryOutline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyDirectoryOutline.h; sourceTree = "<group>"; };
CE275C5514BF712B00265960 /* PyDirectoryOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyDirectoryOutline.m; sourceTree = "<group>"; }; CE275C5514BF712B00265960 /* PyDirectoryOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyDirectoryOutline.m; sourceTree = "<group>"; };
CE275C5814BF71DF00265960 /* PyColumns2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyColumns2.h; sourceTree = "<group>"; }; CE275C5814BF71DF00265960 /* PyColumns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyColumns.h; sourceTree = "<group>"; };
CE275C5914BF71DF00265960 /* PyColumns2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyColumns2.m; sourceTree = "<group>"; }; CE275C5914BF71DF00265960 /* PyColumns.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyColumns.m; sourceTree = "<group>"; };
CE27D3C212CCA43800859E67 /* HSAboutBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSAboutBox.h; path = ../../cocoalib/HSAboutBox.h; sourceTree = SOURCE_ROOT; }; CE27D3C212CCA43800859E67 /* HSAboutBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSAboutBox.h; path = ../../cocoalib/HSAboutBox.h; sourceTree = SOURCE_ROOT; };
CE27D3C312CCA43800859E67 /* HSAboutBox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSAboutBox.m; path = ../../cocoalib/HSAboutBox.m; sourceTree = SOURCE_ROOT; }; CE27D3C312CCA43800859E67 /* HSAboutBox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSAboutBox.m; path = ../../cocoalib/HSAboutBox.m; sourceTree = SOURCE_ROOT; };
CE31819A13D85D9B00B6D649 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = ../en.lproj/about.xib; sourceTree = "<group>"; }; CE31819A13D85D9B00B6D649 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = ../en.lproj/about.xib; sourceTree = "<group>"; };
@ -169,18 +168,14 @@
CE5335FA142BBFAF008E5374 /* HSQuicklook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSQuicklook.h; path = ../../cocoalib/HSQuicklook.h; sourceTree = "<group>"; }; CE5335FA142BBFAF008E5374 /* HSQuicklook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSQuicklook.h; path = ../../cocoalib/HSQuicklook.h; sourceTree = "<group>"; };
CE5335FB142BBFAF008E5374 /* HSQuicklook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSQuicklook.m; path = ../../cocoalib/HSQuicklook.m; sourceTree = "<group>"; }; CE5335FB142BBFAF008E5374 /* HSQuicklook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSQuicklook.m; path = ../../cocoalib/HSQuicklook.m; sourceTree = "<group>"; };
CE533602142BC034008E5374 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = System/Library/Frameworks/Quartz.framework; sourceTree = SDKROOT; }; CE533602142BC034008E5374 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = System/Library/Frameworks/Quartz.framework; sourceTree = SDKROOT; };
CE548CBC14BF902000D180CB /* HSPopUpList2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSPopUpList2.h; sourceTree = "<group>"; };
CE548CBD14BF902000D180CB /* HSPopUpList2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSPopUpList2.m; sourceTree = "<group>"; };
CE548CBE14BF902000D180CB /* HSSelectableList2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSSelectableList2.h; sourceTree = "<group>"; };
CE548CBF14BF902000D180CB /* HSSelectableList2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSSelectableList2.m; sourceTree = "<group>"; };
CE548CC214BF903D00D180CB /* PyPrioritizeDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyPrioritizeDialog.h; sourceTree = "<group>"; }; CE548CC214BF903D00D180CB /* PyPrioritizeDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyPrioritizeDialog.h; sourceTree = "<group>"; };
CE548CC314BF903D00D180CB /* PyPrioritizeDialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyPrioritizeDialog.m; sourceTree = "<group>"; }; CE548CC314BF903D00D180CB /* PyPrioritizeDialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyPrioritizeDialog.m; sourceTree = "<group>"; };
CE548CC414BF903D00D180CB /* PyPrioritizeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyPrioritizeList.h; sourceTree = "<group>"; }; CE548CC414BF903D00D180CB /* PyPrioritizeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyPrioritizeList.h; sourceTree = "<group>"; };
CE548CC514BF903D00D180CB /* PyPrioritizeList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyPrioritizeList.m; sourceTree = "<group>"; }; CE548CC514BF903D00D180CB /* PyPrioritizeList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyPrioritizeList.m; sourceTree = "<group>"; };
CE587E9714C07BCF004CA031 /* PyOutline2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyOutline2.h; sourceTree = "<group>"; }; CE587E9714C07BCF004CA031 /* PyOutline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyOutline.h; sourceTree = "<group>"; };
CE587E9814C07BCF004CA031 /* PyOutline2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyOutline2.m; sourceTree = "<group>"; }; CE587E9814C07BCF004CA031 /* PyOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyOutline.m; sourceTree = "<group>"; };
CE587E9C14C0801F004CA031 /* PySelectableList2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PySelectableList2.h; sourceTree = "<group>"; }; CE587E9C14C0801F004CA031 /* PySelectableList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PySelectableList.h; sourceTree = "<group>"; };
CE587E9D14C0801F004CA031 /* PySelectableList2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PySelectableList2.m; sourceTree = "<group>"; }; CE587E9D14C0801F004CA031 /* PySelectableList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PySelectableList.m; sourceTree = "<group>"; };
CE647E541173024A006D28BA /* ProblemDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProblemDialog.h; path = ../base/ProblemDialog.h; sourceTree = SOURCE_ROOT; }; CE647E541173024A006D28BA /* ProblemDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProblemDialog.h; path = ../base/ProblemDialog.h; sourceTree = SOURCE_ROOT; };
CE647E551173024A006D28BA /* ProblemDialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ProblemDialog.m; path = ../base/ProblemDialog.m; sourceTree = SOURCE_ROOT; }; CE647E551173024A006D28BA /* ProblemDialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ProblemDialog.m; path = ../base/ProblemDialog.m; sourceTree = SOURCE_ROOT; };
CE665B2D13225ADD003F5CFB /* ExtraFairwareReminder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExtraFairwareReminder.h; path = ../base/ExtraFairwareReminder.h; sourceTree = SOURCE_ROOT; }; CE665B2D13225ADD003F5CFB /* ExtraFairwareReminder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExtraFairwareReminder.h; path = ../base/ExtraFairwareReminder.h; sourceTree = SOURCE_ROOT; };
@ -202,7 +197,6 @@
CE76FDD2111EE3A7006618EA /* DirectoryOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DirectoryOutline.m; path = ../base/DirectoryOutline.m; sourceTree = SOURCE_ROOT; }; CE76FDD2111EE3A7006618EA /* DirectoryOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DirectoryOutline.m; path = ../base/DirectoryOutline.m; sourceTree = SOURCE_ROOT; };
CE76FDF5111EE561006618EA /* NSEventAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NSEventAdditions.h; path = ../../cocoalib/NSEventAdditions.h; sourceTree = SOURCE_ROOT; }; CE76FDF5111EE561006618EA /* NSEventAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NSEventAdditions.h; path = ../../cocoalib/NSEventAdditions.h; sourceTree = SOURCE_ROOT; };
CE76FDF6111EE561006618EA /* NSEventAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSEventAdditions.m; path = ../../cocoalib/NSEventAdditions.m; sourceTree = SOURCE_ROOT; }; CE76FDF6111EE561006618EA /* NSEventAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSEventAdditions.m; path = ../../cocoalib/NSEventAdditions.m; sourceTree = SOURCE_ROOT; };
CE79638212536C6E008D405B /* PyFairware.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyFairware.h; path = ../../cocoalib/PyFairware.h; sourceTree = SOURCE_ROOT; };
CE79638512536C94008D405B /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = ../../cocoalib/en.lproj/FairwareReminder.xib; sourceTree = SOURCE_ROOT; }; CE79638512536C94008D405B /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = ../../cocoalib/en.lproj/FairwareReminder.xib; sourceTree = SOURCE_ROOT; };
CE79638A12536F4E008D405B /* HSFairwareReminder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSFairwareReminder.h; path = ../../cocoalib/HSFairwareReminder.h; sourceTree = SOURCE_ROOT; }; CE79638A12536F4E008D405B /* HSFairwareReminder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSFairwareReminder.h; path = ../../cocoalib/HSFairwareReminder.h; sourceTree = SOURCE_ROOT; };
CE79638B12536F4E008D405B /* HSFairwareReminder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSFairwareReminder.m; path = ../../cocoalib/HSFairwareReminder.m; sourceTree = SOURCE_ROOT; }; CE79638B12536F4E008D405B /* HSFairwareReminder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSFairwareReminder.m; path = ../../cocoalib/HSFairwareReminder.m; sourceTree = SOURCE_ROOT; };
@ -241,16 +235,12 @@
CE9777D0141F8CB400C13FB5 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = ../base/en.lproj/PrioritizeDialog.xib; sourceTree = "<group>"; }; CE9777D0141F8CB400C13FB5 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = ../base/en.lproj/PrioritizeDialog.xib; sourceTree = "<group>"; };
CE9D842814BE2AE900184165 /* PyExtraFairwareReminder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyExtraFairwareReminder.h; sourceTree = "<group>"; }; CE9D842814BE2AE900184165 /* PyExtraFairwareReminder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyExtraFairwareReminder.h; sourceTree = "<group>"; };
CE9D842914BE2AE900184165 /* PyExtraFairwareReminder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyExtraFairwareReminder.m; sourceTree = "<group>"; }; CE9D842914BE2AE900184165 /* PyExtraFairwareReminder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyExtraFairwareReminder.m; sourceTree = "<group>"; };
CE9FC22B14C080CF005C31FD /* PyGUIObject2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyGUIObject2.h; sourceTree = "<group>"; }; CE9FC22B14C080CF005C31FD /* PyGUIObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyGUIObject.h; sourceTree = "<group>"; };
CE9FC22C14C080CF005C31FD /* PyGUIObject2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyGUIObject2.m; sourceTree = "<group>"; }; CE9FC22C14C080CF005C31FD /* PyGUIObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyGUIObject.m; sourceTree = "<group>"; };
CE9FC22E14C08622005C31FD /* PyTable2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyTable2.h; sourceTree = "<group>"; }; CE9FC22E14C08622005C31FD /* PyTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyTable.h; sourceTree = "<group>"; };
CE9FC22F14C08622005C31FD /* PyTable2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyTable2.m; sourceTree = "<group>"; }; CE9FC22F14C08622005C31FD /* PyTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyTable.m; sourceTree = "<group>"; };
CE9FC23114C0866F005C31FD /* PyResultTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyResultTable.h; sourceTree = "<group>"; }; CE9FC23114C0866F005C31FD /* PyResultTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyResultTable.h; sourceTree = "<group>"; };
CE9FC23214C0866F005C31FD /* PyResultTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyResultTable.m; sourceTree = "<group>"; }; CE9FC23214C0866F005C31FD /* PyResultTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyResultTable.m; sourceTree = "<group>"; };
CE9FC23414C08A73005C31FD /* HSTable2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSTable2.h; sourceTree = "<group>"; };
CE9FC23514C08A7E005C31FD /* HSTable2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSTable2.m; sourceTree = "<group>"; };
CE9FC23714C08A92005C31FD /* HSGUIController2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSGUIController2.h; sourceTree = "<group>"; };
CE9FC23814C08A92005C31FD /* HSGUIController2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSGUIController2.m; sourceTree = "<group>"; };
CEA175C91461E8E600776591 /* locale */ = {isa = PBXFileReference; lastKnownFileType = folder; name = locale; path = ../../build/locale; sourceTree = "<group>"; }; CEA175C91461E8E600776591 /* locale */ = {isa = PBXFileReference; lastKnownFileType = folder; name = locale; path = ../../build/locale; sourceTree = "<group>"; };
CEA450B714BDDFD7002DAAF2 /* dg_cocoa.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = dg_cocoa.py; path = ../../build/dg_cocoa.py; sourceTree = "<group>"; }; CEA450B714BDDFD7002DAAF2 /* dg_cocoa.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = dg_cocoa.py; path = ../../build/dg_cocoa.py; sourceTree = "<group>"; };
CEB57990146ADC5100EDF7D7 /* HSConsts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSConsts.h; path = ../../cocoalib/HSConsts.h; sourceTree = "<group>"; }; CEB57990146ADC5100EDF7D7 /* HSConsts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSConsts.h; path = ../../cocoalib/HSConsts.h; sourceTree = "<group>"; };
@ -274,11 +264,25 @@
CEE7EA110FE675C80004E467 /* DetailsPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetailsPanel.h; path = ../base/DetailsPanel.h; sourceTree = SOURCE_ROOT; }; CEE7EA110FE675C80004E467 /* DetailsPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetailsPanel.h; path = ../base/DetailsPanel.h; sourceTree = SOURCE_ROOT; };
CEE7EA120FE675C80004E467 /* DetailsPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DetailsPanel.m; path = ../base/DetailsPanel.m; sourceTree = SOURCE_ROOT; }; CEE7EA120FE675C80004E467 /* DetailsPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DetailsPanel.m; path = ../base/DetailsPanel.m; sourceTree = SOURCE_ROOT; };
CEEB135109C837A2004D2330 /* dupeguru.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = dupeguru.icns; sourceTree = "<group>"; }; CEEB135109C837A2004D2330 /* dupeguru.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = dupeguru.icns; sourceTree = "<group>"; };
CEEF2A1114C09EDF0082545A /* PyColumns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyColumns.h; sourceTree = "<group>"; }; CEEF2A1614C0A5A60082545A /* PyDupeGuru.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyDupeGuru.h; sourceTree = "<group>"; };
CEEF2A1214C09EDF0082545A /* PyGUI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyGUI.h; sourceTree = "<group>"; }; CEEF2A1714C0A5A60082545A /* PyDupeGuru.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyDupeGuru.m; sourceTree = "<group>"; };
CEEF2A1314C09EDF0082545A /* PyOutline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyOutline.h; sourceTree = "<group>"; }; CEEF2A1914C0A8480082545A /* PyDupeGuruBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyDupeGuruBase.h; sourceTree = "<group>"; };
CEEF2A1414C09EDF0082545A /* PySelectableList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PySelectableList.h; sourceTree = "<group>"; }; CEEF2A1A14C0A8480082545A /* PyDupeGuruBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyDupeGuruBase.m; sourceTree = "<group>"; };
CEEF2A1514C09EDF0082545A /* PyTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyTable.h; sourceTree = "<group>"; }; CEEF2A1B14C0A8480082545A /* PyFairware.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyFairware.h; sourceTree = "<group>"; };
CEEF2A1C14C0A8480082545A /* PyFairware.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyFairware.m; sourceTree = "<group>"; };
CEEF2A3014C0B9050082545A /* HSColumns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSColumns.h; sourceTree = "<group>"; };
CEEF2A3114C0B9050082545A /* HSColumns.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSColumns.m; sourceTree = "<group>"; };
CEEF2A3214C0B9050082545A /* HSGUIController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSGUIController.h; sourceTree = "<group>"; };
CEEF2A3314C0B9050082545A /* HSGUIController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSGUIController.m; sourceTree = "<group>"; };
CEEF2A3414C0B9050082545A /* HSOutline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSOutline.h; sourceTree = "<group>"; };
CEEF2A3514C0B9050082545A /* HSOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSOutline.m; sourceTree = "<group>"; };
CEEF2A3614C0B9050082545A /* HSPopUpList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSPopUpList.h; sourceTree = "<group>"; };
CEEF2A3714C0B9050082545A /* HSPopUpList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSPopUpList.m; sourceTree = "<group>"; };
CEEF2A3814C0B9050082545A /* HSSelectableList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSSelectableList.h; sourceTree = "<group>"; };
CEEF2A3914C0B9050082545A /* HSSelectableList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSSelectableList.m; sourceTree = "<group>"; };
CEEF2A3A14C0B9050082545A /* HSTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSTable.h; sourceTree = "<group>"; };
CEEF2A3B14C0B9050082545A /* HSTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSTable.m; sourceTree = "<group>"; };
CEEF2A4214C0BB430082545A /* Worker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Worker.h; path = ../../cocoalib/Worker.h; sourceTree = "<group>"; };
CEF0ACCC12DF3C2000B32F7E /* HSRecentFiles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSRecentFiles.h; path = ../../cocoalib/HSRecentFiles.h; sourceTree = SOURCE_ROOT; }; CEF0ACCC12DF3C2000B32F7E /* HSRecentFiles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSRecentFiles.h; path = ../../cocoalib/HSRecentFiles.h; sourceTree = SOURCE_ROOT; };
CEF0ACCD12DF3C2000B32F7E /* HSRecentFiles.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSRecentFiles.m; path = ../../cocoalib/HSRecentFiles.m; sourceTree = SOURCE_ROOT; }; CEF0ACCD12DF3C2000B32F7E /* HSRecentFiles.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSRecentFiles.m; path = ../../cocoalib/HSRecentFiles.m; sourceTree = SOURCE_ROOT; };
CEF27A9C1423EAD90048ADFA /* de */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = de; path = ../base/de.lproj/PrioritizeDialog.xib; sourceTree = "<group>"; }; CEF27A9C1423EAD90048ADFA /* de */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = de; path = ../base/de.lproj/PrioritizeDialog.xib; sourceTree = "<group>"; };
@ -291,7 +295,6 @@
CEFC7F8D0FC9517500CD5728 /* HSErrorReportWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSErrorReportWindow.m; path = ../../cocoalib/HSErrorReportWindow.m; sourceTree = SOURCE_ROOT; }; CEFC7F8D0FC9517500CD5728 /* HSErrorReportWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSErrorReportWindow.m; path = ../../cocoalib/HSErrorReportWindow.m; sourceTree = SOURCE_ROOT; };
CEFC7F900FC9517500CD5728 /* ProgressController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProgressController.h; path = ../../cocoalib/ProgressController.h; sourceTree = SOURCE_ROOT; }; CEFC7F900FC9517500CD5728 /* ProgressController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProgressController.h; path = ../../cocoalib/ProgressController.h; sourceTree = SOURCE_ROOT; };
CEFC7F910FC9517500CD5728 /* ProgressController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ProgressController.m; path = ../../cocoalib/ProgressController.m; sourceTree = SOURCE_ROOT; }; CEFC7F910FC9517500CD5728 /* ProgressController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ProgressController.m; path = ../../cocoalib/ProgressController.m; sourceTree = SOURCE_ROOT; };
CEFC7F920FC9517500CD5728 /* PyApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyApp.h; path = ../../cocoalib/PyApp.h; sourceTree = SOURCE_ROOT; };
CEFC7F9A0FC9517500CD5728 /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Utils.h; path = ../../cocoalib/Utils.h; sourceTree = SOURCE_ROOT; }; CEFC7F9A0FC9517500CD5728 /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Utils.h; path = ../../cocoalib/Utils.h; sourceTree = SOURCE_ROOT; };
CEFC7F9B0FC9517500CD5728 /* Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Utils.m; path = ../../cocoalib/Utils.m; sourceTree = SOURCE_ROOT; }; CEFC7F9B0FC9517500CD5728 /* Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Utils.m; path = ../../cocoalib/Utils.m; sourceTree = SOURCE_ROOT; };
CEFC7F9C0FC9517500CD5728 /* ValueTransformers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ValueTransformers.h; path = ../../cocoalib/ValueTransformers.h; sourceTree = SOURCE_ROOT; }; CEFC7F9C0FC9517500CD5728 /* ValueTransformers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ValueTransformers.h; path = ../../cocoalib/ValueTransformers.h; sourceTree = SOURCE_ROOT; };
@ -301,10 +304,8 @@
CEFC7FB30FC951A700CD5728 /* Consts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Consts.h; path = ../base/Consts.h; sourceTree = SOURCE_ROOT; }; CEFC7FB30FC951A700CD5728 /* Consts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Consts.h; path = ../base/Consts.h; sourceTree = SOURCE_ROOT; };
CEFC7FB40FC951A700CD5728 /* DirectoryPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DirectoryPanel.h; path = ../base/DirectoryPanel.h; sourceTree = SOURCE_ROOT; }; CEFC7FB40FC951A700CD5728 /* DirectoryPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DirectoryPanel.h; path = ../base/DirectoryPanel.h; sourceTree = SOURCE_ROOT; };
CEFC7FB50FC951A700CD5728 /* DirectoryPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DirectoryPanel.m; path = ../base/DirectoryPanel.m; sourceTree = SOURCE_ROOT; }; CEFC7FB50FC951A700CD5728 /* DirectoryPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DirectoryPanel.m; path = ../base/DirectoryPanel.m; sourceTree = SOURCE_ROOT; };
CEFC7FB60FC951A700CD5728 /* PyDupeGuru.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyDupeGuru.h; path = ../base/PyDupeGuru.h; sourceTree = SOURCE_ROOT; };
CEFC7FB70FC951A700CD5728 /* ResultWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResultWindow.h; path = ../base/ResultWindow.h; sourceTree = SOURCE_ROOT; }; CEFC7FB70FC951A700CD5728 /* ResultWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResultWindow.h; path = ../base/ResultWindow.h; sourceTree = SOURCE_ROOT; };
CEFC7FB80FC951A700CD5728 /* ResultWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ResultWindow.m; path = ../base/ResultWindow.m; sourceTree = SOURCE_ROOT; }; CEFC7FB80FC951A700CD5728 /* ResultWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ResultWindow.m; path = ../base/ResultWindow.m; sourceTree = SOURCE_ROOT; };
CEFF18A009A4D387005E6321 /* PyDupeGuru.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = PyDupeGuru.h; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@ -327,7 +328,6 @@
children = ( children = (
CE381C9509914ACE003581CE /* AppDelegate.h */, CE381C9509914ACE003581CE /* AppDelegate.h */,
CE381C9409914ACE003581CE /* AppDelegate.m */, CE381C9409914ACE003581CE /* AppDelegate.m */,
CEFF18A009A4D387005E6321 /* PyDupeGuru.h */,
CE381C9B09914ADF003581CE /* ResultWindow.h */, CE381C9B09914ADF003581CE /* ResultWindow.h */,
CE381C9A09914ADF003581CE /* ResultWindow.m */, CE381C9A09914ADF003581CE /* ResultWindow.m */,
29B97316FDCFA39411CA2CEA /* main.m */, 29B97316FDCFA39411CA2CEA /* main.m */,
@ -418,16 +418,16 @@
CE1D091314BE0C6400CA6B8C /* autogen */ = { CE1D091314BE0C6400CA6B8C /* autogen */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
CE9FC22B14C080CF005C31FD /* PyGUIObject2.h */, CE9FC22B14C080CF005C31FD /* PyGUIObject.h */,
CE9FC22C14C080CF005C31FD /* PyGUIObject2.m */, CE9FC22C14C080CF005C31FD /* PyGUIObject.m */,
CE275C5814BF71DF00265960 /* PyColumns2.h */, CE275C5814BF71DF00265960 /* PyColumns.h */,
CE275C5914BF71DF00265960 /* PyColumns2.m */, CE275C5914BF71DF00265960 /* PyColumns.m */,
CE587E9714C07BCF004CA031 /* PyOutline2.h */, CE587E9714C07BCF004CA031 /* PyOutline.h */,
CE587E9814C07BCF004CA031 /* PyOutline2.m */, CE587E9814C07BCF004CA031 /* PyOutline.m */,
CE587E9C14C0801F004CA031 /* PySelectableList2.h */, CE587E9C14C0801F004CA031 /* PySelectableList.h */,
CE587E9D14C0801F004CA031 /* PySelectableList2.m */, CE587E9D14C0801F004CA031 /* PySelectableList.m */,
CE9FC22E14C08622005C31FD /* PyTable2.h */, CE9FC22E14C08622005C31FD /* PyTable.h */,
CE9FC22F14C08622005C31FD /* PyTable2.m */, CE9FC22F14C08622005C31FD /* PyTable.m */,
CE3A3B4714BF19B8007898AB /* PyDetailsPanel.h */, CE3A3B4714BF19B8007898AB /* PyDetailsPanel.h */,
CE3A3B4814BF19B8007898AB /* PyDetailsPanel.m */, CE3A3B4814BF19B8007898AB /* PyDetailsPanel.m */,
CE9D842814BE2AE900184165 /* PyExtraFairwareReminder.h */, CE9D842814BE2AE900184165 /* PyExtraFairwareReminder.h */,
@ -446,6 +446,12 @@
CE1D091714BE0C6400CA6B8C /* PyStatsLabel.m */, CE1D091714BE0C6400CA6B8C /* PyStatsLabel.m */,
CE1D091414BE0C6400CA6B8C /* ObjP.h */, CE1D091414BE0C6400CA6B8C /* ObjP.h */,
CE1D091514BE0C6400CA6B8C /* ObjP.m */, CE1D091514BE0C6400CA6B8C /* ObjP.m */,
CEEF2A1614C0A5A60082545A /* PyDupeGuru.h */,
CEEF2A1714C0A5A60082545A /* PyDupeGuru.m */,
CEEF2A1914C0A8480082545A /* PyDupeGuruBase.h */,
CEEF2A1A14C0A8480082545A /* PyDupeGuruBase.m */,
CEEF2A1B14C0A8480082545A /* PyFairware.h */,
CEEF2A1C14C0A8480082545A /* PyFairware.m */,
); );
name = autogen; name = autogen;
path = ../autogen; path = ../autogen;
@ -470,36 +476,23 @@
CE76FDC7111EE38E006618EA /* controllers */ = { CE76FDC7111EE38E006618EA /* controllers */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
CE275C4C14BF6C5600265960 /* HSColumns2.h */, CEEF2A3014C0B9050082545A /* HSColumns.h */,
CE275C4D14BF6C5600265960 /* HSColumns2.m */, CEEF2A3114C0B9050082545A /* HSColumns.m */,
CE275C4E14BF6C5600265960 /* HSOutline2.h */, CEEF2A3214C0B9050082545A /* HSGUIController.h */,
CE275C4F14BF6C5600265960 /* HSOutline2.m */, CEEF2A3314C0B9050082545A /* HSGUIController.m */,
CE9FC23714C08A92005C31FD /* HSGUIController2.h */, CEEF2A3414C0B9050082545A /* HSOutline.h */,
CE9FC23814C08A92005C31FD /* HSGUIController2.m */, CEEF2A3514C0B9050082545A /* HSOutline.m */,
CE9FC23414C08A73005C31FD /* HSTable2.h */, CEEF2A3614C0B9050082545A /* HSPopUpList.h */,
CE9FC23514C08A7E005C31FD /* HSTable2.m */, CEEF2A3714C0B9050082545A /* HSPopUpList.m */,
CE548CBC14BF902000D180CB /* HSPopUpList2.h */, CEEF2A3814C0B9050082545A /* HSSelectableList.h */,
CE548CBD14BF902000D180CB /* HSPopUpList2.m */, CEEF2A3914C0B9050082545A /* HSSelectableList.m */,
CE548CBE14BF902000D180CB /* HSSelectableList2.h */, CEEF2A3A14C0B9050082545A /* HSTable.h */,
CE548CBF14BF902000D180CB /* HSSelectableList2.m */, CEEF2A3B14C0B9050082545A /* HSTable.m */,
); );
name = controllers; name = controllers;
path = ../../cocoalib/controllers; path = ../../cocoalib/controllers;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
}; };
CEEF2A1014C09EDF0082545A /* proxies */ = {
isa = PBXGroup;
children = (
CEEF2A1114C09EDF0082545A /* PyColumns.h */,
CEEF2A1214C09EDF0082545A /* PyGUI.h */,
CEEF2A1314C09EDF0082545A /* PyOutline.h */,
CEEF2A1414C09EDF0082545A /* PySelectableList.h */,
CEEF2A1514C09EDF0082545A /* PyTable.h */,
);
name = proxies;
path = ../../cocoalib/proxies;
sourceTree = "<group>";
};
CEEFC0CA10943849001F3A39 /* xib */ = { CEEFC0CA10943849001F3A39 /* xib */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@ -526,7 +519,6 @@
CEFC7F890FC9513600CD5728 /* cocoalib */ = { CEFC7F890FC9513600CD5728 /* cocoalib */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
CEEF2A1014C09EDF0082545A /* proxies */,
CE76FDF5111EE561006618EA /* NSEventAdditions.h */, CE76FDF5111EE561006618EA /* NSEventAdditions.h */,
CE76FDF6111EE561006618EA /* NSEventAdditions.m */, CE76FDF6111EE561006618EA /* NSEventAdditions.m */,
CE76FDC7111EE38E006618EA /* controllers */, CE76FDC7111EE38E006618EA /* controllers */,
@ -539,16 +531,15 @@
CEFC7F8D0FC9517500CD5728 /* HSErrorReportWindow.m */, CEFC7F8D0FC9517500CD5728 /* HSErrorReportWindow.m */,
CE79638A12536F4E008D405B /* HSFairwareReminder.h */, CE79638A12536F4E008D405B /* HSFairwareReminder.h */,
CE79638B12536F4E008D405B /* HSFairwareReminder.m */, CE79638B12536F4E008D405B /* HSFairwareReminder.m */,
CE79638212536C6E008D405B /* PyFairware.h */,
CE27D3C212CCA43800859E67 /* HSAboutBox.h */, CE27D3C212CCA43800859E67 /* HSAboutBox.h */,
CE27D3C312CCA43800859E67 /* HSAboutBox.m */, CE27D3C312CCA43800859E67 /* HSAboutBox.m */,
CEF0ACCC12DF3C2000B32F7E /* HSRecentFiles.h */, CEF0ACCC12DF3C2000B32F7E /* HSRecentFiles.h */,
CEF0ACCD12DF3C2000B32F7E /* HSRecentFiles.m */, CEF0ACCD12DF3C2000B32F7E /* HSRecentFiles.m */,
CE5335FA142BBFAF008E5374 /* HSQuicklook.h */, CE5335FA142BBFAF008E5374 /* HSQuicklook.h */,
CE5335FB142BBFAF008E5374 /* HSQuicklook.m */, CE5335FB142BBFAF008E5374 /* HSQuicklook.m */,
CEEF2A4214C0BB430082545A /* Worker.h */,
CEFC7F900FC9517500CD5728 /* ProgressController.h */, CEFC7F900FC9517500CD5728 /* ProgressController.h */,
CEFC7F910FC9517500CD5728 /* ProgressController.m */, CEFC7F910FC9517500CD5728 /* ProgressController.m */,
CEFC7F920FC9517500CD5728 /* PyApp.h */,
CEFC7F9A0FC9517500CD5728 /* Utils.h */, CEFC7F9A0FC9517500CD5728 /* Utils.h */,
CEFC7F9B0FC9517500CD5728 /* Utils.m */, CEFC7F9B0FC9517500CD5728 /* Utils.m */,
CEFC7F9C0FC9517500CD5728 /* ValueTransformers.h */, CEFC7F9C0FC9517500CD5728 /* ValueTransformers.h */,
@ -576,7 +567,6 @@
CEFC7FB50FC951A700CD5728 /* DirectoryPanel.m */, CEFC7FB50FC951A700CD5728 /* DirectoryPanel.m */,
CE665B2D13225ADD003F5CFB /* ExtraFairwareReminder.h */, CE665B2D13225ADD003F5CFB /* ExtraFairwareReminder.h */,
CE665B2E13225ADD003F5CFB /* ExtraFairwareReminder.m */, CE665B2E13225ADD003F5CFB /* ExtraFairwareReminder.m */,
CEFC7FB60FC951A700CD5728 /* PyDupeGuru.h */,
CEFC7FB70FC951A700CD5728 /* ResultWindow.h */, CEFC7FB70FC951A700CD5728 /* ResultWindow.h */,
CEFC7FB80FC951A700CD5728 /* ResultWindow.m */, CEFC7FB80FC951A700CD5728 /* ResultWindow.m */,
CE647E541173024A006D28BA /* ProblemDialog.h */, CE647E541173024A006D28BA /* ProblemDialog.h */,
@ -713,22 +703,25 @@
CE1D091914BE0C6400CA6B8C /* PyStatsLabel.m in Sources */, CE1D091914BE0C6400CA6B8C /* PyStatsLabel.m in Sources */,
CE9D842A14BE2AE900184165 /* PyExtraFairwareReminder.m in Sources */, CE9D842A14BE2AE900184165 /* PyExtraFairwareReminder.m in Sources */,
CE3A3B4914BF19B8007898AB /* PyDetailsPanel.m in Sources */, CE3A3B4914BF19B8007898AB /* PyDetailsPanel.m in Sources */,
CE275C5014BF6C5600265960 /* HSColumns2.m in Sources */,
CE275C5114BF6C5600265960 /* HSOutline2.m in Sources */,
CE275C5714BF712B00265960 /* PyDirectoryOutline.m in Sources */, CE275C5714BF712B00265960 /* PyDirectoryOutline.m in Sources */,
CE275C5A14BF71DF00265960 /* PyColumns2.m in Sources */, CE275C5A14BF71DF00265960 /* PyColumns.m in Sources */,
CE548CC014BF902000D180CB /* HSPopUpList2.m in Sources */,
CE548CC114BF902000D180CB /* HSSelectableList2.m in Sources */,
CE548CC614BF903D00D180CB /* PyPrioritizeDialog.m in Sources */, CE548CC614BF903D00D180CB /* PyPrioritizeDialog.m in Sources */,
CE548CC714BF903D00D180CB /* PyPrioritizeList.m in Sources */, CE548CC714BF903D00D180CB /* PyPrioritizeList.m in Sources */,
CE587E9A14C07BCF004CA031 /* PyOutline2.m in Sources */, CE587E9A14C07BCF004CA031 /* PyOutline.m in Sources */,
CE587E9E14C0801F004CA031 /* PySelectableList2.m in Sources */, CE587E9E14C0801F004CA031 /* PySelectableList.m in Sources */,
CE9FC22D14C080CF005C31FD /* PyGUIObject2.m in Sources */, CE9FC22D14C080CF005C31FD /* PyGUIObject.m in Sources */,
CE9FC23014C08622005C31FD /* PyTable2.m in Sources */, CE9FC23014C08622005C31FD /* PyTable.m in Sources */,
CE9FC23314C0866F005C31FD /* PyResultTable.m in Sources */, CE9FC23314C0866F005C31FD /* PyResultTable.m in Sources */,
CE9FC23614C08A7E005C31FD /* HSTable2.m in Sources */,
CE9FC23914C08A92005C31FD /* HSGUIController2.m in Sources */,
CE4746D314C09C12001A66DE /* PyProblemDialog.m in Sources */, CE4746D314C09C12001A66DE /* PyProblemDialog.m in Sources */,
CEEF2A1814C0A5A60082545A /* PyDupeGuru.m in Sources */,
CEEF2A1D14C0A8480082545A /* PyDupeGuruBase.m in Sources */,
CEEF2A1E14C0A8480082545A /* PyFairware.m in Sources */,
CEEF2A3C14C0B9050082545A /* HSColumns.m in Sources */,
CEEF2A3D14C0B9050082545A /* HSGUIController.m in Sources */,
CEEF2A3E14C0B9050082545A /* HSOutline.m in Sources */,
CEEF2A3F14C0B9050082545A /* HSPopUpList.m in Sources */,
CEEF2A4014C0B9050082545A /* HSSelectableList.m in Sources */,
CEEF2A4114C0B9050082545A /* HSTable.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };