diff options
Diffstat (limited to 'docs/release/src/osd/winui/ui_opts.h')
-rw-r--r-- | docs/release/src/osd/winui/ui_opts.h | 396 |
1 files changed, 396 insertions, 0 deletions
diff --git a/docs/release/src/osd/winui/ui_opts.h b/docs/release/src/osd/winui/ui_opts.h new file mode 100644 index 00000000000..6b222712995 --- /dev/null +++ b/docs/release/src/osd/winui/ui_opts.h @@ -0,0 +1,396 @@ +// For licensing and usage information, read docs/winui_license.txt +// MASTER +//**************************************************************************** + +#ifndef WINUI_UIOPTS_H +#define WINUI_UIOPTS_H + +#define MUIOPTION_OVERRIDE_REDX "override_redx" +#define MUIOPTION_LIST_MODE "list_mode" +#define MUIOPTION_CHECK_GAME "check_game" +#define MUIOPTION_JOYSTICK_IN_INTERFACE "joystick_in_interface" +#define MUIOPTION_KEYBOARD_IN_INTERFACE "keyboard_in_interface" +#define MUIOPTION_CYCLE_SCREENSHOT "cycle_screenshot" +#define MUIOPTION_STRETCH_SCREENSHOT_LARGER "stretch_screenshot_larger" +#define MUIOPTION_SCREENSHOT_BORDER_SIZE "screenshot_bordersize" +#define MUIOPTION_SCREENSHOT_BORDER_COLOR "screenshot_bordercolor" +#define MUIOPTION_INHERIT_FILTER "inherit_filter" +#define MUIOPTION_OFFSET_CLONES "offset_clones" +#define MUIOPTION_DEFAULT_FOLDER_ID "default_folder_id" +#define MUIOPTION_HIDE_FOLDERS "hide_folders" +#define MUIOPTION_SHOW_STATUS_BAR "show_status_bar" +#define MUIOPTION_SHOW_TABS "show_tabs" +#define MUIOPTION_SHOW_TOOLBAR "show_tool_bar" +#define MUIOPTION_CURRENT_TAB "current_tab" +#define MUIOPTION_WINDOW_X "window_x" +#define MUIOPTION_WINDOW_Y "window_y" +#define MUIOPTION_WINDOW_WIDTH "window_width" +#define MUIOPTION_WINDOW_HEIGHT "window_height" +#define MUIOPTION_WINDOW_STATE "window_state" +#define MUIOPTION_WINDOW_PANES "window_panes" +#define MUIOPTION_CUSTOM_COLOR "custom_color" +#define MUIOPTION_LIST_FONT "list_font" +#define MUIOPTION_TEXT_COLOR "text_color" +#define MUIOPTION_CLONE_COLOR "clone_color" +#define MUIOPTION_HIDE_TABS "hide_tabs" +#define MUIOPTION_HISTORY_TAB "history_tab" +#define MUIOPTION_COLUMN_WIDTHS "column_widths" +#define MUIOPTION_COLUMN_ORDER "column_order" +#define MUIOPTION_COLUMN_SHOWN "column_shown" +#define MUIOPTION_SPLITTERS "splitters" +#define MUIOPTION_SORT_COLUMN "sort_column" +#define MUIOPTION_SORT_REVERSED "sort_reversed" +#define MUIOPTION_ICONS_DIRECTORY "icons_directory" +#define MUIOPTION_BACKGROUND_DIRECTORY "background_directory" +#define MUIOPTION_DATS_DIRECTORY "dats_directory" +#define MUIOPTION_VIDEO_DIRECTORY "video_directory" +#define MUIOPTION_MANUALS_DIRECTORY "manuals_directory" +#define MUIOPTION_UI_KEY_UP "ui_key_up" +#define MUIOPTION_UI_KEY_DOWN "ui_key_down" +#define MUIOPTION_UI_KEY_LEFT "ui_key_left" +#define MUIOPTION_UI_KEY_RIGHT "ui_key_right" +#define MUIOPTION_UI_KEY_START "ui_key_start" +#define MUIOPTION_UI_KEY_PGUP "ui_key_pgup" +#define MUIOPTION_UI_KEY_PGDWN "ui_key_pgdwn" +#define MUIOPTION_UI_KEY_HOME "ui_key_home" +#define MUIOPTION_UI_KEY_END "ui_key_end" +#define MUIOPTION_UI_KEY_SS_CHANGE "ui_key_ss_change" +#define MUIOPTION_UI_KEY_HISTORY_UP "ui_key_history_up" +#define MUIOPTION_UI_KEY_HISTORY_DOWN "ui_key_history_down" +#define MUIOPTION_UI_KEY_CONTEXT_FILTERS "ui_key_context_filters" +#define MUIOPTION_UI_KEY_SELECT_RANDOM "ui_key_select_random" +#define MUIOPTION_UI_KEY_GAME_AUDIT "ui_key_game_audit" +#define MUIOPTION_UI_KEY_GAME_PROPERTIES "ui_key_game_properties" +#define MUIOPTION_UI_KEY_HELP_CONTENTS "ui_key_help_contents" +#define MUIOPTION_UI_KEY_UPDATE_GAMELIST "ui_key_update_gamelist" +#define MUIOPTION_UI_KEY_VIEW_FOLDERS "ui_key_view_folders" +#define MUIOPTION_UI_KEY_VIEW_FULLSCREEN "ui_key_view_fullscreen" +#define MUIOPTION_UI_KEY_VIEW_PAGETAB "ui_key_view_pagetab" +#define MUIOPTION_UI_KEY_VIEW_PICTURE_AREA "ui_key_view_picture_area" +#define MUIOPTION_UI_KEY_VIEW_STATUS "ui_key_view_status" +#define MUIOPTION_UI_KEY_VIEW_TOOLBARS "ui_key_view_toolbars" +#define MUIOPTION_UI_KEY_VIEW_TAB_CABINET "ui_key_view_tab_cabinet" +#define MUIOPTION_UI_KEY_VIEW_TAB_CPANEL "ui_key_view_tab_cpanel" +#define MUIOPTION_UI_KEY_VIEW_TAB_FLYER "ui_key_view_tab_flyer" +#define MUIOPTION_UI_KEY_VIEW_TAB_HISTORY "ui_key_view_tab_history" +#define MUIOPTION_UI_KEY_VIEW_TAB_MARQUEE "ui_key_view_tab_marquee" +#define MUIOPTION_UI_KEY_VIEW_TAB_SCREENSHOT "ui_key_view_tab_screenshot" +#define MUIOPTION_UI_KEY_VIEW_TAB_TITLE "ui_key_view_tab_title" +#define MUIOPTION_UI_KEY_VIEW_TAB_PCB "ui_key_view_tab_pcb" +#define MUIOPTION_UI_KEY_QUIT "ui_key_quit" +#define MUIOPTION_UI_JOY_UP "ui_joy_up" +#define MUIOPTION_UI_JOY_DOWN "ui_joy_down" +#define MUIOPTION_UI_JOY_LEFT "ui_joy_left" +#define MUIOPTION_UI_JOY_RIGHT "ui_joy_right" +#define MUIOPTION_UI_JOY_START "ui_joy_start" +#define MUIOPTION_UI_JOY_PGUP "ui_joy_pgup" +#define MUIOPTION_UI_JOY_PGDWN "ui_joy_pgdwn" +#define MUIOPTION_UI_JOY_HOME "ui_joy_home" +#define MUIOPTION_UI_JOY_END "ui_joy_end" +#define MUIOPTION_UI_JOY_SS_CHANGE "ui_joy_ss_change" +#define MUIOPTION_UI_JOY_HISTORY_UP "ui_joy_history_up" +#define MUIOPTION_UI_JOY_HISTORY_DOWN "ui_joy_history_down" +#define MUIOPTION_UI_JOY_EXEC "ui_joy_exec" +#define MUIOPTION_EXEC_COMMAND "exec_command" +#define MUIOPTION_EXEC_WAIT "exec_wait" +#define MUIOPTION_HIDE_MOUSE "hide_mouse" +#define MUIOPTION_FULL_SCREEN "full_screen" +#define MUIOPTION_UI_KEY_VIEW_SOFTWARE_AREA "ui_key_view_software_area" + +#ifdef MESS +#define MUIOPTION_DEFAULT_GAME "default_system" +#define MUIDEFAULT_SELECTION "0" +#define MUIDEFAULT_SPLITTERS "133,1125,1706" +#else +#define MUIOPTION_DEFAULT_GAME "default_machine" +#define MUIDEFAULT_SELECTION "0" +#define MUIDEFAULT_SPLITTERS "164,1700" +#endif + +#define MESSUI_SL_COLUMN_SHOWN "sl_column_shown" +#define MESSUI_SL_COLUMN_WIDTHS "sl_column_widths" +#define MESSUI_SL_COLUMN_ORDER "sl_column_order" +#define MESSUI_SL_SORT_REVERSED "sl_sort_reversed" +#define MESSUI_SL_SORT_COLUMN "sl_sort_column" +#define MESSUI_SW_COLUMN_SHOWN "sw_column_shown" +#define MESSUI_SW_COLUMN_WIDTHS "sw_column_widths" +#define MESSUI_SW_COLUMN_ORDER "sw_column_order" +#define MESSUI_SW_SORT_REVERSED "sw_sort_reversed" +#define MESSUI_SW_SORT_COLUMN "sw_sort_column" +#define MESSUI_SOFTWARE_TAB "current_software_tab" + +typedef struct +{ + std::string name; // name of the option + std::string value; // initial value if ini file not found + const core_options::option_type unused1; // option type (unused) + char* unused2; // help text (unused) +} +WINUIOPTS; +// UI options in MAMEui.ini +const WINUIOPTS option_entries[] = +{ + { MUIOPTION_OVERRIDE_REDX, "0", OPTION_INTEGER, NULL }, + { MUIOPTION_DEFAULT_GAME, MUIDEFAULT_SELECTION, OPTION_INTEGER, NULL }, + { MUIOPTION_DEFAULT_FOLDER_ID, "0", OPTION_INTEGER, NULL }, + { MUIOPTION_FULL_SCREEN, "0", OPTION_BOOLEAN, NULL }, + { MUIOPTION_CURRENT_TAB, "0", OPTION_STRING, NULL }, + { MESSUI_SOFTWARE_TAB, "0", OPTION_INTEGER, NULL }, + { MUIOPTION_SHOW_TOOLBAR, "1", OPTION_BOOLEAN, NULL }, + { MUIOPTION_SHOW_STATUS_BAR, "1", OPTION_BOOLEAN, NULL }, + { MUIOPTION_HIDE_FOLDERS, "", OPTION_STRING, NULL }, + { MUIOPTION_SHOW_TABS, "1", OPTION_BOOLEAN, NULL }, + { MUIOPTION_HIDE_TABS, "artpreview,boss,cpanel,cover,end,flyer,gameover,howto,logo,marquee,pcb,scores,select,title,versus", OPTION_STRING, NULL }, + { MUIOPTION_HISTORY_TAB, "0", OPTION_INTEGER, NULL }, + { MUIOPTION_SORT_COLUMN, "0", OPTION_INTEGER, NULL }, + { MUIOPTION_SORT_REVERSED, "0", OPTION_BOOLEAN, NULL }, + { MUIOPTION_WINDOW_X, "0", OPTION_INTEGER, NULL }, // main window position, left + { MUIOPTION_WINDOW_Y, "0", OPTION_INTEGER, NULL }, // main window position, top + { MUIOPTION_WINDOW_WIDTH, "2000", OPTION_INTEGER, NULL }, // main window width + { MUIOPTION_WINDOW_HEIGHT, "1000", OPTION_INTEGER, NULL }, // main window height + { MUIOPTION_WINDOW_STATE, "1", OPTION_INTEGER, NULL }, + { MUIOPTION_WINDOW_PANES, "15", OPTION_INTEGER, NULL }, // which windows are visible: bit 0 = tree, bit 1 = list, bit 2 = sw, bit 3 = images + { MUIOPTION_TEXT_COLOR, "-1", OPTION_INTEGER, NULL }, + { MUIOPTION_CLONE_COLOR, "-1", OPTION_INTEGER, NULL }, + { MUIOPTION_CUSTOM_COLOR, "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", OPTION_STRING, NULL }, // colour codes of the 16 custom colours (set in clone font dialog) + /* ListMode needs to be before ColumnWidths settings */ + { MUIOPTION_LIST_MODE, "5", OPTION_INTEGER, NULL }, + { MUIOPTION_SPLITTERS, MUIDEFAULT_SPLITTERS, OPTION_STRING, NULL }, + { MUIOPTION_LIST_FONT, "-11,0,0,0,400,0,0,0,0,1,2,1,34,MS Sans Serif", OPTION_STRING, NULL }, + { MUIOPTION_COLUMN_WIDTHS, "185,78,84,84,64,88,74,108,60,144,84,40,40", OPTION_STRING, NULL }, + { MUIOPTION_COLUMN_ORDER, "0,1,2,3,4,5,6,7,8,9,10,11,12", OPTION_STRING, NULL }, + { MUIOPTION_COLUMN_SHOWN, "1,1,1,1,1,1,1,1,1,1,1,1,0", OPTION_STRING, NULL }, + { MESSUI_SL_COLUMN_WIDTHS, "100,75,223,46,120,120", OPTION_STRING, NULL }, + { MESSUI_SL_COLUMN_ORDER, "0,1,2,3,4,5", OPTION_STRING, NULL }, // order of columns + { MESSUI_SL_COLUMN_SHOWN, "1,1,1,1,1,1", OPTION_STRING, NULL }, // 0=hide,1=show + { MESSUI_SL_SORT_COLUMN, "0", OPTION_INTEGER, NULL }, + { MESSUI_SL_SORT_REVERSED, "0", OPTION_BOOLEAN, NULL }, + { MESSUI_SW_COLUMN_WIDTHS, "400", OPTION_STRING, NULL }, + { MESSUI_SW_COLUMN_ORDER, "0", OPTION_STRING, NULL }, // 1= dummy column + { MESSUI_SW_COLUMN_SHOWN, "1", OPTION_STRING, NULL }, // 0=don't show it + { MESSUI_SW_SORT_COLUMN, "0", OPTION_INTEGER, NULL }, + { MESSUI_SW_SORT_REVERSED, "0", OPTION_BOOLEAN, NULL }, + { MUIOPTION_CHECK_GAME, "0", OPTION_BOOLEAN, NULL }, + { MUIOPTION_JOYSTICK_IN_INTERFACE, "1", OPTION_BOOLEAN, NULL }, + { MUIOPTION_KEYBOARD_IN_INTERFACE, "0", OPTION_BOOLEAN, NULL }, + { MUIOPTION_HIDE_MOUSE, "0", OPTION_BOOLEAN, NULL }, + { MUIOPTION_INHERIT_FILTER, "0", OPTION_BOOLEAN, NULL }, + { MUIOPTION_OFFSET_CLONES, "0", OPTION_BOOLEAN, NULL }, + { MUIOPTION_STRETCH_SCREENSHOT_LARGER, "0", OPTION_BOOLEAN, NULL }, + { MUIOPTION_CYCLE_SCREENSHOT, "0", OPTION_INTEGER, NULL }, + { MUIOPTION_SCREENSHOT_BORDER_SIZE, "11", OPTION_INTEGER, NULL }, + { MUIOPTION_SCREENSHOT_BORDER_COLOR, "-1", OPTION_INTEGER, NULL }, + { MUIOPTION_EXEC_COMMAND, "", OPTION_STRING, NULL }, + { MUIOPTION_EXEC_WAIT, "0", OPTION_INTEGER, NULL }, + { MUIOPTION_BACKGROUND_DIRECTORY, "bkground\\bkground.png", OPTION_STRING, NULL }, + { MUIOPTION_ICONS_DIRECTORY, "icons", OPTION_STRING, NULL }, + { MUIOPTION_DATS_DIRECTORY, "dats", OPTION_STRING, NULL }, + { MUIOPTION_VIDEO_DIRECTORY, "video", OPTION_STRING, NULL }, + { MUIOPTION_MANUALS_DIRECTORY, "manuals", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_UP, "KEYCODE_UP", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_DOWN, "KEYCODE_DOWN", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_LEFT, "KEYCODE_LEFT", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_RIGHT, "KEYCODE_RIGHT", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_START, "KEYCODE_ENTER NOT KEYCODE_LALT", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_PGUP, "KEYCODE_PGUP", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_PGDWN, "KEYCODE_PGDN", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_HOME, "KEYCODE_HOME", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_END, "KEYCODE_END", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_SS_CHANGE, "KEYCODE_INSERT", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_HISTORY_UP, "KEYCODE_DEL", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_HISTORY_DOWN, "KEYCODE_LALT KEYCODE_0", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_CONTEXT_FILTERS, "KEYCODE_LCONTROL KEYCODE_F", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_SELECT_RANDOM, "KEYCODE_LCONTROL KEYCODE_R", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_GAME_AUDIT, "KEYCODE_LALT KEYCODE_A", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_GAME_PROPERTIES, "KEYCODE_LALT KEYCODE_ENTER", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_HELP_CONTENTS, "KEYCODE_F1", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_UPDATE_GAMELIST, "KEYCODE_F5", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_VIEW_FOLDERS, "KEYCODE_LALT KEYCODE_D", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_VIEW_FULLSCREEN, "KEYCODE_F11", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_VIEW_PAGETAB, "KEYCODE_LALT KEYCODE_B", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_VIEW_PICTURE_AREA, "KEYCODE_LALT KEYCODE_P", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_VIEW_SOFTWARE_AREA, "KEYCODE_LALT KEYCODE_W", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_VIEW_STATUS, "KEYCODE_LALT KEYCODE_S", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_VIEW_TOOLBARS, "KEYCODE_LALT KEYCODE_T", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_VIEW_TAB_CABINET, "KEYCODE_LALT KEYCODE_3", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_VIEW_TAB_CPANEL, "KEYCODE_LALT KEYCODE_6", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_VIEW_TAB_FLYER, "KEYCODE_LALT KEYCODE_2", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_VIEW_TAB_HISTORY, "KEYCODE_LALT KEYCODE_8", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_VIEW_TAB_MARQUEE, "KEYCODE_LALT KEYCODE_4", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_VIEW_TAB_SCREENSHOT, "KEYCODE_LALT KEYCODE_1", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_VIEW_TAB_TITLE, "KEYCODE_LALT KEYCODE_5", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_VIEW_TAB_PCB, "KEYCODE_LALT KEYCODE_7", OPTION_STRING, NULL }, + { MUIOPTION_UI_KEY_QUIT, "KEYCODE_LALT KEYCODE_Q", OPTION_STRING, NULL }, + { MUIOPTION_UI_JOY_UP, "1,1,1,1", OPTION_STRING, NULL }, + { MUIOPTION_UI_JOY_DOWN, "1,1,1,2", OPTION_STRING, NULL }, + { MUIOPTION_UI_JOY_LEFT, "1,1,2,1", OPTION_STRING, NULL }, + { MUIOPTION_UI_JOY_RIGHT, "1,1,2,2", OPTION_STRING, NULL }, + { MUIOPTION_UI_JOY_START, "1,0,1,0", OPTION_STRING, NULL }, + { MUIOPTION_UI_JOY_PGUP, "2,1,2,1", OPTION_STRING, NULL }, + { MUIOPTION_UI_JOY_PGDWN, "2,1,2,2", OPTION_STRING, NULL }, + { MUIOPTION_UI_JOY_HOME, "0,0,0,0", OPTION_STRING, NULL }, + { MUIOPTION_UI_JOY_END, "0,0,0,0", OPTION_STRING, NULL }, + { MUIOPTION_UI_JOY_SS_CHANGE, "2,0,3,0", OPTION_STRING, NULL }, + { MUIOPTION_UI_JOY_HISTORY_UP, "2,0,4,0", OPTION_STRING, NULL }, + { MUIOPTION_UI_JOY_HISTORY_DOWN, "2,0,1,0", OPTION_STRING, NULL }, + { MUIOPTION_UI_JOY_EXEC, "0,0,0,0", OPTION_STRING, NULL }, + { "$end" } +}; + +class winui_ui_options +{ + std::map<std::string, std::string> m_list; + const char *m_filename; + + void create_index(std::ifstream &fp) + { + if (!fp.good()) + return; + bool is_ready = false; + std::string file_line; + std::getline(fp, file_line); + while (fp.good()) + { + if (is_ready) + { + char s[file_line.length()+1]; + strcpy(s, file_line.c_str()); + + const char* name = strtok(s, "\t"); // get adjustment name + char* data = strtok(NULL, "\t"); // get next part (there's no next tab, so just return whatever is left) + if (name) + m_list[name] = data ? data : ""; + } + else + { + if (file_line == "$start") + is_ready = true; + } + + std::getline(fp, file_line); + } + + fp.close(); + return; + } + + bool ends_with_filter(const std::string &str) + { + string ending = "_filters"; + u8 endl = ending.length(); + u8 strl = str.length(); + if (strl < endl) + return false; + return str.compare(strl - endl, endl, ending) == 0; + } + +public: + // construction/destruction + winui_ui_options() + { + // set up default values + for (int i = 0; option_entries[i].name != "$end"; i++) + m_list[option_entries[i].name] = option_entries[i].value; + //printf("*** START DUMP OF DEFAULT ***\n"); + //for (auto const &it : m_list) + // printf("%s = %s\n", it.first.c_str(), it.second.c_str()); + //printf("*** END DUMP OF DEFAULT ***\n"); + } + + void load_file(const char *filename) + { + if (!m_filename) + m_filename = filename; + std::ifstream infile (filename); + create_index(infile); + } + + void save_file(const char *filename) + { + if (!filename) + return; + std::string inistring = std::string("\nYOU CAN SAFELY DELETE THIS FILE TO RESET THE EMULATOR BACK TO DEFAULTS.\n\n$start\n"); + for (auto const &it : m_list) + inistring.append(it.first).append("\t").append(it.second).append("\n"); + + std::ofstream outfile (filename, std::ios::out | std::ios::trunc); + size_t size = inistring.size(); + char t1[size+1]; + strcpy(t1, inistring.c_str()); + outfile.write(t1, size); + outfile.close(); + return; + } + + void reset_and_save(const char *filename) + { + // set up default values + for (int i = 0; option_entries[i].name != "$end"; i++) + m_list[option_entries[i].name] = option_entries[i].value; + + save_file(filename); + } + + void setter(const char* name, std::string value) + { + m_list[name] = value; + save_file(m_filename); + } + + // cannot be "setter" otherwise most strings use it, causing "1" to be saved. + //void bool_setter(const char* name, bool value) + //{ + // m_list[name] = value ? "1" : "0"; + // save_file(m_filename); + //} + + void setter(const char* name, int value) + { + u8 s_write = 3; + // filters: only want an entry if a filter is applied + if (ends_with_filter(name)) + { + if (value == 0) + { + if (m_list.find(name) == m_list.end()) + s_write = 0; // there is no entry so do nothing + else + s_write = 2; // delete the existing entry + } + } + if (s_write) + { + if (s_write == 2) + m_list.erase(m_list.find(name)); // delete + else + m_list[name] = std::to_string(value); // add or update + + save_file(m_filename); + } + } + + std::string getter(const char* name) + { + if (m_list.count(name)) + return m_list.find(name)->second; + else + return ""; + } + + int int_value(const char* name) + { + string t = getter(name); + if (t.empty()) + return 0; + else + return std::atoll(t.c_str()); + } + + bool bool_value(const char* name) + { + return int_value(name) ? 1 : 0; + } +}; + +#endif // WINUI_UIOPTS_H + |