ui/cocoa/window.m

changeset 750
7b627710c155
parent 724
ba7a2f7675b9
child 751
41286f7f8433
equal deleted inserted replaced
749:0f052f6f532c 750:7b627710c155
152 file_selected_callback(&event, cbdata); 152 file_selected_callback(&event, cbdata);
153 } 153 }
154 ui_filelist_free(flist); 154 ui_filelist_free(flist);
155 }]; 155 }];
156 } 156 }
157
158 /* ------------------------------------- Dialog ------------------------------------- */
159
160 void ui_dialog_create(UiObject *parent, UiDialogArgs *args) {
161 NSAlert *dialog = [[NSAlert alloc] init];
162
163 if(args->title) {
164 dialog.messageText = [[NSString alloc]initWithUTF8String:args->title];
165 }
166 if(args->content) {
167 dialog.informativeText = [[NSString alloc]initWithUTF8String:args->content];
168 }
169 NSTextField *textfield = nil;
170 if(args->input) {
171 NSRect frame = NSMakeRect(0,0,300,22);
172 textfield = args->password ? [[NSSecureTextField alloc] initWithFrame:frame] : [[NSTextField alloc]initWithFrame:frame];
173 if(args->input_value) {
174 textfield.stringValue = [[NSString alloc]initWithUTF8String:args->input_value];
175 }
176 dialog.accessoryView = textfield;
177 }
178
179 int b = 0;
180 int b1 = -1;
181 int b2 = -1;
182 if(args->button1_label) {
183 [dialog addButtonWithTitle:[[NSString alloc]initWithUTF8String:args->button1_label]];
184 b1 = b++;
185 }
186 if(args->button2_label) {
187 [dialog addButtonWithTitle:[[NSString alloc]initWithUTF8String:args->button2_label]];
188 b2 = b;
189 }
190 if(args->closebutton_label) {
191 [dialog addButtonWithTitle:[[NSString alloc]initWithUTF8String:args->closebutton_label]];
192 }
193
194 ui_callback callback = args->result;
195 void *userdata = args->resultdata;
196
197 NSWindow *window = (__bridge NSWindow*)parent->wobj;
198 [dialog beginSheetModalForWindow:window completionHandler:^(NSModalResponse returnCode) {
199 UiEvent event;
200 event.obj = parent;
201 event.window = event.obj->window;
202 event.document = event.obj->ctx->document;
203 event.eventdata = NULL;
204 event.eventdatatype = 0;
205 event.set = 0;
206 event.intval = 0;
207
208 long ret = returnCode - NSAlertFirstButtonReturn;
209 if(ret == b1) {
210 event.intval = 1;
211 } else if(ret == b2) {
212 event.intval = 2;
213 }
214
215 NSString *value = nil;
216 if(textfield) {
217 value = textfield.stringValue;
218 event.eventdata = (void*)value.UTF8String;
219 event.eventdatatype = UI_EVENT_DATA_STRING;
220 }
221
222 if(callback) {
223 callback(&event, userdata);
224 }
225 }];
226
227 }

mercurial