ui/cocoa/toolbar.m

changeset 25
78ae3efe463f
parent 23
decc6bf584aa
child 49
a80ba8741be6
equal deleted inserted replaced
24:06bceda81a03 25:78ae3efe463f
27 */ 27 */
28 28
29 #import <stdio.h> 29 #import <stdio.h>
30 #import <stdlib.h> 30 #import <stdlib.h>
31 #import <string.h> 31 #import <string.h>
32 #import <inttypes.h>
33 #import <stdarg.h>
32 34
33 #import "toolbar.h" 35 #import "toolbar.h"
36 #import "window.h"
34 #import "stock.h" 37 #import "stock.h"
35 38
36 39
37 static UiToolbarDelegate* toolbar_delegate; 40 static UiToolbarDelegate* toolbar_delegate;
38 41
47 { 50 {
48 name = identifier; 51 name = identifier;
49 stockid = sid; 52 stockid = sid;
50 callback = f; 53 callback = f;
51 userdata = data; 54 userdata = data;
55 groups = NULL;
52 return self; 56 return self;
57 }
58
59 - (void) addGroup:(int)group {
60 groups = ucx_list_append(groups, (void*)(intptr_t)group);
53 } 61 }
54 62
55 63
56 - (NSToolbarItem *) createItem:(NSToolbar*)toolbar 64 - (NSToolbarItem *) createItem:(NSToolbar*)toolbar
57 identifier:(NSString*)identifier 65 identifier:(NSString*)identifier
66 object:(UiObject*)obj
58 { 67 {
59 UiStockItem *s = ui_get_stock_item(stockid); 68 UiStockItem *s = ui_get_stock_item(stockid);
60 if(s == nil) { 69 if(s == nil) {
61 printf("cannot find stock item\n"); 70 printf("cannot find stock item\n");
62 return nil; 71 return nil;
87 EventWrapper *event = [[EventWrapper alloc] 96 EventWrapper *event = [[EventWrapper alloc]
88 initWithData:userdata callback:callback]; 97 initWithData:userdata callback:callback];
89 [button setAction:@selector(handleEvent:)]; 98 [button setAction:@selector(handleEvent:)];
90 [button setTarget:event]; 99 [button setTarget:event];
91 100
101 if(groups) {
102 uic_add_group_widget(obj->ctx, item, groups);
103 }
104
92 return item; 105 return item;
106 }
107
108 - (UcxList*) groups {
109 return groups;
93 } 110 }
94 111
95 @end 112 @end
96 113
97 114
154 itemForItemIdentifier:(NSString*)identifier 171 itemForItemIdentifier:(NSString*)identifier
155 willBeInsertedIntoToolbar:(BOOL)flag 172 willBeInsertedIntoToolbar:(BOOL)flag
156 { 173 {
157 Protocol *item = @protocol(UiToolItem); 174 Protocol *item = @protocol(UiToolItem);
158 item = [items objectForKey: identifier]; 175 item = [items objectForKey: identifier];
159 return [item createItem:toolbar identifier:identifier]; 176
177 // get UiObject from toolbar
178 UiObject *obj = [(UiToolbar*)toolbar object];
179
180 // create new NSToolbarItem
181 return [item createItem:toolbar identifier:identifier object:obj];
182 }
183
184 @end
185
186
187 @implementation UiToolbar
188
189 - (UiToolbar*) initWithObject:(UiObject*)object {
190 [self initWithIdentifier: @"MainToolbar"];
191 obj = object;
192 return self;
193 }
194
195 - (UiObject*) object {
196 return obj;
160 } 197 }
161 198
162 @end 199 @end
163 200
164 201
167 void ui_toolbar_init() { 204 void ui_toolbar_init() {
168 toolbar_delegate = [[UiToolbarDelegate alloc]init]; 205 toolbar_delegate = [[UiToolbarDelegate alloc]init];
169 } 206 }
170 207
171 void ui_toolitem_st(char *name, char *stockid, ui_callback f, void *udata) { 208 void ui_toolitem_st(char *name, char *stockid, ui_callback f, void *udata) {
209 ui_toolitem_stgr(name, stockid, f, udata, -1);
210 }
211
212 void ui_toolitem_stgr(char *name, char *stockid, ui_callback f, void *udata, ...) {
172 UiToolbarStockItem *item = [[UiToolbarStockItem alloc] 213 UiToolbarStockItem *item = [[UiToolbarStockItem alloc]
173 initWithIdentifier: name 214 initWithIdentifier: name
174 stockID: stockid 215 stockID: stockid
175 callback: f 216 callback: f
176 userdata: udata]; 217 userdata: udata];
177 NSString *identifier = [[NSString alloc]initWithUTF8String:name]; 218 NSString *identifier = [[NSString alloc]initWithUTF8String:name];
178 [toolbar_delegate addItem: identifier item: item]; 219 [toolbar_delegate addItem: identifier item: item];
220
221 // add groups
222 va_list ap;
223 va_start(ap, udata);
224 int group;
225 while((group = va_arg(ap, int)) != -1) {
226 [item addGroup: group];
227 }
228 va_end(ap);
179 } 229 }
180 230
181 void ui_toolbar_add_default(char *name) { 231 void ui_toolbar_add_default(char *name) {
182 NSString *identifier = [[NSString alloc]initWithUTF8String:name]; 232 NSString *identifier = [[NSString alloc]initWithUTF8String:name];
183 [toolbar_delegate addDefault: identifier]; 233 [toolbar_delegate addDefault: identifier];
184 } 234 }
185 235
186 NSToolbar* ui_create_toolbar() { 236 NSToolbar* ui_create_toolbar(UiObject *obj) {
187 NSToolbar *toolbar = [[NSToolbar alloc]initWithIdentifier: @"MainToolbar"]; 237 UiToolbar *toolbar = [[UiToolbar alloc] initWithObject:obj];
188 [toolbar setDelegate: toolbar_delegate]; 238 [toolbar setDelegate: toolbar_delegate];
189 [toolbar setAllowsUserCustomization: true]; 239 [toolbar setAllowsUserCustomization: true];
190 return toolbar; 240 return toolbar;
191 } 241 }
192 242

mercurial