void rdiswindow_load (GtkMenuItem * menuItem, struct _rdiswindow * rdiswindow) { GtkWidget * dialog; dialog = gtk_file_chooser_dialog_new(LANG_LOADEXECFILE, GTK_WINDOW(rdiswindow->window), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { char * filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); char tmp[256]; _loader * loader = loader_create(filename); if (loader == NULL) snprintf(tmp, 256, "failed to load executable %s", filename); else { struct _rdis * rdis; rdis = rdis_create_with_console(loader, (void (*) (void *, const char *)) gui_console, rdiswindow->gui); gui_close_windows(rdiswindow->gui); gui_set_rdis(rdiswindow->gui, rdis); snprintf(tmp, 256, "loaded executable %s", filename); } gui_console(rdiswindow->gui, tmp); g_free(filename); } gtk_widget_destroy(dialog); }
struct _rdis * rdis_create (_loader * loader) { return rdis_create_with_console(loader, NULL, NULL); }