diff -r 794a5c91c479 -r c96169444d88 ui/cocoa/toolkit.m --- a/ui/cocoa/toolkit.m Sun Apr 06 13:21:37 2014 +0200 +++ b/ui/cocoa/toolkit.m Thu Apr 10 11:37:41 2014 +0200 @@ -45,14 +45,20 @@ static char *application_name; -static ui_callback appclose_fnc; -static void *appclose_udata; +static ui_callback appclose_fnc; +static void *appclose_udata; + +static ui_callback openfile_fnc; +static void *openfile_udata; void ui_init(char *appname, int argc, char **argv) { pool = [[NSAutoreleasePool alloc] init]; [NSApplication sharedApplication]; [NSBundle loadNibNamed:@"MainMenu" owner:NSApp]; + UiApplicationDelegate *delegate = [[UiApplicationDelegate alloc]init]; + [NSApp setDelegate: delegate]; + uic_docmgr_init(); ui_menu_init(); @@ -66,6 +72,16 @@ return application_name; } +void ui_exitfunc(ui_callback f, void *userdata) { + appclose_fnc = f; + appclose_udata = userdata; +} + +void ui_openfilefunc(ui_callback f, void *userdata) { + openfile_fnc = f; + openfile_udata = userdata; +} + void ui_show(UiObject *obj) { uic_check_group_widgets(obj->ctx); if([obj->widget class] == [UiCocoaWindow class]) { @@ -115,6 +131,37 @@ } } + +@implementation UiApplicationDelegate + +- (void)applicationWillTerminate:(NSNotification*)notification { + printf("terminate\n"); +} + +- (BOOL)applicationShouldHandleReopen:(NSApplication *)app hasVisibleWindows:(BOOL)visible; { + if(!visible) { + printf("reopen\n"); + } + return NO; +} + +- (BOOL)application:(NSApplication*)application openFile:(NSString*)filename { + if(openfile_fnc) { + UiEvent event; + event.obj = NULL; + event.document = NULL; + event.window = NULL; + event.eventdata = (void*)[filename UTF8String]; + event.intval = 0; + openfile_fnc(&event, openfile_udata); + } + + return NO; +} + +@end + + @implementation EventWrapper - (EventWrapper*) initWithData: (void*)d callback:(ui_callback) f {