comparison nuklear_ui/blastem_nuklear.c @ 1853:9b2acecf8124

Allow game save path to be edited from UI
author Michael Pavone <pavone@retrodev.com>
date Wed, 24 Apr 2019 20:46:35 -0700
parents a4cae960fd08
children 58b6f5d918f4
comparison
equal deleted inserted replaced
1852:a4cae960fd08 1853:9b2acecf8124
1466 config_dirty = 1; 1466 config_dirty = 1;
1467 config = tern_insert_path(config, path, (tern_val){.ptrval = strdup(buffer)}, TVAL_PTR); 1467 config = tern_insert_path(config, path, (tern_val){.ptrval = strdup(buffer)}, TVAL_PTR);
1468 } 1468 }
1469 } 1469 }
1470 1470
1471 void settings_string(struct nk_context *context, char *label, char *path, char *def)
1472 {
1473 nk_label(context, label, NK_TEXT_LEFT);
1474 char *curstr = tern_find_path_default(config, path, (tern_val){.ptrval = def}, TVAL_PTR).ptrval;
1475 uint32_t len = strlen(curstr);
1476 uint32_t buffer_len = len > 100 ? len + 1 : 101;
1477 char *buffer = malloc(buffer_len);
1478 memcpy(buffer, curstr, len);
1479 memset(buffer+len, 0, buffer_len-len);
1480 nk_edit_string(context, NK_EDIT_SIMPLE, buffer, &len, buffer_len-1, nk_filter_default);
1481 buffer[len] = 0;
1482 if (strcmp(buffer, curstr)) {
1483 config_dirty = 1;
1484 config = tern_insert_path(config, path, (tern_val){.ptrval = strdup(buffer)}, TVAL_PTR);
1485 }
1486 free(buffer);
1487 }
1488
1471 void settings_int_property(struct nk_context *context, char *label, char *name, char *path, int def, int min, int max) 1489 void settings_int_property(struct nk_context *context, char *label, char *name, char *path, int def, int min, int max)
1472 { 1490 {
1473 char *curstr = tern_find_path(config, path, TVAL_PTR).ptrval; 1491 char *curstr = tern_find_path(config, path, TVAL_PTR).ptrval;
1474 int curval = curstr ? atoi(curstr) : def; 1492 int curval = curstr ? atoi(curstr) : def;
1475 nk_label(context, label, NK_TEXT_LEFT); 1493 nk_label(context, label, NK_TEXT_LEFT);
1826 nk_layout_row_static(context, context->style.font->height, desired_width, 2); 1844 nk_layout_row_static(context, context->style.font->height, desired_width, 2);
1827 selected_sync = settings_dropdown(context, "Sync Source", sync_opts, num_sync_opts, selected_sync, "system\0sync_source\0"); 1845 selected_sync = settings_dropdown(context, "Sync Source", sync_opts, num_sync_opts, selected_sync, "system\0sync_source\0");
1828 settings_int_property(context, "68000 Clock Divider", "", "clocks\0m68k_divider\0", 7, 1, 53); 1846 settings_int_property(context, "68000 Clock Divider", "", "clocks\0m68k_divider\0", 7, 1, 53);
1829 settings_toggle(context, "Remember ROM Path", "ui\0remember_path\0", 1); 1847 settings_toggle(context, "Remember ROM Path", "ui\0remember_path\0", 1);
1830 settings_toggle(context, "Save config with EXE", "ui\0config_in_exe_dir\0", 0); 1848 settings_toggle(context, "Save config with EXE", "ui\0config_in_exe_dir\0", 0);
1849 settings_string(context, "Game Save Path", "ui\0save_path\0", "$USERDATA/blastem/$ROMNAME");
1831 selected_region = settings_dropdown_ex(context, "Default Region", region_codes, regions, num_regions, selected_region, "system\0default_region\0"); 1850 selected_region = settings_dropdown_ex(context, "Default Region", region_codes, regions, num_regions, selected_region, "system\0default_region\0");
1832 selected_format = settings_dropdown(context, "Save State Format", formats, num_formats, selected_format, "ui\0state_format\0"); 1851 selected_format = settings_dropdown(context, "Save State Format", formats, num_formats, selected_format, "ui\0state_format\0");
1833 selected_init = settings_dropdown(context, "Initial RAM Value", ram_inits, num_inits, selected_init, "system\0ram_init\0"); 1852 selected_init = settings_dropdown(context, "Initial RAM Value", ram_inits, num_inits, selected_init, "system\0ram_init\0");
1834 selected_io_1 = settings_dropdown_ex(context, "IO Port 1 Device", io_opts_1, device_type_names, num_io, selected_io_1, "io\0devices\0""1\0"); 1853 selected_io_1 = settings_dropdown_ex(context, "IO Port 1 Device", io_opts_1, device_type_names, num_io, selected_io_1, "io\0devices\0""1\0");
1835 selected_io_2 = settings_dropdown_ex(context, "IO Port 2 Device", io_opts_2, device_type_names, num_io, selected_io_2, "io\0devices\0""2\0"); 1854 selected_io_2 = settings_dropdown_ex(context, "IO Port 2 Device", io_opts_2, device_type_names, num_io, selected_io_2, "io\0devices\0""2\0");