ui/cocoa/toolbar.m

changeset 49
a80ba8741be6
parent 25
78ae3efe463f
child 126
f190d03dce0f
equal deleted inserted replaced
48:0b8ac9d6d473 49:a80ba8741be6
51 name = identifier; 51 name = identifier;
52 stockid = sid; 52 stockid = sid;
53 callback = f; 53 callback = f;
54 userdata = data; 54 userdata = data;
55 groups = NULL; 55 groups = NULL;
56 isToggleButton = NO;
56 return self; 57 return self;
58 }
59
60 - (void) setIsToggleButton:(BOOL)t {
61 isToggleButton = t;
57 } 62 }
58 63
59 - (void) addGroup:(int)group { 64 - (void) addGroup:(int)group {
60 groups = ucx_list_append(groups, (void*)(intptr_t)group); 65 groups = ucx_list_append(groups, (void*)(intptr_t)group);
61 } 66 }
88 [button setImage:s->image]; 93 [button setImage:s->image];
89 } else { 94 } else {
90 [button setImage:[NSImage imageNamed: NSImageNameRemoveTemplate]]; 95 [button setImage:[NSImage imageNamed: NSImageNameRemoveTemplate]];
91 } 96 }
92 [button setBezelStyle: NSTexturedRoundedBezelStyle]; 97 [button setBezelStyle: NSTexturedRoundedBezelStyle];
93 [item setView:button];
94 98
95 // event 99 // event
96 EventWrapper *event = [[EventWrapper alloc] 100 EventWrapper *event = [[EventWrapper alloc]
97 initWithData:userdata callback:callback]; 101 initWithData:userdata callback:callback];
98 [button setAction:@selector(handleEvent:)]; 102 if(isToggleButton) {
103 [button setButtonType: NSPushOnPushOffButton];
104 [button setAction:@selector(handleToggleEvent:)];
105 } else {
106 [button setAction:@selector(handleEvent:)];
107 }
99 [button setTarget:event]; 108 [button setTarget:event];
100 109
101 if(groups) { 110 if(groups) {
102 uic_add_group_widget(obj->ctx, item, groups); 111 uic_add_group_widget(obj->ctx, item, groups);
103 } 112 }
104 113
114 [item setView:button];
105 return item; 115 return item;
106 } 116 }
107 117
108 - (UcxList*) groups { 118 - (UcxList*) groups {
109 return groups; 119 return groups;
208 void ui_toolitem_st(char *name, char *stockid, ui_callback f, void *udata) { 218 void ui_toolitem_st(char *name, char *stockid, ui_callback f, void *udata) {
209 ui_toolitem_stgr(name, stockid, f, udata, -1); 219 ui_toolitem_stgr(name, stockid, f, udata, -1);
210 } 220 }
211 221
212 void ui_toolitem_stgr(char *name, char *stockid, ui_callback f, void *udata, ...) { 222 void ui_toolitem_stgr(char *name, char *stockid, ui_callback f, void *udata, ...) {
223 va_list ap;
224 va_start(ap, udata);
225 ui_toolbar_stock_button(name, stockid, NO, f, udata, ap);
226 va_end(ap);
227 }
228
229 void ui_toolitem_toggle_st(char *name, char *stockid, ui_callback f, void *udata) {
230 ui_toolitem_toggle_stgr(name, stockid, f, udata, -1);
231 }
232
233 void ui_toolitem_toggle_stgr(char *name, char *stockid, ui_callback f, void *udata, ...) {
234 va_list ap;
235 va_start(ap, udata);
236 ui_toolbar_stock_button(name, stockid, YES, f, udata, ap);
237 va_end(ap);
238 }
239
240
241 void ui_toolbar_stock_button(char *name, char *stockid, BOOL toggle, ui_callback f, void *udata, va_list ap) {
213 UiToolbarStockItem *item = [[UiToolbarStockItem alloc] 242 UiToolbarStockItem *item = [[UiToolbarStockItem alloc]
214 initWithIdentifier: name 243 initWithIdentifier: name
215 stockID: stockid 244 stockID: stockid
216 callback: f 245 callback: f
217 userdata: udata]; 246 userdata: udata];
247 [item setIsToggleButton: toggle];
218 NSString *identifier = [[NSString alloc]initWithUTF8String:name]; 248 NSString *identifier = [[NSString alloc]initWithUTF8String:name];
219 [toolbar_delegate addItem: identifier item: item]; 249 [toolbar_delegate addItem: identifier item: item];
220 250
221 // add groups 251 // add groups
222 va_list ap;
223 va_start(ap, udata);
224 int group; 252 int group;
225 while((group = va_arg(ap, int)) != -1) { 253 while((group = va_arg(ap, int)) != -1) {
226 [item addGroup: group]; 254 [item addGroup: group];
227 } 255 }
228 va_end(ap); 256 }
229 } 257
230 258
231 void ui_toolbar_add_default(char *name) { 259 void ui_toolbar_add_default(char *name) {
232 NSString *identifier = [[NSString alloc]initWithUTF8String:name]; 260 NSString *identifier = [[NSString alloc]initWithUTF8String:name];
233 [toolbar_delegate addDefault: identifier]; 261 [toolbar_delegate addDefault: identifier];
234 } 262 }

mercurial