summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/emu/emuopts.cpp2
-rw-r--r--src/emu/emuopts.h11
-rw-r--r--src/emu/machine.cpp7
-rw-r--r--src/emu/ui/auditmenu.cpp2
-rw-r--r--src/emu/ui/custmenu.cpp4
-rw-r--r--src/emu/ui/custui.cpp10
-rw-r--r--src/emu/ui/datfile.cpp5
-rw-r--r--src/emu/ui/dirmenu.cpp2
-rw-r--r--src/emu/ui/inifile.cpp9
-rw-r--r--src/emu/ui/mainmenu.cpp12
-rw-r--r--src/emu/ui/menu.cpp16
-rw-r--r--src/emu/ui/optsmenu.cpp12
-rw-r--r--src/emu/ui/optsmenu.h2
-rw-r--r--src/emu/ui/selgame.cpp32
-rw-r--r--src/emu/ui/selsoft.cpp12
-rw-r--r--src/emu/ui/ui.cpp47
-rw-r--r--src/emu/ui/ui.h8
17 files changed, 111 insertions, 82 deletions
diff --git a/src/emu/emuopts.cpp b/src/emu/emuopts.cpp
index 64e0856761b..9081f996e6d 100644
--- a/src/emu/emuopts.cpp
+++ b/src/emu/emuopts.cpp
@@ -202,7 +202,7 @@ const options_entry emu_options::s_option_entries[] =
//-------------------------------------------------
emu_options::emu_options()
-: ui_options()
+: core_options()
, m_coin_impulse(0)
, m_joystick_contradictory(false)
, m_sleep(true)
diff --git a/src/emu/emuopts.h b/src/emu/emuopts.h
index 05baaab650f..dc5acbb7849 100644
--- a/src/emu/emuopts.h
+++ b/src/emu/emuopts.h
@@ -13,8 +13,7 @@
#ifndef __EMUOPTS_H__
#define __EMUOPTS_H__
-#include "ui/moptions.h"
-
+#include "options.h"
//**************************************************************************
// CONSTANTS
@@ -27,7 +26,8 @@ enum
OPTION_PRIORITY_CMDLINE = OPTION_PRIORITY_HIGH,
// INI-based options are NORMAL priority, in increasing order:
- OPTION_PRIORITY_MAME_INI = OPTION_PRIORITY_NORMAL,
+ OPTION_PRIORITY_INI = OPTION_PRIORITY_NORMAL,
+ OPTION_PRIORITY_MAME_INI,
OPTION_PRIORITY_DEBUG_INI,
OPTION_PRIORITY_ORIENTATION_INI,
OPTION_PRIORITY_SYSTYPE_INI,
@@ -35,8 +35,7 @@ enum
OPTION_PRIORITY_SOURCE_INI,
OPTION_PRIORITY_GPARENT_INI,
OPTION_PRIORITY_PARENT_INI,
- OPTION_PRIORITY_DRIVER_INI,
- OPTION_PRIORITY_INI
+ OPTION_PRIORITY_DRIVER_INI
};
// core options
@@ -202,7 +201,7 @@ struct game_driver;
class software_part;
-class emu_options : public ui_options
+class emu_options : public core_options
{
static const UINT32 OPTION_FLAG_DEVICE = 0x80000000;
diff --git a/src/emu/machine.cpp b/src/emu/machine.cpp
index 500a03ba9af..21cc7a54812 100644
--- a/src/emu/machine.cpp
+++ b/src/emu/machine.cpp
@@ -231,12 +231,13 @@ void running_machine::start()
// init the osd layer
m_manager.osd().init(*this);
- // start the inifile manager
- m_inifile = std::make_unique<inifile_manager>(*this);
-
// create the video manager
m_video = std::make_unique<video_manager>(*this);
m_ui = std::make_unique<ui_manager>(*this);
+ m_ui->init();
+
+ // start the inifile manager
+ m_inifile = std::make_unique<inifile_manager>(*this);
// initialize the base time (needed for doing record/playback)
::time(&m_base_time);
diff --git a/src/emu/ui/auditmenu.cpp b/src/emu/ui/auditmenu.cpp
index 2cf482d4f8b..8b98f0d70a2 100644
--- a/src/emu/ui/auditmenu.cpp
+++ b/src/emu/ui/auditmenu.cpp
@@ -173,7 +173,7 @@ void ui_menu_audit::populate()
void ui_menu_audit::save_available_machines()
{
// attempt to open the output file
- emu_file file(machine().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
if (file.open(emulator_info::get_configname(), "_avail.ini") == FILERR_NONE)
{
// generate header
diff --git a/src/emu/ui/custmenu.cpp b/src/emu/ui/custmenu.cpp
index 1162ced015b..45ca407a84b 100644
--- a/src/emu/ui/custmenu.cpp
+++ b/src/emu/ui/custmenu.cpp
@@ -272,7 +272,7 @@ void ui_menu_custom_filter::custom_render(void *selectedref, float top, float bo
void ui_menu_custom_filter::save_custom_filters()
{
// attempt to open the output file
- emu_file file(machine().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
if (file.open("custom_", emulator_info::get_configname(), "_filter.ini") == FILERR_NONE)
{
// generate custom filters info
@@ -587,7 +587,7 @@ void ui_menu_swcustom_filter::custom_render(void *selectedref, float top, float
void ui_menu_swcustom_filter::save_sw_custom_filters()
{
// attempt to open the output file
- emu_file file(machine().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
if (file.open("custom_", m_driver->name, "_filter.ini") == FILERR_NONE)
{
// generate custom filters info
diff --git a/src/emu/ui/custui.cpp b/src/emu/ui/custui.cpp
index 70176cf4708..b03f51f9122 100644
--- a/src/emu/ui/custui.cpp
+++ b/src/emu/ui/custui.cpp
@@ -140,10 +140,10 @@ void ui_menu_custom_ui::custom_render(void *selectedref, float top, float bottom
ui_menu_font_ui::ui_menu_font_ui(running_machine &machine, render_container *container) : ui_menu(machine, container)
{
- emu_options &moptions = machine.options();
+ ui_options &moptions = machine.ui().options();
#ifdef UI_WINDOWS
- std::string name(moptions.ui_font());
+ std::string name(machine.options().ui_font());
list();
m_bold = (strreplace(name, "[B]", "") + strreplace(name, "[b]", "") > 0);
@@ -163,7 +163,7 @@ ui_menu_font_ui::ui_menu_font_ui(running_machine &machine, render_container *con
m_info_size = moptions.infos_size();
m_font_size = moptions.font_rows();
- for (emu_options::entry *f_entry = moptions.first(); f_entry != nullptr; f_entry = f_entry->next())
+ for (ui_options::entry *f_entry = moptions.first(); f_entry != nullptr; f_entry = f_entry->next())
{
const char *name = f_entry->name();
if (name && strlen(name) && !strcmp(OPTION_INFOS_SIZE, f_entry->name()))
@@ -225,7 +225,7 @@ void ui_menu_font_ui::list()
ui_menu_font_ui::~ui_menu_font_ui()
{
std::string error_string;
- emu_options &moptions = machine().options();
+ ui_options &moptions = machine().ui().options();
#ifdef UI_WINDOWS
std::string name(m_fonts[m_actual]);
@@ -655,7 +655,7 @@ void ui_menu_colors_ui::custom_render(void *selectedref, float top, float bottom
void ui_menu_colors_ui::restore_colors()
{
- emu_options options;
+ ui_options options;
for (int index = 1; index < MUI_RESTORE; index++)
m_color_table[index].color = rgb_t((UINT32)strtoul(options.value(m_color_table[index].option), nullptr, 16));
}
diff --git a/src/emu/ui/datfile.cpp b/src/emu/ui/datfile.cpp
index b71b326f5e0..5e8af15b335 100644
--- a/src/emu/ui/datfile.cpp
+++ b/src/emu/ui/datfile.cpp
@@ -10,6 +10,7 @@
#include "emu.h"
#include "drivenum.h"
+#include "ui/ui.h"
#include "ui/datfile.h"
#include "ui/utils.h"
@@ -56,7 +57,7 @@ bool datfile_manager::first_run = true;
//-------------------------------------------------
datfile_manager::datfile_manager(running_machine &machine) : m_machine(machine)
{
- if (machine.options().enabled_dats() && first_run)
+ if (machine.ui().options().enabled_dats() && first_run)
{
first_run = false;
if (parseopen("mameinfo.dat"))
@@ -539,7 +540,7 @@ bool datfile_manager::parseopen(const char *filename)
// MAME core file parsing functions fail in recognizing UNICODE chars in UTF-8 without BOM,
// so it's better and faster use standard C fileio functions.
- emu_file file(machine().options().history_path(), OPEN_FLAG_READ);
+ emu_file file(machine().ui().options().history_path(), OPEN_FLAG_READ);
if (file.open(filename) != FILERR_NONE)
return false;
diff --git a/src/emu/ui/dirmenu.cpp b/src/emu/ui/dirmenu.cpp
index e606732e2db..a180997aa8a 100644
--- a/src/emu/ui/dirmenu.cpp
+++ b/src/emu/ui/dirmenu.cpp
@@ -326,7 +326,7 @@ ui_menu_directory::ui_menu_directory(running_machine &machine, render_container
ui_menu_directory::~ui_menu_directory()
{
- save_game_options(machine());
+ save_ui_options(machine());
ui_globals::reset = true;
}
diff --git a/src/emu/ui/inifile.cpp b/src/emu/ui/inifile.cpp
index 05c5a887933..1c92b43a4d6 100644
--- a/src/emu/ui/inifile.cpp
+++ b/src/emu/ui/inifile.cpp
@@ -9,6 +9,7 @@
***************************************************************************/
#include "emu.h"
+#include "ui/ui.h"
#include "ui/inifile.h"
#include "softlist.h"
#include "drivenum.h"
@@ -38,7 +39,7 @@ inifile_manager::inifile_manager(running_machine &machine)
void inifile_manager::directory_scan()
{
// open extra INIs folder
- file_enumerator path(machine().options().extraini_path());
+ file_enumerator path(machine().ui().options().extraini_path());
const osd_directory_entry *dir;
// loop into folder's file
@@ -149,7 +150,7 @@ bool inifile_manager::parseopen(const char *filename)
// MAME core file parsing functions fail in recognizing UNICODE chars in UTF-8 without BOM,
// so it's better and faster use standard C fileio functions.
- emu_file file(machine().options().extraini_path(), OPEN_FLAG_READ);
+ emu_file file(machine().ui().options().extraini_path(), OPEN_FLAG_READ);
if (file.open(filename) != FILERR_NONE)
return false;
@@ -357,7 +358,7 @@ bool favorite_manager::isgame_favorite(ui_software_info &swinfo)
void favorite_manager::parse_favorite()
{
- emu_file file(machine().options().ui_path(), OPEN_FLAG_READ);
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_READ);
if (file.open(favorite_filename) == FILERR_NONE)
{
char readbuf[1024];
@@ -416,7 +417,7 @@ void favorite_manager::parse_favorite()
void favorite_manager::save_favorite_games()
{
// attempt to open the output file
- emu_file file(machine().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
if (file.open(favorite_filename) == FILERR_NONE)
{
if (m_list.empty())
diff --git a/src/emu/ui/mainmenu.cpp b/src/emu/ui/mainmenu.cpp
index 1bc023f7562..9ea41a3963d 100644
--- a/src/emu/ui/mainmenu.cpp
+++ b/src/emu/ui/mainmenu.cpp
@@ -137,11 +137,11 @@ void ui_menu_main::populate()
item_append("Cheat", nullptr, 0, (void *)CHEAT);
/* add history menu */
- if (machine().options().enabled_dats())
+ if (machine().ui().options().enabled_dats())
item_append("History Info", nullptr, 0, (void *)HISTORY);
// add software history menu
- if ((machine().system().flags & MACHINE_TYPE_ARCADE) == 0 && machine().options().enabled_dats())
+ if ((machine().system().flags & MACHINE_TYPE_ARCADE) == 0 && machine().ui().options().enabled_dats())
{
image_interface_iterator iter(machine().root_device());
for (device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
@@ -156,7 +156,7 @@ void ui_menu_main::populate()
}
/* add mameinfo / messinfo menu */
- if (machine().options().enabled_dats())
+ if (machine().ui().options().enabled_dats())
{
if ((machine().system().flags & MACHINE_TYPE_ARCADE) != 0)
item_append("MameInfo", nullptr, 0, (void *)MAMEINFO);
@@ -165,15 +165,15 @@ void ui_menu_main::populate()
}
/* add sysinfo menu */
- if ((machine().system().flags & MACHINE_TYPE_ARCADE) == 0 && machine().options().enabled_dats())
+ if ((machine().system().flags & MACHINE_TYPE_ARCADE) == 0 && machine().ui().options().enabled_dats())
item_append("SysInfo", nullptr, 0, (void *)SYSINFO);
/* add command list menu */
- if ((machine().system().flags & MACHINE_TYPE_ARCADE) != 0 && machine().options().enabled_dats())
+ if ((machine().system().flags & MACHINE_TYPE_ARCADE) != 0 && machine().ui().options().enabled_dats())
item_append("Commands Info", nullptr, 0, (void *)COMMAND);
/* add story menu */
- if ((machine().system().flags & MACHINE_TYPE_ARCADE) != 0 && machine().options().enabled_dats())
+ if ((machine().system().flags & MACHINE_TYPE_ARCADE) != 0 && machine().ui().options().enabled_dats())
item_append("Mamescores", nullptr, 0, (void *)STORYINFO);
item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
diff --git a/src/emu/ui/menu.cpp b/src/emu/ui/menu.cpp
index d86f69fc4e2..a8ba0d75b04 100644
--- a/src/emu/ui/menu.cpp
+++ b/src/emu/ui/menu.cpp
@@ -465,7 +465,7 @@ void ui_menu::draw(bool customonly, bool noimage, bool noinput)
float mouse_x = -1, mouse_y = -1;
bool history_flag = ((item[0].flags & MENU_FLAG_UI_HISTORY) != 0);
- if (machine().options().use_background_image() && &machine().system() == &GAME_NAME(___empty) && bgrnd_bitmap->valid() && !noimage)
+ if (machine().ui().options().use_background_image() && &machine().system() == &GAME_NAME(___empty) && bgrnd_bitmap->valid() && !noimage)
container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, ARGB_WHITE, bgrnd_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
// compute the width and height of the full menu
@@ -1305,7 +1305,7 @@ void ui_menu::init_ui(running_machine &machine)
bgrnd_bitmap = std::make_unique<bitmap_argb32>(0, 0);
bgrnd_texture = mrender.texture_alloc(render_texture::hq_scale);
- emu_options &mopt = machine.options();
+ ui_options &mopt = machine.ui().options();
if (mopt.use_background_image() && &machine.system() == &GAME_NAME(___empty))
{
emu_file backgroundfile(".", OPEN_FLAG_READ);
@@ -1372,7 +1372,7 @@ void ui_menu::draw_select_game(bool noinput)
ui_manager &mui = machine().ui();
// draw background image if available
- if (machine().options().use_background_image() && bgrnd_bitmap->valid())
+ if (machine().ui().options().use_background_image() && bgrnd_bitmap->valid())
container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, ARGB_WHITE, bgrnd_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
hover = item.size() + 1;
@@ -2207,7 +2207,7 @@ void ui_menu::arts_render_images(bitmap_argb32 *tmp_bitmap, float origx1, float
int dest_yPixel = tmp_bitmap->height();
// force 4:3 ratio min
- if (machine().options().forced_4x3_snapshot() && ratioI < 0.75f && ui_globals::curimage_view == SNAPSHOT_VIEW)
+ if (machine().ui().options().forced_4x3_snapshot() && ratioI < 0.75f && ui_globals::curimage_view == SNAPSHOT_VIEW)
{
// smaller ratio will ensure that the image fits in the view
dest_yPixel = tmp_bitmap->width() * 0.75f;
@@ -2217,7 +2217,7 @@ void ui_menu::arts_render_images(bitmap_argb32 *tmp_bitmap, float origx1, float
dest_yPixel *= ratio;
}
// resize the bitmap if necessary
- else if (ratioW < 1 || ratioH < 1 || (machine().options().enlarge_snaps() && !no_available))
+ else if (ratioW < 1 || ratioH < 1 || (machine().ui().options().enlarge_snaps() && !no_available))
{
// smaller ratio will ensure that the image fits in the view
ratio = MIN(ratioW, ratioH);
@@ -2336,9 +2336,9 @@ void ui_menu::draw_icon(int linenum, void *selectedref, float x0, float y0)
}
// get search path
- path_iterator path(machine().options().icons_directory());
+ path_iterator path(machine().ui().options().icons_directory());
std::string curpath;
- std::string searchstr(machine().options().icons_directory());
+ std::string searchstr(machine().ui().options().icons_directory());
// iterate over path and add path for zipped formats
while (path.next(curpath))
@@ -2446,7 +2446,7 @@ void ui_menu::draw_palette_menu()
float gutter_width = lr_arrow_width * 1.3f;
int itemnum, linenum;
- if (machine().options().use_background_image() && machine().options().system() == nullptr && bgrnd_bitmap->valid())
+ if (machine().ui().options().use_background_image() && machine().options().system() == nullptr && bgrnd_bitmap->valid())
container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, ARGB_WHITE, bgrnd_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
// compute the width and height of the full menu
diff --git a/src/emu/ui/optsmenu.cpp b/src/emu/ui/optsmenu.cpp
index 82cf7b8d42c..1884547d8c5 100644
--- a/src/emu/ui/optsmenu.cpp
+++ b/src/emu/ui/optsmenu.cpp
@@ -39,7 +39,7 @@ ui_menu_game_options::ui_menu_game_options(running_machine &machine, render_cont
ui_menu_game_options::~ui_menu_game_options()
{
ui_menu::menu_stack->reset(UI_MENU_RESET_SELECT_FIRST);
- save_game_options(machine());
+ save_ui_options(machine());
ui_globals::switch_image = true;
}
@@ -323,20 +323,20 @@ void ui_menu_game_options::custom_render(void *selectedref, float top, float bot
}
//-------------------------------------------------
-// save game options
+// save ui options
//-------------------------------------------------
-void save_game_options(running_machine &machine)
+void save_ui_options(running_machine &machine)
{
// attempt to open the output file
emu_file file(machine.options().ini_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
- if (file.open(emulator_info::get_configname(), ".ini") == FILERR_NONE)
+ if (file.open("ui.ini") == FILERR_NONE)
{
// generate the updated INI
- std::string initext = machine.options().output_ini();
+ std::string initext = machine.ui().options().output_ini();
file.puts(initext.c_str());
file.close();
}
else
- machine.popmessage("**Error to save %s.ini**", emulator_info::get_configname());
+ machine.popmessage("**Error to save ui.ini**", emulator_info::get_configname());
}
diff --git a/src/emu/ui/optsmenu.h b/src/emu/ui/optsmenu.h
index 6900bfec769..b62e5712de9 100644
--- a/src/emu/ui/optsmenu.h
+++ b/src/emu/ui/optsmenu.h
@@ -43,6 +43,6 @@ private:
};
// save options to file
-void save_game_options(running_machine &machine);
+void save_ui_options(running_machine &machine);
#endif /* __UI_OPTSMENU_H__ */
diff --git a/src/emu/ui/selgame.cpp b/src/emu/ui/selgame.cpp
index 208c61b795d..10a53dfae9b 100644
--- a/src/emu/ui/selgame.cpp
+++ b/src/emu/ui/selgame.cpp
@@ -108,7 +108,7 @@ bool sort_game_list(const game_driver *x, const game_driver *y)
ui_menu_select_game::ui_menu_select_game(running_machine &machine, render_container *container, const char *gamename) : ui_menu(machine, container)
{
std::string error_string, last_filter, sub_filter;
- emu_options &moptions = machine.options();
+ ui_options &moptions = machine.ui().options();
// load drivers cache
load_cache_info();
@@ -185,7 +185,7 @@ ui_menu_select_game::~ui_menu_select_game()
std::string error_string, last_driver;
const game_driver *driver = nullptr;
ui_software_info *swinfo = nullptr;
- emu_options &mopt = machine().options();
+ ui_options &mopt = machine().ui().options();
if (main_filters::actual == FILTER_FAVORITE_GAME)
swinfo = (selected >= 0 && selected < item.size()) ? (ui_software_info *)item[selected].ref : nullptr;
else
@@ -208,7 +208,7 @@ ui_menu_select_game::~ui_menu_select_game()
mopt.set_value(OPTION_LAST_USED_FILTER, filter.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
mopt.set_value(OPTION_LAST_USED_MACHINE, last_driver.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
mopt.set_value(OPTION_HIDE_PANELS, ui_globals::panels_status, OPTION_PRIORITY_CMDLINE, error_string);
- save_game_options(machine());
+ save_ui_options(machine());
}
//-------------------------------------------------
@@ -218,7 +218,7 @@ ui_menu_select_game::~ui_menu_select_game()
void ui_menu_select_game::handle()
{
bool check_filter = false;
- bool enabled_dats = machine().options().enabled_dats();
+ bool enabled_dats = machine().ui().options().enabled_dats();
// if i have to load datfile, performe an hard reset
if (ui_globals::reset)
@@ -1023,7 +1023,7 @@ void ui_menu_select_game::inkey_select(const ui_menu_event *m_event)
}
std::vector<s_bios> biosname;
- if (!machine().options().skip_bios_menu() && has_multiple_bios(driver, biosname))
+ if (!machine().ui().options().skip_bios_menu() && has_multiple_bios(driver, biosname))
ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(machine(), container, biosname, (void *)driver, false, false));
else
{
@@ -1051,7 +1051,7 @@ void ui_menu_select_game::inkey_select(const ui_menu_event *m_event)
void ui_menu_select_game::inkey_select_favorite(const ui_menu_event *m_event)
{
ui_software_info *ui_swinfo = (ui_software_info *)m_event->itemref;
- emu_options &mopt = machine().options();
+ ui_options &mopt = machine().ui().options();
// special case for configure options
if ((FPTR)ui_swinfo == 1)
@@ -1064,7 +1064,7 @@ void ui_menu_select_game::inkey_select_favorite(const ui_menu_event *m_event)
else if (ui_swinfo->startempty == 1)
{
// audit the game first to see if we're going to work
- driver_enumerator enumerator(mopt, *ui_swinfo->driver);
+ driver_enumerator enumerator(machine().options(), *ui_swinfo->driver);
enumerator.next();
media_auditor auditor(enumerator);
media_auditor::summary summary = auditor.audit_media(AUDIT_VALIDATE_FAST);
@@ -1097,7 +1097,7 @@ void ui_menu_select_game::inkey_select_favorite(const ui_menu_event *m_event)
else
{
// first validate
- driver_enumerator drv(mopt, *ui_swinfo->driver);
+ driver_enumerator drv(machine().options(), *ui_swinfo->driver);
media_auditor auditor(drv);
drv.next();
software_list_device *swlist = software_list_device::find_by_name(drv.config(), ui_swinfo->listname.c_str());
@@ -1541,7 +1541,7 @@ void ui_menu_select_game::general_info(const game_driver *driver, std::string &b
strcatprintf(buffer, "Requires CHD: %s\n", (driver_cache[idx].b_chd ? "Yes" : "No"));
// audit the game first to see if we're going to work
- if (machine().options().info_audit())
+ if (machine().ui().options().info_audit())
{
driver_enumerator enumerator(machine().options(), *driver);
enumerator.next();
@@ -1569,7 +1569,7 @@ void ui_menu_select_game::general_info(const game_driver *driver, std::string &b
void ui_menu_select_game::inkey_export()
{
std::string filename("exported");
- emu_file infile(machine().options().ui_path(), OPEN_FLAG_READ);
+ emu_file infile(machine().ui().options().ui_path(), OPEN_FLAG_READ);
if (infile.open(filename.c_str(), ".xml") == FILERR_NONE)
for (int seq = 0; ; ++seq)
{
@@ -1583,7 +1583,7 @@ void ui_menu_select_game::inkey_export()
}
// attempt to open the output file
- emu_file file(machine().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
if (file.open(filename.c_str(), ".xml") == FILERR_NONE)
{
FILE *pfile;
@@ -1625,7 +1625,7 @@ void ui_menu_select_game::inkey_export()
void ui_menu_select_game::save_cache_info()
{
// attempt to open the output file
- emu_file file(machine().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
if (file.open("info_", emulator_info::get_configname(), ".ini") == FILERR_NONE)
{
@@ -1716,7 +1716,7 @@ void ui_menu_select_game::load_cache_info()
driver_cache.resize(driver_list::total() + 1);
// try to load driver cache
- emu_file file(machine().options().ui_path(), OPEN_FLAG_READ);
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_READ);
if (file.open("info_", emulator_info::get_configname(), ".ini") != FILERR_NONE)
{
save_cache_info();
@@ -1788,7 +1788,7 @@ void ui_menu_select_game::load_cache_info()
bool ui_menu_select_game::load_available_machines()
{
// try to load available drivers from file
- emu_file file(machine().options().ui_path(), OPEN_FLAG_READ);
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_READ);
if (file.open(emulator_info::get_configname(), "_avail.ini") != FILERR_NONE)
return false;
@@ -1840,7 +1840,7 @@ bool ui_menu_select_game::load_available_machines()
void ui_menu_select_game::load_custom_filters()
{
// attempt to open the output file
- emu_file file(machine().options().ui_path(), OPEN_FLAG_READ);
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_READ);
if (file.open("custom_", emulator_info::get_configname(), "_filter.ini") == FILERR_NONE)
{
char buffer[MAX_CHAR_INFO];
@@ -2066,7 +2066,7 @@ void ui_menu_select_game::infos_render(void *selectedref, float origx1, float or
static std::string buffer;
std::vector<int> xstart;
std::vector<int> xend;
- float text_size = machine().options().infos_size();
+ float text_size = machine().ui().options().infos_size();
const game_driver *driver = nullptr;
ui_software_info *soft = nullptr;
bool is_favorites = ((item[0].flags & MENU_FLAG_UI_FAVORITE) != 0);
diff --git a/src/emu/ui/selsoft.cpp b/src/emu/ui/selsoft.cpp
index e4b71a6a809..88cbd8cb2d0 100644
--- a/src/emu/ui/selsoft.cpp
+++ b/src/emu/ui/selsoft.cpp
@@ -213,7 +213,7 @@ void ui_menu_select_software::handle()
}
// handle UI_HISTORY
- else if (m_event->iptkey == IPT_UI_HISTORY && machine().options().enabled_dats())
+ else if (m_event->iptkey == IPT_UI_HISTORY && machine().ui().options().enabled_dats())
{
ui_software_info *ui_swinfo = (ui_software_info *)m_event->itemref;
@@ -817,7 +817,7 @@ void ui_menu_select_software::custom_render(void *selectedref, float top, float
void ui_menu_select_software::inkey_select(const ui_menu_event *m_event)
{
ui_software_info *ui_swinfo = (ui_software_info *)m_event->itemref;
- emu_options &mopt = machine().options();
+ ui_options &mopt = machine().ui().options();
if (ui_swinfo->startempty == 1)
{
@@ -925,7 +925,7 @@ void ui_menu_select_software::inkey_special(const ui_menu_event *m_event)
void ui_menu_select_software::load_sw_custom_filters()
{
// attempt to open the output file
- emu_file file(machine().options().ui_path(), OPEN_FLAG_READ);
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_READ);
if (file.open("custom_", m_driver->name, "_filter.ini") == FILERR_NONE)
{
char buffer[MAX_CHAR_INFO];
@@ -1417,7 +1417,7 @@ void ui_menu_select_software::infos_render(void *selectedref, float origx1, floa
static std::string buffer;
std::vector<int> xstart;
std::vector<int> xend;
- float text_size = machine().options().infos_size();
+ float text_size = machine().ui().options().infos_size();
ui_software_info *soft = ((FPTR)selectedref > 2) ? (ui_software_info *)selectedref : nullptr;
static ui_software_info *oldsoft = nullptr;
static int old_sw_view = -1;
@@ -1876,7 +1876,7 @@ void ui_bios_selection::handle()
{
// process the menu
const ui_menu_event *event = process(0);
- emu_options &moptions = machine().options();
+ ui_options &moptions = machine().ui().options();
if (event != nullptr && event->iptkey == IPT_UI_SELECT && event->itemref != nullptr)
for (auto & elem : m_bios)
if ((void*)&elem.name == event->itemref)
@@ -1905,7 +1905,7 @@ void ui_bios_selection::handle()
ui_software_info *ui_swinfo = (ui_software_info *)m_driver;
std::string error;
machine().options().set_value("bios", elem.id, OPTION_PRIORITY_CMDLINE, error);
- driver_enumerator drivlist(moptions, *ui_swinfo->driver);
+ driver_enumerator drivlist(machine().options(), *ui_swinfo->driver);
drivlist.next();
software_list_device *swlist = software_list_device::find_by_name(drivlist.config(), ui_swinfo->listname.c_str());
software_info *swinfo = swlist->find(ui_swinfo->shortname.c_str());
diff --git a/src/emu/ui/ui.cpp b/src/emu/ui/ui.cpp
index a20da75a68e..b549a51e80f 100644
--- a/src/emu/ui/ui.cpp
+++ b/src/emu/ui/ui.cpp
@@ -160,6 +160,24 @@ static INT32 slider_crossoffset(running_machine &machine, void *arg, std::string
***************************************************************************/
//-------------------------------------------------
+// load ui options
+//-------------------------------------------------
+
+static void load_ui_options(running_machine &machine)
+{
+ // parse the file
+ std::string error;
+ // attempt to open the output file
+ emu_file file(machine.options().ini_path(), OPEN_FLAG_READ);
+ if (file.open("ui.ini") == FILERR_NONE)
+ {
+ bool result = machine.ui().options().parse_ini_file((core_file&)file, OPTION_PRIORITY_MAME_INI, OPTION_PRIORITY_DRIVER_INI, error);
+ if (!result)
+ osd_printf_error("**Error to load ui.ini**");
+ }
+}
+
+//-------------------------------------------------
// is_breakable_char - is a given unicode
// character a possible line break?
//-------------------------------------------------
@@ -248,9 +266,14 @@ static const UINT32 mouse_bitmap[32*32] =
ui_manager::ui_manager(running_machine &machine)
: m_machine(machine)
{
+}
+
+void ui_manager::init()
+{
+ load_ui_options(machine());
// initialize the other UI bits
- ui_menu::init(machine);
- ui_gfx_init(machine);
+ ui_menu::init(machine());
+ ui_gfx_init(machine());
// reset instance variables
m_font = nullptr;
@@ -265,23 +288,23 @@ ui_manager::ui_manager(running_machine &machine)
m_mouse_arrow_texture = nullptr;
m_load_save_hold = false;
- get_font_rows(&machine);
- decode_ui_color(0, &machine);
+ get_font_rows(&machine());
+ decode_ui_color(0, &machine());
// more initialization
set_handler(handler_messagebox, 0);
m_non_char_keys_down = std::make_unique<UINT8[]>((ARRAY_LENGTH(non_char_keys) + 7) / 8);
- m_mouse_show = machine.system().flags & MACHINE_CLICKABLE_ARTWORK ? true : false;
+ m_mouse_show = machine().system().flags & MACHINE_CLICKABLE_ARTWORK ? true : false;
// request a callback upon exiting
- machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(ui_manager::exit), this));
+ machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(ui_manager::exit), this));
// retrieve options
- m_use_natural_keyboard = machine.options().natural_keyboard();
- bitmap_argb32 *ui_mouse_bitmap = auto_alloc(machine, bitmap_argb32(32, 32));
+ m_use_natural_keyboard = machine().options().natural_keyboard();
+ bitmap_argb32 *ui_mouse_bitmap = auto_alloc(machine(), bitmap_argb32(32, 32));
UINT32 *dst = &ui_mouse_bitmap->pix32(0);
memcpy(dst,mouse_bitmap,32*32*sizeof(UINT32));
- m_mouse_arrow_texture = machine.render().texture_alloc();
+ m_mouse_arrow_texture = machine().render().texture_alloc();
m_mouse_arrow_texture->set_bitmap(*ui_mouse_bitmap, ui_mouse_bitmap->cliprect(), TEXFORMAT_ARGB32);
}
@@ -2729,10 +2752,10 @@ rgb_t decode_ui_color(int id, running_machine *machine)
static rgb_t color[ARRAY_LENGTH(s_color_list)];
if (machine != nullptr) {
- emu_options option;
+ ui_options option;
for (int x = 0; x < ARRAY_LENGTH(s_color_list); x++) {
const char *o_default = option.value(s_color_list[x]);
- const char *s_option = machine->options().value(s_color_list[x]);
+ const char *s_option = machine->ui().options().value(s_color_list[x]);
int len = strlen(s_option);
if (len != 8)
color[x] = rgb_t((UINT32)strtoul(o_default, nullptr, 16));
@@ -2751,5 +2774,5 @@ int get_font_rows(running_machine *machine)
{
static int value;
- return ((machine != nullptr) ? value = machine->options().font_rows() : value);
+ return ((machine != nullptr) ? value = machine->ui().options().font_rows() : value);
}
diff --git a/src/emu/ui/ui.h b/src/emu/ui/ui.h
index 7153dae430b..5a07a0800b5 100644
--- a/src/emu/ui/ui.h
+++ b/src/emu/ui/ui.h
@@ -14,7 +14,7 @@
#define __USRINTRF_H__
#include "render.h"
-
+#include "moptions.h"
/***************************************************************************
CONSTANTS
@@ -116,10 +116,13 @@ public:
// construction/destruction
ui_manager(running_machine &machine);
+ void init();
+
// getters
running_machine &machine() const { return m_machine; }
bool single_step() const { return m_single_step; }
-
+ ui_options &options() { return m_ui_options; }
+
// setters
void set_single_step(bool single_step) { m_single_step = single_step; }
@@ -193,6 +196,7 @@ private:
render_texture * m_mouse_arrow_texture;
bool m_mouse_show;
bool m_load_save_hold;
+ ui_options m_ui_options;
// text generators
std::string &disclaimer_string(std::string &buffer);