| | 343 | int dirbrowsedlg_execute(void* param) |
| | 344 | { |
| | 345 | GtkWidget *dlg; |
| | 346 | int ret = LC_CANCEL, loop = 1; |
| | 347 | LC_DLG_DIRECTORY_BROWSE_OPTS* opts = (LC_DLG_DIRECTORY_BROWSE_OPTS*)param; |
| | 348 | |
| | 349 | dlg = gtk_file_selection_new(opts->Title); |
| | 350 | gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (((GtkWidget*)(*main_window)))); |
| | 351 | gtk_signal_connect (GTK_OBJECT (dlg), "delete_event", |
| | 352 | GTK_SIGNAL_FUNC (dialog_delete_callback), NULL); |
| | 353 | gtk_signal_connect (GTK_OBJECT (dlg), "destroy", |
| | 354 | GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL); |
| | 355 | gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (dlg)->ok_button), "clicked", |
| | 356 | GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (LC_OK)); |
| | 357 | gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (dlg)->cancel_button), "clicked", |
| | 358 | GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (LC_CANCEL)); |
| | 359 | gtk_object_set_data (GTK_OBJECT (dlg), "loop", &loop); |
| | 360 | gtk_object_set_data (GTK_OBJECT (dlg), "ret", &ret); |
| | 361 | |
| | 362 | gtk_widget_show (dlg); |
| | 363 | gtk_grab_add (dlg); |
| | 364 | |
| | 365 | while (loop) |
| | 366 | gtk_main_iteration (); |
| | 367 | |
| | 368 | if (ret == LC_OK) |
| | 369 | strcpy (opts->Path, gtk_file_selection_get_filename (GTK_FILE_SELECTION (dlg))); |
| | 370 | |
| | 371 | gtk_grab_remove (dlg); |
| | 372 | gtk_widget_destroy (dlg); |
| | 373 | |
| | 374 | return ret; |
| | 375 | } |
| | 376 | |