Diff for /chimera/MainController.mm between versions 1.4 and 1.44

version 1.4, 2002/01/30 22:43:11 version 1.44, 2002/04/17 07:38:31
Line 1 Line 1
/*/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 *  MainController.mm/* ***** BEGIN LICENSE BLOCK *****
 */ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
  *
  * The contents of this file are subject to the Netscape Public License
  * Version 1.1 (the "License"); you may not use this file except in
  * compliance with the License. You may obtain a copy of the License at
  * http://www.mozilla.org/NPL/
  *
  * Software distributed under the License is distributed on an "AS IS" basis,
  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  * for the specific language governing rights and limitations under the
  * License.
  *
  * The Original Code is mozilla.org code.
  *
  * The Initial Developer of the Original Code is 
  * Netscape Communications Corporation.
  * Portions created by the Initial Developer are Copyright (C) 2002
  * the Initial Developer. All Rights Reserved.
  *
  * Contributor(s):
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either the GNU General Public License Version 2 or later (the "GPL"), or 
  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  * in which case the provisions of the GPL or the LGPL are applicable instead
  * of those above. If you wish to allow use of your version of this file only
  * under the terms of either the GPL or the LGPL, and not to allow others to
  * use your version of this file under the terms of the NPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the NPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
   
 #import "MainController.h"  #import "MainController.h"
 #import "BrowserWindowController.h"  #import "BrowserWindowController.h"
   #include "BookmarksService.h"
   #include "nsCOMPtr.h"
   #include "nsIServiceManager.h"
   #include "nsIIOService.h"
   #include "nsCocoaBrowserService.h"
   #import "AboutBox.h"
   
   
   static const char* ioServiceContractID = "@mozilla.org/network/io-service;1";
   
 @implementation MainController  @implementation MainController
   
