diff -r 0b8ac9d6d473 -r a80ba8741be6 ui/cocoa/toolbar.m --- a/ui/cocoa/toolbar.m Mon May 19 21:15:43 2014 +0200 +++ b/ui/cocoa/toolbar.m Tue May 20 13:29:53 2014 +0200 @@ -53,9 +53,14 @@ callback = f; userdata = data; groups = NULL; + isToggleButton = NO; return self; } +- (void) setIsToggleButton:(BOOL)t { + isToggleButton = t; +} + - (void) addGroup:(int)group { groups = ucx_list_append(groups, (void*)(intptr_t)group); } @@ -90,18 +95,23 @@ [button setImage:[NSImage imageNamed: NSImageNameRemoveTemplate]]; } [button setBezelStyle: NSTexturedRoundedBezelStyle]; - [item setView:button]; // event EventWrapper *event = [[EventWrapper alloc] initWithData:userdata callback:callback]; - [button setAction:@selector(handleEvent:)]; + if(isToggleButton) { + [button setButtonType: NSPushOnPushOffButton]; + [button setAction:@selector(handleToggleEvent:)]; + } else { + [button setAction:@selector(handleEvent:)]; + } [button setTarget:event]; if(groups) { uic_add_group_widget(obj->ctx, item, groups); } + [item setView:button]; return item; } @@ -210,24 +220,42 @@ } void ui_toolitem_stgr(char *name, char *stockid, ui_callback f, void *udata, ...) { + va_list ap; + va_start(ap, udata); + ui_toolbar_stock_button(name, stockid, NO, f, udata, ap); + va_end(ap); +} + +void ui_toolitem_toggle_st(char *name, char *stockid, ui_callback f, void *udata) { + ui_toolitem_toggle_stgr(name, stockid, f, udata, -1); +} + +void ui_toolitem_toggle_stgr(char *name, char *stockid, ui_callback f, void *udata, ...) { + va_list ap; + va_start(ap, udata); + ui_toolbar_stock_button(name, stockid, YES, f, udata, ap); + va_end(ap); +} + + +void ui_toolbar_stock_button(char *name, char *stockid, BOOL toggle, ui_callback f, void *udata, va_list ap) { UiToolbarStockItem *item = [[UiToolbarStockItem alloc] initWithIdentifier: name stockID: stockid callback: f userdata: udata]; + [item setIsToggleButton: toggle]; NSString *identifier = [[NSString alloc]initWithUTF8String:name]; [toolbar_delegate addItem: identifier item: item]; // add groups - va_list ap; - va_start(ap, udata); int group; while((group = va_arg(ap, int)) != -1) { [item addGroup: group]; } - va_end(ap); } + void ui_toolbar_add_default(char *name) { NSString *identifier = [[NSString alloc]initWithUTF8String:name]; [toolbar_delegate addDefault: identifier];