ui/cocoa/button.m

Sun, 24 Aug 2025 15:24:16 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sun, 24 Aug 2025 15:24:16 +0200
changeset 109
c3dfcb8f0be7
parent 108
77254bd6dccb
child 112
c3f2f16fa4b8
permissions
-rw-r--r--

update toolkit, remove getvalue func from model to table/listview args

100
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 * Copyright 2024 Olaf Wintermann. All rights reserved.
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #import "button.h"
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30 #import "EventData.h"
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31 #import "Container.h"
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32 #import <objc/runtime.h>
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
34 UIWIDGET ui_button_create(UiObject* obj, UiButtonArgs *args) {
100
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35 NSButton *button = [[NSButton alloc] init];
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
36 if(args->label) {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
37 NSString *label = [[NSString alloc] initWithUTF8String:args->label];
100
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
38 button.title = label;
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
39 }
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
40
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
41 if(args->onclick) {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
42 EventData *event = [[EventData alloc] init:args->onclick userdata:args->onclickdata];
100
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43 event.obj = obj;
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44 button.target = event;
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 button.action = @selector(handleEvent:);
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46 objc_setAssociatedObject(button, "eventdata", event, OBJC_ASSOCIATION_RETAIN);
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 }
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49 UiLayout layout = UI_INIT_LAYOUT(args);
109
c3dfcb8f0be7 update toolkit, remove getvalue func from model to table/listview args
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 108
diff changeset
50 ui_container_add(obj, button, &layout);
100
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
51
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
52 return (__bridge void*)button;
d2bd73d28ff1 update toolkit
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53 }
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
54
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
55
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
56 static void togglebutton_eventdata(id button, UiVar *var, void **eventdata, int *value) {
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
57 NSButton *btn = (NSButton*)button;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
58 NSControlStateValue state = btn.state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
59 *value = (int)state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
60 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
61
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
62 UIWIDGET togglebutton_create(UiObject* obj, UiToggleArgs *args, enum NSButtonType type) {
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
63 NSButton *button = [[NSButton alloc] init];
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
64 [button setButtonType:type];
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
65 //[button setAllowsMixedState:YES];
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
66
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
67 if(args->label) {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
68 NSString *label = [[NSString alloc] initWithUTF8String:args->label];
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
69 button.title = label;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
70 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
71
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
72 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER);
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
73 if(var) {
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
74 UiInteger *i = var->value;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
75 i->obj = (__bridge void*)button;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
76 i->get = ui_togglebutton_get;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
77 i->set = ui_togglebutton_set;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
78 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
79
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
80 if(args->onchange) {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
81 EventData *event = [[EventData alloc] init:args->onchange userdata:args->onchangedata];
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
82 event.get_eventdata = togglebutton_eventdata;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
83 event.obj = obj;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
84 event.var = var;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
85 event.vartype = UI_VAR_INTEGER;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
86 button.target = event;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
87 button.action = @selector(handleEventWithEventData:);
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
88 objc_setAssociatedObject(button, "eventdata", event, OBJC_ASSOCIATION_RETAIN);
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
89 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
90
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
91 UiLayout layout = UI_INIT_LAYOUT(args);
109
c3dfcb8f0be7 update toolkit, remove getvalue func from model to table/listview args
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 108
diff changeset
92 ui_container_add(obj, button, &layout);
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
93
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
94 return (__bridge void*)button;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
95 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
96
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
97 int64_t ui_togglebutton_get(UiInteger *i) {
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
98 NSButton *button = (__bridge NSButton*)i->obj;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
99 NSControlStateValue state = button.state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
100 i->value = (int64_t)state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
101 return (int64_t)state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
102 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
103
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
104 void ui_togglebutton_set(UiInteger *i, int64_t value) {
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
105 NSButton *button = (__bridge NSButton*)i->obj;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
106 NSControlStateValue state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
107 switch(value) {
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
108 case 0: state = NSControlStateValueOff; break;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
109 case 1: state = NSControlStateValueOff; break;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
110 default: state = NSControlStateValueMixed;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
111 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
112 i->value = (int64_t)state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
113 button.state = state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
114 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
115
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
116 UIWIDGET ui_togglebutton_create(UiObject* obj, UiToggleArgs *args) {
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
117 return togglebutton_create(obj, args, NSButtonTypePushOnPushOff);
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
118 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
119
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
120 UIWIDGET ui_checkbox_create(UiObject* obj, UiToggleArgs *args) {
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
121 return togglebutton_create(obj, args, NSButtonTypeSwitch);
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
122 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
123
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
124 static void switch_eventdata(id button, UiVar *var, void **eventdata, int *value) {
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
125 NSSwitch *btn = (NSSwitch*)button;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
126 NSControlStateValue state = btn.state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
127 *value = (int)state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
128 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
129
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
130 UIWIDGET ui_switch_create(UiObject* obj, UiToggleArgs *args) {
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
131 NSSwitch *button = [[NSSwitch alloc] init];
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
132
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
133 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER);
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
134 if(var) {
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
135 UiInteger *i = var->value;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
136 i->obj = (__bridge void*)button;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
137 i->get = ui_switch_get;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
138 i->set = ui_switch_set;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
139 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
140
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
141 if(args->onchange) {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
142 EventData *event = [[EventData alloc] init:args->onchange userdata:args->onchangedata];
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
143 event.get_eventdata = switch_eventdata;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
144 event.obj = obj;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
145 event.var = var;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
146 event.vartype = UI_VAR_INTEGER;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
147 button.target = event;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
148 button.action = @selector(handleEventWithEventData:);
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
149 objc_setAssociatedObject(button, "eventdata", event, OBJC_ASSOCIATION_RETAIN);
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
150 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
151
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
152 UiLayout layout = UI_INIT_LAYOUT(args);
109
c3dfcb8f0be7 update toolkit, remove getvalue func from model to table/listview args
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 108
diff changeset
153 ui_container_add(obj, button, &layout);
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
154
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
155 return (__bridge void*)button;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
156 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
157
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
158 int64_t ui_switch_get(UiInteger *i) {
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
159 NSSwitch *button = (__bridge NSSwitch*)i->obj;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
160 NSControlStateValue state = button.state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
161 i->value = (int64_t)state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
162 return (int64_t)state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
163 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
164
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
165 void ui_switch_set(UiInteger *i, int64_t value) {
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
166 NSSwitch *button = (__bridge NSSwitch*)i->obj;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
167 NSControlStateValue state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
168 switch(value) {
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
169 case 0: state = NSControlStateValueOff; break;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
170 case 1: state = NSControlStateValueOff; break;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
171 default: state = NSControlStateValueMixed;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
172 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
173 i->value = (int64_t)state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
174 button.state = state;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
175 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
176
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
177
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
178 @implementation UiRadioButton
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
179
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
180 - (UiRadioButton*)init {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
181 self = [super init];
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
182 _direct_state = NO;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
183 [self setButtonType:NSButtonTypeRadio];
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
184 return self;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
185 }
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
186
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
187 - (void)setState:(NSControlStateValue)state {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
188 // NOOP
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
189 }
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
190
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
191 @end
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
192
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
193 static void radiobutton_eventdata(id button, UiVar *var, void **eventdata, int *value) {
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
194 if(var) {
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
195 UiInteger *value = var->value;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
196 NSMutableArray *buttons = (__bridge NSMutableArray*)value->obj;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
197 for(UiRadioButton *b in buttons) {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
198 if(b != button) {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
199 b.direct_state = YES;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
200 [[b cell] setState:0];
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
201 b.direct_state = NO;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
202 }
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
203 }
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
204 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
205 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
206
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
207 UIWIDGET ui_radiobutton_create(UiObject* obj, UiToggleArgs *args) {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
208 UiRadioButton *button = [[UiRadioButton alloc] init];
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
209
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
210 if(args->label) {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
211 button.title = [[NSString alloc] initWithUTF8String:args->label];
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
212 }
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
213
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
214 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER);
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
215 button.var = var;
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
216 NSMutableArray *buttons = nil;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
217 if(var) {
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
218 UiInteger *i = var->value;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
219 buttons = (__bridge NSMutableArray*)i->obj;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
220 if(!buttons) {
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
221 buttons = [[NSMutableArray alloc] init];
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
222 i->obj = (__bridge void*)buttons;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
223 i->get = ui_radiobuttons_get;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
224 i->set = ui_radiobuttons_set;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
225 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
226 [buttons addObject:button];
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
227 objc_setAssociatedObject(button, "radiogroup", buttons, OBJC_ASSOCIATION_RETAIN);
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
228 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
229
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
230 if(args->onchange || var) {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
231 EventData *event = [[EventData alloc] init:args->onchange userdata:args->onchangedata];
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
232 event.get_eventdata = radiobutton_eventdata;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
233 event.obj = obj;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
234 event.var = var;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
235 event.vartype = UI_VAR_INTEGER;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
236 button.target = event;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
237
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
238
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
239 button.action = @selector(handleEventWithEventData:);
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
240
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
241 objc_setAssociatedObject(button, "eventdata", event, OBJC_ASSOCIATION_RETAIN);
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
242 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
243
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
244 UiLayout layout = UI_INIT_LAYOUT(args);
109
c3dfcb8f0be7 update toolkit, remove getvalue func from model to table/listview args
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 108
diff changeset
245 ui_container_add(obj, button, &layout);
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
246
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
247 return (__bridge void*)button;
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
248 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
249
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
250 int64_t ui_radiobuttons_get(UiInteger *i) {
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
251 NSMutableArray *buttons = (__bridge NSMutableArray*)i->obj;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
252 int64_t index = 0;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
253 for(UiRadioButton *b in buttons) {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
254 if([b cell].state != 0) {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
255 i->value = index + 1;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
256 break;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
257 }
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
258 index++;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
259 }
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
260 return i->value;
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
261 }
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
262
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
263 void ui_radiobuttons_set(UiInteger *i, int64_t value) {
108
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
264 NSMutableArray *buttons = (__bridge NSMutableArray*)i->obj;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
265 int64_t index = 1;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
266 for(UiRadioButton *b in buttons) {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
267 if(index == value) {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
268 [b cell].state = NSControlStateValueOn;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
269 } else {
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
270 [b cell].state = NSControlStateValueOff;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
271 }
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
272 index++;
77254bd6dccb update toolkit, adjust UI code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 102
diff changeset
273 }
102
64ded9f6a6c6 update libs (ucx, toolkit, libidav)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 100
diff changeset
274 }

mercurial