From 6a7af81685ff5a98636ae77bd90f71e75996d468 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Fri, 27 Jul 2012 18:30:34 -0400 Subject: [PATCH] xibless-ified MainMenu. --HG-- branch : xibless rename : cocoa/base/AppDelegate.h => cocoa/base/AppDelegateBase.h rename : cocoa/base/AppDelegate.m => cocoa/base/AppDelegateBase.m --- build.py | 17 +- .../base/{AppDelegate.h => AppDelegateBase.h} | 33 +- .../base/{AppDelegate.m => AppDelegateBase.m} | 46 +- cocoa/base/DirectoryPanel.m | 4 +- cocoa/base/ResultWindow.h | 1 - cocoa/base/ResultWindow.m | 7 +- cocoa/base/en.lproj/Localizable.strings | 53 + cocoa/base/en.lproj/MainMenu.strings | 180 -- cocoa/base/en.lproj/MainMenu.xib | 2149 ----------------- cocoa/base/main.m | 14 +- cocoa/base/ui/directory_panel.py | 2 +- cocoa/base/ui/main_menu.py | 75 + cocoa/base/ui/result_window.py | 2 +- cocoa/me/AppDelegate.h | 2 +- cocoa/pe/AppDelegate.h | 2 +- cocoa/se/AppDelegate.h | 2 +- cocoa/se/InfoTemplate.plist | 2 - cocoa/se/dupeguru.xcodeproj/project.pbxproj | 56 +- 18 files changed, 217 insertions(+), 2430 deletions(-) rename cocoa/base/{AppDelegate.h => AppDelegateBase.h} (74%) rename cocoa/base/{AppDelegate.m => AppDelegateBase.m} (89%) delete mode 100644 cocoa/base/en.lproj/MainMenu.strings delete mode 100644 cocoa/base/en.lproj/MainMenu.xib create mode 100644 cocoa/base/ui/main_menu.py diff --git a/build.py b/build.py index 2a1fb3ad..291f6390 100644 --- a/build.py +++ b/build.py @@ -18,8 +18,7 @@ from setuptools import setup, Extension from hscommon import sphinxgen from hscommon.build import (add_to_pythonpath, print_and_do, copy_packages, filereplace, - get_module_version, build_all_cocoa_locs, move_all, copy_sysconfig_files_for_embed, copy_all, - move) + get_module_version, move_all, copy_sysconfig_files_for_embed, copy_all, move) from hscommon import loc def parse_args(): @@ -60,6 +59,7 @@ def build_xibless(edition): xibless.generate('cocoa/base/ui/directory_panel.py', 'cocoa/autogen/DirectoryPanel_UI', localizationTable='Localizable') xibless.generate('cocoa/base/ui/prioritize_dialog.py', 'cocoa/autogen/PrioritizeDialog_UI', localizationTable='Localizable') xibless.generate('cocoa/base/ui/result_window.py', 'cocoa/autogen/ResultWindow_UI', localizationTable='Localizable') + xibless.generate('cocoa/base/ui/main_menu.py', 'cocoa/autogen/MainMenu_UI', localizationTable='Localizable') if edition == 'pe': xibless.generate('cocoa/pe/ui/details_panel.py', 'cocoa/autogen/DetailsPanel_UI', localizationTable='Localizable') else: @@ -152,19 +152,16 @@ def build_localizations(ui, edition): if lang == 'en': continue pofile = op.join('locale', lang, 'LC_MESSAGES', 'ui.po') - for edition_folder in ['base', 'se', 'me', 'pe']: - enlproj = op.join('cocoa', edition_folder, 'en.lproj') - dest_lproj = op.join('cocoa', edition_folder, lang + '.lproj') - loc.po2allxibstrings(pofile, enlproj, dest_lproj) - if edition_folder == 'base': - loc.po2strings(pofile, op.join(enlproj, 'Localizable.strings'), op.join(dest_lproj, 'Localizable.strings')) + enlproj = op.join('cocoa', 'base', 'en.lproj') + dest_lproj = op.join('cocoa', 'base', lang + '.lproj') + if not op.exists(dest_lproj): + os.makedirs(dest_lproj) + loc.po2strings(pofile, op.join(enlproj, 'Localizable.strings'), op.join(dest_lproj, 'Localizable.strings')) pofile = op.join('cocoalib', 'locale', lang, 'LC_MESSAGES', 'cocoalib.po') cocoalib_dest = op.join('cocoalib', lang + '.lproj', 'cocoalib.strings') if not op.exists(op.dirname(cocoalib_dest)): os.makedirs(op.dirname(cocoalib_dest)) loc.po2strings(pofile, op.join('cocoalib', 'en.lproj', 'cocoalib.strings'), cocoalib_dest) - build_all_cocoa_locs(op.join('cocoa', 'base')) - build_all_cocoa_locs(op.join('cocoa', edition)) elif ui == 'qt': loc.compile_all_po(op.join('qtlib', 'locale')) loc.merge_locale_dir(op.join('qtlib', 'locale'), 'locale') diff --git a/cocoa/base/AppDelegate.h b/cocoa/base/AppDelegateBase.h similarity index 74% rename from cocoa/base/AppDelegate.h rename to cocoa/base/AppDelegateBase.h index bb8d8b15..a37ef458 100644 --- a/cocoa/base/AppDelegate.h +++ b/cocoa/base/AppDelegateBase.h @@ -7,6 +7,7 @@ http://www.hardcoded.net/licenses/bsd_license */ #import +#import #import "PyDupeGuru.h" #import "ResultWindow.h" #import "DetailsPanel.h" @@ -17,9 +18,10 @@ http://www.hardcoded.net/licenses/bsd_license @interface AppDelegateBase : NSObject { - IBOutlet NSMenu *recentResultsMenu; - IBOutlet NSMenu *actionsMenu; - IBOutlet NSMenu *columnsMenu; + NSMenu *recentResultsMenu; + NSMenu *actionsMenu; + NSMenu *columnsMenu; + SUUpdater *updater; PyDupeGuru *model; ResultWindowBase *_resultWindow; @@ -31,6 +33,11 @@ http://www.hardcoded.net/licenses/bsd_license HSRecentFiles *_recentResults; } +@property (readwrite, retain) NSMenu *recentResultsMenu; +@property (readwrite, retain) NSMenu *actionsMenu; +@property (readwrite, retain) NSMenu *columnsMenu; +@property (readwrite, retain) SUUpdater *updater; + /* Virtual */ - (PyDupeGuru *)model; - (ResultWindowBase *)createResultWindow; @@ -39,11 +46,11 @@ http://www.hardcoded.net/licenses/bsd_license - (NSString *)homepageURL; /* Public */ +- (void)finalizeInit; - (ResultWindowBase *)resultWindow; - (DirectoryPanel *)directoryPanel; - (DetailsPanel *)detailsPanel; - (HSRecentFiles *)recentResults; -- (NSMenu *)columnsMenu; /* Delegate */ - (void)applicationDidFinishLaunching:(NSNotification *)aNotification; @@ -53,15 +60,15 @@ http://www.hardcoded.net/licenses/bsd_license - (void)recentFileClicked:(NSString *)path; /* Actions */ -- (IBAction)loadResults:(id)sender; -- (IBAction)openWebsite:(id)sender; -- (IBAction)openHelp:(id)sender; -- (IBAction)showAboutBox:(id)sender; -- (IBAction)showDirectoryWindow:(id)sender; -- (IBAction)showPreferencesPanel:(id)sender; -- (IBAction)showResultWindow:(id)sender; -- (IBAction)showIgnoreList:(id)sender; -- (IBAction)startScanning:(id)sender; +- (void)loadResults; +- (void)openWebsite; +- (void)openHelp; +- (void)showAboutBox; +- (void)showDirectoryWindow; +- (void)showPreferencesPanel; +- (void)showResultWindow; +- (void)showIgnoreList; +- (void)startScanning; /* model --> view */ - (void)showMessage:(NSString *)msg; diff --git a/cocoa/base/AppDelegate.m b/cocoa/base/AppDelegateBase.m similarity index 89% rename from cocoa/base/AppDelegate.m rename to cocoa/base/AppDelegateBase.m index fa470998..9fcac96a 100644 --- a/cocoa/base/AppDelegate.m +++ b/cocoa/base/AppDelegateBase.m @@ -6,7 +6,7 @@ which should be included with this package. The terms are also available at http://www.hardcoded.net/licenses/bsd_license */ -#import "AppDelegate.h" +#import "AppDelegateBase.h" #import "ProgressController.h" #import "HSFairwareReminder.h" #import "HSPyUtil.h" @@ -14,19 +14,33 @@ http://www.hardcoded.net/licenses/bsd_license #import "Dialogs.h" #import "ValueTransformers.h" #import "PreferencesPanel_UI.h" -#import @implementation AppDelegateBase + +@synthesize recentResultsMenu; +@synthesize actionsMenu; +@synthesize columnsMenu; +@synthesize updater; + + (void)initialize { HSVTAdd *vt = [[[HSVTAdd alloc] initWithValue:4] autorelease]; [NSValueTransformer setValueTransformer:vt forName:@"vtRowHeightOffset"]; } -- (void)awakeFromNib +- (id)init { + self = [super init]; model = [[PyDupeGuru alloc] init]; [model bindCallback:createCallback(@"DupeGuruView", self)]; + [self setUpdater:[SUUpdater sharedUpdater]]; + return self; +} + +- (void)finalizeInit +{ + // We can only finalize initialization once the main menu has been created, which cannot happen + // before AppDelegate is created. NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; /* Because the pref pane is lazily loaded, we have to manually do the update check if the preference is set. @@ -93,10 +107,8 @@ http://www.hardcoded.net/licenses/bsd_license return _recentResults; } -- (NSMenu *)columnsMenu { return columnsMenu; } - /* Actions */ -- (IBAction)loadResults:(id)sender +- (void)loadResults { NSOpenPanel *op = [NSOpenPanel openPanel]; [op setCanChooseFiles:YES]; @@ -112,12 +124,12 @@ http://www.hardcoded.net/licenses/bsd_license } } -- (IBAction)openWebsite:(id)sender +- (void)openWebsite { [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:[self homepageURL]]]; } -- (IBAction)openHelp:(id)sender +- (void)openHelp { NSBundle *b = [NSBundle mainBundle]; NSString *p = [b pathForResource:@"index" ofType:@"html" inDirectory:@"help"]; @@ -125,40 +137,40 @@ http://www.hardcoded.net/licenses/bsd_license [[NSWorkspace sharedWorkspace] openURL:u]; } -- (IBAction)showAboutBox:(id)sender +- (void)showAboutBox { if (_aboutBox == nil) { _aboutBox = [[HSAboutBox alloc] initWithApp:model]; } - [[_aboutBox window] makeKeyAndOrderFront:sender]; + [[_aboutBox window] makeKeyAndOrderFront:nil]; } -- (IBAction)showDirectoryWindow:(id)sender +- (void)showDirectoryWindow { [[[self directoryPanel] window] makeKeyAndOrderFront:nil]; } -- (IBAction)showPreferencesPanel:(id)sender +- (void)showPreferencesPanel { if (_preferencesPanel == nil) { _preferencesPanel = [[NSWindowController alloc] initWithWindow:createPreferencesPanel_UI(nil)]; } - [_preferencesPanel showWindow:sender]; + [_preferencesPanel showWindow:nil]; } -- (IBAction)showResultWindow:(id)sender +- (void)showResultWindow { [[[self resultWindow] window] makeKeyAndOrderFront:nil]; } -- (IBAction)showIgnoreList:(id)sender +- (void)showIgnoreList { [model showIgnoreList]; } -- (IBAction)startScanning:(id)sender +- (void)startScanning { - [[self resultWindow] startDuplicateScan:sender]; + [[self resultWindow] startDuplicateScan:nil]; } diff --git a/cocoa/base/DirectoryPanel.m b/cocoa/base/DirectoryPanel.m index 5ef3613a..d74a3494 100644 --- a/cocoa/base/DirectoryPanel.m +++ b/cocoa/base/DirectoryPanel.m @@ -116,7 +116,7 @@ http://www.hardcoded.net/licenses/bsd_license while ([m numberOfItems] > 0) { [m removeItemAtIndex:0]; } - NSMenuItem *mi = [m addItemWithTitle:TR(@"Load from file...") action:@selector(loadResults:) keyEquivalent:@""]; + NSMenuItem *mi = [m addItemWithTitle:TR(@"Load from file...") action:@selector(loadResults) keyEquivalent:@""]; [mi setTarget:_app]; [m addItem:[NSMenuItem separatorItem]]; [[_app recentResults] fillMenu:m]; @@ -124,7 +124,7 @@ http://www.hardcoded.net/licenses/bsd_license [[loadRecentButtonPopUp cell] performClickWithFrame:[sender frame] inView:[sender superview]]; } else { - [_app loadResults:nil]; + [_app loadResults]; } } diff --git a/cocoa/base/ResultWindow.h b/cocoa/base/ResultWindow.h index 59772542..3d62d260 100644 --- a/cocoa/base/ResultWindow.h +++ b/cocoa/base/ResultWindow.h @@ -28,7 +28,6 @@ http://www.hardcoded.net/licenses/bsd_license AppDelegateBase *app; PyDupeGuru *model; - NSMenu *columnsMenu; ResultTable *table; StatsLabel *statsLabel; ProblemDialog *problemDialog; diff --git a/cocoa/base/ResultWindow.m b/cocoa/base/ResultWindow.m index 44c6dd13..5e0d3ea0 100644 --- a/cocoa/base/ResultWindow.m +++ b/cocoa/base/ResultWindow.m @@ -30,7 +30,6 @@ http://www.hardcoded.net/licenses/bsd_license model = [app model]; [self setWindow:createResultWindow_UI(self)]; [[self window] setTitle:fmt(@"%@ Results", [model appName])]; - columnsMenu = [app columnsMenu]; /* Put a cute iTunes-like bottom bar */ [[self window] setContentBorderThickness:28 forEdge:NSMinYEdge]; table = [[ResultTable alloc] initWithPyRef:[model resultTable] view:matches]; @@ -73,13 +72,13 @@ http://www.hardcoded.net/licenses/bsd_license NSArray *pair = [menuItems objectAtIndex:i]; NSString *display = [pair objectAtIndex:0]; BOOL marked = n2b([pair objectAtIndex:1]); - NSMenuItem *mi = [columnsMenu addItemWithTitle:display action:@selector(toggleColumn:) keyEquivalent:@""]; + NSMenuItem *mi = [[app columnsMenu] addItemWithTitle:display action:@selector(toggleColumn:) keyEquivalent:@""]; [mi setTarget:self]; [mi setState:marked ? NSOnState : NSOffState]; [mi setTag:i]; } - [columnsMenu addItem:[NSMenuItem separatorItem]]; - NSMenuItem *mi = [columnsMenu addItemWithTitle:TR(@"Reset to Default") + [[app columnsMenu] addItem:[NSMenuItem separatorItem]]; + NSMenuItem *mi = [[app columnsMenu] addItemWithTitle:TR(@"Reset to Default") action:@selector(resetColumnsToDefault:) keyEquivalent:@""]; [mi setTarget:self]; } diff --git a/cocoa/base/en.lproj/Localizable.strings b/cocoa/base/en.lproj/Localizable.strings index 9e820865..27c6d14e 100644 --- a/cocoa/base/en.lproj/Localizable.strings +++ b/cocoa/base/en.lproj/Localizable.strings @@ -124,3 +124,56 @@ "Folders" = "Folders"; "Font size:" = "Font size:"; +/* Main Menu */ +"Bring All to Front" = "Bring All to Front"; +"Window" = "Window"; +"Minimize" = "Minimize"; +"About dupeGuru" = "About dupeGuru"; +"Help" = "Help"; +"dupeGuru Help" = "dupeGuru Help"; +"Hide dupeGuru" = "Hide dupeGuru"; +"Quit dupeGuru" = "Quit dupeGuru"; +"Hide Others" = "Hide Others"; +"Show All" = "Show All"; +"Zoom" = "Zoom"; +"Details Panel" = "Details Panel"; +"Preferences..." = "Preferences..."; +"Folder Selection Window" = "Folder Selection Window"; +"Actions" = "Actions"; +"Send Marked to Trash..." = "Send Marked to Trash..."; +"Move Marked to..." = "Move Marked to..."; +"Copy Marked to..." = "Copy Marked to..."; +"Make Selected Reference" = "Make Selected Reference"; +"Remove Marked from Results" = "Remove Marked from Results"; +"Remove Selected from Results" = "Remove Selected from Results"; +"Columns" = "Columns"; +"Open Selected with Default Application" = "Open Selected with Default Application"; +"Reveal Selected in Finder" = "Reveal Selected in Finder"; +"Add Selected to Ignore List" = "Add Selected to Ignore List"; +"Close Window" = "Close Window"; +"Start Duplicate Scan" = "Start Duplicate Scan"; +"Rename Selected" = "Rename Selected"; +"Export Results to XHTML" = "Export Results to XHTML"; +"Check for update..." = "Check for update..."; +"Mode" = "Mode"; +"Show Dupes Only" = "Show Dupes Only"; +"Show Delta Values" = "Show Delta Values"; +"Edit" = "Edit"; +"Cut" = "Cut"; +"Copy" = "Copy"; +"Paste" = "Paste"; +"Mark All" = "Mark All"; +"Mark None" = "Mark None"; +"Invert Marking" = "Invert Marking"; +"Mark Selected" = "Mark Selected"; +"dupeGuru Website" = "dupeGuru Website"; +"Invoke Custom Command" = "Invoke Custom Command"; +"File" = "File"; +"Load Results..." = "Load Results..."; +"Save Results..." = "Save Results..."; +"Load Recent Results" = "Load Recent Results"; +"Results Window" = "Results Window"; +"Re-Prioritize Results" = "Re-Prioritize Results"; +"Quick Look" = "Quick Look"; +"Ignore List" = "Ignore List"; +"Filter Results..." = "Filter Results..."; diff --git a/cocoa/base/en.lproj/MainMenu.strings b/cocoa/base/en.lproj/MainMenu.strings deleted file mode 100644 index c0cbabc6..00000000 --- a/cocoa/base/en.lproj/MainMenu.strings +++ /dev/null @@ -1,180 +0,0 @@ - -/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "5"; */ -"5.title" = "Bring All to Front"; - -/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */ -"19.title" = "Window"; - -/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */ -"23.title" = "Minimize"; - -/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */ -"24.title" = "Window"; - -/* Class = "NSMenuItem"; title = "About dupeGuru"; ObjectID = "58"; */ -"58.title" = "About dupeGuru"; - -/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */ -"103.title" = "Help"; - -/* Class = "NSMenu"; title = "Help"; ObjectID = "106"; */ -"106.title" = "Help"; - -/* Class = "NSMenuItem"; title = "dupeGuru Help"; ObjectID = "111"; */ -"111.title" = "dupeGuru Help"; - -/* Class = "NSMenuItem"; title = "Hide dupeGuru"; ObjectID = "134"; */ -"134.title" = "Hide dupeGuru"; - -/* Class = "NSMenuItem"; title = "Quit dupeGuru"; ObjectID = "136"; */ -"136.title" = "Quit dupeGuru"; - -/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "145"; */ -"145.title" = "Hide Others"; - -/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */ -"150.title" = "Show All"; - -/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "197"; */ -"197.title" = "Zoom"; - -/* Class = "NSMenuItem"; title = "Details Panel"; ObjectID = "398"; */ -"398.title" = "Details Panel"; - -/* Class = "NSMenuItem"; title = "Preferences..."; ObjectID = "541"; */ -"541.title" = "Preferences..."; - -/* Class = "NSMenuItem"; title = "Folder Selection Window"; ObjectID = "579"; */ -"579.title" = "Folder Selection Window"; - -/* Class = "NSMenuItem"; title = "Actions"; ObjectID = "597"; */ -"597.title" = "Actions"; - -/* Class = "NSMenu"; title = "Actions"; ObjectID = "598"; */ -"598.title" = "Actions"; - -/* Class = "NSMenuItem"; title = "Send Marked to Trash..."; ObjectID = "599"; */ -"599.title" = "Send Marked to Trash..."; - -/* Class = "NSMenuItem"; title = "Move Marked to..."; ObjectID = "600"; */ -"600.title" = "Move Marked to..."; - -/* Class = "NSMenuItem"; title = "Copy Marked to..."; ObjectID = "601"; */ -"601.title" = "Copy Marked to..."; - -/* Class = "NSMenuItem"; title = "Make Selected Reference"; ObjectID = "602"; */ -"602.title" = "Make Selected Reference"; - -/* Class = "NSMenuItem"; title = "Remove Marked from Results"; ObjectID = "603"; */ -"603.title" = "Remove Marked from Results"; - -/* Class = "NSMenuItem"; title = "Remove Selected from Results"; ObjectID = "605"; */ -"605.title" = "Remove Selected from Results"; - -/* Class = "NSMenuItem"; title = "Columns"; ObjectID = "618"; */ -"618.title" = "Columns"; - -/* Class = "NSMenu"; title = "Columns"; ObjectID = "619"; */ -"619.title" = "Columns"; - -/* Class = "NSMenuItem"; title = "Open Selected with Default Application"; ObjectID = "708"; */ -"708.title" = "Open Selected with Default Application"; - -/* Class = "NSMenuItem"; title = "Reveal Selected in Finder"; ObjectID = "710"; */ -"710.title" = "Reveal Selected in Finder"; - -/* Class = "NSMenuItem"; title = "Add Selected to Ignore List"; ObjectID = "922"; */ -"922.title" = "Add Selected to Ignore List"; - -/* Class = "NSMenuItem"; title = "Close Window"; ObjectID = "924"; */ -"924.title" = "Close Window"; - -/* Class = "NSMenuItem"; title = "Start Duplicate Scan"; ObjectID = "926"; */ -"926.title" = "Start Duplicate Scan"; - -/* Class = "NSMenuItem"; title = "Rename Selected"; ObjectID = "933"; */ -"933.title" = "Rename Selected"; - -/* Class = "NSMenuItem"; title = "Export Results to XHTML"; ObjectID = "947"; */ -"947.title" = "Export Results to XHTML"; - -/* Class = "NSMenuItem"; title = "Check for update..."; ObjectID = "950"; */ -"950.title" = "Check for update..."; - -/* Class = "NSMenuItem"; title = "Mode"; ObjectID = "959"; */ -"959.title" = "Mode"; - -/* Class = "NSMenu"; title = "Mode"; ObjectID = "960"; */ -"960.title" = "Mode"; - -/* Class = "NSMenuItem"; title = "Show Dupes Only"; ObjectID = "961"; */ -"961.title" = "Show Dupes Only"; - -/* Class = "NSMenuItem"; title = "Show Delta Values"; ObjectID = "962"; */ -"962.title" = "Show Delta Values"; - -/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "965"; */ -"965.title" = "Edit"; - -/* Class = "NSMenu"; title = "Edit"; ObjectID = "966"; */ -"966.title" = "Edit"; - -/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "985"; */ -"985.title" = "Cut"; - -/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "986"; */ -"986.title" = "Copy"; - -/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "991"; */ -"991.title" = "Paste"; - -/* Class = "NSMenuItem"; title = "Mark All"; ObjectID = "1011"; */ -"1011.title" = "Mark All"; - -/* Class = "NSMenuItem"; title = "Mark None"; ObjectID = "1012"; */ -"1012.title" = "Mark None"; - -/* Class = "NSMenuItem"; title = "Invert Marking"; ObjectID = "1013"; */ -"1013.title" = "Invert Marking"; - -/* Class = "NSMenuItem"; title = "Mark Selected"; ObjectID = "1014"; */ -"1014.title" = "Mark Selected"; - -/* Class = "NSMenuItem"; title = "dupeGuru Website"; ObjectID = "1023"; */ -"1023.title" = "dupeGuru Website"; - -/* Class = "NSMenuItem"; title = "Invoke Custom Command"; ObjectID = "1177"; */ -"1177.title" = "Invoke Custom Command"; - -/* Class = "NSMenuItem"; title = "File"; ObjectID = "1203"; */ -"1203.title" = "File"; - -/* Class = "NSMenu"; title = "File"; ObjectID = "1204"; */ -"1204.title" = "File"; - -/* Class = "NSMenuItem"; title = "Load Results..."; ObjectID = "1205"; */ -"1205.title" = "Load Results..."; - -/* Class = "NSMenuItem"; title = "Save Results..."; ObjectID = "1206"; */ -"1206.title" = "Save Results..."; - -/* Class = "NSMenuItem"; title = "Load Recent Results"; ObjectID = "1239"; */ -"1239.title" = "Load Recent Results"; - -/* Class = "NSMenu"; title = "Load Recent Results"; ObjectID = "1240"; */ -"1240.title" = "Load Recent Results"; - -/* Class = "NSMenuItem"; title = "Results Window"; ObjectID = "1272"; */ -"1272.title" = "Results Window"; - -/* Class = "NSMenuItem"; title = "Re-Prioritize Results"; ObjectID = "1276"; */ -"1276.title" = "Re-Prioritize Results"; - -/* Class = "NSMenuItem"; title = "Quicklook"; ObjectID = "1280"; */ -"1280.title" = "Quick Look"; - -/* Class = "NSMenuItem"; title = "Ignore List"; ObjectID = "1283"; */ -"1283.title" = "Ignore List"; - -/* Class = "NSMenuItem"; title = "Filter Results..."; ObjectID = "1288"; */ -"1288.title" = "Filter Results..."; diff --git a/cocoa/base/en.lproj/MainMenu.xib b/cocoa/base/en.lproj/MainMenu.xib deleted file mode 100644 index 05152b3e..00000000 --- a/cocoa/base/en.lproj/MainMenu.xib +++ /dev/null @@ -1,2149 +0,0 @@ - - - - 1060 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 2182 - - - NSMenu - NSMenuItem - NSCustomObject - - - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - - NSApplication - - - FirstResponder - - - NSApplication - - - MainMenu - - - - dupeGuru - - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - submenuAction: - - dupeGuru - - - - About dupeGuru - - 2147483647 - - - - - - Check for update... - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Preferences... - , - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Hide dupeGuru - h - 1048576 - 2147483647 - - - - - - Hide Others - h - 1572864 - 2147483647 - - - - - - Show All - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Quit dupeGuru - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - File - - 2147483647 - - - submenuAction: - - File - - - - Load Results... - o - 1048576 - 2147483647 - - - - - - Load Recent Results - - 2147483647 - - - submenuAction: - - Load Recent Results - - - - - - Save Results... - s - 1048576 - 2147483647 - - - - - - Export Results to XHTML - E - 1048576 - 2147483647 - - - - - - - - - Edit - - 1048576 - 2147483647 - - - submenuAction: - - - Edit - - - - - Mark All - a - 1048576 - 2147483647 - - - - - - Mark None - A - 1048576 - 2147483647 - - - - - - Invert Marking - a - 1572864 - 2147483647 - - - - - - Mark Selected - a - 1310720 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Cut - x - 1048576 - 2147483647 - - - - - - Copy - c - 1048576 - 2147483647 - - - - - - Paste - v - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Filter Results... - f - 1572864 - 2147483647 - - - - - - - - - Actions - - 1048576 - 2147483647 - - - submenuAction: - - Actions - - - - Start Duplicate Scan - d - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Send Marked to Trash... - t - 1048576 - 2147483647 - - - - - - Move Marked to... - m - 1048576 - 2147483647 - - - - - - Copy Marked to... - m - 1572864 - 2147483647 - - - - - - Remove Marked from Results - r - 1048576 - 2147483647 - - - - - - Re-Prioritize Results - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Remove Selected from Results - CA - 1048576 - 2147483647 - - - - - - Add Selected to Ignore List - g - 1048576 - 2147483647 - - - - - - Make Selected Reference - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Open Selected with Default Application - DQ - 1048576 - 2147483647 - - - - - - Reveal Selected in Finder - DQ - 1572864 - 2147483647 - - - - - - Invoke Custom Command - C - 262144 - 2147483647 - - - - - - Rename Selected - Aw - 2147483647 - - - - - - - - - Columns - - 1048576 - 2147483647 - - - submenuAction: - - Columns - - - - - - Mode - - 1048576 - 2147483647 - - - submenuAction: - - Mode - - - - Show Dupes Only - 1 - 1048576 - 2147483647 - - - - - - Show Delta Values - 2 - 1048576 - 2147483647 - - - - - - - - - Window - - 1048576 - 2147483647 - - - submenuAction: - - Window - - - - Results Window - - 2147483647 - - - - - - Folder Selection Window - - 2147483647 - - - - - - Ignore List - - 2147483647 - - - - - - Details Panel - i - 1048576 - 2147483647 - - - - - - Quick Look - l - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Minimize - - 2147483647 - - - - - - Zoom - - 1048576 - 2147483647 - - - - - - Close Window - w - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Bring All to Front - - 1048576 - 2147483647 - - - - - _NSWindowsMenu - - - - - Help - - 1048576 - 2147483647 - - - submenuAction: - - Help - - - - dupeGuru Help - ? - 1048576 - 2147483647 - - - - - - dupeGuru Website - - 1048576 - 2147483647 - - - - - - - - _NSMainMenu - - - AppDelegate - - - SUUpdater - - - - - - - terminate: - - - - 139 - - - - hideOtherApplications: - - - - 146 - - - - hide: - - - - 152 - - - - unhideAllApplications: - - - - 153 - - - - delegate - - - - 207 - - - - performMiniaturize: - - - - 37 - - - - arrangeInFront: - - - - 39 - - - - performZoom: - - - - 198 - - - - performClose: - - - - 925 - - - - cut: - - - - 996 - - - - copy: - - - - 998 - - - - paste: - - - - 1005 - - - - copyMarked: - - - - 1244 - - - - exportToXHTML: - - - - 1246 - - - - ignoreSelected: - - - - 1248 - - - - invokeCustomCommand: - - - - 1249 - - - - loadResults: - - - - 1250 - - - - markAll: - - - - 1251 - - - - markNone: - - - - 1252 - - - - markInvert: - - - - 1253 - - - - markSelected: - - - - 1254 - - - - moveMarked: - - - - 1255 - - - - openSelected: - - - - 1256 - - - - removeSelected: - - - - 1258 - - - - switchSelected: - - - - 1260 - - - - revealSelected: - - - - 1261 - - - - renameSelected: - - - - 1262 - - - - saveResults: - - - - 1263 - - - - toggleDetailsPanel: - - - - 1264 - - - - togglePowerMarker: - - - - 1265 - - - - toggleDelta: - - - - 1266 - - - - reprioritizeResults: - - - - 1278 - - - - removeMarked: - - - - 1279 - - - - toggleQuicklookPanel: - - - - 1282 - - - - trashMarked: - - - - 1286 - - - - focusOnFilterField: - - - - 1289 - - - - delegate - - - - 208 - - - - openWebsite: - - - - 1024 - - - - showAboutBox: - - - - 1232 - - - - openHelp: - - - - 1233 - - - - recentResultsMenu - - - - 1242 - - - - columnsMenu - - - - 1269 - - - - showPreferencesPanel: - - - - 1270 - - - - startScanning: - - - - 1271 - - - - showDirectoryWindow: - - - - 1273 - - - - showResultWindow: - - - - 1274 - - - - actionsMenu - - - - 1275 - - - - showIgnoreList: - - - - 1285 - - - - checkForUpdates: - - - - 951 - - - - delegate - - - - 1175 - - - - - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 29 - - - - - - - - - - - - - MainMenu - - - 19 - - - - - - - - 24 - - - - - - - - - - - - - - - - - - 5 - - - - - 23 - - - - - 92 - - - - - 197 - - - - - 398 - - - - - 399 - - - - - 579 - - - - - 924 - - - - - 56 - - - - - - - - 57 - - - - - - - - - - - - - - - - - 58 - - - - - 134 - - - - - 136 - - - - - 144 - - - - - 145 - - - - - 149 - - - - - 150 - - - - - 541 - - - - - 542 - - - - - 950 - - - - - 103 - - - - - - - - 106 - - - - - - - - - 111 - - - - - 1023 - - - - - 597 - - - - - - - - 598 - - - - - - - - - - - - - - - - - - - - - - - 599 - - - - - 600 - - - - - 601 - - - - - 602 - - - - - 603 - - - - - 604 - - - - - 707 - - - - - 708 - - - - - 710 - - - - - 922 - - - - - 926 - - - - - 928 - - - - - 933 - - - - - 618 - - - - - - - - 619 - - - - - - 959 - - - - - - - - 960 - - - - - - - - - 961 - - - - - 962 - - - - - 965 - - - - - - - - 966 - - - - - - - - - - - - - - - - - 985 - - - - - 986 - - - - - 991 - - - - - 1011 - - - - - 1012 - - - - - 1013 - - - - - 1014 - - - - - 1018 - - - - - 206 - - - AppDelegate - - - 949 - - - SUUpdater - - - 605 - - - - - 1177 - - - - - 1203 - - - - - - - - 1204 - - - - - - - - - - - 1205 - - - - - 1206 - - - - - 947 - - - - - 1239 - - - - - - - - 1240 - - - - - - 1272 - - - - - 1276 - - - - - 1280 - - - - - 1283 - - - - - 1287 - - - - - 1288 - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - - - 1289 - - - - - AppDelegate - AppDelegateBase - - IBProjectSource - ./Classes/AppDelegate.h - - - - AppDelegateBase - NSObject - - id - id - id - id - id - id - id - id - id - - - - loadResults: - id - - - openHelp: - id - - - openWebsite: - id - - - showAboutBox: - id - - - showDirectoryWindow: - id - - - showIgnoreList: - id - - - showPreferencesPanel: - id - - - showResultWindow: - id - - - startScanning: - id - - - - NSMenu - NSMenu - NSMenu - - - - actionsMenu - NSMenu - - - columnsMenu - NSMenu - - - recentResultsMenu - NSMenu - - - - IBProjectSource - ./Classes/AppDelegateBase.h - - - - HSOutlineView - NSOutlineView - - copy: - id - - - copy: - - copy: - id - - - - IBProjectSource - ./Classes/HSOutlineView.h - - - - HSTableView - NSTableView - - IBProjectSource - ./Classes/HSTableView.h - - - - IgnoreListDialog - NSWindowController - - id - id - - - - clear: - id - - - removeSelected: - id - - - - ignoreListTableView - NSTableView - - - ignoreListTableView - - ignoreListTableView - NSTableView - - - - IBProjectSource - ./Classes/IgnoreListDialog.h - - - - PrioritizeDialog - NSWindowController - - id - id - id - id - - - - addSelected: - id - - - cancel: - id - - - ok: - id - - - removeSelected: - id - - - - NSPopUpButton - NSTableView - NSTableView - - - - categoryPopUpView - NSPopUpButton - - - criteriaTableView - NSTableView - - - prioritizationTableView - NSTableView - - - - IBProjectSource - ./Classes/PrioritizeDialog.h - - - - ProblemDialog - NSWindowController - - revealSelected: - id - - - revealSelected: - - revealSelected: - id - - - - problemTableView - NSTableView - - - problemTableView - - problemTableView - NSTableView - - - - IBProjectSource - ./Classes/ProblemDialog.h - - - - ResultWindowBase - NSWindowController - - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - - - - changeOptions: - id - - - copyMarked: - id - - - exportToXHTML: - id - - - filter: - id - - - focusOnFilterField: - id - - - ignoreSelected: - id - - - invokeCustomCommand: - id - - - markAll: - id - - - markInvert: - id - - - markNone: - id - - - markSelected: - id - - - moveMarked: - id - - - openClicked: - id - - - openSelected: - id - - - removeMarked: - id - - - removeSelected: - id - - - renameSelected: - id - - - reprioritizeResults: - id - - - resetColumnsToDefault: - id - - - revealSelected: - id - - - saveResults: - id - - - startDuplicateScan: - id - - - switchSelected: - id - - - toggleColumn: - id - - - toggleDelta: - id - - - toggleDetailsPanel: - id - - - togglePowerMarker: - id - - - toggleQuicklookPanel: - id - - - trashMarked: - id - - - - NSSearchField - HSTableView - NSSegmentedControl - NSToolbarItem - NSTextField - - - - filterField - NSSearchField - - - matches - HSTableView - - - optionsSwitch - NSSegmentedControl - - - optionsToolbarItem - NSToolbarItem - - - stats - NSTextField - - - - IBProjectSource - ./Classes/ResultWindowBase.h - - - - SUUpdater - NSObject - - checkForUpdates: - id - - - checkForUpdates: - - checkForUpdates: - id - - - - delegate - id - - - delegate - - delegate - id - - - - IBProjectSource - ./Classes/SUUpdater.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - YES - 3 - - {11, 11} - {10, 3} - - - diff --git a/cocoa/base/main.m b/cocoa/base/main.m index b6c47d9b..ccdf0d77 100644 --- a/cocoa/base/main.m +++ b/cocoa/base/main.m @@ -10,6 +10,8 @@ http://www.hardcoded.net/licenses/bsd_license #import #import #import +#import "AppDelegate.h" +#import "MainMenu_UI.h" int main(int argc, char *argv[]) { @@ -34,8 +36,14 @@ int main(int argc, char *argv[]) PyThreadState_Swap(NULL); PyEval_ReleaseLock(); } - int result = NSApplicationMain(argc, (const char **) argv); - Py_Finalize(); + + [NSApplication sharedApplication]; + AppDelegate *appDelegate = [[AppDelegate alloc] init]; + [NSApp setDelegate:appDelegate]; + [NSApp setMainMenu:createMainMenu_UI(appDelegate)]; + [appDelegate finalizeInit]; [pool release]; - return result; + [NSApp run]; + Py_Finalize(); + return 0; } diff --git a/cocoa/base/ui/directory_panel.py b/cocoa/base/ui/directory_panel.py index 7652c6d5..78599c2c 100644 --- a/cocoa/base/ui/directory_panel.py +++ b/cocoa/base/ui/directory_panel.py @@ -30,7 +30,7 @@ scanButton.keyEquivalent = '\\r' addButton.action = Action(owner, 'popupAddDirectoryMenu:') removeButton.action = Action(owner, 'removeSelectedDirectory') loadResultsButton.action = Action(owner, 'popupLoadRecentMenu:') -scanButton.action = Action(None, 'startScanning:') +scanButton.action = Action(None, 'startScanning') directoryOutline.font = Font(FontFamily.System, FontSize.SmallSystem) col = directoryOutline.addColumn('name', "Name", 100) diff --git a/cocoa/base/ui/main_menu.py b/cocoa/base/ui/main_menu.py new file mode 100644 index 00000000..8cb658e2 --- /dev/null +++ b/cocoa/base/ui/main_menu.py @@ -0,0 +1,75 @@ +ownerclass = 'AppDelegateBase' +ownerimport = 'AppDelegateBase.h' + +result = Menu("") +appMenu = result.addMenu("dupeGuru") +fileMenu = result.addMenu("File") +editMenu = result.addMenu("Edit") +actionMenu = result.addMenu("Actions") +owner.actionsMenu = actionMenu +owner.columnsMenu = result.addMenu("Columns") +modeMenu = result.addMenu("Mode") +windowMenu = result.addMenu("Window") +helpMenu = result.addMenu("Help") + +appMenu.addItem("About dupeGuru", Action(owner, 'showAboutBox')) +appMenu.addItem("Check for update...", Action(owner.updater, 'checkForUpdates:')) +appMenu.addSeparator() +NSApp.servicesMenu = appMenu.addMenu("Services") +appMenu.addSeparator() +appMenu.addItem("Hide dupeGuru", Action(NSApp, 'hide:'), 'cmd+h') +appMenu.addItem("Hide Others", Action(NSApp, 'hideOtherApplications:'), 'cmd+alt+h') +appMenu.addItem("Show All", Action(NSApp, 'unhideAllApplications:')) +appMenu.addSeparator() +appMenu.addItem("Quit dupeGuru", Action(NSApp, 'terminate:'), 'cmd+q') + +fileMenu.addItem("Load Results...", Action(None, 'loadResults'), 'cmd+o') +owner.recentResultsMenu = fileMenu.addMenu("Load Recent Results") +fileMenu.addItem("Save Results...", Action(None, 'saveResults:'), 'cmd+s') +fileMenu.addItem("Export Results to XHTML", Action(None, 'exportToXHTML:'), 'cmd+shift+e') + +editMenu.addItem("Mark All", Action(None, 'markAll:'), 'cmd+a') +editMenu.addItem("Mark None", Action(None, 'markNone:'), 'cmd+shift+a') +editMenu.addItem("Invert Marking", Action(None, 'markInvert:'), 'cmd+alt+a') +editMenu.addItem("Mark Selected", Action(None, 'markSelected:'), 'ctrl+cmd+a') +editMenu.addSeparator() +editMenu.addItem("Cut", Action(None, 'cut:'), 'cmd+x') +editMenu.addItem("Copy", Action(None, 'copy:'), 'cmd+c') +editMenu.addItem("Paste", Action(None, 'paste:'), 'cmd+v') +editMenu.addSeparator() +editMenu.addItem("Filter Results...", Action(None, 'focusOnFilterField:'), 'cmd+alt+f') + +actionMenu.addItem("Start Duplicate Scan", Action(owner, 'startScanning'), 'cmd+d') +actionMenu.addSeparator() +actionMenu.addItem("Send Marked to Trash...", Action(None, 'trashMarked:'), 'cmd+t') +actionMenu.addItem("Move Marked to...", Action(None, 'moveMarked:'), 'cmd+m') +actionMenu.addItem("Copy Marked to...", Action(None, 'copyMarked:'), 'cmd+alt+m') +actionMenu.addItem("Remove Marked from Results", Action(None, 'removeMarked:'), 'cmd+r') +actionMenu.addItem("Re-Prioritize Results", Action(None, 'reprioritizeResults:')) +actionMenu.addSeparator() +actionMenu.addItem("Remove Selected from Results", Action(None, 'removeSelected:'), 'cmd+backspace') +actionMenu.addItem("Add Selected to Ignore List", Action(None, 'ignoreSelected:'), 'cmd+g') +actionMenu.addItem("Make Selected Reference", Action(None, 'switchSelected:'), 'cmd+arrowup') +actionMenu.addSeparator() +actionMenu.addItem("Open Selected with Default Application", Action(None, 'openSelected:'), 'cmd+return') +actionMenu.addItem("Reveal Selected in Finder", Action(None, 'revealSelected:'), 'cmd+alt+return') +actionMenu.addItem("Invoke Custom Command", Action(None, 'invokeCustomCommand:'), 'cmd+shift+c') +actionMenu.addItem("Rename Selected", Action(None, 'renameSelected:')) + +modeMenu.addItem("Show Dupes Only", Action(None, 'togglePowerMarker:'), 'cmd+1') +modeMenu.addItem("Show Delta Values", Action(None, 'toggleDelta:'), 'cmd+2') + +windowMenu.addItem("Results Window", Action(owner, 'showResultWindow:')) +windowMenu.addItem("Folder Selection Window", Action(owner, 'showDirectoryWindow')) +windowMenu.addItem("Ignore List", Action(owner, 'showIgnoreList')) +windowMenu.addItem("Details Panel", Action(owner, 'toggleDetailsPanel'), 'cmd+i') +windowMenu.addItem("Quick Look", Action(owner, 'toggleQuicklookPanel'), 'cmd+l') +windowMenu.addSeparator() +windowMenu.addItem("Minimize", Action(None, 'performMinimize:')) +windowMenu.addItem("Zoom", Action(None, 'performZoom:')) +windowMenu.addItem("Close Window", Action(None, 'performClose:'), 'cmd+w') +windowMenu.addSeparator() +windowMenu.addItem("Bring All to Front", Action(None, 'arrangeInFront:')) + +helpMenu.addItem("dupeGuru Help", Action(owner, 'openHelp'), 'cmd+?') +helpMenu.addItem("dupeGuru Website", Action(owner, 'openWebsite')) diff --git a/cocoa/base/ui/result_window.py b/cocoa/base/ui/result_window.py index 0e978823..e64bbf92 100644 --- a/cocoa/base/ui/result_window.py +++ b/cocoa/base/ui/result_window.py @@ -50,7 +50,7 @@ optionsToolItem.view = optionsSegments # Popuplate menus actionPopup.menu.addItem("Send Marked to Trash...", action=Action(owner, 'trashMarked:')) actionPopup.menu.addItem("Move Marked to...", action=Action(owner, 'moveMarked:')) -actionPopup.menu.addItem("Copy Marked to...", action=Action(owner, 'moveMarked:')) +actionPopup.menu.addItem("Copy Marked to...", action=Action(owner, 'copyMarked:')) actionPopup.menu.addItem("Remove Marked from Results", action=Action(owner, 'removeMarked:')) actionPopup.menu.addSeparator() for menu in (actionPopup.menu, contextMenu): diff --git a/cocoa/me/AppDelegate.h b/cocoa/me/AppDelegate.h index db2a2c3a..3171034c 100644 --- a/cocoa/me/AppDelegate.h +++ b/cocoa/me/AppDelegate.h @@ -7,7 +7,7 @@ http://www.hardcoded.net/licenses/bsd_license */ #import -#import "../base/AppDelegate.h" +#import "AppDelegateBase.h" #import "ResultWindow.h" #import "PyDupeGuru.h" diff --git a/cocoa/pe/AppDelegate.h b/cocoa/pe/AppDelegate.h index 5664f743..1da75027 100644 --- a/cocoa/pe/AppDelegate.h +++ b/cocoa/pe/AppDelegate.h @@ -7,7 +7,7 @@ http://www.hardcoded.net/licenses/bsd_license */ #import -#import "../base/AppDelegate.h" +#import "AppDelegateBase.h" @interface AppDelegate : AppDelegateBase {} @end diff --git a/cocoa/se/AppDelegate.h b/cocoa/se/AppDelegate.h index f1414df7..b8b8566e 100644 --- a/cocoa/se/AppDelegate.h +++ b/cocoa/se/AppDelegate.h @@ -7,7 +7,7 @@ http://www.hardcoded.net/licenses/bsd_license */ #import -#import "../base/AppDelegate.h" +#import "AppDelegateBase.h" #import "PyDupeGuru.h" @interface AppDelegate : AppDelegateBase {} diff --git a/cocoa/se/InfoTemplate.plist b/cocoa/se/InfoTemplate.plist index c57bd836..848ffead 100644 --- a/cocoa/se/InfoTemplate.plist +++ b/cocoa/se/InfoTemplate.plist @@ -26,8 +26,6 @@ {version} CFBundleVersion {version} - NSMainNibFile - MainMenu NSPrincipalClass NSApplication NSHumanReadableCopyright diff --git a/cocoa/se/dupeguru.xcodeproj/project.pbxproj b/cocoa/se/dupeguru.xcodeproj/project.pbxproj index bc4c20fe..57609f4c 100644 --- a/cocoa/se/dupeguru.xcodeproj/project.pbxproj +++ b/cocoa/se/dupeguru.xcodeproj/project.pbxproj @@ -18,6 +18,7 @@ CE275C5714BF712B00265960 /* PyDirectoryOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = CE275C5514BF712B00265960 /* PyDirectoryOutline.m */; }; CE275C5A14BF71DF00265960 /* PyColumns.m in Sources */ = {isa = PBXBuildFile; fileRef = CE275C5914BF71DF00265960 /* PyColumns.m */; }; CE27D3C412CCA43800859E67 /* HSAboutBox.m in Sources */ = {isa = PBXBuildFile; fileRef = CE27D3C312CCA43800859E67 /* HSAboutBox.m */; }; + CE2B169C15C33EEB00F1BE29 /* MainMenu_UI.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2B169B15C33EEB00F1BE29 /* MainMenu_UI.m */; }; CE2EC62915BD931E00698FF3 /* DeletionOptions_UI.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2EC62815BD931E00698FF3 /* DeletionOptions_UI.m */; }; CE2EC62C15BD9D2C00698FF3 /* ProblemDialog_UI.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2EC62B15BD9D2C00698FF3 /* ProblemDialog_UI.m */; }; CE31819D13D85D9B00B6D649 /* about.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE31819913D85D9B00B6D649 /* about.xib */; }; @@ -48,7 +49,6 @@ CE76FDF7111EE561006618EA /* NSEventAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE76FDF6111EE561006618EA /* NSEventAdditions.m */; }; CE79638612536C94008D405B /* FairwareReminder.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE79638412536C94008D405B /* FairwareReminder.xib */; }; CE79638C12536F4E008D405B /* HSFairwareReminder.m in Sources */ = {isa = PBXBuildFile; fileRef = CE79638B12536F4E008D405B /* HSFairwareReminder.m */; }; - CE81134E12E5CE4D00A36C80 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE81134612E5CE4D00A36C80 /* MainMenu.xib */; }; CE8113EB12E5CE9A00A36C80 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE8113E912E5CE9A00A36C80 /* Localizable.strings */; }; CE89240A14239CC30024CE4E /* PrioritizeList.m in Sources */ = {isa = PBXBuildFile; fileRef = CE89240714239CC30024CE4E /* PrioritizeList.m */; }; CE8C25CD15B9FCC100D44175 /* cocoalib.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE8C25CB15B9FCC100D44175 /* cocoalib.strings */; }; @@ -90,7 +90,7 @@ CEFC7FA10FC9517500CD5728 /* ProgressController.m in Sources */ = {isa = PBXBuildFile; fileRef = CEFC7F910FC9517500CD5728 /* ProgressController.m */; }; CEFC7FA50FC9517500CD5728 /* Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = CEFC7F9B0FC9517500CD5728 /* Utils.m */; }; CEFC7FA60FC9517500CD5728 /* ValueTransformers.m in Sources */ = {isa = PBXBuildFile; fileRef = CEFC7F9D0FC9517500CD5728 /* ValueTransformers.m */; }; - CEFC7FB90FC951A700CD5728 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CEFC7FB20FC951A700CD5728 /* AppDelegate.m */; }; + CEFC7FB90FC951A700CD5728 /* AppDelegateBase.m in Sources */ = {isa = PBXBuildFile; fileRef = CEFC7FB20FC951A700CD5728 /* AppDelegateBase.m */; }; CEFC7FBA0FC951A700CD5728 /* DirectoryPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = CEFC7FB50FC951A700CD5728 /* DirectoryPanel.m */; }; CEFC7FBB0FC951A700CD5728 /* ResultWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = CEFC7FB80FC951A700CD5728 /* ResultWindow.m */; }; /* End PBXBuildFile section */ @@ -116,10 +116,8 @@ 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = SOURCE_ROOT; }; 8D1107320486CEB800E47090 /* dupeGuru.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = dupeGuru.app; sourceTree = BUILT_PRODUCTS_DIR; }; - CE00BBC014910C5E006A717C /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/MainMenu.xib; sourceTree = ""; }; CE00BBCE14910C8E006A717C /* hy */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hy; path = ../base/hy.lproj/Localizable.strings; sourceTree = ""; }; CE0564B014169D9E00D3D907 /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_CN; path = ../base/zh_CN.lproj/Localizable.strings; sourceTree = ""; }; - CE0564B614169DB100D3D907 /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = zh_CN; path = ../base/zh_CN.lproj/MainMenu.xib; sourceTree = ""; }; CE066CEE15B9D15B007084A6 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt_BR; path = ../base/pt_BR.lproj/Localizable.strings; sourceTree = ""; }; CE073F5409CAE1A3005C1D2F /* help */ = {isa = PBXFileReference; lastKnownFileType = folder; name = help; path = ../../build/help; sourceTree = ""; }; CE18004C14BDD837001B6329 /* Python */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = Python; path = ../../build/Python; sourceTree = ""; }; @@ -136,6 +134,8 @@ CE275C5914BF71DF00265960 /* PyColumns.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyColumns.m; sourceTree = ""; }; 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; }; + CE2B169A15C33EEB00F1BE29 /* MainMenu_UI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainMenu_UI.h; sourceTree = ""; }; + CE2B169B15C33EEB00F1BE29 /* MainMenu_UI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainMenu_UI.m; sourceTree = ""; }; CE2EC62715BD931E00698FF3 /* DeletionOptions_UI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeletionOptions_UI.h; sourceTree = ""; }; CE2EC62815BD931E00698FF3 /* DeletionOptions_UI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DeletionOptions_UI.m; sourceTree = ""; }; CE2EC62A15BD9D2C00698FF3 /* ProblemDialog_UI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProblemDialog_UI.h; sourceTree = ""; }; @@ -166,7 +166,6 @@ CE587E9814C07BCF004CA031 /* PyOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyOutline.m; sourceTree = ""; }; CE587E9C14C0801F004CA031 /* PySelectableList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PySelectableList.h; sourceTree = ""; }; CE587E9D14C0801F004CA031 /* PySelectableList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PySelectableList.m; sourceTree = ""; }; - CE5A5CA415A283C200C4E461 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/MainMenu.xib; sourceTree = ""; }; 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; }; CE6DD4E5124CA3070089A48D /* ResultTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResultTable.h; path = ../base/ResultTable.h; sourceTree = SOURCE_ROOT; }; @@ -187,9 +186,6 @@ 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; }; CE7A6971146442010007D927 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = ../base/it.lproj/Localizable.strings; sourceTree = ""; }; - CE7A697A146442160007D927 /* it */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = it; path = ../base/it.lproj/MainMenu.xib; sourceTree = ""; }; - CE81134712E5CE4D00A36C80 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = ../base/en.lproj/MainMenu.xib; sourceTree = SOURCE_ROOT; }; - CE81135312E5CE6100A36C80 /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = ../base/fr.lproj/MainMenu.xib; sourceTree = SOURCE_ROOT; }; CE8113EA12E5CE9A00A36C80 /* en */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = en; path = ../base/en.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; }; CE8113EC12E5CEA800A36C80 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = ../base/fr.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; }; CE89240614239CC30024CE4E /* PrioritizeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PrioritizeList.h; path = ../base/PrioritizeList.h; sourceTree = ""; }; @@ -227,11 +223,8 @@ CEC3F8FB157668A300B26F0C /* DeletionOptions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DeletionOptions.m; path = ../base/DeletionOptions.m; sourceTree = ""; }; CEC3F8FD1576697700B26F0C /* PyDeletionOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyDeletionOptions.h; sourceTree = ""; }; CEC3F8FE1576697700B26F0C /* PyDeletionOptions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyDeletionOptions.m; sourceTree = ""; }; - CECFFF1F13CDF8D0003A4518 /* de */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = de; path = ../base/de.lproj/MainMenu.xib; sourceTree = SOURCE_ROOT; }; - CED638DF14B38CEC00B88D00 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/MainMenu.xib; sourceTree = ""; }; CED638EC14B38D0900B88D00 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ../base/ru.lproj/Localizable.strings; sourceTree = ""; }; CED64CEB145EF06000572B00 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = ../base/cs.lproj/Localizable.strings; sourceTree = ""; }; - CED64CFB145EF07700572B00 /* cs */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = cs; path = ../base/cs.lproj/MainMenu.xib; sourceTree = ""; }; CED939551406ABB70072C4E8 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = ../base/de.lproj/Localizable.strings; sourceTree = ""; }; CEE49F3415B9F4E1002BD78B /* HSAboutBox_UI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSAboutBox_UI.h; path = ../../cocoalib/autogen/HSAboutBox_UI.h; sourceTree = ""; }; CEE49F3515B9F4E1002BD78B /* HSAboutBox_UI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSAboutBox_UI.m; path = ../../cocoalib/autogen/HSAboutBox_UI.m; sourceTree = ""; }; @@ -253,7 +246,6 @@ CEEACCF515BC63E200960A6A /* IgnoreListDialog_UI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IgnoreListDialog_UI.m; sourceTree = ""; }; CEEB135109C837A2004D2330 /* dupeguru.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = dupeguru.icns; sourceTree = ""; }; CEECCD0D14C636F100A2F3A0 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = ../base/uk.lproj/Localizable.strings; sourceTree = ""; }; - CEECCD1214C6370000A2F3A0 /* uk */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = uk; path = ../base/uk.lproj/MainMenu.xib; sourceTree = ""; }; CEEF2A1614C0A5A60082545A /* PyDupeGuru.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyDupeGuru.h; sourceTree = ""; }; CEEF2A1714C0A5A60082545A /* PyDupeGuru.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyDupeGuru.m; sourceTree = ""; }; CEEF2A1914C0A8480082545A /* PyDupeGuruBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyDupeGuruBase.h; sourceTree = ""; }; @@ -286,8 +278,8 @@ 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; }; CEFC7F9D0FC9517500CD5728 /* ValueTransformers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ValueTransformers.m; path = ../../cocoalib/ValueTransformers.m; sourceTree = SOURCE_ROOT; }; - CEFC7FB10FC951A700CD5728 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = ../base/AppDelegate.h; sourceTree = SOURCE_ROOT; }; - CEFC7FB20FC951A700CD5728 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = ../base/AppDelegate.m; sourceTree = SOURCE_ROOT; }; + CEFC7FB10FC951A700CD5728 /* AppDelegateBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegateBase.h; path = ../base/AppDelegateBase.h; sourceTree = SOURCE_ROOT; }; + CEFC7FB20FC951A700CD5728 /* AppDelegateBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegateBase.m; path = ../base/AppDelegateBase.m; 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; }; CEFC7FB50FC951A700CD5728 /* DirectoryPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DirectoryPanel.m; path = ../base/DirectoryPanel.m; sourceTree = SOURCE_ROOT; }; @@ -372,7 +364,6 @@ CEA175C91461E8E600776591 /* locale */, CE073F5409CAE1A3005C1D2F /* help */, CEFC294309C89E0000D9F998 /* images */, - CEEFC0CA10943849001F3A39 /* xib */, CEEB135109C837A2004D2330 /* dupeguru.icns */, 8D1107310486CEB800E47090 /* Info.plist */, CE8113E912E5CE9A00A36C80 /* Localizable.strings */, @@ -393,6 +384,8 @@ CE1D091314BE0C6400CA6B8C /* autogen */ = { isa = PBXGroup; children = ( + CE2B169A15C33EEB00F1BE29 /* MainMenu_UI.h */, + CE2B169B15C33EEB00F1BE29 /* MainMenu_UI.m */, CE272B5A15C31BAA0085F4CD /* PreferencesPanel_UI.h */, CE272B5B15C31BAA0085F4CD /* PreferencesPanel_UI.m */, CEE5B05215C1A2B20077BA7A /* ResultWindow_UI.h */, @@ -505,14 +498,6 @@ name = autogen; sourceTree = ""; }; - CEEFC0CA10943849001F3A39 /* xib */ = { - isa = PBXGroup; - children = ( - CE81134612E5CE4D00A36C80 /* MainMenu.xib */, - ); - name = xib; - sourceTree = ""; - }; CEFC294309C89E0000D9F998 /* images */ = { isa = PBXGroup; children = ( @@ -564,8 +549,8 @@ CE91F214113BC22D0010360B /* StatsLabel.m */, CE76FDD1111EE3A7006618EA /* DirectoryOutline.h */, CE76FDD2111EE3A7006618EA /* DirectoryOutline.m */, - CEFC7FB10FC951A700CD5728 /* AppDelegate.h */, - CEFC7FB20FC951A700CD5728 /* AppDelegate.m */, + CEFC7FB10FC951A700CD5728 /* AppDelegateBase.h */, + CEFC7FB20FC951A700CD5728 /* AppDelegateBase.m */, CEFC7FB30FC951A700CD5728 /* Consts.h */, CEE7EA110FE675C80004E467 /* DetailsPanel.h */, CEE7EA120FE675C80004E467 /* DetailsPanel.m */, @@ -658,7 +643,6 @@ CEFC294609C89E3D00D9F998 /* folder32.png in Resources */, CE6E0DFE1054E9EF008D9390 /* dsa_pub.pem in Resources */, CE79638612536C94008D405B /* FairwareReminder.xib in Resources */, - CE81134E12E5CE4D00A36C80 /* MainMenu.xib in Resources */, CE8113EB12E5CE9A00A36C80 /* Localizable.strings in Resources */, CE31819D13D85D9B00B6D649 /* about.xib in Resources */, CE31819E13D85D9B00B6D649 /* ErrorReportWindow.xib in Resources */, @@ -682,7 +666,7 @@ CEFC7FA10FC9517500CD5728 /* ProgressController.m in Sources */, CEFC7FA50FC9517500CD5728 /* Utils.m in Sources */, CEFC7FA60FC9517500CD5728 /* ValueTransformers.m in Sources */, - CEFC7FB90FC951A700CD5728 /* AppDelegate.m in Sources */, + CEFC7FB90FC951A700CD5728 /* AppDelegateBase.m in Sources */, CEFC7FBA0FC951A700CD5728 /* DirectoryPanel.m in Sources */, CEFC7FBB0FC951A700CD5728 /* ResultWindow.m in Sources */, CEE7EA130FE675C80004E467 /* DetailsPanel.m in Sources */, @@ -743,6 +727,7 @@ CEBAC7B515BEF3EE0012FDB2 /* PrioritizeDialog_UI.m in Sources */, CEE5B05415C1A2B20077BA7A /* ResultWindow_UI.m in Sources */, CE272B5C15C31BAA0085F4CD /* PreferencesPanel_UI.m in Sources */, + CE2B169C15C33EEB00F1BE29 /* MainMenu_UI.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -773,23 +758,6 @@ path = /Users/hsoft/src/dupeguru/cocoalib/xib; sourceTree = ""; }; - CE81134612E5CE4D00A36C80 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - CE81134712E5CE4D00A36C80 /* en */, - CE81135312E5CE6100A36C80 /* fr */, - CECFFF1F13CDF8D0003A4518 /* de */, - CE0564B614169DB100D3D907 /* zh_CN */, - CED64CFB145EF07700572B00 /* cs */, - CE7A697A146442160007D927 /* it */, - CE00BBC014910C5E006A717C /* hy */, - CED638DF14B38CEC00B88D00 /* ru */, - CEECCD1214C6370000A2F3A0 /* uk */, - CE5A5CA415A283C200C4E461 /* pt_BR */, - ); - name = MainMenu.xib; - sourceTree = SOURCE_ROOT; - }; CE8113E912E5CE9A00A36C80 /* Localizable.strings */ = { isa = PBXVariantGroup; children = (