static UI_CALLBACK(set_maximum_speed) { int current_speed; resources_get_int("Speed", ¤t_speed); if (!CHECK_MENUS) { if (current_speed != vice_ptr_to_int(UI_MENU_CB_PARAM)) { resources_set_int("Speed", vice_ptr_to_int(UI_MENU_CB_PARAM)); ui_update_menus(); } } else { if (current_speed == vice_ptr_to_int(UI_MENU_CB_PARAM)) { ui_menu_set_tick(w, 1); } else { ui_menu_set_tick(w, 0); } if (UI_MENU_CB_PARAM == 0) { int current_refresh_rate; resources_get_int("RefreshRate", ¤t_refresh_rate); ui_menu_set_sensitive(w, current_refresh_rate != 0); } } }
static UI_CALLBACK(set_refresh_rate) { int current_refresh_rate; resources_get_int("RefreshRate", ¤t_refresh_rate); if (!CHECK_MENUS) { if (current_refresh_rate != vice_ptr_to_int(UI_MENU_CB_PARAM)) { resources_set_int("RefreshRate", vice_ptr_to_int(UI_MENU_CB_PARAM)); ui_update_menus(); } } else { if (vice_ptr_to_int(UI_MENU_CB_PARAM) == current_refresh_rate) { ui_menu_set_tick(w, 1); } else { ui_menu_set_tick(w, 0); } if (UI_MENU_CB_PARAM == 0) { int speed; resources_get_int("Speed", &speed); if (speed == 0) { /* Cannot enable the `automatic' setting if a speed limit is not specified. */ ui_menu_set_sensitive(w, 0); } else { ui_menu_set_sensitive(w, 1); } } } }
void ui_select_renderer(ui_window_t w, int check, int type, char *chip) { char r1[0x20], r2[0x20]; int renderer = 0, crt, have_scale2x, scale2x, doublesize; strcpy(r1, chip); strcpy(r2, chip); strcat(r1, "Scale2x"); strcat(r2, "DoubleSize"); resources_get_int("PalEmulation", &crt); if (resources_query_type(r1) == RES_INTEGER) { resources_get_int(r1, &scale2x); have_scale2x = 1; } else { scale2x = 0; have_scale2x = 0; } resources_get_int(r2, &doublesize); if (crt) { renderer = 1; } else if ((scale2x > 0) && (doublesize > 0)) { renderer = 2; } if (!check) { switch (type) { case 0: /* unfiltered */ crt = 0; scale2x = 0; break; case 1: /* CRT */ crt = 1; scale2x = 0; break; case 2: /* scale 2x */ crt = 0; scale2x = 1; doublesize = 1; break; } resources_set_int("PalEmulation", crt); if (have_scale2x) { resources_set_int(r1, scale2x); } resources_set_int(r2, doublesize); ui_update_menus(); } else { if (renderer == type) { ui_menu_set_tick(w, 1); } else { ui_menu_set_tick(w, 0); } } }
static void pet_select_keymap(ui_window_t w, int check, char *name, int sympos) { char filename[0x20]; const char *resname; int kindex; const char *wd; const char *maps[6] = {"x11_buks", "x11_bukp", "x11_bgrs", "x11_bgrp", "x11_bdes", "x11_bdep"}; resources_get_int("KeymapIndex", &kindex); strcpy(filename, maps[kindex]); strcat(filename, name); kindex = (kindex & ~1) + sympos; resname = machine_keymap_res_name_list[kindex]; if (name) { if (!check) { resources_set_string(resname, filename); ui_update_menus(); } else { resources_get_string(resname, &wd); if (!strcmp(wd, filename)) { ui_menu_set_tick(w, 1); } else { ui_menu_set_tick(w, 0); } } } }
static UI_CALLBACK(set_custom_maximum_speed) { static char input_string[32]; char *msg_string; ui_button_t button; int i; int current_speed; resources_get_int("Speed", ¤t_speed); if (!*input_string) { sprintf(input_string, "%d", current_speed); } if (CHECK_MENUS) { switch (current_speed) { case 200: case 100: case 50: case 20: case 10: case 0: ui_menu_set_tick(w, 0); break; default: ui_menu_set_tick(w, 1); } } else { vsync_suspend_speed_eval(); msg_string = lib_stralloc(_("Enter speed")); button = ui_input_string(_("Maximum speed"), msg_string, input_string, 32); lib_free(msg_string); if (button == UI_BUTTON_OK) { int current_refresh_rate; resources_get_int("RefreshRate", ¤t_refresh_rate); i = atoi(input_string); if (!(current_refresh_rate <= 0 && i <= 0) && i >= 0 && current_speed != i) { resources_set_int("Speed", i); ui_update_menus(); } else { ui_error(_("Invalid speed value")); } } } }
static UI_CALLBACK(radio_model) { int model, selected; selected = vice_ptr_to_int(UI_MENU_CB_PARAM); if (!CHECK_MENUS) { dtvmodel_set(selected); ui_update_menus(); } else { model = dtvmodel_get(); if (selected == model) { ui_menu_set_tick(w, 1); } else { ui_menu_set_tick(w, 0); } } }
static UI_CALLBACK(set_joystick_device_4) { int tmp; if (!CHECK_MENUS) { resources_set_int("JoyDevice4", vice_ptr_to_int(UI_MENU_CB_PARAM)); ui_update_menus(); } else { resources_get_int("JoyDevice4", &tmp); ui_menu_set_tick(w, tmp == vice_ptr_to_int(UI_MENU_CB_PARAM)); } }
static UI_CALLBACK(toggle_DelayLoopEmulation) { int delayloopemulation; resources_get_int("PALEmulation", &delayloopemulation); if (!CHECK_MENUS) { resources_set_int("PALEmulation", !delayloopemulation); ui_update_menus(); } else { ui_menu_set_tick(w, delayloopemulation); } }
static UI_CALLBACK(toggle_pause) { static int pause = 0; if (!CHECK_MENUS) { pause = !pause; ui_update_menus(); ui_pause_emulation(pause); return; } ui_menu_set_tick(w, pause); }
/* unused ? */ static UI_CALLBACK(set_joystick_device) { vsync_suspend_speed_eval(); if (!CHECK_MENUS) { resources_set_int("JoyDevice1", vice_ptr_to_int(UI_MENU_CB_PARAM)); ui_update_menus(); } else { int tmp; resources_get_int("JoyDevice1", &tmp); ui_menu_set_tick(w, tmp == vice_ptr_to_int(UI_MENU_CB_PARAM)); } }
/* this is partially modeled after the radio_* callbacks */ static UI_CALLBACK(set_KeyboardType) { int current_value, new_value = 2 * vice_ptr_to_int(UI_MENU_CB_PARAM); resources_get_int("KeymapIndex", ¤t_value); if (!CHECK_MENUS) { if ((current_value & ~1) != new_value) { resources_set_int("KeymapIndex", (current_value & 1) + new_value); ui_update_menus(); } } else { ui_menu_set_tick(w, (current_value & ~1) == new_value); } }
static UI_CALLBACK(set_custom_refresh_rate) { static char input_string[32]; char *msg_string; ui_button_t button; int i; int current_refresh_rate; resources_get_int("RefreshRate", ¤t_refresh_rate); if (!*input_string) { sprintf(input_string, "%d", current_refresh_rate); } if (CHECK_MENUS) { if (current_refresh_rate < 0 || current_refresh_rate > 10) { ui_menu_set_tick(w, 1); } else { ui_menu_set_tick(w, 0); } } else { int current_speed; vsync_suspend_speed_eval(); msg_string = lib_stralloc(_("Enter refresh rate")); button = ui_input_string(_("Refresh rate"), msg_string, input_string, 32); lib_free(msg_string); if (button == UI_BUTTON_OK) { i = atoi(input_string); resources_get_int("Speed", ¤t_speed); if (!(current_speed <= 0 && i <= 0) && i >= 0 && current_refresh_rate != i) { resources_set_int("RefreshRate", i); ui_update_menus(); } } } }
void ui_select_keymap(ui_window_t w, int check, char *name, int sympos) { const char *resname; int kindex; const char *wd; resources_get_int("KeymapIndex", &kindex); kindex = (kindex & ~1) + sympos; resname = machine_keymap_res_name_list[kindex]; if (name) { if (!check) { resources_set_string(resname, name); ui_update_menus(); } else { resources_get_string(resname, &wd); if (!strcmp(wd, name)) { ui_menu_set_tick(w, 1); } else { ui_menu_set_tick(w, 0); } } } }
void _ui_menu_toggle_helper(Widget w, ui_callback_data_t client_data, ui_callback_data_t call_data, const char *resource_name) { int current_value; if (resources_get_int(resource_name, ¤t_value) < 0) { return; } if (!call_data) { resources_set_int(resource_name, !current_value); ui_update_menus(); } else { ui_menu_set_tick(w, current_value); } }
void _ui_menu_radio_helper(Widget w, ui_callback_data_t client_data, ui_callback_data_t call_data, const char *resource_name) { int current_value; resources_get_int(resource_name, ¤t_value); if (!call_data) { if (current_value != vice_ptr_to_int(client_data)) { resources_set_int(resource_name, vice_ptr_to_int(client_data)); ui_update_menus(); } } else { ui_menu_set_tick(w, current_value == vice_ptr_to_int(client_data)); } }
void _ui_menu_toggle_helper(GtkWidget *w, ui_callback_data_t event_data, const char *resource_name) { int current_value; if (resources_get_int(resource_name, ¤t_value) < 0) return; if(!CHECK_MENUS) { resources_set_int(resource_name, !current_value); ui_update_menus(); } else { ui_menu_set_tick(w, current_value); } }
/* this is partially modeled after the radio_* callbacks */ static UI_CALLBACK(set_KeyboardType) { int current_value, new_value = 2 * (int)UI_MENU_CB_PARAM; extern char *keymap_file_resource_names[]; resources_get_int("KeymapIndex", ¤t_value); if (!call_data) { if ((current_value & ~1) != new_value) { resources_set_int("KeymapIndex", (current_value & 1) + new_value); ui_update_menus(); } } else { ui_menu_set_tick(w, current_value == new_value); } }
void _ui_menu_radio_helper(GtkWidget *w, ui_callback_data_t event_data, const char *resource_name) { int current_value; resources_get_int(resource_name, ¤t_value); if (!CHECK_MENUS) { if (current_value != (int)UI_MENU_CB_PARAM) { resources_set_int(resource_name, (int)UI_MENU_CB_PARAM); ui_update_menus(); } } else { ui_menu_set_tick(w, current_value == (int)UI_MENU_CB_PARAM); } }
static UI_CALLBACK(set_keymap_type) { int kindex, newindex = vice_ptr_to_int(UI_MENU_CB_PARAM); if (resources_get_int("KeymapIndex", &kindex) < 0) { return; } if (!CHECK_MENUS) { if ((kindex & 1) != newindex) { resources_set_int("KeymapIndex", (kindex & ~1) + newindex); ui_update_menus(); } } else { ui_menu_set_tick(w, (kindex & 1) == newindex); } }
void _ui_menu_string_radio_helper(Widget w, ui_callback_data_t client_data, ui_callback_data_t call_data, const char *resource_name) { const char *current_value; resources_get_string(resource_name, ¤t_value); if (current_value == 0) { return; } if (!call_data) { if (strcmp(current_value, (const char *)client_data) != 0) { resources_set_string(resource_name, (const char *)client_data); ui_update_menus(); } } else { ui_menu_set_tick(w, strcmp(current_value, (const char *)client_data) == 0); } }
void _ui_menu_string_radio_helper(GtkWidget *w, ui_callback_data_t event_data, const char *resource_name) { const char *current_value; resources_get_string(resource_name, ¤t_value); if (current_value == NULL) return; if (!CHECK_MENUS) { if (strcmp(current_value, (const char *)UI_MENU_CB_PARAM) != 0) { resources_set_string(resource_name,(const char *)UI_MENU_CB_PARAM); ui_update_menus(); } } else { ui_menu_set_tick(w, strcmp(current_value, (const char *) UI_MENU_CB_PARAM) == 0); } }