From f407afa013989e434e63711aa304691929a53a4f Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Sun, 26 Feb 2017 19:24:36 -0500 Subject: Cleanup of slot code Added device_slot_interface::has_selectable_options() to calculate whether a particular slot has selectable options --- src/emu/dislot.cpp | 11 +++++++++++ src/emu/dislot.h | 1 + src/frontend/mame/mameopts.cpp | 4 ++-- src/frontend/mame/ui/slotopt.cpp | 26 ++++++++++++++++---------- 4 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/emu/dislot.cpp b/src/emu/dislot.cpp index 037a2749567..7174293098c 100644 --- a/src/emu/dislot.cpp +++ b/src/emu/dislot.cpp @@ -77,6 +77,17 @@ device_t* device_slot_interface::get_card_device() return dev; } +bool device_slot_interface::has_selectable_options() const +{ + if (!fixed()) + { + for (auto &option : option_list()) + if (option.second->selectable()) + return true; + } + return false; +} + device_slot_card_interface::device_slot_card_interface(const machine_config &mconfig, device_t &device) : device_interface(device, "slot") diff --git a/src/emu/dislot.h b/src/emu/dislot.h index 967442631de..54b75a353fb 100644 --- a/src/emu/dislot.h +++ b/src/emu/dislot.h @@ -110,6 +110,7 @@ public: static void static_set_option_device_input_defaults(device_t &device, const char *option, const input_device_default *default_input) { static_option(device, option)->m_input_device_defaults = default_input; } static void static_set_option_clock(device_t &device, const char *option, u32 default_clock) { static_option(device, option)->m_clock = default_clock; } bool fixed() const { return m_fixed; } + bool has_selectable_options() const; const char *default_option() const { return m_default_option; } const std::unordered_map> &option_list() const { return m_options; } device_slot_option *option(const char *name) const { if (name) { auto search = m_options.find(name); if (search != m_options.end()) return search->second.get(); else return nullptr; } else return nullptr; } diff --git a/src/frontend/mame/mameopts.cpp b/src/frontend/mame/mameopts.cpp index 10f8a50ce3a..be3ceb89845 100644 --- a/src/frontend/mame/mameopts.cpp +++ b/src/frontend/mame/mameopts.cpp @@ -38,8 +38,8 @@ bool mame_options::add_slot_options(emu_options &options, std::functionname()); - if (slot.fixed() || slot_get_length(slot) == 0) - opt_name.append(_(" [internal]")); + opt_name = has_selectable_options + ? option->name() + : string_format(_("%s [internal]"), option->name()); } - item_append(slot.device().tag() + 1, opt_name, (slot.fixed() || slot_get_length(slot) == 0) ? 0 : (FLAG_LEFT_ARROW | FLAG_RIGHT_ARROW), (void *)&slot); + // choose item flags + uint32_t item_flags = has_selectable_options + ? FLAG_LEFT_ARROW | FLAG_RIGHT_ARROW + : FLAG_DISABLE; + + item_append(slot.device().tag() + 1, opt_name, item_flags, (void *)&slot); } item_append(menu_item_type::SEPARATOR); item_append(_("Reset"), "", 0, (void *)1); -- cgit v1.2.3