-(void)awakeFromNib-(id)init
 {
     if ( (self = [super init]) ) {
         mSplashScreen = [[SplashScreenWindow alloc] splashImage:nil withFade:YES withStatusRect:NSMakeRect(0,0,0,0)];
     }
     mFindDialog = nil;
     mMenuBookmarks = nil;
     return self;
 }
 
 -(void)dealloc
 {  {
       [super dealloc];
       [mFindDialog release];
       printf("Main controller died.\n");
   }
   
   -(void)awakeFromNib
   {    
     [self newWindow: self];      [self newWindow: self];
       
       [mSplashScreen close];
   
       [mBookmarksMenu setAutoenablesItems: NO];
       mMenuBookmarks = new BookmarksService((BookmarksDataSource*)nil);
       mMenuBookmarks->AddObserver();
       mMenuBookmarks->ConstructBookmarksMenu(mBookmarksMenu, nsnull);
       BookmarksService::gMainController = self;
       
       // Initialize offline mode.
       mOffline = NO;
       nsCOMPtr<nsIIOService> ioService(do_GetService(ioServiceContractID));
       if (!ioService)
           return;
       PRBool offline = PR_FALSE;
       ioService->GetOffline(&offline);
       mOffline = offline;
       
       // Set the menu item's text to "Go Online" if we're currently
       // offline.
       if (mOffline)
           [mOfflineMenuItem setTitle: @"Go Online"];
   
 }  }
   
 -(IBAction)newWindow:(id)aSender  -(IBAction)newWindow:(id)aSender
 {  {
    BrowserWindowController* controller = [self openBrowserWindowWithURL:@"about:blank"];  // If we have a key window, have it autosave its dimensions before
    [controller focusURLBar];  // we open a new window.  That ensures the size ends up matching.
   NSWindow* keyWindow = [mApplication keyWindow];
   if ( keyWindow && [keyWindow respondsToSelector:@selector(autosaveWindowFrame)] )
     [[keyWindow windowController] autosaveWindowFrame];
 
   // Now open the new window.
   BrowserWindowController* controller = [self openBrowserWindowWithURLString:@"about:blank"];
   [controller focusURLBar];
 }       
 
 -(IBAction)newTab:(id)aSender
 {
     NSWindow* keyWindow = [mApplication keyWindow];
     if (keyWindow)
         [[keyWindow windowController] newTab];
 }
 
 -(IBAction)closeTab:(id)aSender
 {
     NSWindow* keyWindow = [mApplication keyWindow];
     if (keyWindow)
         [[keyWindow windowController] closeTab];
 }
 
 -(IBAction) previousTab:(id)aSender
 {
     NSWindow* keyWindow = [mApplication keyWindow];
     if (keyWindow)
         [[keyWindow windowController] previousTab];
 }
 
 -(IBAction) nextTab:(id)aSender;
 {
     NSWindow* keyWindow = [mApplication keyWindow];
     if (keyWindow)
         [[keyWindow windowController] nextTab];
 }  }
   
 -(IBAction) openFile:(id)aSender  -(IBAction) openFile:(id)aSender
 {  {
       NSOpenPanel* openPanel = [[NSOpenPanel alloc] init];
       [openPanel setCanChooseFiles: YES];
       [openPanel setCanChooseDirectories: NO];
       [openPanel setAllowsMultipleSelection: NO];
       NSArray* array = [NSArray arrayWithObjects: @"htm",@"html",@"shtml",@"xhtml",@"xml",
                                                   @"txt",@"text",
                                                   @"gif",@"jpg",@"jpeg",@"png",@"bmp",
                                                   nil];
       int result = [openPanel runModalForTypes: array];
       if (result == NSOKButton) {
           NSArray* urlArray = [openPanel URLs];
           if ([urlArray count] == 0)
               return;
           NSURL* url = [urlArray objectAtIndex: 0];
           // ----------------------
           [[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:url];
           // ----------------------
           NSWindow* keyWindow = [mApplication keyWindow];
           if (keyWindow) {
             [[keyWindow windowController] loadURL: url];
             [[[[keyWindow windowController] getMyBrowserView] getBrowserView] setActive: YES];
           }
           else
             [self openBrowserWindowWithURL: url];
       }
 }  }
   
 -(IBAction) openLocation:(id)aSender  -(IBAction) openLocation:(id)aSender
 {  {
     NSWindow* keyWindow = [mApplication keyWindow];      NSWindow* keyWindow = [mApplication keyWindow];
     if (!keyWindow) {      if (!keyWindow) {
      [self openBrowserWindowWithURL: @"about:blank"];      [self openBrowserWindowWithURLString: @"about:blank"];
       keyWindow = [mApplication keyWindow];        keyWindow = [mApplication keyWindow];
     }      }
           
    [[keyWindow windowController] focusURLBar];    [[keyWindow windowController] performAppropriateLocationAction];
 }
 
 -(IBAction) savePage:(id)aSender
 {
     NSWindow* keyWindow = [mApplication keyWindow];
     if (keyWindow)
       [[keyWindow windowController] saveDocument: mFilterView filterList: mFilterList];
 }
 
 -(IBAction) printPage:(id)aSender
 {
     NSWindow* keyWindow = [mApplication keyWindow];
     if (keyWindow)
       [[keyWindow windowController] printDocument];
 }
 
 -(IBAction) printPreview:(id)aSender
 {
     NSWindow* keyWindow = [mApplication keyWindow];
     if (keyWindow)
       [[keyWindow windowController] printPreview];
 }
 
 -(IBAction) toggleOfflineMode:(id)aSender
 {
     nsCOMPtr<nsIIOService> ioService(do_GetService(ioServiceContractID));
     if (!ioService)
         return;
     PRBool offline = PR_FALSE;
     ioService->GetOffline(&offline);
     ioService->SetOffline(!offline);
     mOffline = !offline;
     
     // Update the menu item text.
     // Set the menu item's text to "Go Online" if we're currently
     // offline.
     if (mOffline)
         [mOfflineMenuItem setTitle: @"Go Online"];
     else
         [mOfflineMenuItem setTitle: @"Work Offline"];
         
     // Indicate that we are working offline.
     [[NSNotificationCenter defaultCenter] postNotificationName:@"offlineModeChanged" object:nil];
 }
 
 // Edit menu actions.
 
 
 //
 // -findInPage
 //
 // Called in response to "Find" in edit menu. Opens the find dialog. We only keep
 // one around for the whole app to use, showing/hiding as we see fit.
 //
 -(IBAction) findInPage:(id)aSender
 {
   if ( !mFindDialog )
      mFindDialog = [[FindDlgController alloc] initWithWindowNibName: @"FindDialog"];
   [mFindDialog showWindow:self];
 }
 
 
 //
 // -findAgain
 //
 // Called in response to "Find Again" in edit menu. Tells the find controller
 // to find the next occurrance of what's already been found.
 //
 -(IBAction) findAgain:(id)aSender
 {
   if ( mFindDialog )
     [mFindDialog findAgain:aSender];
   else
     NSBeep();
 }  }
   
-(IBAction) back:(id)aSender-(IBAction) goBack:(id)aSender
 {  {
     [[[mApplication keyWindow] windowController] back: aSender];       [[[mApplication keyWindow] windowController] back: aSender]; 
 }  }
   
-(IBAction) forward:(id)aSender-(IBAction) goForward:(id)aSender
 {  {
     [[[mApplication keyWindow] windowController] forward: aSender];       [[[mApplication keyWindow] windowController] forward: aSender]; 
 }  }
   
-(IBAction) reload:(id)aSender-(IBAction) doReload:(id)aSender
 {  {
    [[[mApplication keyWindow] windowController] reload: aSender];     [(BrowserWindowController*)([[mApplication keyWindow] windowController]) reload: aSender]; 
 }  }
   
-(IBAction) stop:(id)aSender-(IBAction) doStop:(id)aSender
 {  {
    [[[mApplication keyWindow] windowController] stop: aSender];     [(BrowserWindowController*)([[mApplication keyWindow] windowController]) stop: aSender]; 
 }  }
   
-(IBAction) home:(id)aSender-(IBAction) goHome:(id)aSender
 {  {
     [[[mApplication keyWindow] windowController] home: aSender];      [[[mApplication keyWindow] windowController] home: aSender];
 }  }
   
-(BrowserWindowController*)openBrowserWindowWithURL: (NSString*)aURL-(BrowserWindowController*)openBrowserWindowWithURLString: (NSString*)aURL
 {  {
        NSLog(@"Opening Browser with URL: %@", aURL);    return [self openBrowserWindowWithURL: [NSURL URLWithString:aURL]];
        BrowserWindowController* browser = [[BrowserWindowController alloc] initWithWindowNibName: @"BrowserWindow"];}
   
        [browser loadURL: aURL];-(BrowserWindowController*)openBrowserWindowWithURL: (NSURL*)aURL
 {
         BrowserWindowController* browser = [[BrowserWindowController alloc] initWithWindowNibName: @"BrowserWindow"];
   [browser loadURL: aURL];
   [browser showWindow: self];    [browser showWindow: self];
     return browser;
   }
   
   -(void)applicationWillTerminate: (NSNotification*)aNotification
   {
       printf("Termination notification.\n");
   
       // Autosave one of the windows.
       NSWindow* keyWindow = [mApplication keyWindow];
       if (keyWindow)
         [[keyWindow windowController] autosaveWindowFrame];
       
       mMenuBookmarks->RemoveObserver();
       delete mMenuBookmarks;
       mMenuBookmarks = nsnull;
       nsCocoaBrowserService::TermEmbedding();
   }
   
   // Bookmarks menu actions.
   -(IBAction) addBookmark:(id)aSender
   {
       NSWindow* keyWindow = [mApplication keyWindow];
       if (keyWindow)
         [[keyWindow windowController] addBookmarkExtended: YES];
   }
   
   -(IBAction) openMenuBookmark:(id)aSender
   {
       NSWindow* keyWindow = [mApplication keyWindow];
       if (!keyWindow) {
           [self openBrowserWindowWithURLString: @"about:blank"];
           keyWindow = [mApplication keyWindow];
       }
   
       BookmarksService::OpenMenuBookmark([keyWindow windowController], aSender);
   }
   
   -(IBAction)manageBookmarks: (id)aSender
   {
     NSWindow* keyWindow = [mApplication keyWindow];
     if (!keyWindow) {
       [self openBrowserWindowWithURLString: @"about:blank"];
       keyWindow = [mApplication keyWindow];
     }
   
     [[keyWindow windowController] manageBookmarks: aSender];
   }
   
   - (MVPreferencesController *)preferencesController
   {
       if (!preferencesController) {
           preferencesController = [[MVPreferencesController sharedInstance] retain];
       }
       return preferencesController;
   }
   
   - (void)displayPreferencesWindow:sender
   {
       [[self preferencesController] showPreferences:nil] ;
   }
   
   - (IBAction)showAboutBox:(id)sender
   {
       [[AboutBox sharedInstance] showPanel:sender];
   }
   
   - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
   {
       NSWindow* keyWindow = [mApplication keyWindow];
   
       if (keyWindow) {
           [[keyWindow windowController] loadURL:[NSURL fileURLWithPath:filename]];
       } else {
           [self openBrowserWindowWithURL:[NSURL fileURLWithPath:filename]];
       }
       
       return YES;
           
     return browser;  
 }  }
   
   - (IBAction)biggerTextSize:(id)aSender
   {
     NSWindow* keyWindow = [mApplication keyWindow];
     if (keyWindow)
       [[keyWindow windowController] biggerTextSize];
   }
   
   - (IBAction)smallerTextSize:(id)aSender
   {
     NSWindow* keyWindow = [mApplication keyWindow];
     if (keyWindow)
       [[keyWindow windowController] smallerTextSize];
   }
   
   - (IBAction)toggleSmoothText:(id)aSender
   {
     // XXXdwh Grab the prefs service and just set the pref directly.
     
   }
   
   
 @end  @end

Removed from v.1.4  
changed lines
  Added in v.1.44


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>