summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/ui/mainmenu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/ui/mainmenu.cpp')
-rw-r--r--src/emu/ui/mainmenu.cpp139
1 files changed, 88 insertions, 51 deletions
diff --git a/src/emu/ui/mainmenu.cpp b/src/emu/ui/mainmenu.cpp
index 415ad118811..caf531c41ef 100644
--- a/src/emu/ui/mainmenu.cpp
+++ b/src/emu/ui/mainmenu.cpp
@@ -23,12 +23,16 @@
#include "ui/mainmenu.h"
#include "ui/miscmenu.h"
#include "ui/selgame.h"
+#include "ui/simpleselgame.h"
#include "ui/sliders.h"
#include "ui/slotopt.h"
#include "ui/tapectrl.h"
#include "ui/videoopt.h"
#include "imagedev/cassette.h"
#include "machine/bcreader.h"
+#include "ui/datfile.h"
+#include "ui/inifile.h"
+#include "ui/datmenu.h"
/***************************************************************************
@@ -45,96 +49,106 @@ ui_menu_main::ui_menu_main(running_machine &machine, render_container *container
void ui_menu_main::populate()
{
- std::string menu_text;
-
/* add input menu items */
- item_append("Input (general)", nullptr, 0, (void *)INPUT_GROUPS);
+ item_append(_("Input (general)"), nullptr, 0, (void *)INPUT_GROUPS);
- strprintf(menu_text, "Input (this %s)", emulator_info::get_capstartgamenoun());
- item_append(menu_text.c_str(), nullptr, 0, (void *)INPUT_SPECIFIC);
+ item_append(_("Input (this Machine)"), nullptr, 0, (void *)INPUT_SPECIFIC);
/* add optional input-related menus */
if (machine().ioport().has_analog())
- item_append("Analog Controls", nullptr, 0, (void *)ANALOG);
+ item_append(_("Analog Controls"), nullptr, 0, (void *)ANALOG);
if (machine().ioport().has_dips())
- item_append("Dip Switches", nullptr, 0, (void *)SETTINGS_DIP_SWITCHES);
+ item_append(_("Dip Switches"), nullptr, 0, (void *)SETTINGS_DIP_SWITCHES);
if (machine().ioport().has_configs())
{
- strprintf(menu_text, "%s Configuration", emulator_info::get_capstartgamenoun());
- item_append(menu_text.c_str(), nullptr, 0, (void *)SETTINGS_DRIVER_CONFIG);
+ item_append(_("Machine Configuration"), nullptr, 0, (void *)SETTINGS_DRIVER_CONFIG);
}
/* add bookkeeping menu */
- item_append("Bookkeeping Info", nullptr, 0, (void *)BOOKKEEPING);
+ item_append(_("Bookkeeping Info"), nullptr, 0, (void *)BOOKKEEPING);
/* add game info menu */
- strprintf(menu_text, "%s Information", emulator_info::get_capstartgamenoun());
- item_append(menu_text.c_str(), nullptr, 0, (void *)GAME_INFO);
+ item_append(_("Machine Information"), nullptr, 0, (void *)GAME_INFO);
image_interface_iterator imgiter(machine().root_device());
if (imgiter.first() != nullptr)
{
/* add image info menu */
- item_append("Image Information", nullptr, 0, (void *)IMAGE_MENU_IMAGE_INFO);
+ item_append(_("Image Information"), nullptr, 0, (void *)IMAGE_MENU_IMAGE_INFO);
/* add file manager menu */
- item_append("File Manager", nullptr, 0, (void *)IMAGE_MENU_FILE_MANAGER);
+ item_append(_("File Manager"), nullptr, 0, (void *)IMAGE_MENU_FILE_MANAGER);
/* add tape control menu */
cassette_device_iterator cassiter(machine().root_device());
if (cassiter.first() != nullptr)
- item_append("Tape Control", nullptr, 0, (void *)TAPE_CONTROL);
+ item_append(_("Tape Control"), nullptr, 0, (void *)TAPE_CONTROL);
}
pty_interface_iterator ptyiter(machine().root_device());
if (ptyiter.first() != nullptr) {
- item_append("Pseudo terminals", nullptr, 0, (void *)PTY_INFO);
+ item_append(_("Pseudo terminals"), nullptr, 0, (void *)PTY_INFO);
}
if (machine().ioport().has_bioses())
- item_append("Bios Selection", nullptr, 0, (void *)BIOS_SELECTION);
+ item_append(_("Bios Selection"), nullptr, 0, (void *)BIOS_SELECTION);
slot_interface_iterator slotiter(machine().root_device());
if (slotiter.first() != nullptr)
{
/* add slot info menu */
- item_append("Slot Devices", nullptr, 0, (void *)SLOT_DEVICES);
+ item_append(_("Slot Devices"), nullptr, 0, (void *)SLOT_DEVICES);
}
barcode_reader_device_iterator bcriter(machine().root_device());
if (bcriter.first() != nullptr)
{
/* add slot info menu */
- item_append("Barcode Reader", nullptr, 0, (void *)BARCODE_READ);
+ item_append(_("Barcode Reader"), nullptr, 0, (void *)BARCODE_READ);
}
network_interface_iterator netiter(machine().root_device());
if (netiter.first() != nullptr)
{
/* add image info menu */
- item_append("Network Devices", nullptr, 0, (void*)NETWORK_DEVICES);
+ item_append(_("Network Devices"), nullptr, 0, (void*)NETWORK_DEVICES);
}
/* add keyboard mode menu */
if (machine().ioport().has_keyboard() && machine().ioport().natkeyboard().can_post())
- item_append("Keyboard Mode", nullptr, 0, (void *)KEYBOARD_MODE);
+ item_append(_("Keyboard Mode"), nullptr, 0, (void *)KEYBOARD_MODE);
/* add sliders menu */
- item_append("Slider Controls", nullptr, 0, (void *)SLIDERS);
+ item_append(_("Slider Controls"), nullptr, 0, (void *)SLIDERS);
/* add video options menu */
- item_append("Video Options", nullptr, 0, (machine().render().target_by_index(1) != nullptr) ? (void *)VIDEO_TARGETS : (void *)VIDEO_OPTIONS);
+ item_append(_("Video Options"), nullptr, 0, (machine().render().target_by_index(1) != nullptr) ? (void *)VIDEO_TARGETS : (void *)VIDEO_OPTIONS);
/* add crosshair options menu */
if (machine().crosshair().get_usage())
- item_append("Crosshair Options", nullptr, 0, (void *)CROSSHAIR);
+ item_append(_("Crosshair Options"), nullptr, 0, (void *)CROSSHAIR);
/* add cheat menu */
- if (machine().options().cheat() && machine().cheat().first() != nullptr)
- item_append("Cheat", nullptr, 0, (void *)CHEAT);
+ if (machine().options().cheat())
+ item_append(_("Cheat"), nullptr, 0, (void *)CHEAT);
+
+ // add dats menu
+ if (machine().ui().options().enabled_dats() && machine().datfile().has_data(&machine().system()))
+ item_append(_("External DAT View"), nullptr, 0, (void *)EXTERNAL_DATS);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ /* add favorite menu */
+ if (!machine().favorite().isgame_favorite())
+ item_append(_("Add To Favorites"), nullptr, 0, (void *)ADD_FAVORITE);
+ else
+ item_append(_("Remove From Favorites"), nullptr, 0, (void *)REMOVE_FAVORITE);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+// item_append(_("Quit from Machine"), nullptr, 0, (void *)QUIT_GAME);
/* add reset and exit menus */
- strprintf(menu_text, "Select New %s", emulator_info::get_capstartgamenoun());
- item_append(menu_text.c_str(), nullptr, 0, (void *)SELECT_GAME);
+ item_append(_("Select New Machine"), nullptr, 0, (void *)SELECT_GAME);
}
ui_menu_main::~ui_menu_main()
@@ -152,91 +166,114 @@ void ui_menu_main::handle()
if (menu_event != nullptr && menu_event->iptkey == IPT_UI_SELECT) {
switch((long long)(menu_event->itemref)) {
case INPUT_GROUPS:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_input_groups>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_input_groups>(machine(), container));
break;
case INPUT_SPECIFIC:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_input_specific>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_input_specific>(machine(), container));
break;
case SETTINGS_DIP_SWITCHES:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_settings_dip_switches>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_settings_dip_switches>(machine(), container));
break;
case SETTINGS_DRIVER_CONFIG:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_settings_driver_config>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_settings_driver_config>(machine(), container));
break;
case ANALOG:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_analog>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_analog>(machine(), container));
break;
case BOOKKEEPING:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_bookkeeping>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_bookkeeping>(machine(), container));
break;
case GAME_INFO:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_game_info>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_game_info>(machine(), container));
break;
case IMAGE_MENU_IMAGE_INFO:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_image_info>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_image_info>(machine(), container));
break;
case IMAGE_MENU_FILE_MANAGER:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_file_manager>(machine(), container, nullptr)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_file_manager>(machine(), container, nullptr));
break;
case TAPE_CONTROL:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_tape_control>(machine(), container, nullptr)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_tape_control>(machine(), container, nullptr));
break;
- case PTY_INFO:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_pty_info>(machine(), container)));
+ case PTY_INFO:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_pty_info>(machine(), container));
break;
case SLOT_DEVICES:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_slot_devices>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_slot_devices>(machine(), container));
break;
case NETWORK_DEVICES:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_network_devices>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_network_devices>(machine(), container));
break;
case KEYBOARD_MODE:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_keyboard_mode>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_keyboard_mode>(machine(), container));
break;
case SLIDERS:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_sliders>(machine(), container, false)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_sliders>(machine(), container, false));
break;
case VIDEO_TARGETS:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_video_targets>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_video_targets>(machine(), container));
break;
case VIDEO_OPTIONS:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_video_options>(machine(), container, machine().render().first_target())));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_video_options>(machine(), container, machine().render().first_target()));
break;
case CROSSHAIR:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_crosshair>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_crosshair>(machine(), container));
break;
case CHEAT:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_cheat>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_cheat>(machine(), container));
break;
case SELECT_GAME:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_select_game>(machine(), container, nullptr)));
+ if (strcmp(machine().options().ui(),"simple")==0) {
+ ui_menu::stack_push(global_alloc_clear<ui_simple_menu_select_game>(machine(), container, nullptr));
+ } else {
+ ui_menu::stack_push(global_alloc_clear<ui_menu_select_game>(machine(), container, nullptr));
+ }
break;
case BIOS_SELECTION:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_bios_selection>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_bios_selection>(machine(), container));
break;
case BARCODE_READ:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_barcode_reader>(machine(), container, nullptr)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_barcode_reader>(machine(), container, nullptr));
+ break;
+
+ case EXTERNAL_DATS:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats_view>(machine(), container));
+ break;
+
+ case ADD_FAVORITE:
+ machine().favorite().add_favorite_game();
+ reset(UI_MENU_RESET_REMEMBER_POSITION);
+ break;
+
+ case REMOVE_FAVORITE:
+ machine().favorite().remove_favorite_game();
+ reset(UI_MENU_RESET_REMEMBER_POSITION);
+ break;
+
+ case QUIT_GAME:
+ ui_menu::stack_pop(machine());
+ machine().ui().request_quit();
break;
default: