ui/cocoa/text.m

changeset 108
77254bd6dccb
parent 103
6606616eca9f
child 109
c3dfcb8f0be7
equal deleted inserted replaced
107:b34bd1557c6c 108:77254bd6dccb
29 #import "text.h" 29 #import "text.h"
30 #import "EventData.h" 30 #import "EventData.h"
31 #import "Container.h" 31 #import "Container.h"
32 #import <objc/runtime.h> 32 #import <objc/runtime.h>
33 33
34 UIWIDGET ui_textarea_create(UiObject *obj, UiTextAreaArgs args) { 34 UIWIDGET ui_textarea_create(UiObject *obj, UiTextAreaArgs *args) {
35 NSTextView *textview = [[NSTextView alloc] init]; 35 NSTextView *textview = [[NSTextView alloc] init];
36 textview.autoresizingMask = NSViewWidthSizable; 36 textview.autoresizingMask = NSViewWidthSizable;
37 textview.minSize = NSMakeSize(0, 0); 37 textview.minSize = NSMakeSize(0, 0);
38 textview.maxSize = NSMakeSize(FLT_MAX, FLT_MAX); 38 textview.maxSize = NSMakeSize(FLT_MAX, FLT_MAX);
39 39
42 scrollview.documentView = textview; 42 scrollview.documentView = textview;
43 43
44 UiLayout layout = UI_INIT_LAYOUT(args); 44 UiLayout layout = UI_INIT_LAYOUT(args);
45 ui_container_add(obj, scrollview, &layout, TRUE); 45 ui_container_add(obj, scrollview, &layout, TRUE);
46 46
47
48 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_TEXT);
49 if(var) {
50 UiText *text = var->value;
51 text->obj = (__bridge void*)textview;
52 ui_textarea_restore(text);
53
54 text->save = ui_textarea_save;
55 text->destroy = ui_textarea_destroy;
56 text->restore = ui_textarea_restore;
57 text->set = ui_textarea_set;
58 text->get = ui_textarea_get;
59 text->getsubstr = ui_textarea_getsubstr;
60 text->insert = ui_textarea_insert;
61 text->setposition = ui_textarea_setposition;
62 text->position = ui_textarea_position;
63 text->setselection = ui_textarea_setselection;
64 text->selection = ui_textarea_selection;
65 text->length = ui_textarea_length;
66 text->remove = ui_textarea_remove;
67 }
68
47 return (__bridge void*)scrollview; 69 return (__bridge void*)scrollview;
48 } 70 }
71
72
73
74
75 void ui_textarea_save(UiText *text) {
76
77 }
78
79 void ui_textarea_destroy(UiText *text) {
80 (void)(__bridge_transfer NSTextStorage*)text->data1;
81 }
82
83 void ui_textarea_restore(UiText *text) {
84 NSTextView *textview = (__bridge NSTextView*)text->obj;
85 NSTextStorage *textStorage;
86 if(text->data1) {
87 textStorage = (__bridge NSTextStorage*)text->data1;
88
89 } else {
90 textStorage = [[NSTextStorage alloc] init];
91 }
92 [textview.layoutManager replaceTextStorage:textStorage];
93 text->data1 = (__bridge_retained void*)textStorage;
94 }
95
96 void ui_textarea_set(UiText *text, const char *str) {
97
98 }
99
100 char* ui_textarea_get(UiText *text) {
101 return NULL;
102 }
103
104 char* ui_textarea_getsubstr(UiText *text, int begin, int end) {
105 return NULL;
106 }
107
108 void ui_textarea_insert(UiText *text, int pos, char *str) {
109
110 }
111
112 void ui_textarea_setposition(UiText *text, int pos) {
113
114 }
115
116 int ui_textarea_position(UiText *text) {
117 return 0;
118 }
119
120 void ui_textarea_setselection(UiText *text, int begin, int end) {
121
122 }
123
124 void ui_textarea_selection(UiText *text, int *begin, int *end) {
125
126 }
127
128 int ui_textarea_length(UiText *text) {
129 return 0;
130 }
131
132 void ui_textarea_remove(UiText *text, int begin, int end) {
133
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