Annotation of chimera/MainController.mm, revision 1.14

1.3       macserv     1: /*
                      2:  *  MainController.mm
                      3:  */
1.1       hyatt       4: 
                      5: #import "MainController.h"
                      6: #import "BrowserWindowController.h"
                      7: 
1.10      hyatt       8: #include "nsCOMPtr.h"
                      9: #include "nsIServiceManager.h"
                     10: #include "nsIIOService.h"
1.12      hyatt      11: #include "nsCocoaBrowserService.h"
1.10      hyatt      12: 
                     13: static const char* ioServiceContractID = "@mozilla.org/network/io-service;1";
                     14: 
1.1       hyatt      15: @implementation MainController
                     16: 
                     17: -(void)awakeFromNib
                     18: {
1.4       hyatt      19:     [self newWindow: self];
1.10      hyatt      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"];
1.1       hyatt      34: }
                     35: 
                     36: -(IBAction)newWindow:(id)aSender
                     37: {
1.5       hyatt      38:     BrowserWindowController* controller = [self openBrowserWindowWithURLString:@"about:blank"];
1.4       hyatt      39:     [controller focusURLBar];
                     40: }
                     41: 
                     42: -(IBAction) openFile:(id)aSender
                     43: {
1.5       hyatt      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:     }
1.4       hyatt      64: }
                     65: 
                     66: -(IBAction) openLocation:(id)aSender
                     67: {
                     68:     NSWindow* keyWindow = [mApplication keyWindow];
                     69:     if (!keyWindow) {
1.5       hyatt      70:       [self openBrowserWindowWithURLString: @"about:blank"];
1.4       hyatt      71:       keyWindow = [mApplication keyWindow];
                     72:     }
                     73:     
1.6       macserv    74:     [[keyWindow windowController] performAppropriateLocationAction];
1.1       hyatt      75: }
                     76: 
1.7       hyatt      77: -(IBAction) savePage:(id)aSender
                     78: {
                     79:     NSWindow* keyWindow = [mApplication keyWindow];
                     80:     if (keyWindow)
1.8       hyatt      81:       [[keyWindow windowController] saveDocument: mFilterView filterList: mFilterList];
1.7       hyatt      82: }
                     83: 
1.9       hyatt      84: -(IBAction) printPage:(id)aSender
                     85: {
                     86:     NSWindow* keyWindow = [mApplication keyWindow];
                     87:     if (keyWindow)
                     88:       [[keyWindow windowController] printDocument];
                     89: }
                     90: 
1.7       hyatt      91: -(IBAction) toggleOfflineMode:(id)aSender
                     92: {
1.10      hyatt      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.
1.11      hyatt     110:     [[NSNotificationCenter defaultCenter] postNotificationName:@"offlineModeChanged" object:nil];
1.7       hyatt     111: }
                    112: 
1.13      hyatt     113: // Edit menu actions.
                    114: -(IBAction) doCut:(id)aSender
                    115: {
1.14    ! hyatt     116:     NSWindow* keyWindow = [mApplication keyWindow];
        !           117:     if (keyWindow)
        !           118:       [[keyWindow windowController] doCut];
1.13      hyatt     119: }
                    120: 
                    121: -(IBAction) doCopy:(id)aSender
                    122: {
1.14    ! hyatt     123:     NSWindow* keyWindow = [mApplication keyWindow];
        !           124:     if (keyWindow)
        !           125:       [[keyWindow windowController] doCopy];
1.13      hyatt     126: }
                    127: 
                    128: -(IBAction) doPaste:(id)aSender
                    129: {
1.14    ! hyatt     130:     NSWindow* keyWindow = [mApplication keyWindow];
        !           131:     if (keyWindow)
        !           132:       [[keyWindow windowController] doPaste];
1.13      hyatt     133: }
                    134: 
                    135: -(IBAction) doClear:(id)aSender
                    136: {
1.14    ! hyatt     137:     NSWindow* keyWindow = [mApplication keyWindow];
        !           138:     if (keyWindow)
        !           139:       [[keyWindow windowController] doClear];
1.13      hyatt     140: }
                    141: 
                    142: -(IBAction) doSelectAll:(id)aSender
                    143: {
1.14    ! hyatt     144:     NSWindow* keyWindow = [mApplication keyWindow];
        !           145:     if (keyWindow)
        !           146:       [[keyWindow windowController] doSelectAll];
1.13      hyatt     147: }
                    148: 
                    149: -(IBAction) findInPage:(id)aSender
                    150: {
                    151: 
                    152: }
                    153: 
1.2       hyatt     154: -(IBAction) back:(id)aSender
                    155: {
                    156:     [[[mApplication keyWindow] windowController] back: aSender]; 
                    157: }
                    158: 
                    159: -(IBAction) forward:(id)aSender
                    160: {
                    161:     [[[mApplication keyWindow] windowController] forward: aSender]; 
                    162: }
                    163: 
                    164: -(IBAction) reload:(id)aSender
                    165: {
                    166:     [[[mApplication keyWindow] windowController] reload: aSender]; 
                    167: }
                    168: 
                    169: -(IBAction) stop:(id)aSender
                    170: {
                    171:     [[[mApplication keyWindow] windowController] stop: aSender]; 
                    172: }
                    173: 
                    174: -(IBAction) home:(id)aSender
                    175: {
                    176:     [[[mApplication keyWindow] windowController] home: aSender];
                    177: }
                    178: 
1.5       hyatt     179: -(BrowserWindowController*)openBrowserWindowWithURLString: (NSString*)aURL
                    180: {
                    181:     return [self openBrowserWindowWithURL: [NSURL URLWithString:aURL]];
                    182: }
                    183: 
                    184: -(BrowserWindowController*)openBrowserWindowWithURL: (NSURL*)aURL
1.1       hyatt     185: {
1.3       macserv   186:        BrowserWindowController* browser = [[BrowserWindowController alloc] initWithWindowNibName: @"BrowserWindow"];
1.5       hyatt     187:     [browser loadURL: aURL];
1.3       macserv   188:        [browser showWindow: self];
1.4       hyatt     189:     return browser;
1.1       hyatt     190: }
                    191: 
1.12      hyatt     192: -(void)applicationWillTerminate: (NSNotification*)aNotification
                    193: {
                    194:     nsCocoaBrowserService::TermEmbedding();
                    195: }
1.1       hyatt     196: @end

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