ui/cocoa/text.m

changeset 590
07ecff1fa805
parent 584
12cca226c1eb
child 603
8d2b7b934230
equal deleted inserted replaced
589:4d86050ad6ff 590:07ecff1fa805
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 }

mercurial