void ui_cartridge_save_dialog(int type) { gint res; char *name; if (cartridge_dialog) { gdk_window_show(gtk_widget_get_window(cartridge_dialog)); gdk_window_raise(gtk_widget_get_window(cartridge_dialog)); gtk_widget_show(cartridge_dialog); } else { uilib_file_filter_enum_t filter = UILIB_FILTER_ALL; cartridge_dialog = vice_file_entry(_("Save cartridge image"), NULL, NULL, &filter, 1, UI_FC_SAVE); g_signal_connect(G_OBJECT(cartridge_dialog), "destroy", G_CALLBACK(gtk_widget_destroyed), &cartridge_dialog); } ui_popup(cartridge_dialog, _("Save cartridge image"), FALSE); res = gtk_dialog_run(GTK_DIALOG(cartridge_dialog)); ui_popdown(cartridge_dialog); if (res != GTK_RESPONSE_ACCEPT) { return; } name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(cartridge_dialog)); if (!name) { ui_error(_("Invalid filename")); return; } if (cartridge_save_image (type, name) < 0) { ui_error(_("Cannot write cartridge image file\n`%s'\n"), name); } else { ui_message(_("Successfully wrote `%s'"), name); } lib_free(name); }
static GtkWidget *build_empty_disk_dialog(void) { GtkWidget *d, *box, *hbox, *tmp, *frame; int i; d = gtk_dialog_new_with_buttons(_("Create empty disk"), NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); box = gtk_hbox_new(0, FALSE); fileentry = vice_file_entry(_("Create disk"), NULL, "*.[gdxGDX]*", GTK_FILE_CHOOSER_ACTION_SAVE); gtk_dialog_set_default_response(GTK_DIALOG(d), GTK_RESPONSE_ACCEPT); gtk_box_pack_start(GTK_BOX(box), fileentry, TRUE, TRUE, 0); gtk_widget_show(fileentry); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->vbox), box, TRUE, TRUE, 0); gtk_widget_show(box); frame = gtk_frame_new(_("Disk options")); box = gtk_vbox_new(0, FALSE); /* Diskname */ hbox = gtk_hbox_new(0, FALSE); tmp = gtk_label_new(_("Diskname: ")); gtk_box_pack_start(GTK_BOX(hbox), tmp, FALSE, FALSE, 0); gtk_widget_show(tmp); diskname = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(diskname), 16); gtk_editable_set_editable(GTK_EDITABLE(diskname), TRUE); gtk_box_pack_start(GTK_BOX(hbox), diskname, FALSE, FALSE, 0); gtk_widget_show(diskname); tmp = gtk_label_new("ID: "); gtk_box_pack_start(GTK_BOX(hbox), tmp, FALSE, FALSE, 0); gtk_widget_show(tmp); diskid = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(diskid), 2); gtk_editable_set_editable(GTK_EDITABLE(diskid), TRUE); gtk_box_pack_start(GTK_BOX(hbox), diskid, FALSE, FALSE, 0); gtk_widget_set_size_request(diskid, 25, 22); gtk_widget_show(diskid); gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0); gtk_widget_show(hbox); hbox = gtk_hbox_new(0, FALSE); for (i = 0; type_radio[i].label; i++) { if (i == 0) { type_radio[i].w = gtk_radio_button_new_with_label(NULL, type_radio[i].label); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(type_radio[i].w ), TRUE); } else type_radio[i].w = gtk_radio_button_new_with_label( gtk_radio_button_get_group( GTK_RADIO_BUTTON(type_radio[i - 1].w)), type_radio[i].label); gtk_box_pack_start(GTK_BOX(hbox), type_radio[i].w, FALSE, FALSE, 0); gtk_widget_show(type_radio[i].w); } gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0); gtk_widget_show(hbox); gtk_container_add(GTK_CONTAINER(frame), box); gtk_widget_show(box); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->vbox), frame, FALSE, FALSE, 0); gtk_widget_show(frame); gtk_widget_show(d); return d; }
static GtkWidget *build_screenshot_dialog(void) { GtkWidget *d, *box, *frame, *vbox, *omenu; int i, num_buttons; gfxoutputdrv_t *driver; #ifdef HAVE_FFMPEG GtkWidget *l, *hbox, *tmp; GtkObject *adj; int audio_bitrate, video_bitrate; ffmpegdrv_format_t *f; GtkListStore *drv_store; GtkTreeIter iter; GtkCellRenderer *renderer; GtkListStore *ac_store = NULL, *vc_store = NULL; #endif num_buttons = gfxoutput_num_drivers(); if (num_buttons < 1) { log_message(LOG_DEFAULT, _("No gfxoutputdrivers available")); return 0; } d = gtk_dialog_new_with_buttons(_("Save Screenshot"), NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); box = gtk_hbox_new(0, FALSE); fileentry = vice_file_entry(_("Save Media File..."), NULL, NULL, GTK_FILE_CHOOSER_ACTION_SAVE); if (!fileentry) { gtk_widget_destroy(d); return 0; } gtk_dialog_set_default_response(GTK_DIALOG(d), GTK_RESPONSE_ACCEPT); gtk_box_pack_start(GTK_BOX(box), fileentry, TRUE, TRUE, 0); gtk_widget_show(fileentry); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->vbox), box, TRUE, TRUE, 0); gtk_widget_show(box); frame = gtk_frame_new(_("Image Format")); vbox = gtk_vbox_new(FALSE, 5); if (! buttons) buttons = lib_malloc(sizeof(img_type_buttons) * num_buttons); drv_menu = omenu = gtk_combo_box_new_text (); driver = gfxoutput_drivers_iter_init(); for (i = 0; i < num_buttons; i++) { gtk_combo_box_append_text(GTK_COMBO_BOX(omenu), driver->displayname); buttons[i].driver = driver->name; buttons[i].ext = driver->default_extension; driver = gfxoutput_drivers_iter_next(); } gtk_combo_box_set_active(GTK_COMBO_BOX(omenu), 0); gtk_box_pack_start(GTK_BOX(vbox), omenu, FALSE, FALSE, 0); gtk_widget_show(omenu); #ifdef HAVE_FFMPEG if (!ffmpegdrv_formatlist[0].name) goto no_ffmpeg; g_signal_connect(G_OBJECT(omenu), "changed", G_CALLBACK(ffmpeg_widget), (gpointer) omenu); /* ffmpg options */ ffmpg_opts = gtk_vbox_new(FALSE, 5); drv_store = gtk_list_store_new(DRV_N, G_TYPE_STRING, G_TYPE_INT, G_TYPE_OBJECT, G_TYPE_OBJECT); for (i = 0; ffmpegdrv_formatlist[i].name != NULL; i++) { int j; GtkTreeIter ac_iter, vc_iter; f = &ffmpegdrv_formatlist[i]; gtk_list_store_append(drv_store, &iter); gtk_list_store_set(drv_store, &iter, DRV_NAME, f->name, DRV_INDEX, i, -1); log_message(LOG_DEFAULT, _("FFMPEG Driver: %s"), f->name); ac_store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT); for (j = 0; f->audio_codecs && f->audio_codecs[j].name; j++) { gtk_list_store_append(ac_store, &ac_iter); gtk_list_store_set(ac_store, &ac_iter, 0, f->audio_codecs[j].name, 1, f->audio_codecs[j].id, 2, j, -1); log_message(LOG_DEFAULT, _("\tAC: %s(%d)"), f->audio_codecs[j].name, f->audio_codecs[j].id); } vc_store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT); for (j = 0; f->video_codecs && f->video_codecs[j].name; j++) { gtk_list_store_append(vc_store, &vc_iter); gtk_list_store_set(vc_store, &vc_iter, 0, f->video_codecs[j].name, 1, f->video_codecs[j].id, 2, j, -1); log_message(LOG_DEFAULT, _("\tVC: %s(%d)"), f->video_codecs[j].name, f->video_codecs[j].id); } gtk_list_store_set(drv_store, &iter, DRV_ACMENU, ac_store, DRV_VCMENU, vc_store, -1); } ffmpeg_omenu = omenu = gtk_combo_box_new_with_model(GTK_TREE_MODEL(drv_store)); g_signal_connect(G_OBJECT(omenu), "changed", G_CALLBACK(ffmpeg_details), (gpointer) omenu); renderer = gtk_cell_renderer_text_new(); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (omenu), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (omenu), renderer, "text", DRV_NAME, NULL); hbox = gtk_hbox_new(0, FALSE); tmp = gtk_label_new(_("Format")); gtk_box_pack_start(GTK_BOX(hbox), tmp, FALSE, FALSE, 0); gtk_widget_show(tmp); gtk_box_pack_start(GTK_BOX(hbox), omenu, FALSE, FALSE, 0); gtk_widget_show(omenu); gtk_box_pack_start(GTK_BOX(ffmpg_opts), hbox, FALSE, FALSE, 0); gtk_widget_show(hbox); acmenu = gtk_combo_box_new_with_model(GTK_TREE_MODEL(ac_store)); renderer = gtk_cell_renderer_text_new(); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (acmenu), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (acmenu), renderer, "text", 0, NULL); hbox = gtk_hbox_new(0, FALSE); tmp = gtk_label_new(_("Audio Codec")); gtk_box_pack_start(GTK_BOX(hbox), tmp, FALSE, FALSE, 0); gtk_widget_show(tmp); gtk_box_pack_start(GTK_BOX(hbox), acmenu, FALSE, FALSE, 0); gtk_widget_show(acmenu); gtk_box_pack_start(GTK_BOX(ffmpg_opts), hbox, FALSE, FALSE, 0); gtk_widget_show(hbox); vcmenu = gtk_combo_box_new_with_model(GTK_TREE_MODEL(vc_store)); renderer = gtk_cell_renderer_text_new(); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (vcmenu), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (vcmenu), renderer, "text", 0, NULL); hbox = gtk_hbox_new(0, FALSE); tmp = gtk_label_new(_("Video Codec")); gtk_box_pack_start(GTK_BOX(hbox), tmp, FALSE, FALSE, 0); gtk_widget_show(tmp); gtk_box_pack_start(GTK_BOX(hbox), vcmenu, FALSE, FALSE, 0); gtk_widget_show(vcmenu); gtk_box_pack_start(GTK_BOX(ffmpg_opts), hbox, FALSE, FALSE, 0); gtk_widget_show(hbox); resources_get_int("FFMPEGAudioBitrate", &audio_bitrate); adj = gtk_adjustment_new ((gfloat) audio_bitrate, (gfloat) 16000, (gfloat) 128000, (gfloat) 1000, (gfloat) 10000, (gfloat) 10000); ffmpg_audio = gtk_spin_button_new(GTK_ADJUSTMENT(adj), (gfloat) 1000, 0); gtk_widget_set_size_request(ffmpg_audio, 100, -1); l = gtk_label_new(_("Audio Bitrate")); tmp = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(tmp), l, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(tmp), ffmpg_audio, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(ffmpg_opts), tmp, FALSE, FALSE, 0); resources_get_int("FFMPEGVideoBitrate", &video_bitrate); adj = gtk_adjustment_new ((gfloat) video_bitrate, (gfloat) 100000, (gfloat) 10000000, (gfloat) 10000, (gfloat) 100000, (gfloat) 100000); ffmpg_video = gtk_spin_button_new(GTK_ADJUSTMENT(adj), (gfloat) 10000, 0); gtk_widget_set_size_request(ffmpg_video, 100, -1); l = gtk_label_new(_("Video Bitrate")); tmp = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(tmp), l, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(tmp), ffmpg_video, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(ffmpg_opts), tmp, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), ffmpg_opts, FALSE, FALSE, 0); gtk_widget_show_all(ffmpg_opts); gtk_widget_set_sensitive(ffmpg_opts, FALSE); no_ffmpeg: #endif gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_widget_show(vbox); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->vbox), frame, TRUE, TRUE, 0); gtk_widget_show(frame); gtk_widget_show(d); return d; }