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 |