diff --git a/src/frontend/mame/ui/filemngr.cpp b/src/frontend/mame/ui/filemngr.cpp index 8883e4beb9f..38e7faa0d78 100644 --- a/src/frontend/mame/ui/filemngr.cpp +++ b/src/frontend/mame/ui/filemngr.cpp @@ -184,11 +184,11 @@ void menu_file_manager::handle() floppy_image_device *floppy_device = dynamic_cast(selected_device); if (floppy_device != nullptr) { - menu::stack_push(ui(), container(), floppy_device); + menu::stack_push(ui(), container(), *floppy_device); } else { - menu::stack_push(ui(), container(), selected_device); + menu::stack_push(ui(), container(), *selected_device); } // reset the existing menu reset(reset_options::REMEMBER_POSITION); diff --git a/src/frontend/mame/ui/floppycntrl.cpp b/src/frontend/mame/ui/floppycntrl.cpp index 33d2abf937d..eeebd5981ef 100644 --- a/src/frontend/mame/ui/floppycntrl.cpp +++ b/src/frontend/mame/ui/floppycntrl.cpp @@ -20,9 +20,9 @@ namespace ui { IMPLEMENTATION ***************************************************************************/ -menu_control_floppy_image::menu_control_floppy_image(mame_ui_manager &mui, render_container &container, device_image_interface *_image) : menu_control_device_image(mui, container, _image) +menu_control_floppy_image::menu_control_floppy_image(mame_ui_manager &mui, render_container &container, device_image_interface &image) : menu_control_device_image(mui, container, image) { - floppy_image_device *fd = static_cast(image); + floppy_image_device *fd = static_cast(&m_image); const floppy_image_format_t *fif_list = fd->get_formats(); int fcnt = 0; for(const floppy_image_format_t *i = fif_list; i; i = i->next) @@ -40,7 +40,7 @@ menu_control_floppy_image::~menu_control_floppy_image() void menu_control_floppy_image::do_load_create() { - floppy_image_device *fd = static_cast(image); + floppy_image_device *fd = static_cast(&m_image); if(input_filename.compare("")==0) { int err = fd->create(output_filename.c_str(), nullptr, nullptr); if (err != 0) { @@ -66,17 +66,17 @@ void menu_control_floppy_image::hook_load(std::string filename, bool softlist) if (softlist) { machine().popmessage("When loaded from software list, the disk is Read-only.\n"); - image->load(filename.c_str()); + m_image.load(filename.c_str()); stack_pop(); return; } input_filename = filename; - input_format = static_cast(image)->identify(filename); + input_format = static_cast(m_image).identify(filename); if (!input_format) { - machine().popmessage("Error: %s\n", image->error()); + machine().popmessage("Error: %s\n", m_image.error()); stack_pop(); return; } @@ -93,15 +93,15 @@ void menu_control_floppy_image::hook_load(std::string filename, bool softlist) else can_in_place = false; } - submenu_result.rw = menu_select_rw::result::INVALID; - menu::stack_push(ui(), container(), can_in_place, submenu_result.rw); - state = SELECT_RW; + m_submenu_result.rw = menu_select_rw::result::INVALID; + menu::stack_push(ui(), container(), can_in_place, m_submenu_result.rw); + m_state = SELECT_RW; } void menu_control_floppy_image::handle() { - floppy_image_device *fd = static_cast(image); - switch (state) { + floppy_image_device *fd = static_cast(&m_image); + switch (m_state) { case DO_CREATE: { floppy_image_format_t *fif_list = fd->get_formats(); int ext_match; @@ -119,27 +119,27 @@ void menu_control_floppy_image::handle() if (!i->extension_matches(m_current_file.c_str())) format_array[total_usable++] = i; } - submenu_result.i = -1; - menu::stack_push(ui(), container(), format_array, ext_match, total_usable, &submenu_result.i); + m_submenu_result.i = -1; + menu::stack_push(ui(), container(), format_array, ext_match, total_usable, &m_submenu_result.i); - state = SELECT_FORMAT; + m_state = SELECT_FORMAT; break; } case SELECT_FORMAT: - if(submenu_result.i == -1) { - state = START_FILE; + if(m_submenu_result.i == -1) { + m_state = START_FILE; handle(); } else { output_filename = util::zippath_combine(m_current_directory.c_str(), m_current_file.c_str()); - output_format = format_array[submenu_result.i]; + output_format = format_array[m_submenu_result.i]; do_load_create(); stack_pop(); } break; case SELECT_RW: - switch(submenu_result.rw) { + switch(m_submenu_result.rw) { case menu_select_rw::result::READONLY: do_load_create(); stack_pop(); @@ -157,12 +157,12 @@ void menu_control_floppy_image::handle() break; case menu_select_rw::result::WRITE_OTHER: - menu::stack_push(ui(), container(), image, m_current_directory, m_current_file, create_ok); - state = CHECK_CREATE; + menu::stack_push(ui(), container(), &m_image, m_current_directory, m_current_file, m_create_ok); + m_state = CHECK_CREATE; break; case menu_select_rw::result::INVALID: - state = START_FILE; + m_state = START_FILE; break; } break; diff --git a/src/frontend/mame/ui/floppycntrl.h b/src/frontend/mame/ui/floppycntrl.h index 96790d6eebb..b32af471b2a 100644 --- a/src/frontend/mame/ui/floppycntrl.h +++ b/src/frontend/mame/ui/floppycntrl.h @@ -20,7 +20,7 @@ namespace ui { class menu_control_floppy_image : public menu_control_device_image { public: - menu_control_floppy_image(mame_ui_manager &ui, render_container &container, device_image_interface *image); + menu_control_floppy_image(mame_ui_manager &ui, render_container &container, device_image_interface &image); virtual ~menu_control_floppy_image() override; private: diff --git a/src/frontend/mame/ui/imgcntrl.cpp b/src/frontend/mame/ui/imgcntrl.cpp index 39735b2c8fc..227d520044d 100644 --- a/src/frontend/mame/ui/imgcntrl.cpp +++ b/src/frontend/mame/ui/imgcntrl.cpp @@ -33,39 +33,42 @@ namespace ui { // ctor //------------------------------------------------- -menu_control_device_image::menu_control_device_image(mame_ui_manager &mui, render_container &container, device_image_interface *_image) - : menu(mui, container), - create_ok(false), - create_confirmed(false) +menu_control_device_image::menu_control_device_image(mame_ui_manager &mui, render_container &container, device_image_interface &image) + : menu(mui, container) + , m_image(image) + , m_create_ok(false) + , m_create_confirmed(false) { - image = _image; - submenu_result.i = -1; + m_submenu_result.i = -1; - if (image->software_list_name()) - sld = software_list_device::find_by_name(mui.machine().config(), image->software_list_name()); + if (m_image.software_list_name()) + m_sld = software_list_device::find_by_name(mui.machine().config(), m_image.software_list_name()); else - sld = nullptr; - swi = image->software_entry(); - swp = image->part_entry(); + m_sld = nullptr; + m_swi = m_image.software_entry(); + m_swp = m_image.part_entry(); - if(swi) + if (m_swi != nullptr) { - state = START_OTHER_PART; - m_current_directory.assign(image->working_directory()); + m_state = START_OTHER_PART; + m_current_directory.assign(m_image.working_directory()); } else { - state = START_FILE; + m_state = START_FILE; - /* if the image exists, set the working directory to the parent directory */ - if (image->exists()) + // if the image exists, set the working directory to the parent directory + if (m_image.exists()) { - m_current_file.assign(image->filename()); + m_current_file.assign(m_image.filename()); util::zippath_parent(m_current_directory, m_current_file.c_str()); - } else - m_current_directory.assign(image->working_directory()); + } + else + { + m_current_directory.assign(m_image.working_directory()); + } - /* check to see if the path exists; if not clear it */ + // check to see if the path exists; if not clear it if (util::zippath_opendir(m_current_directory.c_str(), nullptr) != osd_file::error::NONE) m_current_directory.clear(); } @@ -87,31 +90,29 @@ menu_control_device_image::~menu_control_device_image() void menu_control_device_image::test_create(bool &can_create, bool &need_confirm) { - osd::directory::entry::entry_type file_type; - - /* assemble the full path */ + // assemble the full path auto path = util::zippath_combine(m_current_directory.c_str(), m_current_file.c_str()); - /* does a file or a directory exist at the path */ + // does a file or a directory exist at the path auto entry = osd_stat(path.c_str()); - file_type = (entry != nullptr) ? entry->type : osd::directory::entry::entry_type::NONE; + auto file_type = (entry != nullptr) ? entry->type : osd::directory::entry::entry_type::NONE; switch(file_type) { case osd::directory::entry::entry_type::NONE: - /* no file/dir here - always create */ + // no file/dir here - always create can_create = true; need_confirm = false; break; case osd::directory::entry::entry_type::FILE: - /* a file exists here - ask for permission from the user */ + // a file exists here - ask for permission from the user can_create = true; need_confirm = true; break; case osd::directory::entry::entry_type::DIR: - /* a directory exists here - we can't save over it */ + // a directory exists here - we can't save over it ui().popup_time(5, "%s", _("Cannot save over directory")); can_create = false; need_confirm = false; @@ -131,19 +132,19 @@ void menu_control_device_image::test_create(bool &can_create, bool &need_confirm void menu_control_device_image::load_software_part() { - std::string temp_name = std::string(sld->list_name()).append(":").append(swi->shortname()).append(":").append(swp->name()); + std::string temp_name = string_format("%s:%s:%s", m_sld->list_name(), m_swi->shortname(), m_swp->name()); driver_enumerator drivlist(machine().options(), machine().options().system_name()); drivlist.next(); media_auditor auditor(drivlist); - media_auditor::summary summary = auditor.audit_software(sld->list_name(), (software_info *)swi, AUDIT_VALIDATE_FAST); + media_auditor::summary summary = auditor.audit_software(m_sld->list_name(), (software_info *)m_swi, AUDIT_VALIDATE_FAST); // if everything looks good, load software if (summary == media_auditor::CORRECT || summary == media_auditor::BEST_AVAILABLE || summary == media_auditor::NONE_NEEDED) hook_load(temp_name, true); else { machine().popmessage(_("The software selected is missing one or more required ROM or CHD images. Please select a different one.")); - state = SELECT_SOFTLIST; + m_state = SELECT_SOFTLIST; } } @@ -154,8 +155,8 @@ void menu_control_device_image::load_software_part() void menu_control_device_image::hook_load(std::string name, bool softlist) { - if (image->is_reset_on_load()) image->set_init_phase(); - image->load(name.c_str()); + if (m_image.is_reset_on_load()) m_image.set_init_phase(); + m_image.load(name.c_str()); stack_pop(); } @@ -175,87 +176,87 @@ void menu_control_device_image::populate() void menu_control_device_image::handle() { - switch(state) { - case START_FILE: { - submenu_result.filesel = menu_file_selector::result::INVALID; - menu::stack_push(ui(), container(), image, m_current_directory, m_current_file, true, image->image_interface()!=nullptr, image->is_creatable(), submenu_result.filesel); - state = SELECT_FILE; + switch(m_state) + { + case START_FILE: + m_submenu_result.filesel = menu_file_selector::result::INVALID; + menu::stack_push(ui(), container(), &m_image, m_current_directory, m_current_file, true, m_image.image_interface()!=nullptr, m_image.is_creatable(), m_submenu_result.filesel); + m_state = SELECT_FILE; break; - } case START_SOFTLIST: - sld = nullptr; - menu::stack_push(ui(), container(), image->image_interface(), &sld); - state = SELECT_SOFTLIST; + m_sld = nullptr; + menu::stack_push(ui(), container(), m_image.image_interface(), &m_sld); + m_state = SELECT_SOFTLIST; break; - case START_OTHER_PART: { - submenu_result.swparts = menu_software_parts::result::INVALID; - menu::stack_push(ui(), container(), swi, swp->interface(), &swp, true, submenu_result.swparts); - state = SELECT_OTHER_PART; + case START_OTHER_PART: + m_submenu_result.swparts = menu_software_parts::result::INVALID; + menu::stack_push(ui(), container(), m_swi, m_swp->interface(), &m_swp, true, m_submenu_result.swparts); + m_state = SELECT_OTHER_PART; break; - } case SELECT_SOFTLIST: - if(!sld) { + if (!m_sld) + { stack_pop(); break; } - software_info_name = ""; - menu::stack_push(ui(), container(), sld, image->image_interface(), software_info_name); - state = SELECT_PARTLIST; + m_software_info_name.clear(); + menu::stack_push(ui(), container(), m_sld, m_image.image_interface(), m_software_info_name); + m_state = SELECT_PARTLIST; break; case SELECT_PARTLIST: - swi = sld->find(software_info_name.c_str()); - if (!swi) - state = START_SOFTLIST; - else if(swi->has_multiple_parts(image->image_interface())) + m_swi = m_sld->find(m_software_info_name.c_str()); + if (!m_swi) + m_state = START_SOFTLIST; + else if (m_swi->has_multiple_parts(m_image.image_interface())) { - submenu_result.swparts = menu_software_parts::result::INVALID; - swp = nullptr; - menu::stack_push(ui(), container(), swi, image->image_interface(), &swp, false, submenu_result.swparts); - state = SELECT_ONE_PART; + m_submenu_result.swparts = menu_software_parts::result::INVALID; + m_swp = nullptr; + menu::stack_push(ui(), container(), m_swi, m_image.image_interface(), &m_swp, false, m_submenu_result.swparts); + m_state = SELECT_ONE_PART; } else { - swp = swi->first_part(); + m_swp = m_swi->first_part(); load_software_part(); } break; case SELECT_ONE_PART: - switch(submenu_result.swparts) { + switch(m_submenu_result.swparts) { case menu_software_parts::result::ENTRY: { load_software_part(); break; } default: // return to list - state = SELECT_SOFTLIST; + m_state = SELECT_SOFTLIST; break; } break; case SELECT_OTHER_PART: - switch(submenu_result.swparts) { + switch(m_submenu_result.swparts) { case menu_software_parts::result::ENTRY: load_software_part(); break; case menu_software_parts::result::FMGR: - state = START_FILE; + m_state = START_FILE; handle(); break; case menu_software_parts::result::EMPTY: - image->unload(); + m_image.unload(); stack_pop(); break; case menu_software_parts::result::SWLIST: - state = START_SOFTLIST; + m_state = START_SOFTLIST; handle(); break; @@ -267,9 +268,10 @@ void menu_control_device_image::handle() break; case SELECT_FILE: - switch(submenu_result.filesel) { + switch(m_submenu_result.filesel) + { case menu_file_selector::result::EMPTY: - image->unload(); + m_image.unload(); stack_pop(); break; @@ -278,12 +280,12 @@ void menu_control_device_image::handle() break; case menu_file_selector::result::CREATE: - menu::stack_push(ui(), container(), image, m_current_directory, m_current_file, create_ok); - state = CHECK_CREATE; + menu::stack_push(ui(), container(), &m_image, m_current_directory, m_current_file, m_create_ok); + m_state = CHECK_CREATE; break; case menu_file_selector::result::SOFTLIST: - state = START_SOFTLIST; + m_state = START_SOFTLIST; handle(); break; @@ -298,34 +300,34 @@ void menu_control_device_image::handle() test_create(can_create, need_confirm); if(can_create) { if(need_confirm) { - menu::stack_push(ui(), container(), &create_confirmed); - state = CREATE_CONFIRM; + menu::stack_push(ui(), container(), &m_create_confirmed); + m_state = CREATE_CONFIRM; } else { - state = DO_CREATE; + m_state = DO_CREATE; handle(); } } else { - state = START_FILE; + m_state = START_FILE; handle(); } break; } case CREATE_CONFIRM: - state = create_confirmed ? DO_CREATE : START_FILE; + m_state = m_create_confirmed ? DO_CREATE : START_FILE; handle(); break; case CHECK_CREATE: - state = create_ok ? CREATE_FILE : START_FILE; + m_state = m_create_ok ? CREATE_FILE : START_FILE; handle(); break; case DO_CREATE: { auto path = util::zippath_combine(m_current_directory.c_str(), m_current_file.c_str()); - int err = image->create(path.c_str(), nullptr, nullptr); + int err = m_image.create(path.c_str(), nullptr, nullptr); if (err != 0) - machine().popmessage("Error: %s", image->error()); + machine().popmessage("Error: %s", m_image.error()); stack_pop(); break; } diff --git a/src/frontend/mame/ui/imgcntrl.h b/src/frontend/mame/ui/imgcntrl.h index 61d44908a43..8f9d684eeb7 100644 --- a/src/frontend/mame/ui/imgcntrl.h +++ b/src/frontend/mame/ui/imgcntrl.h @@ -23,21 +23,18 @@ namespace ui { class menu_control_device_image : public menu { public: - menu_control_device_image(mame_ui_manager &mui, render_container &container, device_image_interface *image); + menu_control_device_image(mame_ui_manager &mui, render_container &container, device_image_interface &image); virtual ~menu_control_device_image() override; protected: - enum { + enum + { START_FILE, START_OTHER_PART, START_SOFTLIST, SELECT_PARTLIST, SELECT_ONE_PART, SELECT_OTHER_PART, SELECT_FILE, CREATE_FILE, CREATE_CONFIRM, CHECK_CREATE, DO_CREATE, SELECT_SOFTLIST, LAST_ID }; - // protected instance variables - int state; - device_image_interface *image; - // this is a single union that contains all of the different types of // results we could get from child menus union @@ -46,27 +43,27 @@ protected: menu_software_parts::result swparts; menu_select_rw::result rw; int i; - } submenu_result; + } m_submenu_result; - std::string m_current_directory; - std::string m_current_file; + // instance variables - made protected so they can be shared with floppycntrl.cpp + int m_state; + device_image_interface & m_image; + std::string m_current_directory; + std::string m_current_file; + bool m_create_ok; // methods virtual void hook_load(std::string filename, bool softlist); virtual void handle() override; - - bool create_ok; - -private: virtual void populate() override; +private: // instance variables - bool create_confirmed; - //bool softlist_done; - const software_info *swi; - const software_part *swp; - class software_list_device *sld; - std::string software_info_name; + bool m_create_confirmed; + const software_info * m_swi; + const software_part * m_swp; + class software_list_device * m_sld; + std::string m_software_info_name; // methods void test_create(bool &can_create, bool &need_confirm);