File:  [mozdev] / chimera / MainController.mm
Revision 1.13: download - view: text, annotated - select for diffs - revision graph
Tue Feb 5 01:39:31 2002 UTC (17 years, 8 months ago) by hyatt
Branches: MAIN
CVS tags: HEAD
Stubbing out edit menu connections.

    1: /*
    2:  *  MainController.mm
    3:  */
    4: 
    5: #import "MainController.h"
    6: #import "BrowserWindowController.h"
    7: 
    8: #include "nsCOMPtr.h"
    9: #include "nsIServiceManager.h"
   10: #include "nsIIOService.h"
   11: #include "nsCocoaBrowserService.h"
   12: 
   13: static const char* ioServiceContractID = "@mozilla.org/network/io-service;1";
   14: 
   15: @implementation MainController
   16: 
   17: -(void)awakeFromNib
   18: {
   19:     [self newWindow: self];
   20:     
   21:     // Initialize offline mode.
   22:     mOffline = NO;
   23:     nsCOMPtr<nsIIOService> ioService(do_GetService(ioServiceContractID));
   24:     if (!ioService)
   25:         return;
   26:     PRBool offline = PR_FALSE;
   27:     ioService->GetOffline(&offline);
   28:     mOffline = offline;
   29:     
   30:     // Set the menu item's text to "Go Online" if we're currently
   31:     // offline.
   32:     if (mOffline)
   33:         [mOfflineMenuItem setTitle: @"Go Online"];
   34: }
   35: 
   36: -(IBAction)newWindow:(id)aSender
   37: {
   38:     BrowserWindowController* controller = [self openBrowserWindowWithURLString:@"about:blank"];
   39:     [controller focusURLBar];
   40: }
   41: 
   42: -(IBAction) openFile:(id)aSender
   43: {
   44:     NSOpenPanel* openPanel = [[NSOpenPanel alloc] init];
   45:     [openPanel setCanChooseFiles: YES];
   46:     [openPanel setCanChooseDirectories: NO];
   47:     [openPanel setAllowsMultipleSelection: NO];
   48:     NSArray* array = [NSArray arrayWithObjects: @"htm",@"html",@"shtml",@"xhtml",@"xml",
   49:                                                 @"txt",@"text",
   50:                                                 @"gif",@"jpg",@"jpeg",@"png",@"bmp",
   51:                                                 nil];
   52:     int result = [openPanel runModalForTypes: array];
   53:     if (result == NSOKButton) {
   54:         NSArray* urlArray = [openPanel URLs];
   55:         if ([urlArray count] == 0)
   56:             return;
   57:         NSURL* url = [urlArray objectAtIndex: 0];
   58:         NSWindow* keyWindow = [mApplication keyWindow];
   59:         if (keyWindow)
   60:             return [[keyWindow windowController] loadURL: url];
   61:         else
   62:             [self openBrowserWindowWithURL: url];
   63:     }
   64: }
   65: 
   66: -(IBAction) openLocation:(id)aSender
   67: {
   68:     NSWindow* keyWindow = [mApplication keyWindow];
   69:     if (!keyWindow) {
   70:       [self openBrowserWindowWithURLString: @"about:blank"];
   71:       keyWindow = [mApplication keyWindow];
   72:     }
   73:     
   74:     [[keyWindow windowController] performAppropriateLocationAction];
   75: }
   76: 
   77: -(IBAction) savePage:(id)aSender
   78: {
   79:     NSWindow* keyWindow = [mApplication keyWindow];
   80:     if (keyWindow)
   81:       [[keyWindow windowController] saveDocument: mFilterView filterList: mFilterList];
   82: }
   83: 
   84: -(IBAction) printPage:(id)aSender
   85: {
   86:     NSWindow* keyWindow = [mApplication keyWindow];
   87:     if (keyWindow)
   88:       [[keyWindow windowController] printDocument];
   89: }
   90: 
   91: -(IBAction) toggleOfflineMode:(id)aSender
   92: {
   93:     nsCOMPtr<nsIIOService> ioService(do_GetService(ioServiceContractID));
   94:     if (!ioService)
   95:         return;
   96:     PRBool offline = PR_FALSE;
   97:     ioService->GetOffline(&offline);
   98:     ioService->SetOffline(!offline);
   99:     mOffline = !offline;
  100:     
  101:     // Update the menu item text.
  102:     // Set the menu item's text to "Go Online" if we're currently
  103:     // offline.
  104:     if (mOffline)
  105:         [mOfflineMenuItem setTitle: @"Go Online"];
  106:     else
  107:         [mOfflineMenuItem setTitle: @"Work Offline"];
  108:         
  109:     // Indicate that we are working offline.
  110:     [[NSNotificationCenter defaultCenter] postNotificationName:@"offlineModeChanged" object:nil];
  111: }
  112: 
  113: // Edit menu actions.
  114: -(IBAction) doCut:(id)aSender
  115: {
  116: 
  117: }
  118: 
  119: -(IBAction) doCopy:(id)aSender
  120: {
  121: }
  122: 
  123: -(IBAction) doPaste:(id)aSender
  124: {
  125: 
  126: }
  127: 
  128: -(IBAction) doClear:(id)aSender
  129: {
  130: 
  131: }
  132: 
  133: -(IBAction) doSelectAll:(id)aSender
  134: {
  135: 
  136: }
  137: 
  138: -(IBAction) findInPage:(id)aSender
  139: {
  140: 
  141: }
  142: 
  143: -(IBAction) back:(id)aSender
  144: {
  145:     [[[mApplication keyWindow] windowController] back: aSender]; 
  146: }
  147: 
  148: -(IBAction) forward:(id)aSender
  149: {
  150:     [[[mApplication keyWindow] windowController] forward: aSender]; 
  151: }
  152: 
  153: -(IBAction) reload:(id)aSender
  154: {
  155:     [[[mApplication keyWindow] windowController] reload: aSender]; 
  156: }
  157: 
  158: -(IBAction) stop:(id)aSender
  159: {
  160:     [[[mApplication keyWindow] windowController] stop: aSender]; 
  161: }
  162: 
  163: -(IBAction) home:(id)aSender
  164: {
  165:     [[[mApplication keyWindow] windowController] home: aSender];
  166: }
  167: 
  168: -(BrowserWindowController*)openBrowserWindowWithURLString: (NSString*)aURL
  169: {
  170:     return [self openBrowserWindowWithURL: [NSURL URLWithString:aURL]];
  171: }
  172: 
  173: -(BrowserWindowController*)openBrowserWindowWithURL: (NSURL*)aURL
  174: {
  175: 	BrowserWindowController* browser = [[BrowserWindowController alloc] initWithWindowNibName: @"BrowserWindow"];
  176:     [browser loadURL: aURL];
  177: 	[browser showWindow: self];
  178:     return browser;
  179: }
  180: 
  181: -(void)applicationWillTerminate: (NSNotification*)aNotification
  182: {
  183:     nsCocoaBrowserService::TermEmbedding();
  184: }
  185: @end

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