ui/cocoa/Toolbar.m

changeset 678
5a6edc92c7d9
parent 677
04bcb1930fbf
child 687
d43b4fcd3d8c
equal deleted inserted replaced
677:04bcb1930fbf 678:5a6edc92c7d9
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE. 26 * POSSIBILITY OF SUCH DAMAGE.
27 */ 27 */
28 28
29 #import "Toolbar.h" 29 #import "Toolbar.h"
30 #import "EventData.h"
31 #import <objc/runtime.h>
30 32
31 #include "../common/toolbar.h" 33 #include "../common/toolbar.h"
34
32 35
33 void ui_toolbar_init(void) { 36 void ui_toolbar_init(void) {
34 37
35 } 38 }
36 39
93 } 96 }
94 97
95 switch(item->type) { 98 switch(item->type) {
96 default: return nil; 99 default: return nil;
97 case UI_TOOLBAR_ITEM: { 100 case UI_TOOLBAR_ITEM: {
98 NSToolbarItem *tbItem = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; 101 return ui_nstoolbaritem_create_item(_obj, (UiToolbarItem*)item, itemIdentifier);
99 [tbItem setLabel: @"Test"]; 102 }
100 return tbItem; 103 case UI_TOOLBAR_TOGGLEITEM: {
101 break; 104 return ui_nstoolbaritem_create_toggle(_obj, (UiToolbarToggleItem*)item, itemIdentifier);
102 } 105 }
103 } 106 }
104 107
105 return nil; 108 return nil;
106 } 109 }
107 110
108 @end 111 @end
112
113 NSToolbarItem* ui_nstoolbaritem_create_item(UiObject *obj, UiToolbarItem *item, NSString *identifier) {
114 NSToolbarItem *tbItem = [[NSToolbarItem alloc] initWithItemIdentifier: identifier];
115
116 NSButton *button = [[NSButton alloc] init];
117 tbItem.view = button;
118
119 if(item->args.label) {
120 NSString *label = [[NSString alloc] initWithUTF8String:item->args.label];
121 [tbItem setLabel:label];
122 if(!item->args.icon) {
123 button.title = label;
124 }
125 }
126 if(item->args.icon) {
127 button.image = [NSImage imageNamed: [[NSString alloc] initWithUTF8String:item->args.icon]];
128 }
129
130 if(item->args.onclick) {
131 EventData *event = [[EventData alloc] init:item->args.onclick userdata:item->args.onclickdata];
132 event.obj = obj;
133 button.target = event;
134 button.action = @selector(handleEvent:);
135 objc_setAssociatedObject(button, "eventdata", event, OBJC_ASSOCIATION_RETAIN);
136 }
137 return tbItem;
138 }
139
140 NSToolbarItem* ui_nstoolbaritem_create_toggle(UiObject *obj, UiToolbarToggleItem *item, NSString *identifier) {
141 NSToolbarItem *tbItem = [[NSToolbarItem alloc] initWithItemIdentifier: identifier];
142 if(item->args.label) {
143 NSString *label = [[NSString alloc] initWithUTF8String:item->args.label];
144 [tbItem setLabel:label];
145 }
146 return tbItem;
147 }

mercurial