mirror of
https://github.com/kanjitalk755/macemu.git
synced 2025-02-17 06:31:14 +00:00
GTK2: Replaced option menus with combo boxes
The old GtkOptionMenu widget is deprecated.
This commit is contained in:
parent
bf784a2c30
commit
af96a51acb
@ -197,27 +197,27 @@ static GtkWidget *make_table(GtkWidget *top, int x, int y)
|
|||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget *table_make_option_menu(GtkWidget *table, int row, int label_id, const opt_desc *options, int active)
|
static GtkWidget *table_make_option_menu(GtkWidget *table, int row, int label_id,
|
||||||
|
const combo_desc *options, GCallback func,
|
||||||
|
int active)
|
||||||
{
|
{
|
||||||
GtkWidget *label, *opt, *menu;
|
GtkWidget *label, *combo;
|
||||||
|
|
||||||
label = gtk_label_new(GetString(label_id));
|
label = gtk_label_new(GetString(label_id));
|
||||||
gtk_widget_show(label);
|
gtk_widget_show(label);
|
||||||
gtk_table_attach(GTK_TABLE(table), label, 0, 1, row, row + 1, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4);
|
gtk_table_attach(GTK_TABLE(table), label, 0, 1, row, row + 1, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4);
|
||||||
|
|
||||||
opt = gtk_option_menu_new();
|
combo = gtk_combo_box_new_text();
|
||||||
gtk_widget_show(opt);
|
gtk_widget_show(combo);
|
||||||
menu = gtk_menu_new();
|
|
||||||
|
|
||||||
while (options->label_id) {
|
while (options->label_id) {
|
||||||
add_menu_item(menu, options->label_id, options->func);
|
gtk_combo_box_append_text(GTK_COMBO_BOX(combo), GetString(options->label_id));
|
||||||
options++;
|
options++;
|
||||||
}
|
}
|
||||||
gtk_menu_set_active(GTK_MENU(menu), active);
|
gtk_combo_box_set_active(GTK_COMBO_BOX(combo), active);
|
||||||
|
g_signal_connect(combo, "changed", func, NULL);
|
||||||
gtk_option_menu_set_menu(GTK_OPTION_MENU(opt), menu);
|
gtk_table_attach(GTK_TABLE(table), combo, 1, 2, row, row + 1, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), (GtkAttachOptions)0, 4, 4);
|
||||||
gtk_table_attach(GTK_TABLE(table), opt, 1, 2, row, row + 1, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), (GtkAttachOptions)0, 4, 4);
|
return combo;
|
||||||
return menu;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget *table_make_combobox(GtkWidget *table, int row, int label_id, const char *pref, GList *list)
|
static GtkWidget *table_make_combobox(GtkWidget *table, int row, int label_id, const char *pref, GList *list)
|
||||||
@ -280,9 +280,9 @@ static GtkWidget *table_make_file_entry(GtkWidget *table, int row, int label_id,
|
|||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget *make_option_menu(GtkWidget *top, int label_id, const opt_desc *options, int active)
|
static GtkWidget *make_option_menu(GtkWidget *top, int label_id, const combo_desc *options, GCallback func, int active)
|
||||||
{
|
{
|
||||||
GtkWidget *box, *label, *opt, *menu;
|
GtkWidget *box, *label, *combo;
|
||||||
|
|
||||||
box = gtk_hbox_new(FALSE, 4);
|
box = gtk_hbox_new(FALSE, 4);
|
||||||
gtk_widget_show(box);
|
gtk_widget_show(box);
|
||||||
@ -292,19 +292,17 @@ static GtkWidget *make_option_menu(GtkWidget *top, int label_id, const opt_desc
|
|||||||
gtk_widget_show(label);
|
gtk_widget_show(label);
|
||||||
gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0);
|
gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0);
|
||||||
|
|
||||||
opt = gtk_option_menu_new();
|
combo = gtk_combo_box_new_text();
|
||||||
gtk_widget_show(opt);
|
gtk_widget_show(combo);
|
||||||
menu = gtk_menu_new();
|
|
||||||
|
|
||||||
while (options->label_id) {
|
while (options->label_id) {
|
||||||
add_menu_item(menu, options->label_id, options->func);
|
gtk_combo_box_append_text(GTK_COMBO_BOX(combo), GetString(options->label_id));
|
||||||
options++;
|
options++;
|
||||||
}
|
}
|
||||||
gtk_menu_set_active(GTK_MENU(menu), active);
|
gtk_combo_box_set_active(GTK_COMBO_BOX(combo), active);
|
||||||
|
gtk_box_pack_start(GTK_BOX(box), combo, FALSE, FALSE, 0);
|
||||||
gtk_option_menu_set_menu(GTK_OPTION_MENU(opt), menu);
|
g_signal_connect(combo, "changed", func, NULL);
|
||||||
gtk_box_pack_start(GTK_BOX(box), opt, FALSE, FALSE, 0);
|
return combo;
|
||||||
return menu;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget *make_file_entry(GtkWidget *top, int label_id, const char *prefs_item, bool only_dirs = false)
|
static GtkWidget *make_file_entry(GtkWidget *top, int label_id, const char *prefs_item, bool only_dirs = false)
|
||||||
@ -632,8 +630,13 @@ static void cb_remove_volume(...)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// "Boot From" selected
|
// "Boot From" selected
|
||||||
static void mn_boot_any(...) {PrefsReplaceInt32("bootdriver", 0);}
|
static void mn_bootdriver(GtkWidget *widget)
|
||||||
static void mn_boot_cdrom(...) {PrefsReplaceInt32("bootdriver", CDROMRefNum);}
|
{
|
||||||
|
if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)))
|
||||||
|
PrefsReplaceInt32("bootdriver", CDROMRefNum);
|
||||||
|
else
|
||||||
|
PrefsReplaceInt32("bootdriver", 0);
|
||||||
|
}
|
||||||
|
|
||||||
// "No CD-ROM Driver" button toggled
|
// "No CD-ROM Driver" button toggled
|
||||||
static void tb_nocdrom(GtkWidget *widget)
|
static void tb_nocdrom(GtkWidget *widget)
|
||||||
@ -691,17 +694,17 @@ static void create_volumes_pane(GtkWidget *top)
|
|||||||
|
|
||||||
w_extfs = make_file_entry(box, STR_EXTFS_CTRL, "extfs", true);
|
w_extfs = make_file_entry(box, STR_EXTFS_CTRL, "extfs", true);
|
||||||
|
|
||||||
static const opt_desc options[] = {
|
static const combo_desc options[] = {
|
||||||
{STR_BOOT_ANY_LAB, G_CALLBACK(mn_boot_any)},
|
STR_BOOT_ANY_LAB,
|
||||||
{STR_BOOT_CDROM_LAB, G_CALLBACK(mn_boot_cdrom)},
|
STR_BOOT_CDROM_LAB,
|
||||||
{0, NULL}
|
0
|
||||||
};
|
};
|
||||||
int bootdriver = PrefsFindInt32("bootdriver"), active = 0;
|
int bootdriver = PrefsFindInt32("bootdriver"), active = 0;
|
||||||
switch (bootdriver) {
|
switch (bootdriver) {
|
||||||
case 0: active = 0; break;
|
case 0: active = 0; break;
|
||||||
case CDROMRefNum: active = 1; break;
|
case CDROMRefNum: active = 1; break;
|
||||||
}
|
}
|
||||||
make_option_menu(box, STR_BOOTDRIVER_CTRL, options, active);
|
make_option_menu(box, STR_BOOTDRIVER_CTRL, options, G_CALLBACK(mn_bootdriver), active);
|
||||||
|
|
||||||
make_checkbox(box, STR_NOCDROM_CTRL, "nocdrom", G_CALLBACK(tb_nocdrom));
|
make_checkbox(box, STR_NOCDROM_CTRL, "nocdrom", G_CALLBACK(tb_nocdrom));
|
||||||
}
|
}
|
||||||
@ -895,28 +898,31 @@ static void hide_show_graphics_widgets(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// "Window" video type selected
|
// "Window"/"Fullscreen" video type selected
|
||||||
static void mn_window(...)
|
static void mn_display(GtkWidget *widget)
|
||||||
{
|
{
|
||||||
display_type = DISPLAY_WINDOW;
|
if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)))
|
||||||
hide_show_graphics_widgets();
|
display_type = DISPLAY_SCREEN;
|
||||||
}
|
else
|
||||||
|
display_type = DISPLAY_WINDOW;
|
||||||
// "Fullscreen" video type selected
|
|
||||||
static void mn_fullscreen(...)
|
|
||||||
{
|
|
||||||
display_type = DISPLAY_SCREEN;
|
|
||||||
hide_show_graphics_widgets();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// "5 Hz".."60Hz" selected
|
// "5 Hz".."60Hz" selected
|
||||||
static void mn_5hz(...) {PrefsReplaceInt32("frameskip", 12);}
|
static void mn_frameskip(GtkWidget *widget)
|
||||||
static void mn_7hz(...) {PrefsReplaceInt32("frameskip", 8);}
|
{
|
||||||
static void mn_10hz(...) {PrefsReplaceInt32("frameskip", 6);}
|
int frameskip = 1;
|
||||||
static void mn_15hz(...) {PrefsReplaceInt32("frameskip", 4);}
|
switch(gtk_combo_box_get_active(GTK_COMBO_BOX(widget)))
|
||||||
static void mn_30hz(...) {PrefsReplaceInt32("frameskip", 2);}
|
{
|
||||||
static void mn_60hz(...) {PrefsReplaceInt32("frameskip", 1);}
|
case 0: frameskip = 12; break;
|
||||||
static void mn_dynamic(...) {PrefsReplaceInt32("frameskip", 0);}
|
case 1: frameskip = 8; break;
|
||||||
|
case 2: frameskip = 6; break;
|
||||||
|
case 3: frameskip = 4; break;
|
||||||
|
case 4: frameskip = 2; break;
|
||||||
|
case 5: frameskip = 1; break;
|
||||||
|
case 6: frameskip = 0; break;
|
||||||
|
}
|
||||||
|
PrefsReplaceInt32("frameskip", frameskip);
|
||||||
|
}
|
||||||
|
|
||||||
// Set sensitivity of widgets
|
// Set sensitivity of widgets
|
||||||
static void set_graphics_sensitive(void)
|
static void set_graphics_sensitive(void)
|
||||||
@ -1000,7 +1006,7 @@ static void read_graphics_settings(void)
|
|||||||
// Create "Graphics/Sound" pane
|
// Create "Graphics/Sound" pane
|
||||||
static void create_graphics_pane(GtkWidget *top)
|
static void create_graphics_pane(GtkWidget *top)
|
||||||
{
|
{
|
||||||
GtkWidget *box, *table, *label, *opt, *menu;
|
GtkWidget *box, *table, *label, *combo;
|
||||||
char str[32];
|
char str[32];
|
||||||
|
|
||||||
parse_graphics_prefs();
|
parse_graphics_prefs();
|
||||||
@ -1012,36 +1018,34 @@ static void create_graphics_pane(GtkWidget *top)
|
|||||||
gtk_widget_show(label);
|
gtk_widget_show(label);
|
||||||
gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4);
|
gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4);
|
||||||
|
|
||||||
opt = gtk_option_menu_new();
|
combo = gtk_combo_box_new_text();
|
||||||
gtk_widget_show(opt);
|
gtk_widget_show(combo);
|
||||||
menu = gtk_menu_new();
|
gtk_combo_box_append_text(GTK_COMBO_BOX(combo), GetString(STR_WINDOW_LAB));
|
||||||
add_menu_item(menu, STR_WINDOW_LAB, G_CALLBACK(mn_window));
|
gtk_combo_box_append_text(GTK_COMBO_BOX(combo), GetString(STR_FULLSCREEN_LAB));
|
||||||
add_menu_item(menu, STR_FULLSCREEN_LAB, G_CALLBACK(mn_fullscreen));
|
|
||||||
switch (display_type) {
|
switch (display_type) {
|
||||||
case DISPLAY_WINDOW:
|
case DISPLAY_WINDOW:
|
||||||
gtk_menu_set_active(GTK_MENU(menu), 0);
|
gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
|
||||||
break;
|
break;
|
||||||
case DISPLAY_SCREEN:
|
case DISPLAY_SCREEN:
|
||||||
gtk_menu_set_active(GTK_MENU(menu), 1);
|
gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
gtk_option_menu_set_menu(GTK_OPTION_MENU(opt), menu);
|
g_signal_connect(combo, "changed", G_CALLBACK(mn_display), NULL);
|
||||||
gtk_table_attach(GTK_TABLE(table), opt, 1, 2, 0, 1, (GtkAttachOptions)GTK_FILL, (GtkAttachOptions)0, 4, 4);
|
gtk_table_attach(GTK_TABLE(table), combo, 1, 2, 0, 1, (GtkAttachOptions)GTK_FILL, (GtkAttachOptions)0, 4, 4);
|
||||||
|
|
||||||
l_frameskip = gtk_label_new(GetString(STR_FRAMESKIP_CTRL));
|
l_frameskip = gtk_label_new(GetString(STR_FRAMESKIP_CTRL));
|
||||||
gtk_widget_show(l_frameskip);
|
gtk_widget_show(l_frameskip);
|
||||||
gtk_table_attach(GTK_TABLE(table), l_frameskip, 0, 1, 1, 2, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4);
|
gtk_table_attach(GTK_TABLE(table), l_frameskip, 0, 1, 1, 2, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4);
|
||||||
|
|
||||||
w_frameskip = gtk_option_menu_new();
|
w_frameskip = gtk_combo_box_new_text();
|
||||||
gtk_widget_show(w_frameskip);
|
gtk_widget_show(w_frameskip);
|
||||||
menu = gtk_menu_new();
|
gtk_combo_box_append_text(GTK_COMBO_BOX(w_frameskip), GetString(STR_REF_5HZ_LAB));
|
||||||
add_menu_item(menu, STR_REF_5HZ_LAB, G_CALLBACK(mn_5hz));
|
gtk_combo_box_append_text(GTK_COMBO_BOX(w_frameskip), GetString(STR_REF_7_5HZ_LAB));
|
||||||
add_menu_item(menu, STR_REF_7_5HZ_LAB, G_CALLBACK(mn_7hz));
|
gtk_combo_box_append_text(GTK_COMBO_BOX(w_frameskip), GetString(STR_REF_10HZ_LAB));
|
||||||
add_menu_item(menu, STR_REF_10HZ_LAB, G_CALLBACK(mn_10hz));
|
gtk_combo_box_append_text(GTK_COMBO_BOX(w_frameskip), GetString(STR_REF_15HZ_LAB));
|
||||||
add_menu_item(menu, STR_REF_15HZ_LAB, G_CALLBACK(mn_15hz));
|
gtk_combo_box_append_text(GTK_COMBO_BOX(w_frameskip), GetString(STR_REF_30HZ_LAB));
|
||||||
add_menu_item(menu, STR_REF_30HZ_LAB, G_CALLBACK(mn_30hz));
|
gtk_combo_box_append_text(GTK_COMBO_BOX(w_frameskip), GetString(STR_REF_60HZ_LAB));
|
||||||
add_menu_item(menu, STR_REF_60HZ_LAB, G_CALLBACK(mn_60hz));
|
gtk_combo_box_append_text(GTK_COMBO_BOX(w_frameskip), GetString(STR_REF_DYNAMIC_LAB));
|
||||||
add_menu_item(menu, STR_REF_DYNAMIC_LAB, G_CALLBACK(mn_dynamic));
|
|
||||||
int frameskip = PrefsFindInt32("frameskip");
|
int frameskip = PrefsFindInt32("frameskip");
|
||||||
int item = -1;
|
int item = -1;
|
||||||
switch (frameskip) {
|
switch (frameskip) {
|
||||||
@ -1054,8 +1058,8 @@ static void create_graphics_pane(GtkWidget *top)
|
|||||||
case 0: item = 6; break;
|
case 0: item = 6; break;
|
||||||
}
|
}
|
||||||
if (item >= 0)
|
if (item >= 0)
|
||||||
gtk_menu_set_active(GTK_MENU(menu), item);
|
gtk_combo_box_set_active(GTK_COMBO_BOX(w_frameskip), item);
|
||||||
gtk_option_menu_set_menu(GTK_OPTION_MENU(w_frameskip), menu);
|
g_signal_connect(combo, "changed", G_CALLBACK(mn_display), NULL);
|
||||||
gtk_table_attach(GTK_TABLE(table), w_frameskip, 1, 2, 1, 2, (GtkAttachOptions)GTK_FILL, (GtkAttachOptions)0, 4, 4);
|
gtk_table_attach(GTK_TABLE(table), w_frameskip, 1, 2, 1, 2, (GtkAttachOptions)GTK_FILL, (GtkAttachOptions)0, 4, 4);
|
||||||
|
|
||||||
l_display_x = gtk_label_new(GetString(STR_DISPLAY_X_CTRL));
|
l_display_x = gtk_label_new(GetString(STR_DISPLAY_X_CTRL));
|
||||||
@ -1142,8 +1146,11 @@ static void tb_keycodes(GtkWidget *widget)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// "Mouse Wheel Mode" selected
|
// "Mouse Wheel Mode" selected
|
||||||
static void mn_wheel_page(...) {PrefsReplaceInt32("mousewheelmode", 0); set_input_sensitive();}
|
static void mn_wheelmode(GtkWidget *widget)
|
||||||
static void mn_wheel_cursor(...) {PrefsReplaceInt32("mousewheelmode", 1); set_input_sensitive();}
|
{
|
||||||
|
PrefsReplaceInt32("mousewheelmode", gtk_combo_box_get_active(GTK_COMBO_BOX(widget)));
|
||||||
|
set_input_sensitive();
|
||||||
|
}
|
||||||
|
|
||||||
// Read settings from widgets and set preferences
|
// Read settings from widgets and set preferences
|
||||||
static void read_input_settings(void)
|
static void read_input_settings(void)
|
||||||
@ -1190,17 +1197,17 @@ static void create_input_pane(GtkWidget *top)
|
|||||||
|
|
||||||
make_separator(box);
|
make_separator(box);
|
||||||
|
|
||||||
static const opt_desc options[] = {
|
static const combo_desc options[] = {
|
||||||
{STR_MOUSEWHEELMODE_PAGE_LAB, G_CALLBACK(mn_wheel_page)},
|
STR_MOUSEWHEELMODE_PAGE_LAB,
|
||||||
{STR_MOUSEWHEELMODE_CURSOR_LAB, G_CALLBACK(mn_wheel_cursor)},
|
STR_MOUSEWHEELMODE_CURSOR_LAB,
|
||||||
{0, NULL}
|
0
|
||||||
};
|
};
|
||||||
int wheelmode = PrefsFindInt32("mousewheelmode"), active = 0;
|
int wheelmode = PrefsFindInt32("mousewheelmode"), active = 0;
|
||||||
switch (wheelmode) {
|
switch (wheelmode) {
|
||||||
case 0: active = 0; break;
|
case 0: active = 0; break;
|
||||||
case 1: active = 1; break;
|
case 1: active = 1; break;
|
||||||
}
|
}
|
||||||
make_option_menu(box, STR_MOUSEWHEELMODE_CTRL, options, active);
|
make_option_menu(box, STR_MOUSEWHEELMODE_CTRL, options, G_CALLBACK(mn_wheelmode), active);
|
||||||
|
|
||||||
hbox = gtk_hbox_new(FALSE, 4);
|
hbox = gtk_hbox_new(FALSE, 4);
|
||||||
gtk_widget_show(hbox);
|
gtk_widget_show(hbox);
|
||||||
@ -1444,15 +1451,28 @@ static void tb_ignoresegv(GtkWidget *widget)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Model ID selected
|
// Model ID selected
|
||||||
static void mn_modelid_5(...) {PrefsReplaceInt32("modelid", 5);}
|
static void mn_modelid(GtkWidget *widget)
|
||||||
static void mn_modelid_14(...) {PrefsReplaceInt32("modelid", 14);}
|
{
|
||||||
|
if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)))
|
||||||
|
PrefsReplaceInt32("modelid", 14);
|
||||||
|
else
|
||||||
|
PrefsReplaceInt32("modelid", 5);
|
||||||
|
}
|
||||||
|
|
||||||
// CPU/FPU type
|
// CPU/FPU type
|
||||||
static void mn_cpu_68020(...) {PrefsReplaceInt32("cpu", 2); PrefsReplaceBool("fpu", false);}
|
static void mn_cpu(GtkWidget *widget){
|
||||||
static void mn_cpu_68020_fpu(...) {PrefsReplaceInt32("cpu", 2); PrefsReplaceBool("fpu", true);}
|
int cpu = 4;
|
||||||
static void mn_cpu_68030(...) {PrefsReplaceInt32("cpu", 3); PrefsReplaceBool("fpu", false);}
|
bool fpu = true;
|
||||||
static void mn_cpu_68030_fpu(...) {PrefsReplaceInt32("cpu", 3); PrefsReplaceBool("fpu", true);}
|
switch (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)))
|
||||||
static void mn_cpu_68040(...) {PrefsReplaceInt32("cpu", 4); PrefsReplaceBool("fpu", true);}
|
{
|
||||||
|
case 0: fpu = false;
|
||||||
|
case 1: cpu = 2; break;
|
||||||
|
case 2: fpu = false;
|
||||||
|
case 3: cpu = 3; break;
|
||||||
|
}
|
||||||
|
PrefsReplaceInt32("cpu", cpu);
|
||||||
|
PrefsReplaceBool("fpu", fpu);
|
||||||
|
}
|
||||||
|
|
||||||
// Read settings from widgets and set preferences
|
// Read settings from widgets and set preferences
|
||||||
static void read_memory_settings(void)
|
static void read_memory_settings(void)
|
||||||
@ -1493,26 +1513,26 @@ static void create_memory_pane(GtkWidget *top)
|
|||||||
sprintf(default_ramsize, "%d", PrefsFindInt32("ramsize") >> 20);
|
sprintf(default_ramsize, "%d", PrefsFindInt32("ramsize") >> 20);
|
||||||
w_ramsize = table_make_combobox(table, 0, STR_RAMSIZE_CTRL, default_ramsize, options);
|
w_ramsize = table_make_combobox(table, 0, STR_RAMSIZE_CTRL, default_ramsize, options);
|
||||||
|
|
||||||
static const opt_desc model_options[] = {
|
static const combo_desc model_options[] = {
|
||||||
{STR_MODELID_5_LAB, G_CALLBACK(mn_modelid_5)},
|
STR_MODELID_5_LAB,
|
||||||
{STR_MODELID_14_LAB, G_CALLBACK(mn_modelid_14)},
|
STR_MODELID_14_LAB,
|
||||||
{0, NULL}
|
0
|
||||||
};
|
};
|
||||||
int modelid = PrefsFindInt32("modelid"), active = 0;
|
int modelid = PrefsFindInt32("modelid"), active = 0;
|
||||||
switch (modelid) {
|
switch (modelid) {
|
||||||
case 5: active = 0; break;
|
case 5: active = 0; break;
|
||||||
case 14: active = 1; break;
|
case 14: active = 1; break;
|
||||||
}
|
}
|
||||||
table_make_option_menu(table, 2, STR_MODELID_CTRL, model_options, active);
|
table_make_option_menu(table, 2, STR_MODELID_CTRL, model_options, G_CALLBACK(mn_modelid), active);
|
||||||
|
|
||||||
#if EMULATED_68K
|
#if EMULATED_68K
|
||||||
static const opt_desc cpu_options[] = {
|
static const combo_desc cpu_options[] = {
|
||||||
{STR_CPU_68020_LAB, G_CALLBACK(mn_cpu_68020)},
|
STR_CPU_68020_LAB,
|
||||||
{STR_CPU_68020_FPU_LAB, G_CALLBACK(mn_cpu_68020_fpu)},
|
STR_CPU_68020_FPU_LAB,
|
||||||
{STR_CPU_68030_LAB, G_CALLBACK(mn_cpu_68030)},
|
STR_CPU_68030_LAB,
|
||||||
{STR_CPU_68030_FPU_LAB, G_CALLBACK(mn_cpu_68030_fpu)},
|
STR_CPU_68030_FPU_LAB,
|
||||||
{STR_CPU_68040_LAB, G_CALLBACK(mn_cpu_68040)},
|
STR_CPU_68040_LAB,
|
||||||
{0, NULL}
|
0
|
||||||
};
|
};
|
||||||
int cpu = PrefsFindInt32("cpu");
|
int cpu = PrefsFindInt32("cpu");
|
||||||
bool fpu = PrefsFindBool("fpu");
|
bool fpu = PrefsFindBool("fpu");
|
||||||
@ -1522,7 +1542,7 @@ static void create_memory_pane(GtkWidget *top)
|
|||||||
case 3: active = fpu ? 3 : 2; break;
|
case 3: active = fpu ? 3 : 2; break;
|
||||||
case 4: active = 4;
|
case 4: active = 4;
|
||||||
}
|
}
|
||||||
table_make_option_menu(table, 3, STR_CPU_CTRL, cpu_options, active);
|
table_make_option_menu(table, 3, STR_CPU_CTRL, cpu_options, G_CALLBACK(mn_cpu), active);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
w_rom_file = table_make_file_entry(table, 4, STR_ROM_FILE_CTRL, "rom");
|
w_rom_file = table_make_file_entry(table, 4, STR_ROM_FILE_CTRL, "rom");
|
||||||
|
@ -197,29 +197,6 @@ static GtkWidget *make_table(GtkWidget *top, int x, int y)
|
|||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget *table_make_option_menu(GtkWidget *table, int row, int label_id, const opt_desc *options, int active)
|
|
||||||
{
|
|
||||||
GtkWidget *label, *opt, *menu;
|
|
||||||
|
|
||||||
label = gtk_label_new(GetString(label_id));
|
|
||||||
gtk_widget_show(label);
|
|
||||||
gtk_table_attach(GTK_TABLE(table), label, 0, 1, row, row + 1, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4);
|
|
||||||
|
|
||||||
opt = gtk_option_menu_new();
|
|
||||||
gtk_widget_show(opt);
|
|
||||||
menu = gtk_menu_new();
|
|
||||||
|
|
||||||
while (options->label_id) {
|
|
||||||
add_menu_item(menu, options->label_id, options->func);
|
|
||||||
options++;
|
|
||||||
}
|
|
||||||
gtk_menu_set_active(GTK_MENU(menu), active);
|
|
||||||
|
|
||||||
gtk_option_menu_set_menu(GTK_OPTION_MENU(opt), menu);
|
|
||||||
gtk_table_attach(GTK_TABLE(table), opt, 1, 2, row, row + 1, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), (GtkAttachOptions)0, 4, 4);
|
|
||||||
return menu;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GtkWidget *table_make_combobox(GtkWidget *table, int row, int label_id, const char *pref, GList *list)
|
static GtkWidget *table_make_combobox(GtkWidget *table, int row, int label_id, const char *pref, GList *list)
|
||||||
{
|
{
|
||||||
GtkWidget *label, *combo;
|
GtkWidget *label, *combo;
|
||||||
@ -282,9 +259,9 @@ static GtkWidget *table_make_file_entry(GtkWidget *table, int row, int label_id,
|
|||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget *make_option_menu(GtkWidget *top, int label_id, const opt_desc *options, int active)
|
static GtkWidget *make_option_menu(GtkWidget *top, int label_id, const combo_desc *options, GCallback func, int active)
|
||||||
{
|
{
|
||||||
GtkWidget *box, *label, *opt, *menu;
|
GtkWidget *box, *label, *combo;
|
||||||
|
|
||||||
box = gtk_hbox_new(FALSE, 4);
|
box = gtk_hbox_new(FALSE, 4);
|
||||||
gtk_widget_show(box);
|
gtk_widget_show(box);
|
||||||
@ -294,19 +271,16 @@ static GtkWidget *make_option_menu(GtkWidget *top, int label_id, const opt_desc
|
|||||||
gtk_widget_show(label);
|
gtk_widget_show(label);
|
||||||
gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0);
|
gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0);
|
||||||
|
|
||||||
opt = gtk_option_menu_new();
|
combo = gtk_combo_box_new_text();
|
||||||
gtk_widget_show(opt);
|
gtk_widget_show(combo);
|
||||||
menu = gtk_menu_new();
|
|
||||||
|
|
||||||
while (options->label_id) {
|
while (options->label_id) {
|
||||||
add_menu_item(menu, options->label_id, options->func);
|
gtk_combo_box_append_text(GTK_COMBO_BOX(combo), GetString(options->label_id));
|
||||||
options++;
|
options++;
|
||||||
}
|
}
|
||||||
gtk_menu_set_active(GTK_MENU(menu), active);
|
gtk_combo_box_set_active(GTK_COMBO_BOX(combo), active);
|
||||||
|
gtk_box_pack_start(GTK_BOX(box), combo, FALSE, FALSE, 0);
|
||||||
gtk_option_menu_set_menu(GTK_OPTION_MENU(opt), menu);
|
g_signal_connect(combo, "changed", func, NULL);
|
||||||
gtk_box_pack_start(GTK_BOX(box), opt, FALSE, FALSE, 0);
|
return combo;
|
||||||
return menu;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget *make_file_entry(GtkWidget *top, int label_id, const char *prefs_item, bool only_dirs = false)
|
static GtkWidget *make_file_entry(GtkWidget *top, int label_id, const char *prefs_item, bool only_dirs = false)
|
||||||
@ -607,8 +581,13 @@ static void cb_remove_volume(...)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// "Boot From" selected
|
// "Boot From" selected
|
||||||
static void mn_boot_any(...) {PrefsReplaceInt32("bootdriver", 0);}
|
static void mn_bootdriver(GtkWidget *widget)
|
||||||
static void mn_boot_cdrom(...) {PrefsReplaceInt32("bootdriver", CDROMRefNum);}
|
{
|
||||||
|
if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)))
|
||||||
|
PrefsReplaceInt32("bootdriver", CDROMRefNum);
|
||||||
|
else
|
||||||
|
PrefsReplaceInt32("bootdriver", 0);
|
||||||
|
}
|
||||||
|
|
||||||
// "No CD-ROM Driver" button toggled
|
// "No CD-ROM Driver" button toggled
|
||||||
static void tb_nocdrom(GtkWidget *widget)
|
static void tb_nocdrom(GtkWidget *widget)
|
||||||
@ -666,17 +645,17 @@ static void create_volumes_pane(GtkWidget *top)
|
|||||||
|
|
||||||
w_extfs = make_file_entry(box, STR_EXTFS_CTRL, "extfs", true);
|
w_extfs = make_file_entry(box, STR_EXTFS_CTRL, "extfs", true);
|
||||||
|
|
||||||
static const opt_desc options[] = {
|
static const combo_desc options[] = {
|
||||||
{STR_BOOT_ANY_LAB, G_CALLBACK(mn_boot_any)},
|
STR_BOOT_ANY_LAB,
|
||||||
{STR_BOOT_CDROM_LAB, G_CALLBACK(mn_boot_cdrom)},
|
STR_BOOT_CDROM_LAB,
|
||||||
{0, NULL}
|
0
|
||||||
};
|
};
|
||||||
int bootdriver = PrefsFindInt32("bootdriver"), active = 0;
|
int bootdriver = PrefsFindInt32("bootdriver"), active = 0;
|
||||||
switch (bootdriver) {
|
switch (bootdriver) {
|
||||||
case 0: active = 0; break;
|
case 0: active = 0; break;
|
||||||
case CDROMRefNum: active = 1; break;
|
case CDROMRefNum: active = 1; break;
|
||||||
}
|
}
|
||||||
menu = make_option_menu(box, STR_BOOTDRIVER_CTRL, options, active);
|
menu = make_option_menu(box, STR_BOOTDRIVER_CTRL, options, G_CALLBACK(mn_bootdriver), active);
|
||||||
|
|
||||||
make_checkbox(box, STR_NOCDROM_CTRL, "nocdrom", G_CALLBACK(tb_nocdrom));
|
make_checkbox(box, STR_NOCDROM_CTRL, "nocdrom", G_CALLBACK(tb_nocdrom));
|
||||||
}
|
}
|
||||||
@ -767,40 +746,30 @@ static bool is_fbdev_dga_mode = false;
|
|||||||
|
|
||||||
static GtkWidget *w_dspdevice_file, *w_mixerdevice_file;
|
static GtkWidget *w_dspdevice_file, *w_mixerdevice_file;
|
||||||
|
|
||||||
// Hide/show graphics widgets
|
// "Window"/"Fullscreen" video type selected
|
||||||
static void hide_show_graphics_widgets(void)
|
static void mn_display(GtkWidget *widget)
|
||||||
{
|
{
|
||||||
switch (display_type) {
|
if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)))
|
||||||
case DISPLAY_WINDOW:
|
display_type = DISPLAY_SCREEN;
|
||||||
gtk_widget_show(w_frameskip); gtk_widget_show(l_frameskip);
|
else
|
||||||
break;
|
display_type = DISPLAY_WINDOW;
|
||||||
case DISPLAY_SCREEN:
|
|
||||||
gtk_widget_hide(w_frameskip); gtk_widget_hide(l_frameskip);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// "Window" video type selected
|
|
||||||
static void mn_window(...)
|
|
||||||
{
|
|
||||||
display_type = DISPLAY_WINDOW;
|
|
||||||
hide_show_graphics_widgets();
|
|
||||||
}
|
|
||||||
|
|
||||||
// "Fullscreen" video type selected
|
|
||||||
static void mn_fullscreen(...)
|
|
||||||
{
|
|
||||||
display_type = DISPLAY_SCREEN;
|
|
||||||
hide_show_graphics_widgets();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// "5 Hz".."60Hz" selected
|
// "5 Hz".."60Hz" selected
|
||||||
static void mn_5hz(...) {PrefsReplaceInt32("frameskip", 12);}
|
static void mn_frameskip(GtkWidget *widget)
|
||||||
static void mn_7hz(...) {PrefsReplaceInt32("frameskip", 8);}
|
{
|
||||||
static void mn_10hz(...) {PrefsReplaceInt32("frameskip", 6);}
|
int frameskip = 1;
|
||||||
static void mn_15hz(...) {PrefsReplaceInt32("frameskip", 4);}
|
switch(gtk_combo_box_get_active(GTK_COMBO_BOX(widget)))
|
||||||
static void mn_30hz(...) {PrefsReplaceInt32("frameskip", 2);}
|
{
|
||||||
static void mn_60hz(...) {PrefsReplaceInt32("frameskip", 1);}
|
case 0: frameskip = 12; break;
|
||||||
|
case 1: frameskip = 8; break;
|
||||||
|
case 2: frameskip = 6; break;
|
||||||
|
case 3: frameskip = 4; break;
|
||||||
|
case 4: frameskip = 2; break;
|
||||||
|
case 5: frameskip = 1; break;
|
||||||
|
}
|
||||||
|
PrefsReplaceInt32("frameskip", frameskip);
|
||||||
|
}
|
||||||
|
|
||||||
// QuickDraw acceleration
|
// QuickDraw acceleration
|
||||||
static void tb_gfxaccel(GtkWidget *widget)
|
static void tb_gfxaccel(GtkWidget *widget)
|
||||||
@ -925,7 +894,7 @@ static void read_graphics_settings(void)
|
|||||||
// Create "Graphics/Sound" pane
|
// Create "Graphics/Sound" pane
|
||||||
static void create_graphics_pane(GtkWidget *top)
|
static void create_graphics_pane(GtkWidget *top)
|
||||||
{
|
{
|
||||||
GtkWidget *box, *table, *label, *opt, *menu, *combo;
|
GtkWidget *box, *table, *label, *combo;
|
||||||
char str[32];
|
char str[32];
|
||||||
|
|
||||||
parse_graphics_prefs();
|
parse_graphics_prefs();
|
||||||
@ -937,35 +906,33 @@ static void create_graphics_pane(GtkWidget *top)
|
|||||||
gtk_widget_show(label);
|
gtk_widget_show(label);
|
||||||
gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4);
|
gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4);
|
||||||
|
|
||||||
opt = gtk_option_menu_new();
|
combo = gtk_combo_box_new_text();
|
||||||
gtk_widget_show(opt);
|
gtk_widget_show(combo);
|
||||||
menu = gtk_menu_new();
|
gtk_combo_box_append_text(GTK_COMBO_BOX(combo), GetString(STR_WINDOW_CTRL));
|
||||||
add_menu_item(menu, STR_WINDOW_CTRL, G_CALLBACK(mn_window));
|
gtk_combo_box_append_text(GTK_COMBO_BOX(combo), GetString(STR_FULLSCREEN_CTRL));
|
||||||
add_menu_item(menu, STR_FULLSCREEN_CTRL, G_CALLBACK(mn_fullscreen));
|
|
||||||
switch (display_type) {
|
switch (display_type) {
|
||||||
case DISPLAY_WINDOW:
|
case DISPLAY_WINDOW:
|
||||||
gtk_menu_set_active(GTK_MENU(menu), 0);
|
gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
|
||||||
break;
|
break;
|
||||||
case DISPLAY_SCREEN:
|
case DISPLAY_SCREEN:
|
||||||
gtk_menu_set_active(GTK_MENU(menu), 1);
|
gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
gtk_option_menu_set_menu(GTK_OPTION_MENU(opt), menu);
|
g_signal_connect(combo, "changed", G_CALLBACK(mn_display), NULL);
|
||||||
gtk_table_attach(GTK_TABLE(table), opt, 1, 2, 0, 1, (GtkAttachOptions)GTK_FILL, (GtkAttachOptions)0, 4, 4);
|
gtk_table_attach(GTK_TABLE(table), combo, 1, 2, 0, 1, (GtkAttachOptions)GTK_FILL, (GtkAttachOptions)0, 4, 4);
|
||||||
|
|
||||||
l_frameskip = gtk_label_new(GetString(STR_FRAMESKIP_CTRL));
|
l_frameskip = gtk_label_new(GetString(STR_FRAMESKIP_CTRL));
|
||||||
gtk_widget_show(l_frameskip);
|
gtk_widget_show(l_frameskip);
|
||||||
gtk_table_attach(GTK_TABLE(table), l_frameskip, 0, 1, 1, 2, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4);
|
gtk_table_attach(GTK_TABLE(table), l_frameskip, 0, 1, 1, 2, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4);
|
||||||
|
|
||||||
w_frameskip = gtk_option_menu_new();
|
w_frameskip = gtk_combo_box_new_text();
|
||||||
gtk_widget_show(w_frameskip);
|
gtk_widget_show(w_frameskip);
|
||||||
menu = gtk_menu_new();
|
gtk_combo_box_append_text(GTK_COMBO_BOX(w_frameskip), GetString(STR_REF_5HZ_LAB));
|
||||||
add_menu_item(menu, STR_REF_5HZ_LAB, G_CALLBACK(mn_5hz));
|
gtk_combo_box_append_text(GTK_COMBO_BOX(w_frameskip), GetString(STR_REF_7_5HZ_LAB));
|
||||||
add_menu_item(menu, STR_REF_7_5HZ_LAB, G_CALLBACK(mn_7hz));
|
gtk_combo_box_append_text(GTK_COMBO_BOX(w_frameskip), GetString(STR_REF_10HZ_LAB));
|
||||||
add_menu_item(menu, STR_REF_10HZ_LAB, G_CALLBACK(mn_10hz));
|
gtk_combo_box_append_text(GTK_COMBO_BOX(w_frameskip), GetString(STR_REF_15HZ_LAB));
|
||||||
add_menu_item(menu, STR_REF_15HZ_LAB, G_CALLBACK(mn_15hz));
|
gtk_combo_box_append_text(GTK_COMBO_BOX(w_frameskip), GetString(STR_REF_30HZ_LAB));
|
||||||
add_menu_item(menu, STR_REF_30HZ_LAB, G_CALLBACK(mn_30hz));
|
gtk_combo_box_append_text(GTK_COMBO_BOX(w_frameskip), GetString(STR_REF_60HZ_LAB));
|
||||||
add_menu_item(menu, STR_REF_60HZ_LAB, G_CALLBACK(mn_60hz));
|
|
||||||
int frameskip = PrefsFindInt32("frameskip");
|
int frameskip = PrefsFindInt32("frameskip");
|
||||||
int item = -1;
|
int item = -1;
|
||||||
switch (frameskip) {
|
switch (frameskip) {
|
||||||
@ -978,8 +945,8 @@ static void create_graphics_pane(GtkWidget *top)
|
|||||||
case 0: item = 5; break;
|
case 0: item = 5; break;
|
||||||
}
|
}
|
||||||
if (item >= 0)
|
if (item >= 0)
|
||||||
gtk_menu_set_active(GTK_MENU(menu), item);
|
gtk_combo_box_set_active(GTK_COMBO_BOX(w_frameskip), item);
|
||||||
gtk_option_menu_set_menu(GTK_OPTION_MENU(w_frameskip), menu);
|
g_signal_connect(combo, "changed", G_CALLBACK(mn_frameskip), NULL);
|
||||||
gtk_table_attach(GTK_TABLE(table), w_frameskip, 1, 2, 1, 2, (GtkAttachOptions)GTK_FILL, (GtkAttachOptions)0, 4, 4);
|
gtk_table_attach(GTK_TABLE(table), w_frameskip, 1, 2, 1, 2, (GtkAttachOptions)GTK_FILL, (GtkAttachOptions)0, 4, 4);
|
||||||
|
|
||||||
l_display_x = gtk_label_new(GetString(STR_DISPLAY_X_CTRL));
|
l_display_x = gtk_label_new(GetString(STR_DISPLAY_X_CTRL));
|
||||||
@ -1026,8 +993,6 @@ static void create_graphics_pane(GtkWidget *top)
|
|||||||
w_mixerdevice_file = make_file_entry(box, STR_MIXERDEVICE_FILE_CTRL, "mixer");
|
w_mixerdevice_file = make_file_entry(box, STR_MIXERDEVICE_FILE_CTRL, "mixer");
|
||||||
|
|
||||||
set_graphics_sensitive();
|
set_graphics_sensitive();
|
||||||
|
|
||||||
hide_show_graphics_widgets();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1055,8 +1020,11 @@ static void tb_keycodes(GtkWidget *widget)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// "Mouse Wheel Mode" selected
|
// "Mouse Wheel Mode" selected
|
||||||
static void mn_wheel_page(...) {PrefsReplaceInt32("mousewheelmode", 0); set_input_sensitive();}
|
static void mn_wheelmode(GtkWidget *widget)
|
||||||
static void mn_wheel_cursor(...) {PrefsReplaceInt32("mousewheelmode", 1); set_input_sensitive();}
|
{
|
||||||
|
PrefsReplaceInt32("mousewheelmode", gtk_combo_box_get_active(GTK_COMBO_BOX(widget)));
|
||||||
|
set_input_sensitive();
|
||||||
|
}
|
||||||
|
|
||||||
// Read settings from widgets and set preferences
|
// Read settings from widgets and set preferences
|
||||||
static void read_input_settings(void)
|
static void read_input_settings(void)
|
||||||
@ -1103,17 +1071,17 @@ static void create_input_pane(GtkWidget *top)
|
|||||||
|
|
||||||
make_separator(box);
|
make_separator(box);
|
||||||
|
|
||||||
static const opt_desc options[] = {
|
static const combo_desc options[] = {
|
||||||
{STR_MOUSEWHEELMODE_PAGE_LAB, G_CALLBACK(mn_wheel_page)},
|
STR_MOUSEWHEELMODE_PAGE_LAB,
|
||||||
{STR_MOUSEWHEELMODE_CURSOR_LAB, G_CALLBACK(mn_wheel_cursor)},
|
STR_MOUSEWHEELMODE_CURSOR_LAB,
|
||||||
{0, NULL}
|
0
|
||||||
};
|
};
|
||||||
int wheelmode = PrefsFindInt32("mousewheelmode"), active = 0;
|
int wheelmode = PrefsFindInt32("mousewheelmode"), active = 0;
|
||||||
switch (wheelmode) {
|
switch (wheelmode) {
|
||||||
case 0: active = 0; break;
|
case 0: active = 0; break;
|
||||||
case 1: active = 1; break;
|
case 1: active = 1; break;
|
||||||
}
|
}
|
||||||
menu = make_option_menu(box, STR_MOUSEWHEELMODE_CTRL, options, active);
|
menu = make_option_menu(box, STR_MOUSEWHEELMODE_CTRL, options, G_CALLBACK(mn_wheelmode), active);
|
||||||
|
|
||||||
hbox = gtk_hbox_new(FALSE, 4);
|
hbox = gtk_hbox_new(FALSE, 4);
|
||||||
gtk_widget_show(hbox);
|
gtk_widget_show(hbox);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user