diff options
Diffstat (limited to 'frontends/cocoa/BrowserWindowController.m')
-rw-r--r-- | frontends/cocoa/BrowserWindowController.m | 275 |
1 files changed, 139 insertions, 136 deletions
diff --git a/frontends/cocoa/BrowserWindowController.m b/frontends/cocoa/BrowserWindowController.m index 1fa78b47b..ac3cf18e6 100644 --- a/frontends/cocoa/BrowserWindowController.m +++ b/frontends/cocoa/BrowserWindowController.m @@ -31,14 +31,12 @@ #import "cocoa/gui.h" #import "cocoa/NetsurfApp.h" - @interface BrowserWindowController () -- (void) canCloseAlertDidEnd:(NSAlert *)alert returnCode:(int)returnCode contextInfo:(void *)contextInfo; +- (void)canCloseAlertDidEnd:(NSAlert *)alert returnCode:(int)returnCode contextInfo:(void *)contextInfo; @end - @implementation BrowserWindowController @synthesize tabBar; @@ -52,206 +50,211 @@ @synthesize activeBrowser; @synthesize activeBrowserController; -- (id) init +- (id)init { - if (nil == (self = [super initWithWindowNibName: @"BrowserWindow"])) return nil; - - return self; -} + if (nil == (self = [super initWithWindowNibName:@"BrowserWindow"])) + return nil; + return self; +} -- (void) awakeFromNib +- (void)awakeFromNib { - [tabBar setShowAddTabButton: YES]; - [tabBar setTearOffStyle: PSMTabBarTearOffMiniwindow]; - [tabBar setCanCloseOnlyTab: YES]; - [tabBar setHideForSingleTab: YES]; - - NSButton *b = [tabBar addTabButton]; - [b setTarget: self]; - [b setAction: @selector(newTab:)]; - - [urlField setRefreshAction: @selector(reloadPage:)]; - [urlField bind: @"favicon" toObject: activeBrowserController withKeyPath: @"selection.favicon" options: nil]; - - [self bind: @"canGoBack" - toObject: activeBrowserController withKeyPath: @"selection.canGoBack" - options: nil]; - [self bind: @"canGoForward" - toObject: activeBrowserController withKeyPath: @"selection.canGoForward" - options: nil]; - - [navigationControl setMenu: historyBackMenu forSegment: 0]; - [navigationControl setMenu: historyForwardMenu forSegment: 1]; + [tabBar setShowAddTabButton:YES]; + [tabBar setTearOffStyle:PSMTabBarTearOffMiniwindow]; + [tabBar setCanCloseOnlyTab:YES]; + [tabBar setHideForSingleTab:YES]; + + NSButton *b = [tabBar addTabButton]; + [b setTarget:self]; + [b setAction:@selector(newTab:)]; + + [urlField setRefreshAction:@selector(reloadPage:)]; + [urlField bind:@"favicon" toObject:activeBrowserController withKeyPath:@"selection.favicon" options:nil]; + + [self bind:@"canGoBack" + toObject:activeBrowserController + withKeyPath:@"selection.canGoBack" + options:nil]; + [self bind:@"canGoForward" + toObject:activeBrowserController + withKeyPath:@"selection.canGoForward" + options:nil]; + + [navigationControl setMenu:historyBackMenu forSegment:0]; + [navigationControl setMenu:historyForwardMenu forSegment:1]; } -- (void) addTab: (BrowserViewController *)browser +- (void)addTab:(BrowserViewController *)browser { - NSTabViewItem *item = [[NSTabViewItem alloc] initWithIdentifier: browser]; - - [item setView: [browser view]]; - [item bind: @"label" toObject: browser withKeyPath: @"title" options: nil]; - - [tabView addTabViewItem: item]; - [browser setWindowController: self]; - - [tabView selectTabViewItem: item]; + NSTabViewItem *item = [[NSTabViewItem alloc] initWithIdentifier:browser]; + + [item setView:[browser view]]; + [item bind:@"label" toObject:browser withKeyPath:@"title" options:nil]; + + [tabView addTabViewItem:item]; + [browser setWindowController:self]; + + [tabView selectTabViewItem:item]; } -- (void) removeTab: (BrowserViewController *)browser +- (void)removeTab:(BrowserViewController *)browser { - NSUInteger itemIndex = [tabView indexOfTabViewItemWithIdentifier: browser]; - if (itemIndex != NSNotFound) { - NSTabViewItem *item = [tabView tabViewItemAtIndex: itemIndex]; - [tabView removeTabViewItem: item]; - [browser setWindowController: nil]; - } + NSUInteger itemIndex = [tabView indexOfTabViewItemWithIdentifier:browser]; + if (itemIndex != NSNotFound) { + NSTabViewItem *item = [tabView tabViewItemAtIndex:itemIndex]; + [tabView removeTabViewItem:item]; + [browser setWindowController:nil]; + } } -- (BOOL) windowShouldClose: (NSWindow *) window +- (BOOL)windowShouldClose:(NSWindow *)window { - if ([tabView numberOfTabViewItems] <= 1) return YES; - if ([[NSUserDefaults standardUserDefaults] boolForKey: kAlwaysCloseMultipleTabs]) return YES; - - NSAlert *ask = [NSAlert alertWithMessageText: NSLocalizedString( @"Do you really want to close this window?", nil ) - defaultButton: NSLocalizedString( @"Yes", @"'Yes' button" ) - alternateButton: NSLocalizedString( @"No" , @"'No' button" ) - otherButton:nil - informativeTextWithFormat: NSLocalizedString( @"There are %d tabs open, do you want to close them all?", nil ), - [tabView numberOfTabViewItems]]; - [ask setShowsSuppressionButton:YES]; - - [ask beginSheetModalForWindow: window modalDelegate:self didEndSelector:@selector(canCloseAlertDidEnd:returnCode:contextInfo:) - contextInfo: NULL]; - - return NO; + if ([tabView numberOfTabViewItems] <= 1) + return YES; + if ([[NSUserDefaults standardUserDefaults] boolForKey:kAlwaysCloseMultipleTabs]) + return YES; + + NSAlert *ask = [NSAlert alertWithMessageText:NSLocalizedString(@"Do you really want to close this window?", nil) + defaultButton:NSLocalizedString(@"Yes", @"'Yes' button") + alternateButton:NSLocalizedString(@"No", @"'No' button") + otherButton:nil + informativeTextWithFormat:NSLocalizedString(@"There are %d tabs open, do you want to close them all?", nil), + [tabView numberOfTabViewItems]]; + [ask setShowsSuppressionButton:YES]; + + [ask beginSheetModalForWindow:window + modalDelegate:self + didEndSelector:@selector(canCloseAlertDidEnd:returnCode:contextInfo:) + contextInfo:NULL]; + + return NO; } -- (void) canCloseAlertDidEnd:(NSAlert *)alert returnCode:(int)returnCode contextInfo:(void *)contextInfo +- (void)canCloseAlertDidEnd:(NSAlert *)alert returnCode:(int)returnCode contextInfo:(void *)contextInfo { - if (returnCode == NSModalResponseOK) { - [[NSUserDefaults standardUserDefaults] setBool: [[alert suppressionButton] state] == NSOnState - forKey: kAlwaysCloseMultipleTabs]; - [[self window] close]; - } + if (returnCode == NSModalResponseOK) { + [[NSUserDefaults standardUserDefaults] setBool:[[alert suppressionButton] state] == NSOnState + forKey:kAlwaysCloseMultipleTabs]; + [[self window] close]; + } } -- (void) windowWillClose: (NSNotification *)notification +- (void)windowWillClose:(NSNotification *)notification { - for (NSTabViewItem *tab in [tabView tabViewItems]) { - [tabView removeTabViewItem: tab]; - } + for (NSTabViewItem *tab in [tabView tabViewItems]) { + [tabView removeTabViewItem:tab]; + } } -- (IBAction) newTab: (id) sender +- (IBAction)newTab:(id)sender { - nsurl *url; - nserror error; - - if (nsoption_charp(homepage_url) != NULL) { - error = nsurl_create(nsoption_charp(homepage_url), &url); - } else { - error = nsurl_create(NETSURF_HOMEPAGE, &url); - } - if (error == NSERROR_OK) { - error = browser_window_create(BW_CREATE_HISTORY | - BW_CREATE_TAB, - url, - NULL, - [activeBrowser browser], - NULL); - nsurl_unref(url); - } - if (error != NSERROR_OK) { - cocoa_warning(messages_get_errorcode(error), 0); - } + nsurl *url; + nserror error; + + if (nsoption_charp(homepage_url) != NULL) { + error = nsurl_create(nsoption_charp(homepage_url), &url); + } else { + error = nsurl_create(NETSURF_HOMEPAGE, &url); + } + if (error == NSERROR_OK) { + error = browser_window_create(BW_CREATE_HISTORY | BW_CREATE_TAB, + url, + NULL, + [activeBrowser browser], + NULL); + nsurl_unref(url); + } + if (error != NSERROR_OK) { + cocoa_warning(messages_get_errorcode(error), 0); + } } -- (IBAction) closeCurrentTab: (id) sender +- (IBAction)closeCurrentTab:(id)sender { - [self removeTab: activeBrowser]; + [self removeTab:activeBrowser]; } -- (void) setActiveBrowser: (BrowserViewController *)newBrowser +- (void)setActiveBrowser:(BrowserViewController *)newBrowser { - activeBrowser = newBrowser; - //[self setNextResponder: activeBrowser]; + activeBrowser = newBrowser; + //[self setNextResponder: activeBrowser]; } -- (void) setCanGoBack: (BOOL)can +- (void)setCanGoBack:(BOOL)can { - [navigationControl setEnabled: can forSegment: 0]; + [navigationControl setEnabled:can forSegment:0]; } -- (BOOL) canGoBack +- (BOOL)canGoBack { - return [navigationControl isEnabledForSegment: 0]; + return [navigationControl isEnabledForSegment:0]; } -- (void) setCanGoForward: (BOOL)can +- (void)setCanGoForward:(BOOL)can { - [navigationControl setEnabled: can forSegment: 1]; + [navigationControl setEnabled:can forSegment:1]; } -- (BOOL) canGoForward +- (BOOL)canGoForward { - return [navigationControl isEnabledForSegment: 1]; + return [navigationControl isEnabledForSegment:1]; } -- (void)windowDidBecomeMain: (NSNotification *)note +- (void)windowDidBecomeMain:(NSNotification *)note { - [(NetSurfApp *)NSApp setFrontTab: [[tabView selectedTabViewItem] identifier]]; + [(NetSurfApp *)NSApp setFrontTab:[[tabView selectedTabViewItem] identifier]]; } - (void)menuNeedsUpdate:(NSMenu *)menu { - if (menu == historyBackMenu) { - [activeBrowser buildBackMenu: menu]; - } else if (menu == historyForwardMenu) { - [activeBrowser buildForwardMenu: menu]; - } + if (menu == historyBackMenu) { + [activeBrowser buildBackMenu:menu]; + } else if (menu == historyForwardMenu) { + [activeBrowser buildForwardMenu:menu]; + } } #pragma mark - #pragma mark Tab bar delegate -- (void) tabView: (NSTabView *)tabView didSelectTabViewItem: (NSTabViewItem *)tabViewItem +- (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem { - [self setActiveBrowser: [tabViewItem identifier]]; - if ([[self window] isMainWindow]) { - [(NetSurfApp *)NSApp setFrontTab: [tabViewItem identifier]]; - } + [self setActiveBrowser:[tabViewItem identifier]]; + if ([[self window] isMainWindow]) { + [(NetSurfApp *)NSApp setFrontTab:[tabViewItem identifier]]; + } } -- (BOOL)tabView:(NSTabView*)aTabView shouldDragTabViewItem:(NSTabViewItem *)tabViewItem fromTabBar:(PSMTabBarControl *)tabBarControl +- (BOOL)tabView:(NSTabView *)aTabView shouldDragTabViewItem:(NSTabViewItem *)tabViewItem fromTabBar:(PSMTabBarControl *)tabBarControl { return [aTabView numberOfTabViewItems] > 1; } -- (BOOL)tabView:(NSTabView*)aTabView shouldDropTabViewItem:(NSTabViewItem *)tabViewItem inTabBar:(PSMTabBarControl *)tabBarControl +- (BOOL)tabView:(NSTabView *)aTabView shouldDropTabViewItem:(NSTabViewItem *)tabViewItem inTabBar:(PSMTabBarControl *)tabBarControl { - [[tabViewItem identifier] setWindowController: self]; - return YES; + [[tabViewItem identifier] setWindowController:self]; + return YES; } - (PSMTabBarControl *)tabView:(NSTabView *)aTabView newTabBarForDraggedTabViewItem:(NSTabViewItem *)tabViewItem atPoint:(NSPoint)point { - BrowserWindowController *newWindow = [[BrowserWindowController alloc] init]; - [[tabViewItem identifier] setWindowController: newWindow]; - [[newWindow window] setFrameOrigin: point]; - return newWindow->tabBar; + BrowserWindowController *newWindow = [[BrowserWindowController alloc] init]; + [[tabViewItem identifier] setWindowController:newWindow]; + [[newWindow window] setFrameOrigin:point]; + return newWindow->tabBar; } -- (void) tabView: (NSTabView *)aTabView didCloseTabViewItem: (NSTabViewItem *)tabViewItem +- (void)tabView:(NSTabView *)aTabView didCloseTabViewItem:(NSTabViewItem *)tabViewItem { - [tabViewItem unbind: @"label"]; - - if (activeBrowser == [tabViewItem identifier]) { - [self setActiveBrowser: nil]; - [(NetSurfApp *)NSApp setFrontTab: nil]; - } - - browser_window_destroy( [[tabViewItem identifier] browser] ); + [tabViewItem unbind:@"label"]; + + if (activeBrowser == [tabViewItem identifier]) { + [self setActiveBrowser:nil]; + [(NetSurfApp *)NSApp setFrontTab:nil]; + } + + browser_window_destroy([[tabViewItem identifier] browser]); } @end |