// license:BSD-3-Clause
// copyright-holders:Maurizio Petrarota
/***************************************************************************
ui/moptions.cpp
UI main options manager.
***************************************************************************/
#include "emu.h"
#include "options.h"
#include "ui/moptions.h"
//**************************************************************************
// UI EXTRA OPTIONS
//**************************************************************************
const options_entry ui_options::s_option_entries[] =
{
// search path options
{ nullptr, nullptr, option_type::HEADER, "UI SEARCH PATH OPTIONS" },
{ OPTION_HISTORY_PATH, "history;dats;.", option_type::MULTIPATH, "path to system/software info files" },
{ OPTION_CATEGORYINI_PATH, "folders", option_type::MULTIPATH, "path to category ini files" },
{ OPTION_CABINETS_PATH, "cabinets;cabdevs", option_type::MULTIPATH, "path to cabinets / devices image" },
{ OPTION_CPANELS_PATH, "cpanel", option_type::MULTIPATH, "path to control panel image" },
{ OPTION_PCBS_PATH, "pcb", option_type::MULTIPATH, "path to pcbs image" },
{ OPTION_FLYERS_PATH, "flyers", option_type::MULTIPATH, "path to flyers image" },
{ OPTION_TITLES_PATH, "titles", option_type::MULTIPATH, "path to titles image" },
{ OPTION_ENDS_PATH, "ends", option_type::MULTIPATH, "path to ends image" },
{ OPTION_MARQUEES_PATH, "marquees", option_type::MULTIPATH, "path to marquees image" },
{ OPTION_ARTPREV_PATH, "artwork preview;artpreview", option_type::MULTIPATH, "path to artwork preview image" },
{ OPTION_BOSSES_PATH, "bosses", option_type::MULTIPATH, "path to bosses image" },
{ OPTION_LOGOS_PATH, "logo", option_type::MULTIPATH, "path to logos image" },
{ OPTION_SCORES_PATH, "scores", option_type::MULTIPATH, "path to scores image" },
{ OPTION_VERSUS_PATH, "versus", option_type::MULTIPATH, "path to versus image" },
{ OPTION_GAMEOVER_PATH, "gameover", option_type::MULTIPATH, "path to gameover image" },
{ OPTION_HOWTO_PATH, "howto", option_type::MULTIPATH, "path to howto image" },
{ OPTION_SELECT_PATH, "select", option_type::MULTIPATH, "path to select image" },
{ OPTION_ICONS_PATH, "icons", option_type::MULTIPATH, "path to ICOns image" },
{ OPTION_COVER_PATH, "covers", option_type::MULTIPATH, "path to software cover image" },
{ OPTION_UI_PATH, "ui", option_type::MULTIPATH, "path to UI files" },
// misc options
{ nullptr, nullptr, option_type::HEADER, "UI MISC OPTIONS" },
{ OPTION_SYSTEM_NAMES, "", option_type::MULTIPATH, "translated system names file" },
{ OPTION_SKIP_WARNINGS, "0", option_type::BOOLEAN, "display fewer repeated warnings about imperfect emulation" },
{ OPTION_UNTHROTTLE_MUTE ";utm", "0", option_type::BOOLEAN, "mute audio when running unthrottled" },
// UI options
{ nullptr, nullptr, option_type::HEADER, "UI OPTIONS" },
{ OPTION_INFOS_SIZE "(0.20-1.00)", "0.75", option_type::FLOAT, "UI right panel infos text size (0.20 - 1.00)" },
{ OPTION_FONT_ROWS "(25-40)", "30", option_type::INTEGER, "UI font lines per screen (25 - 40)" },
{ OPTION_UI_BORDER_COLOR, "ffffffff", option_type::STRING, "UI border color (ARGB)" },
{ OPTION_UI_BACKGROUND_COLOR, "ef101030", option_type::STRING, "UI background color (ARGB)" },
{ OPTION_UI_CLONE_COLOR, "ff808080", option_type::STRING, "UI clone color (ARGB)" },
{ OPTION_UI_DIPSW_COLOR, "ffffff00", option_type::STRING, "UI dipswitch color (ARGB)" },
{ OPTION_UI_GFXVIEWER_BG_COLOR, "ef101030", option_type::STRING, "UI gfx viewer color (ARGB)" },
{ OPTION_UI_MOUSEDOWN_BG_COLOR, "b0606000", option_type::STRING, "UI mouse down bg color (ARGB)" },
{ OPTION_UI_MOUSEDOWN_COLOR, "ffffff80", option_type::STRING, "UI mouse down color (ARGB)" },
{ OPTION_UI_MOUSEOVER_BG_COLOR, "70404000", option_type::STRING, "UI mouse over bg color (ARGB)" },
{ OPTION_UI_MOUSEOVER_COLOR, "ffffff80", option_type::STRING, "UI mouse over color (ARGB)" },
{ OPTION_UI_SELECTED_BG_COLOR, "ef808000", option_type::STRING, "UI selected bg color (ARGB)" },
{ OPTION_UI_SELECTED_COLOR, "ffffff00", option_type::STRING, "UI selected color (ARGB)" },
{ OPTION_UI_SLIDER_COLOR, "ffffffff", option_type::STRING, "UI slider color (ARGB)" },
{ OPTION_UI_SUBITEM_COLOR, "ffffffff", option_type::STRING, "UI subitem color (ARGB)" },
{ OPTION_UI_TEXT_BG_COLOR, "ef000000", option_type::STRING, "UI text bg color (ARGB)" },
{ OPTION_UI_TEXT_COLOR, "ffffffff", option_type::STRING, "UI text color (ARGB)" },
{ OPTION_UI_UNAVAILABLE_COLOR, "ff404040", option_type::STRING, "UI unavailable color (ARGB)" },
// system/software selection menu options
{ nullptr, nullptr, option_type::HEADER, "SYSTEM/SOFTWARE SELECTION MENU OPTIONS" },
{ OPTION_HIDE_PANELS "(0-3)", "0", option_type::INTEGER, "UI hide left/right panel in main view (0 = Show all, 1 = hide left, 2 = hide right, 3 = hide both" },
{ OPTION_USE_BACKGROUND, "1", option_type::BOOLEAN, "enable background image in main view" },
{ OPTION_SKIP_BIOS_MENU, "0", option_type::BOOLEAN, "skip bios submenu, start with configured or default" },
{ OPTION_SKIP_PARTS_MENU, "0", option_type::BOOLEAN, "skip parts submenu, start with first part" },
{ OPTION_REMEMBER_LAST, "1", option_type::BOOLEAN, "initially select last used system in main menu" },
{ OPTION_LAST_USED_MACHINE, "", option_type::STRING, "last selected system" },
{ OPTION_LAST_USED_FILTER, "", option_type::STRING, "last used system filter" },
{ OPTION_SYSTEM_RIGHT_PANEL, "image", option_type::STRING, "selected system right panel tab" },
{ OPTION_SOFTWARE_RIGHT_PANEL, "image", option_type::STRING, "selected software right panel tab" },
{ OPTION_SYSTEM_RIGHT_IMAGE, "snap", option_type::STRING, "selected system right panel image" },
{ OPTION_SOFTWARE_RIGHT_IMAGE, "snap", option_type::STRING, "selected software right panel image" },
{ OPTION_ENLARGE_SNAPS, "1", option_type::BOOLEAN, "enlarge images in right panel (keeping aspect ratio)" },
{ OPTION_FORCED4X3, "1", option_type::BOOLEAN, "force 4:3 aspect ratio for snapshots in the software menu" },
{ OPTION_INFO_AUTO_AUDIT, "0", option_type::BOOLEAN, "automatically audit media for the general info panel" },
{ OPTION_HIDE_ROMLESS, "1", option_type::BOOLEAN, "hide systems that don't require ROMs in the available system filter" },
// sentinel
{ nullptr }
};
//-------------------------------------------------
// ui_options - constructor
//-------------------------------------------------
ui_options::ui_options() : core_options()
{
add_entries(ui_options::s_option_entries);
}
//-------------------------------------------------
// rgb_value - decode an RGB option
//-------------------------------------------------
rgb_t ui_options::rgb_value(const char *option) const
{
// find the entry
core_options::entry::shared_const_ptr entry = get_entry(option);
// look up the value, and sanity check the result
const char *value = entry->value();
int len = strlen(value);
if (len != 8)
value = entry->default_value().c_str();
// convert to an rgb_t
return rgb_t((uint32_t)strtoul(value, nullptr, 16));
}