| 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 } |