diff options
author | Sven Weidauer <sven.weidauer@gmail.com> | 2011-01-27 09:01:16 +0000 |
---|---|---|
committer | Sven Weidauer <sven.weidauer@gmail.com> | 2011-01-27 09:01:16 +0000 |
commit | 73885bf3d0e6ff5438a4d2140dcc29dea924912a (patch) | |
tree | 9f8a58e30a8697e38ae07c74ad7df068516b906a /cocoa | |
parent | 07fb8a93b1c00e65a25b1816a25a34f568bbe596 (diff) | |
download | netsurf-73885bf3d0e6ff5438a4d2140dcc29dea924912a.tar.gz netsurf-73885bf3d0e6ff5438a4d2140dcc29dea924912a.tar.bz2 |
Moved main() and related functions from gui.m to NetsurfApp.m
svn path=/trunk/netsurf/; revision=11506
Diffstat (limited to 'cocoa')
-rw-r--r-- | cocoa/NetsurfApp.m | 91 | ||||
-rw-r--r-- | cocoa/gui.h | 5 | ||||
-rw-r--r-- | cocoa/gui.m | 80 |
3 files changed, 96 insertions, 80 deletions
diff --git a/cocoa/NetsurfApp.m b/cocoa/NetsurfApp.m index 245302962..bcf29edcd 100644 --- a/cocoa/NetsurfApp.m +++ b/cocoa/NetsurfApp.m @@ -44,6 +44,8 @@ #define NETSURF_HOMEPAGE "http://www.netsurf-browser.org/welcome/" #endif +static NSString *cocoa_get_user_path( NSString *fileName ) ; + @implementation NetSurfApp - (void) loadOptions; @@ -99,3 +101,92 @@ } @end + +#pragma mark - + +static char *cocoa_get_resource_url( NSString *name, NSString *type ) +{ + NSString *path = [[NSBundle mainBundle] pathForResource: name ofType: type]; + return strdup( [[[NSURL fileURLWithPath: path] absoluteString] UTF8String] ); +} + +static NSString *cocoa_get_preferences_path( void ) +{ + NSArray *paths = NSSearchPathForDirectoriesInDomains( NSApplicationSupportDirectory, NSUserDomainMask, YES ); + NSCAssert( [paths count] >= 1, @"Where is the application support directory?" ); + + NSString *netsurfPath = [[paths objectAtIndex: 0] stringByAppendingPathComponent: @"NetSurf"]; + + NSFileManager *fm = [NSFileManager defaultManager]; + BOOL isDirectory = NO; + BOOL exists = [fm fileExistsAtPath: netsurfPath isDirectory: &isDirectory]; + + if (!exists) { + exists = [fm createDirectoryAtPath: netsurfPath attributes: nil]; + isDirectory = YES; + } + if (!(exists && isDirectory)) { + die( "Cannot create netsurf preferences directory" ); + } + + return netsurfPath; +} + +static NSString *cocoa_get_user_path( NSString *fileName ) +{ + return [cocoa_get_preferences_path() stringByAppendingPathComponent: fileName]; +} + +static const char *cocoa_get_options_file( void ) +{ + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + [defaults registerDefaults: [NSDictionary dictionaryWithObjectsAndKeys: + cocoa_get_user_path( @"Options" ), kOptionsFileOption, + nil]]; + + return [[defaults objectForKey: kOptionsFileOption] UTF8String]; +} + +static NSApplication *cocoa_prepare_app( void ) +{ + if (NSApp != nil) return NSApp; + + NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; + Class principalClass = NSClassFromString([infoDictionary objectForKey:@"NSPrincipalClass"]); + NSCAssert([principalClass respondsToSelector:@selector(sharedApplication)], @"Principal class must implement sharedApplication."); + [principalClass sharedApplication]; + + NSString *mainNibName = [infoDictionary objectForKey:@"NSMainNibFile"]; + NSNib *mainNib = [[NSNib alloc] initWithNibNamed:mainNibName bundle:[NSBundle mainBundle]]; + [mainNib instantiateNibWithOwner:NSApp topLevelObjects:nil]; + [mainNib release]; + + return NSApp; +} + +void cocoa_autorelease( void ) +{ + static NSAutoreleasePool *pool = nil; + [pool release]; + pool = [[NSAutoreleasePool alloc] init]; +} + +int main( int argc, char **argv ) +{ + cocoa_autorelease(); + + default_stylesheet_url = cocoa_get_resource_url( @"default", @"css" ); + quirks_stylesheet_url = cocoa_get_resource_url( @"quirks", @"css" ); + adblock_stylesheet_url = cocoa_get_resource_url( @"adblock", @"css" ); + + const char * const messages = [[[NSBundle mainBundle] pathForResource: @"Messages" ofType: @""] UTF8String]; + const char * const options = cocoa_get_options_file(); + + netsurf_init(&argc, &argv, options, messages); + + [cocoa_prepare_app() run]; + + netsurf_exit(); + + return 0; +} diff --git a/cocoa/gui.h b/cocoa/gui.h index ba72456fa..df2c23fde 100644 --- a/cocoa/gui.h +++ b/cocoa/gui.h @@ -18,9 +18,10 @@ #import <Cocoa/Cocoa.h> -NSString *cocoa_get_user_path( NSString *fileName ); - extern NSString * const kCookiesFileOption; extern NSString * const kURLsFileOption; extern NSString * const kHotlistFileOption; extern NSString * const kHomepageURLOption; +extern NSString * const kOptionsFileOption; + +void cocoa_autorelease( void ); diff --git a/cocoa/gui.m b/cocoa/gui.m index f6c0870e3..1c7105731 100644 --- a/cocoa/gui.m +++ b/cocoa/gui.m @@ -43,6 +43,7 @@ NSString * const kCookiesFileOption = @"CookiesFile"; NSString * const kURLsFileOption = @"URLsFile"; NSString * const kHotlistFileOption = @"Hotlist"; NSString * const kHomepageURLOption = @"HomepageURL"; +NSString * const kOptionsFileOption = @"ClassicOptionsFile"; #define UNIMPL() NSLog( @"Function '%s' unimplemented", __func__ ) @@ -51,11 +52,9 @@ void gui_multitask(void) // nothing to do } -static NSAutoreleasePool *gui_pool = nil; void gui_poll(bool active) { - [gui_pool release]; - gui_pool = [[NSAutoreleasePool alloc] init]; + cocoa_autorelease(); NSEvent *event = [NSApp nextEventMatchingMask: NSAnyEventMask untilDate: active ? nil : [NSDate distantFuture] inMode: NSDefaultRunLoopMode dequeue: YES]; @@ -353,78 +352,3 @@ void gui_401login_open(const char *url, const char *realm, cb( false, cbpw ); } -static char *gui_get_resource_url( NSString *name, NSString *type ) -{ - NSString *path = [[NSBundle mainBundle] pathForResource: name ofType: type]; - return strdup( [[[NSURL fileURLWithPath: path] absoluteString] UTF8String] ); -} - -static NSString *cocoa_get_preferences_path( void ) -{ - NSArray *paths = NSSearchPathForDirectoriesInDomains( NSApplicationSupportDirectory, NSUserDomainMask, YES ); - NSCAssert( [paths count] >= 1, @"Where is the application support directory?" ); - - NSString *netsurfPath = [[paths objectAtIndex: 0] stringByAppendingPathComponent: @"NetSurf"]; - - NSFileManager *fm = [NSFileManager defaultManager]; - BOOL isDirectory = NO; - BOOL exists = [fm fileExistsAtPath: netsurfPath isDirectory: &isDirectory]; - - if (!exists) { - exists = [fm createDirectoryAtPath: netsurfPath attributes: nil]; - isDirectory = YES; - } - if (!(exists && isDirectory)) { - die( "Cannot create netsurf preferences directory" ); - } - - return netsurfPath; -} - -NSString *cocoa_get_user_path( NSString *fileName ) -{ - return [cocoa_get_preferences_path() stringByAppendingPathComponent: fileName]; -} - -NSString * const kClassicOptionsFile = @"ClassicOptionsFile"; - -static const char *cocoa_get_options_file( void ) -{ - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - [defaults registerDefaults: [NSDictionary dictionaryWithObjectsAndKeys: - cocoa_get_user_path( @"Options" ), kClassicOptionsFile, - nil]]; - - return [[defaults objectForKey: kClassicOptionsFile] UTF8String]; -} - -int main( int argc, char **argv ) -{ - gui_pool = [[NSAutoreleasePool alloc] init]; - - const char * const messages = [[[NSBundle mainBundle] pathForResource: @"Messages" ofType: @""] UTF8String]; - const char * const options = cocoa_get_options_file(); - default_stylesheet_url = gui_get_resource_url( @"default", @"css" ); - quirks_stylesheet_url = gui_get_resource_url( @"quirks", @"css" ); - adblock_stylesheet_url = gui_get_resource_url( @"adblock", @"css" ); - - /* initialise netsurf */ - netsurf_init(&argc, &argv, options, messages); - - NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; - Class principalClass = NSClassFromString([infoDictionary objectForKey:@"NSPrincipalClass"]); - NSCAssert([principalClass respondsToSelector:@selector(sharedApplication)], @"Principal class must implement sharedApplication."); - [principalClass sharedApplication]; - - NSString *mainNibName = [infoDictionary objectForKey:@"NSMainNibFile"]; - NSNib *mainNib = [[NSNib alloc] initWithNibNamed:mainNibName bundle:[NSBundle mainBundle]]; - [mainNib instantiateNibWithOwner:NSApp topLevelObjects:nil]; - [mainNib release]; - - [NSApp run]; - - netsurf_exit(); - - return 0; -} - |