void ui_joystick_swap_joystick(void) { int device1; int device2; resources_get_value("JoyDevice1",(void *)&device1); resources_get_value("JoyDevice2",(void *)&device2); resources_set_value("JoyDevice1",(resource_value_t)device2); resources_set_value("JoyDevice2",(resource_value_t)device1); }
void ui_joystick_swap_extra_joystick(void) { int device3; int device4; resources_get_value("JoyDevice3",(void *)&device3); resources_get_value("JoyDevice4",(void *)&device4); resources_set_value("JoyDevice3",(resource_value_t)device4); resources_set_value("JoyDevice4",(resource_value_t)device3); }
void ui_network_dialog(void) { APTR window = mui_make_simple_window(build_gui(), translate_text(IDS_NETPLAY_SETTINGS)); /* FIXME: Bad workaround */ resources_set_value("EventSnapshotDir", (resource_value_t)""); if (window != NULL) { mui_add_window(window); ui_get_to(ui_to_from); set(window, MUIA_Window_Open, TRUE); switch (mui_run()) { case BTN_START_SERVER: ui_get_from(ui_to_from); if (network_start_server() < 0) { ui_error(translate_text(IDMES_ERROR_STARTING_SERVER)); } break; case BTN_CONNECT_TO: ui_get_from(ui_to_from); if (network_connect_client() < 0) { ui_error(translate_text(IDMES_ERROR_CONNECTING_CLIENT)); } break; case BTN_DISCONNECT: network_disconnect(); break; } set(window, MUIA_Window_Open, FALSE); mui_rem_window(window); MUI_DisposeObject(window); } }
static void set_cfg(int joy) { keysym_type *keysym = (joy == 2) ? keysym_2 : keysym_1; char tmp[256], txt[256]; unsigned int i; sprintf(txt, "JOYAI%d_ID", joy); sprintf(tmp, "%lu", joy_id[joy - 1]); resources_set_value(txt, tmp); for (i = 0; i < NUM_KEYSYM; i++) { sprintf(txt, "JOYAI%d_%s", joy, keysym[i].label); sprintf(tmp, "%d,%d,%d", keysym[i].type,keysym[i].offset,keysym[i].rawkey); resources_set_value(txt, tmp); } }
static void check_get_from_ui(ui_to_from_t *data) { int val = 0; get(data->object, MUIA_Selected, (APTR)&val); resources_set_value(data->resource, (resource_value_t *)val); }
static void filename_get_from_ui(ui_to_from_t *data) { char *str; get(data->object, MUIA_String_Contents, (APTR)&str); resources_set_value(data->resource, (resource_value_t *)str); }
static void radio_get_from_ui(ui_to_from_t *data) { int n, val = 0; get(data->object, MUIA_Radio_Active, (APTR)&n); val = data->values[n]; resources_set_value(data->resource, (resource_value_t *)val); }
static void cycle_string_get_from_ui(ui_to_from_t *data) { int n; char *str; get(data->object, MUIA_Cycle_Active, (APTR)&n); str = data->string_choices[n]; resources_set_value(data->resource, (resource_value_t *)str); }
static void integer_get_from_ui(ui_to_from_t *data) { int val = 0; char *str; get(data->object, MUIA_String_Contents, (APTR)&str); val = atoi(str); if (data->values != NULL) { if (val < data->values[0]) { ui_error(translate_text(IDMES_VALUE_D_OUT_OF_RANGE_USING_D_INSTEAD), val, data->values[0], data->values[1], data->values[0]); val = data->values[0]; } if (val > data->values[1]) { ui_error(translate_text(IDMES_VALUE_D_OUT_OF_RANGE_USING_D_INSTEAD), val, data->values[0], data->values[1], data->values[1]); val = data->values[1]; } } resources_set_value(data->resource, (resource_value_t *)val); }
static void float_get_from_ui(ui_to_from_t *data) { int val = 0; double fval; char *str; get(data->object, MUIA_String_Contents, (APTR)&str); fval = atof(str); val = (int)(fval * 1000.0 + 0.5); if (data->values != NULL) { if (val < data->values[0]) { ui_error(translate_text(IDMES_VALUE_F_OUT_OF_RANGE_USING_F_INSTEAD), fval, (float)(data->values[0] / 1000), (float)(data->values[1] / 1000), (float)(data->values[0] / 1000)); val = data->values[0]; } if (val > data->values[1]) { ui_error(translate_text(IDMES_VALUE_F_OUT_OF_RANGE_USING_F_INSTEAD), val, (float)(data->values[0] / 1000), (float)(data->values[1] / 1000), (float)(data->values[1] / 1000)); val = data->values[1]; } } resources_set_value(data->resource, (resource_value_t *)val); }
int cmdline_parse(int *argc, char **argv) { int i = 1; unsigned j; DBG(("cmdline_parse (argc:%d)\n", *argc)); while ((i < *argc) && (argv[i] != NULL)) { DBG(("%d:%s\n", i, argv[i])); if ((argv[i][0] == '-') || (argv[i][0] == '+')) { int is_ambiguous, retval; cmdline_option_ram_t *p; if (argv[i][1] == '\0') { archdep_startup_log_error("Invalid option '%s'.\n", argv[i]); return -1; } if (argv[i][1] == '-') { /* `--' delimits the end of the option list. */ if (argv[i][2] == '\0') { i++; break; } /* This is a kludge to allow --long options */ for (j = 0; j < strlen(argv[i]); j++) { argv[i][j] = argv[i][j + 1]; } } p = lookup(argv[i], &is_ambiguous); if (p == NULL) { archdep_startup_log_error("Unknown option '%s'.\n", argv[i]); return -1; } if (is_ambiguous) { archdep_startup_log_error("Option '%s' is ambiguous.\n", argv[i]); return -1; } if (p->need_arg && i >= *argc - 1) { archdep_startup_log_error("Option '%s' requires a parameter.\n", p->name); return -1; } switch (p->type) { case SET_RESOURCE: if (p->need_arg) { retval = resources_set_value_string(p->resource_name, argv[i + 1]); } else { retval = resources_set_value(p->resource_name, p->resource_value); } break; case CALL_FUNCTION: retval = p->set_func(p->need_arg ? argv[i + 1] : NULL, p->extra_param); break; default: archdep_startup_log_error("Invalid type for option '%s'.\n", p->name); return -1; } if (retval < 0) { if (p->need_arg) { archdep_startup_log_error("Argument '%s' not valid for option `%s'.\n", argv[i + 1], p->name); } else { archdep_startup_log_error("Option '%s' not valid.\n", p->name); } return -1; } i += p->need_arg ? 2 : 1; } else { break; } } /* Remove all of the parsed options. */ DBG(("i:%d argc:%d\n", i, *argc)); j = 1; while (1) { argv[j] = argv[i]; if ((argv[i] == NULL) || (i >= *argc)) { break; } DBG(("%u <- %d:%s\n", j, i, argv[i])); j++; i++; } *argc = (int)j; DBG(("new argc:%u\n", j)); return 0; }
char *uilib_select_file_autostart(const char *title, unsigned int filterlist, unsigned int type, int style, int *autostart, char *resource_readonly) { char *name = NULL; char *initialdir = NULL; char *initialfile = NULL; // char *filter = NULL; // unsigned int filterindex; // OPENFILENAME ofn; // int result; char *ret = NULL; if (styles[style].initialdir_resource != NULL) resources_get_value(styles[style].initialdir_resource, (void *)&initialdir); initialfile = ui_file_selector_initialfile[style]; if (styles[style].file_resource != NULL) resources_get_value(styles[style].file_resource, (void *)&initialfile); #if 0 if (fontfile == NULL) { fontfile = util_concat(archdep_boot_path(), "\\fonts\\cbm-directory-charset.fon", NULL); font_loaded = 0; EnumFontFamilies(GetDC(NULL), "cbm-directory-charset/ck!", (FONTENUMPROC)EnumFontProc, (LPARAM)&font_loaded); if (font_loaded == 0) { font_loaded = AddFontResource(fontfile); } } filter = set_filter(filterlist, &filterindex); memset(&ofn, 0, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hwnd; ofn.hInstance = winmain_instance; ofn.lpstrFilter = filter; ofn.lpstrCustomFilter = NULL; ofn.nMaxCustFilter = 0; ofn.nFilterIndex = filterindex; ofn.lpstrFile = st_name; ofn.nMaxFile = sizeof(st_name); ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = 0; ofn.lpstrInitialDir = initialdir; ofn.lpstrTitle = title; ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY | OFN_NOTESTFILECREATE | OFN_SHAREAWARE | OFN_ENABLESIZING; if (styles[style].TemplateID != 0) { ofn.Flags |= OFN_ENABLEHOOK | OFN_ENABLETEMPLATE; ofn.lpfnHook = styles[style].hook_proc; ofn.lpTemplateName = MAKEINTRESOURCE(styles[style].TemplateID); } else { ofn.lpfnHook = NULL; ofn.lpTemplateName = NULL; } if (type == UILIB_SELECTOR_TYPE_FILE_LOAD) ofn.Flags |= OFN_FILEMUSTEXIST; ofn.nFileOffset = 0; ofn.nFileExtension = 0; ofn.lpstrDefExt = NULL; read_content_func = styles[style].content_read_function; autostart_result = autostart; res_readonly = resource_readonly; vsync_suspend_speed_eval(); if (type == UILIB_SELECTOR_TYPE_FILE_SAVE) result = GetSaveFileName(&ofn); else result = GetOpenFileName(&ofn); update_filter_history(ofn.nFilterIndex); #endif name = ui_filereq(title, styles[style].TemplateID, initialdir, initialfile, styles[style].content_read_function, autostart, resource_readonly); if (name != NULL) { char newdir[1024], *ptr = PathPart(name); memcpy(newdir, name, (int)(ptr - name)); newdir[(int)(ptr - name)] = '\0'; if (ui_file_selector_initialfile[style] != NULL) lib_free(ui_file_selector_initialfile[style]); if (styles[style].file_resource != NULL) resources_set_value(styles[style].file_resource, FilePart(name)); ui_file_selector_initialfile[style] = lib_stralloc(FilePart(name)); resources_set_value(styles[style].initialdir_resource, newdir); ret = lib_stralloc(name); } // lib_free(filter); return ret; }
int cmdline_parse(int *argc, char **argv) { int i = 1; while (i < *argc) { if (*argv[i] == '-' || *argv[i] == '+') { int is_ambiguous, retval; cmdline_option_ram_t *p; if (argv[i][1] == '\0') { archdep_startup_log_error("Invalid option '%s'.\n", argv[i]); return -1; } /* `--' delimits the end of the option list. */ if (argv[i][1] == '-') { i++; break; } p = lookup(argv[i], &is_ambiguous); if (p == NULL) { archdep_startup_log_error("Unknown option '%s'.\n", argv[i]); return -1; } if (is_ambiguous) { archdep_startup_log_error("Option '%s' is ambiguous.\n", argv[i]); return -1; } if (p->need_arg && i >= *argc - 1) { archdep_startup_log_error("Option '%s' requires a parameter.\n", p->name); return -1; } switch(p->type) { case SET_RESOURCE: if (p->need_arg) retval = resources_set_value_string(p->resource_name, argv[i + 1]); else retval = resources_set_value(p->resource_name, p->resource_value); break; case CALL_FUNCTION: retval = p->set_func(p->need_arg ? argv[i+1] : NULL, p->extra_param); break; default: archdep_startup_log_error("Invalid type for option '%s'.\n", p->name); return -1; } if (retval < 0) { if (p->need_arg) archdep_startup_log_error("Argument '%s' not valid for option `%s'.\n", argv[i + 1], p->name); else archdep_startup_log_error("Option '%s' not valid.\n", p->name); return -1; } i += p->need_arg ? 2 : 1; } else break; } /* Remove all the parsed options. */ { int j; for (j = 1; j <= (*argc - i); j++) argv[j] = argv[i + j - 1]; *argc -= i; } return 0; }
static int vsid_menu_handle(int idm) { char *fname = NULL; char *curlang; int i; switch (idm) { case IDM_NEXT_TUNE: if (current_song < songs) { current_song++; psid_ui_set_tune(uint_to_void_ptr(current_song), NULL); vsid_ui_display_tune_nr(current_song); vsid_ui_set_default_tune(default_song); vsid_ui_display_nr_of_tunes(songs); } break; case IDM_PREVIOUS_TUNE: if (current_song > 1) { current_song--; psid_ui_set_tune(uint_to_void_ptr(current_song), NULL); vsid_ui_display_tune_nr(current_song); vsid_ui_set_default_tune(default_song); vsid_ui_display_nr_of_tunes(songs); } break; case IDM_LOAD_PSID_FILE: fname = VSID_BrowseFile(translate_text(IDS_PSID_SELECT), "#?"); if (fname != NULL) { if (machine_autodetect_psid(fname) >= 0) { psid_init_driver(); machine_play_psid(0); for (i = 0; i < VSID_S_LASTLINE; i++) { *vsidstrings[i] = 0; } machine_trigger_reset(MACHINE_RESET_MODE_SOFT); songs = psid_tunes(&default_song); current_song = default_song; psid_ui_set_tune(uint_to_void_ptr(current_song), NULL); vsid_ui_display_tune_nr(current_song); vsid_ui_set_default_tune(default_song); vsid_ui_display_nr_of_tunes(songs); } } break; case IDM_RESET_HARD: machine_trigger_reset(MACHINE_RESET_MODE_HARD); break; case IDM_RESET_SOFT: machine_trigger_reset(MACHINE_RESET_MODE_SOFT); break; case IDM_EXIT: do_quit_vice = 1; break; case IDM_SETTINGS_SAVE_FILE: fname = VSID_BrowseFile(translate_text(IDS_CONFIG_FILENAME_SELECT), "#?"); if (fname != NULL) { if (resources_save(fname) < 0) { ui_error(translate_text(IDMES_CANNOT_SAVE_SETTINGS)); } else { ui_message(translate_text(IDMES_SETTINGS_SAVED_SUCCESS)); } } break; case IDM_SETTINGS_LOAD_FILE: fname = VSID_BrowseFile(translate_text(IDS_CONFIG_FILENAME_SELECT), "#?"); if (fname != NULL) { if (resources_load(fname) < 0) { ui_error(translate_text(IDMES_CANNOT_LOAD_SETTINGS)); } else { ui_message(translate_text(IDMES_SETTINGS_LOAD_SUCCESS)); } } break; case IDM_SETTINGS_SAVE: if (resources_save(NULL) < 0) { ui_error(translate_text(IDMES_CANNOT_SAVE_SETTINGS)); } else { ui_message(translate_text(IDMES_SETTINGS_SAVED_SUCCESS)); } break; case IDM_SETTINGS_LOAD: if (resources_load(NULL) < 0) { ui_error(translate_text(IDMES_CANNOT_LOAD_SETTINGS)); } else { ui_message(translate_text(IDMES_SETTINGS_LOAD_SUCCESS)); } break; case IDM_SETTINGS_DEFAULT: resources_set_defaults(); ui_message(translate_text(IDMES_DFLT_SETTINGS_RESTORED)); break; case IDM_SAMPLE_RATE: i = vsid_requester(translate_text(IDS_SAMPLE_RATE), translate_text(IDS_SAMPLE_RATE), "11025 Hz | 22050 Hz | 44100 Hz | 8000 Hz", 0); resources_set_int("SoundSampleRate", vsid_sample_rates[i]); break; case IDM_BUFFER_SIZE: i = vsid_requester(translate_text(IDS_BUFFER_SIZE), translate_text(IDS_BUFFER_SIZE), "150 msec | 200 msec | 250 msec | 300 msec | 350 msec | 100 msec", 0); resources_set_int("SoundBufferSize", vsid_buffer_sizes[i]); break; case IDM_FRAGMENT_SIZE: fname = util_concat(translate_text(IDS_MEDIUM), " | ", translate_text(IDS_LARGE), " | ", translate_text(IDS_SMALL), NULL); i = vsid_requester(translate_text(IDS_FRAGMENT_SIZE), translate_text(IDS_FRAGMENT_SIZE), fname, 0); resources_set_int("SoundFragmentSize", vsid_fragment_sizes[i]); lib_free(fname); break; case IDM_SPEED_ADJUSTMENT: fname = util_concat(translate_text(IDS_ADJUSTING), " | ", translate_text(IDS_EXACT), " | ", translate_text(IDS_FLEXIBLE), NULL); i = vsid_requester(translate_text(IDS_SPEED_ADJUSTMENT), translate_text(IDS_SPEED_ADJUSTMENT), fname, 0); resources_set_int("SoundSpeedAdjustment", vsid_speed_adjustments[i]); lib_free(fname); break; case IDM_VOLUME: i = vsid_requester(translate_text(IDS_VOLUME), translate_text(IDS_VOLUME), "50% | 25% | 10% | 5% | 0% | 100%", 0); resources_set_int("SoundVolume", vsid_volumes[i]); break; case IDM_SOUND_OUTPUT_MODE: fname = util_concat(translate_text(IDS_MONO), " | ", translate_text(IDS_STEREO), " | ", translate_text(IDS_SYSTEM), NULL); i = vsid_requester(translate_text(IDS_SOUND_OUTPUT_MODE), translate_text(IDS_SOUND_OUTPUT_MODE), fname, 0); resources_set_int("SoundOutput", vsid_output_modes[i]); lib_free(fname); break; case IDM_SID_ENGINE_MODEL: fname = util_concat( #ifdef HAVE_RESID "ReSID | ", #endif #ifdef HAVE_CATWEASELMKIII "Catweasel MK3 | ", #endif #ifdef HAVE_HARDSID "HardSID | ", #endif #ifdef HAVE_RESID_FP "ReSID-fp | ", #endif "Fast SID", NULL); i = vsid_requester(translate_text(IDS_SID_ENGINE), translate_text(IDS_SID_ENGINE), fname, 0); resources_set_int("SidEngine", vsid_sid_engines[i]); lib_free(fname); switch (vsid_sid_engines[i]) { case SID_ENGINE_FASTSID: i = vsid_requester(translate_text(IDS_SID_MODEL), translate_text(IDS_SID_MODEL), "8580 | 6581", 0); resources_set_int("SidModel", vsid_fastsid_models[i]); break; #ifdef HAVE_RESID case SID_ENGINE_RESID: i = vsid_requester(translate_text(IDS_SID_MODEL), translate_text(IDS_SID_MODEL), "8580 | 8580D | 6581", 0); resources_set_int("SidModel", vsid_resid_models[i]); break; #endif #ifdef HAVE_RESID_FP case SID_ENGINE_RESID_FP: i = vsid_requester(translate_text(IDS_SID_MODEL), translate_text(IDS_SID_MODEL), "6581R3 0486S | 6581R3 3984 | 6581R4AR 3789 | 6581R3 4485 | 6581R4 1986S | 8580R5 3691 | 8580R5 3691D | 8580R5 1489 | 8580R5 1489D | 6581R3 4885", 0); resources_set_int("SidModel", vsid_residfp_models[i]); break; #endif } break; case IDM_AMOUNT_OF_EXTRA_SIDS: i = vsid_requester(translate_text(IDS_AMOUNT_OF_EXTRA_SIDS), translate_text(IDS_AMOUNT_OF_EXTRA_SIDS), "1 | 2 | 0", 0); resources_get_int("SidStereo", i); break; #ifdef HAVE_RESID case IDM_SAMPLE_METHOD: fname = util_concat(translate_text(IDS_INTERPOLATING), " | ", translate_text(IDS_RESAMPLING), " | ", translate_text(IDS_FAST_RESAMPLING), " | ", translate_text(IDS_FAST), NULL); i = vsid_requester(translate_text(IDS_SAMPLE_METHOD), translate_text(IDS_SAMPLE_METHOD), fname, 0); resources_set_int("SidResidSampling", i); lib_free(fname); break; #endif case IDM_SOUND_RECORD_START: #ifndef USE_LAMEMP3 i = vsid_requester(translate_text(IDS_SOUND_RECORD_FORMAT), translate_text(IDS_SOUND_RECORD_FORMAT), "AIFF | VOC | WAV | IFF", 0); #else i = vsid_requester(translate_text(IDS_SOUND_RECORD_FORMAT), translate_text(IDS_SOUND_RECORD_FORMAT), "AIFF | VOC | WAV | MP3 | IFF", 0); #endif resources_set_string("SoundRecordDeviceName", ""); resources_set_string("SoundRecordDeviceName", vsid_sound_formats[i]); break; case IDM_SOUND_RECORD_STOP: resources_set_string("SoundRecordDeviceName", ""); break; case IDM_LANGUAGE_ENGLISH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "en")) { resources_set_value("Language", (resource_value_t *)"en"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_DANISH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "da")) { resources_set_value("Language", (resource_value_t *)"da"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_GERMAN: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "de")) { resources_set_value("Language", (resource_value_t *)"de"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_SPANISH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "es")) { resources_set_value("Language", (resource_value_t *)"es"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_FRENCH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "fr")) { resources_set_value("Language", (resource_value_t *)"fr"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_ITALIAN: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "it")) { resources_set_value("Language", (resource_value_t *)"it"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_KOREAN: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "ko")) { resources_set_value("Language", (resource_value_t *)"ko"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_DUTCH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "nl")) { resources_set_value("Language", (resource_value_t *)"nl"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_POLISH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "pl")) { resources_set_value("Language", (resource_value_t *)"pl"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_HUNGARIAN: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "hu")) { resources_set_value("Language", (resource_value_t *)"hu"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_RUSSIAN: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "ru")) { resources_set_value("Language", (resource_value_t *)"ru"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_SWEDISH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "sv")) { resources_set_value("Language", (resource_value_t *)"sv"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_TURKISH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "tr")) { resources_set_value("Language", (resource_value_t *)"tr"); vsid_menu_rebuild(); } break; default: { int i, j, command_found = 0; for (i = 0; toggle_list[i].name != NULL && !command_found; i++) { if (toggle_list[i].idm == idm) { resources_toggle(toggle_list[i].name, NULL); command_found = 1; } } for (i = 0; value_list[i].name != NULL && !command_found; i++) { for (j = 0; value_list[i].vals[j].idm != 0 && !command_found; j++) { if (value_list[i].vals[j].idm == idm) { resources_set_value(value_list[i].name, (resource_value_t) value_list[i].vals[j].value); command_found = 1; } } } } break; } return 0; }