| 130 } |
130 } |
| 131 |
131 |
| 132 void ui_textarea_remove(UiText *text, int begin, int end) { |
132 void ui_textarea_remove(UiText *text, int begin, int end) { |
| 133 |
133 |
| 134 } |
134 } |
| |
135 |
| |
136 |
| |
137 |
| |
138 /* -------------------------- TextField -------------------------- */ |
| |
139 |
| |
140 static UIWIDGET textfield_create(UiObject *obj, UiTextFieldArgs args, BOOL password, BOOL frameless) { |
| |
141 NSTextField *textfield; |
| |
142 if(password) { |
| |
143 textfield = [[NSSecureTextField alloc] init]; |
| |
144 } else { |
| |
145 textfield = [[NSTextField alloc] init]; |
| |
146 } |
| |
147 |
| |
148 if(frameless) { |
| |
149 [textfield setBezeled: NO]; |
| |
150 } |
| |
151 |
| |
152 UiLayout layout = UI_INIT_LAYOUT(args); |
| |
153 ui_container_add(obj, textfield, &layout, FALSE); |
| |
154 |
| |
155 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_STRING); |
| |
156 if(var) { |
| |
157 UiString *s = var->value; |
| |
158 if(s->value.ptr) { |
| |
159 textfield.stringValue = [[NSString alloc] initWithUTF8String:s->value.ptr]; |
| |
160 if(s->value.free) { |
| |
161 s->value.free(s->value.ptr); |
| |
162 } |
| |
163 } |
| |
164 s->obj = (__bridge void*)textfield; |
| |
165 s->get = ui_textfield_get; |
| |
166 s->set = ui_textfield_set; |
| |
167 } |
| |
168 |
| |
169 return (__bridge void*)textfield; |
| |
170 } |
| |
171 |
| |
172 UIWIDGET ui_textfield_create(UiObject *obj, UiTextFieldArgs args) { |
| |
173 return textfield_create(obj, args, FALSE, FALSE); |
| |
174 } |
| |
175 |
| |
176 UIWIDGET ui_frameless_textfield_create(UiObject* obj, UiTextFieldArgs args) { |
| |
177 return textfield_create(obj, args, FALSE, TRUE); |
| |
178 } |
| |
179 |
| |
180 UIWIDGET ui_passwordfield_create(UiObject* obj, UiTextFieldArgs args) { |
| |
181 return textfield_create(obj, args, TRUE, FALSE); |
| |
182 } |
| |
183 |
| |
184 char* ui_textfield_get(UiString *s) { |
| |
185 NSTextField *textfield = (__bridge NSTextField*)s->obj; |
| |
186 NSString *str = textfield.stringValue; |
| |
187 const char *cstr = str.UTF8String; |
| |
188 if(s->value.free) { |
| |
189 s->value.free(s->value.ptr); |
| |
190 } |
| |
191 s->value.ptr = strdup(cstr); |
| |
192 s->value.free = free; |
| |
193 return s->value.ptr; |
| |
194 } |
| |
195 |
| |
196 void ui_textfield_set(UiString *s, const char *value) { |
| |
197 if(s->value.free) { |
| |
198 s->value.free(s->value.ptr); |
| |
199 } |
| |
200 s->value.ptr = NULL; |
| |
201 s->value.free = NULL; |
| |
202 NSTextField *textfield = (__bridge NSTextField*)s->obj; |
| |
203 textfield.stringValue = [[NSString alloc] initWithUTF8String:value]; |
| |
204 } |