--- BasiliskII/src/Unix/prefs_editor_gtk.cpp 1999/10/12 20:00:52 1.3 +++ BasiliskII/src/Unix/prefs_editor_gtk.cpp 1999/10/28 15:33:15 1.9 @@ -258,13 +258,13 @@ static void mn_zap_pram(...) // Menu item descriptions static GtkItemFactoryEntry menu_items[] = { - {GetString(STR_PREFS_MENU_FILE_GTK), NULL, NULL, 0, ""}, - {GetString(STR_PREFS_ITEM_START_GTK), NULL, GTK_SIGNAL_FUNC(cb_start), 0, NULL}, - {GetString(STR_PREFS_ITEM_ZAP_PRAM_GTK), NULL, GTK_SIGNAL_FUNC(mn_zap_pram), 0, NULL}, - {GetString(STR_PREFS_ITEM_SEPL_GTK), NULL, NULL, 0, ""}, - {GetString(STR_PREFS_ITEM_QUIT_GTK), "Q", GTK_SIGNAL_FUNC(cb_quit), 0, NULL}, - {GetString(STR_HELP_MENU_GTK), NULL, NULL, 0, ""}, - {GetString(STR_HELP_ITEM_ABOUT_GTK), NULL, GTK_SIGNAL_FUNC(mn_about), 0, NULL} + {(gchar *)GetString(STR_PREFS_MENU_FILE_GTK), NULL, NULL, 0, ""}, + {(gchar *)GetString(STR_PREFS_ITEM_START_GTK), NULL, GTK_SIGNAL_FUNC(cb_start), 0, NULL}, + {(gchar *)GetString(STR_PREFS_ITEM_ZAP_PRAM_GTK), NULL, GTK_SIGNAL_FUNC(mn_zap_pram), 0, NULL}, + {(gchar *)GetString(STR_PREFS_ITEM_SEPL_GTK), NULL, NULL, 0, ""}, + {(gchar *)GetString(STR_PREFS_ITEM_QUIT_GTK), "Q", GTK_SIGNAL_FUNC(cb_quit), 0, NULL}, + {(gchar *)GetString(STR_HELP_MENU_GTK), NULL, NULL, 0, ""}, + {(gchar *)GetString(STR_HELP_ITEM_ABOUT_GTK), NULL, GTK_SIGNAL_FUNC(mn_about), 0, NULL} }; bool PrefsEditor(void) @@ -291,7 +291,7 @@ bool PrefsEditor(void) GtkWidget *notebook = gtk_notebook_new(); gtk_widget_show(notebook); gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP); - gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook), TRUE); + gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook), FALSE); gtk_box_pack_start(GTK_BOX(box), notebook, TRUE, TRUE, 0); create_volumes_pane(notebook); @@ -318,7 +318,7 @@ bool PrefsEditor(void) * "Volumes" pane */ -static GtkWidget *volume_list; +static GtkWidget *volume_list, *w_extfs; static int selected_volume; // Volume in list selected @@ -420,6 +420,8 @@ static void read_volumes_settings(void) gtk_clist_get_text(GTK_CLIST(volume_list), i, 0, &str); PrefsAddString("disk", str); } + + PrefsReplaceString("extfs", gtk_entry_get_text(GTK_ENTRY(w_extfs))); } // Create "Volumes" pane @@ -436,6 +438,7 @@ static void create_volumes_pane(GtkWidge gtk_widget_show(volume_list); gtk_clist_set_selection_mode(GTK_CLIST(volume_list), GTK_SELECTION_SINGLE); gtk_clist_set_shadow_type(GTK_CLIST(volume_list), GTK_SHADOW_NONE); + gtk_clist_set_reorderable(GTK_CLIST(volume_list), true); gtk_signal_connect(GTK_OBJECT(volume_list), "select_row", GTK_SIGNAL_FUNC(cl_selected), NULL); char *str; int32 index = 0; @@ -454,6 +457,8 @@ static void create_volumes_pane(GtkWidge make_button_box(box, 0, buttons); make_separator(box); + w_extfs = make_entry(box, STR_EXTFS_CTRL, "extfs"); + static const opt_desc options[] = { {STR_BOOT_ANY_LAB, GTK_SIGNAL_FUNC(mn_boot_any)}, {STR_BOOT_CDROM_LAB, GTK_SIGNAL_FUNC(mn_boot_cdrom)}, @@ -520,15 +525,31 @@ static GtkWidget *l_frameskip, *l_displa static int display_type; static int dis_width, dis_height; +#if ENABLE_FBDEV_DGA +static GtkWidget *w_fbdev_name, *w_fbdevice_file; +static GtkWidget *l_fbdev_name, *l_fbdevice_file; +static char fbdev_name[256]; +#endif + // Hide/show graphics widgets static void hide_show_graphics_widgets(void) { switch (display_type) { case DISPLAY_WINDOW: gtk_widget_show(w_frameskip); gtk_widget_show(l_frameskip); +#if ENABLE_FBDEV_DGA + gtk_widget_show(w_display_x); gtk_widget_show(l_display_x); + gtk_widget_show(w_display_y); gtk_widget_show(l_display_y); + gtk_widget_hide(w_fbdev_name); gtk_widget_hide(l_fbdev_name); +#endif break; case DISPLAY_SCREEN: gtk_widget_hide(w_frameskip); gtk_widget_hide(l_frameskip); +#if ENABLE_FBDEV_DGA + gtk_widget_hide(w_display_x); gtk_widget_hide(l_display_x); + gtk_widget_hide(w_display_y); gtk_widget_hide(l_display_y); + gtk_widget_show(w_fbdev_name); gtk_widget_show(l_fbdev_name); +#endif break; } } @@ -567,12 +588,19 @@ static void parse_graphics_prefs(void) display_type = DISPLAY_WINDOW; dis_width = 512; dis_height = 384; +#if ENABLE_FBDEV_DGA + fbdev_name[0] = 0; +#endif const char *str = PrefsFindString("screen"); if (str) { if (sscanf(str, "win/%d/%d", &dis_width, &dis_height) == 2) display_type = DISPLAY_WINDOW; +#if ENABLE_FBDEV_DGA + else if (sscanf(str, "dga/%255s", fbdev_name) == 1) +#else else if (sscanf(str, "dga/%d/%d", &dis_width, &dis_height) == 2) +#endif display_type = DISPLAY_SCREEN; } } @@ -594,7 +622,12 @@ static void read_graphics_settings(void) sprintf(pref, "win/%d/%d", dis_width, dis_height); break; case DISPLAY_SCREEN: +#if ENABLE_FBDEV_DGA + str = gtk_entry_get_text(GTK_ENTRY(w_fbdev_name)); + sprintf(pref, "dga/%s", str); +#else sprintf(pref, "dga/%d/%d", dis_width, dis_height); +#endif break; default: PrefsRemoveItem("screen"); @@ -612,7 +645,7 @@ static void create_graphics_pane(GtkWidg parse_graphics_prefs(); box = make_pane(top, STR_GRAPHICS_SOUND_PANE_TITLE); - table = make_table(box, 2, 4); + table = make_table(box, 2, 5); label = gtk_label_new(GetString(STR_VIDEO_TYPE_CTRL)); gtk_widget_show(label); @@ -678,11 +711,11 @@ static void create_graphics_pane(GtkWidg combo = gtk_combo_new(); gtk_widget_show(combo); GList *glist1 = NULL; - glist1 = g_list_append(glist1, GetString(STR_SIZE_512_LAB)); - glist1 = g_list_append(glist1, GetString(STR_SIZE_640_LAB)); - glist1 = g_list_append(glist1, GetString(STR_SIZE_800_LAB)); - glist1 = g_list_append(glist1, GetString(STR_SIZE_1024_LAB)); - glist1 = g_list_append(glist1, GetString(STR_SIZE_MAX_LAB)); + glist1 = g_list_append(glist1, (void *)GetString(STR_SIZE_512_LAB)); + glist1 = g_list_append(glist1, (void *)GetString(STR_SIZE_640_LAB)); + glist1 = g_list_append(glist1, (void *)GetString(STR_SIZE_800_LAB)); + glist1 = g_list_append(glist1, (void *)GetString(STR_SIZE_1024_LAB)); + glist1 = g_list_append(glist1, (void *)GetString(STR_SIZE_MAX_LAB)); gtk_combo_set_popdown_strings(GTK_COMBO(combo), glist1); if (dis_width) sprintf(str, "%d", dis_width); @@ -699,11 +732,11 @@ static void create_graphics_pane(GtkWidg combo = gtk_combo_new(); gtk_widget_show(combo); GList *glist2 = NULL; - glist2 = g_list_append(glist2, GetString(STR_SIZE_384_LAB)); - glist2 = g_list_append(glist2, GetString(STR_SIZE_480_LAB)); - glist2 = g_list_append(glist2, GetString(STR_SIZE_600_LAB)); - glist2 = g_list_append(glist2, GetString(STR_SIZE_768_LAB)); - glist2 = g_list_append(glist2, GetString(STR_SIZE_MAX_LAB)); + glist2 = g_list_append(glist2, (void *)GetString(STR_SIZE_384_LAB)); + glist2 = g_list_append(glist2, (void *)GetString(STR_SIZE_480_LAB)); + glist2 = g_list_append(glist2, (void *)GetString(STR_SIZE_600_LAB)); + glist2 = g_list_append(glist2, (void *)GetString(STR_SIZE_768_LAB)); + glist2 = g_list_append(glist2, (void *)GetString(STR_SIZE_MAX_LAB)); gtk_combo_set_popdown_strings(GTK_COMBO(combo), glist2); if (dis_height) sprintf(str, "%d", dis_height); @@ -713,6 +746,19 @@ static void create_graphics_pane(GtkWidg gtk_table_attach(GTK_TABLE(table), combo, 1, 2, 3, 4, (GtkAttachOptions)GTK_FILL, (GtkAttachOptions)0, 4, 4); w_display_y = GTK_COMBO(combo)->entry; +#if ENABLE_FBDEV_DGA + l_fbdev_name = gtk_label_new(GetString(STR_FBDEV_NAME_CTRL)); + gtk_widget_show(l_fbdev_name); + gtk_table_attach(GTK_TABLE(table), l_fbdev_name, 0, 1, 4, 5, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4); + + w_fbdev_name = gtk_entry_new(); + gtk_widget_show(w_fbdev_name); + gtk_entry_set_text(GTK_ENTRY(w_fbdev_name), fbdev_name); + gtk_table_attach(GTK_TABLE(table), w_fbdev_name, 1, 2, 4, 5, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4); + + w_fbdevice_file = make_entry(box, STR_FBDEVICE_FILE_CTRL, "fbdevicefile"); +#endif + make_checkbox(box, STR_NOSOUND_CTRL, "nosound", GTK_SIGNAL_FUNC(tb_nosound)); hide_show_graphics_widgets(); @@ -762,6 +808,8 @@ static GList *add_serial_names(void) if (strncmp(de->d_name, "ttyS", 4) == 0 || strncmp(de->d_name, "lp", 2) == 0) { #elif defined(__FreeBSD__) if (strncmp(de->d_name, "cuaa", 4) == 0 || strncmp(de->d_name, "lpt", 3) == 0) { +#elif defined(__NetBSD__) + if (strncmp(de->d_name, "tty0", 4) == 0 || strncmp(de->d_name, "lpt", 3) == 0) { #elif defined(sgi) if (strncmp(de->d_name, "ttyf", 4) == 0 || strncmp(de->d_name, "plp", 3) == 0) { #else @@ -777,7 +825,7 @@ static GList *add_serial_names(void) if (glist) g_list_sort(glist, gl_str_cmp); else - glist = g_list_append(glist, GetString(STR_NONE_LAB)); + glist = g_list_append(glist, (void *)GetString(STR_NONE_LAB)); return glist; } @@ -797,10 +845,12 @@ static GList *add_ether_names(void) struct ifreq req, *ifr = ifc.ifc_req; for (int i=0; iifr_name, 63); @@ -813,7 +863,7 @@ static GList *add_ether_names(void) if (glist) g_list_sort(glist, gl_str_cmp); else - glist = g_list_append(glist, GetString(STR_NONE_LAB)); + glist = g_list_append(glist, (void *)GetString(STR_NONE_LAB)); return glist; } @@ -883,6 +933,13 @@ static GtkWidget *w_keycode_file; static void mn_modelid_5(...) {PrefsReplaceInt32("modelid", 5);} static void mn_modelid_14(...) {PrefsReplaceInt32("modelid", 14);} +// CPU/FPU type +static void mn_cpu_68020(...) {PrefsReplaceInt32("cpu", 2); PrefsReplaceBool("fpu", false);} +static void mn_cpu_68020_fpu(...) {PrefsReplaceInt32("cpu", 2); PrefsReplaceBool("fpu", true);} +static void mn_cpu_68030(...) {PrefsReplaceInt32("cpu", 3); PrefsReplaceBool("fpu", false);} +static void mn_cpu_68030_fpu(...) {PrefsReplaceInt32("cpu", 3); PrefsReplaceBool("fpu", true);} +static void mn_cpu_68040(...) {PrefsReplaceInt32("cpu", 4); PrefsReplaceBool("fpu", true);} + // "Use Raw Keycodes" button toggled static void tb_keycodes(GtkWidget *widget) { @@ -910,7 +967,7 @@ static void read_memory_settings(void) // Create "Memory/Misc" pane static void create_memory_pane(GtkWidget *top) { - GtkWidget *box, *vbox, *hbox, *hbox2, *label, *scale, *opt, *menu; + GtkWidget *box, *vbox, *hbox, *hbox2, *label, *scale, *menu; box = make_pane(top, STR_MEMORY_MISC_PANE_TITLE); @@ -952,7 +1009,7 @@ static void create_memory_pane(GtkWidget gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0); - static const opt_desc options[] = { + static const opt_desc model_options[] = { {STR_MODELID_5_LAB, GTK_SIGNAL_FUNC(mn_modelid_5)}, {STR_MODELID_14_LAB, GTK_SIGNAL_FUNC(mn_modelid_14)}, {0, NULL} @@ -962,7 +1019,25 @@ static void create_memory_pane(GtkWidget case 5: active = 0; break; case 14: active = 1; break; } - menu = make_option_menu(box, STR_MODELID_CTRL, options, active); + make_option_menu(box, STR_MODELID_CTRL, model_options, active); + + static const opt_desc cpu_options[] = { + {STR_CPU_68020_LAB, GTK_SIGNAL_FUNC(mn_cpu_68020)}, + {STR_CPU_68020_FPU_LAB, GTK_SIGNAL_FUNC(mn_cpu_68020_fpu)}, + {STR_CPU_68030_LAB, GTK_SIGNAL_FUNC(mn_cpu_68030)}, + {STR_CPU_68030_FPU_LAB, GTK_SIGNAL_FUNC(mn_cpu_68030_fpu)}, + {STR_CPU_68040_LAB, GTK_SIGNAL_FUNC(mn_cpu_68040)}, + {0, NULL} + }; + int cpu = PrefsFindInt32("cpu"); + bool fpu = PrefsFindBool("fpu"); + active = 0; + switch (cpu) { + case 2: active = fpu ? 1 : 0; break; + case 3: active = fpu ? 3 : 2; break; + case 4: active = 4; + } + make_option_menu(box, STR_CPU_CTRL, cpu_options, active); w_rom_file = make_entry(box, STR_ROM_FILE_CTRL, "rom");