mirror of
https://github.com/holub/mame
synced 2025-06-28 23:24:23 +03:00
Changed a number of file manager related menus to have their outputs be by reference than pointer, and tightened up typecasts in menu_select_rw
This commit is contained in:
parent
411880ac67
commit
0d4151e366
@ -44,16 +44,16 @@ namespace ui {
|
||||
// ctor
|
||||
//-------------------------------------------------
|
||||
|
||||
menu_file_selector::menu_file_selector(mame_ui_manager &mui, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool has_empty, bool has_softlist, bool has_create, menu_file_selector::result *result)
|
||||
menu_file_selector::menu_file_selector(mame_ui_manager &mui, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool has_empty, bool has_softlist, bool has_create, menu_file_selector::result &result)
|
||||
: menu(mui, container)
|
||||
, m_current_directory(current_directory)
|
||||
, m_current_file(current_file)
|
||||
, m_result(result)
|
||||
{
|
||||
m_image = image;
|
||||
m_has_empty = has_empty;
|
||||
m_has_softlist = has_softlist;
|
||||
m_has_create = has_create;
|
||||
m_result = result;
|
||||
}
|
||||
|
||||
|
||||
@ -391,18 +391,18 @@ void menu_file_selector::handle()
|
||||
{
|
||||
case SELECTOR_ENTRY_TYPE_EMPTY:
|
||||
// empty slot - unload
|
||||
*m_result = result::EMPTY;
|
||||
m_result = result::EMPTY;
|
||||
menu::stack_pop(machine());
|
||||
break;
|
||||
|
||||
case SELECTOR_ENTRY_TYPE_CREATE:
|
||||
// create
|
||||
*m_result = result::CREATE;
|
||||
m_result = result::CREATE;
|
||||
menu::stack_pop(machine());
|
||||
break;
|
||||
|
||||
case SELECTOR_ENTRY_TYPE_SOFTWARE_LIST:
|
||||
*m_result = result::SOFTLIST;
|
||||
m_result = result::SOFTLIST;
|
||||
menu::stack_pop(machine());
|
||||
break;
|
||||
|
||||
@ -423,7 +423,7 @@ void menu_file_selector::handle()
|
||||
case SELECTOR_ENTRY_TYPE_FILE:
|
||||
// file
|
||||
m_current_file.assign(entry->fullpath);
|
||||
*m_result = result::FILE;
|
||||
m_result = result::FILE;
|
||||
menu::stack_pop(machine());
|
||||
break;
|
||||
}
|
||||
@ -508,11 +508,11 @@ void menu_file_selector::handle()
|
||||
//-------------------------------------------------
|
||||
|
||||
menu_select_rw::menu_select_rw(mame_ui_manager &mui, render_container *container,
|
||||
bool can_in_place, result *result)
|
||||
: menu(mui, container)
|
||||
bool can_in_place, result &result)
|
||||
: menu(mui, container),
|
||||
m_can_in_place(can_in_place),
|
||||
m_result(result)
|
||||
{
|
||||
m_can_in_place = can_in_place;
|
||||
m_result = result;
|
||||
}
|
||||
|
||||
|
||||
@ -532,11 +532,11 @@ menu_select_rw::~menu_select_rw()
|
||||
void menu_select_rw::populate()
|
||||
{
|
||||
item_append(_("Select access mode"), "", FLAG_DISABLE, nullptr);
|
||||
item_append(_("Read-only"), "", 0, (void *) result::READONLY);
|
||||
item_append(_("Read-only"), "", 0, itemref_from_result(result::READONLY));
|
||||
if (m_can_in_place)
|
||||
item_append(_("Read-write"), "", 0, (void *)result::READWRITE);
|
||||
item_append(_("Read this image, write to another image"), "", 0, (void *)result::WRITE_OTHER);
|
||||
item_append(_("Read this image, write to diff"), "", 0, (void *)result::WRITE_DIFF);
|
||||
item_append(_("Read-write"), "", 0, itemref_from_result(result::READWRITE));
|
||||
item_append(_("Read this image, write to another image"), "", 0, itemref_from_result(result::WRITE_OTHER));
|
||||
item_append(_("Read this image, write to diff"), "", 0, itemref_from_result(result::WRITE_DIFF));
|
||||
}
|
||||
|
||||
|
||||
@ -550,9 +550,30 @@ void menu_select_rw::handle()
|
||||
const event *event = process(0);
|
||||
if (event != nullptr && event->iptkey == IPT_UI_SELECT)
|
||||
{
|
||||
*m_result = result(FPTR(event->itemref));
|
||||
m_result = result_from_itemref(event->itemref);
|
||||
menu::stack_pop(machine());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// itemref_from_result
|
||||
//-------------------------------------------------
|
||||
|
||||
void *menu_select_rw::itemref_from_result(menu_select_rw::result result)
|
||||
{
|
||||
return (void *)(FPTR)(unsigned int)result;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// result_from_itemref
|
||||
//-------------------------------------------------
|
||||
|
||||
menu_select_rw::result menu_select_rw::result_from_itemref(void *itemref)
|
||||
{
|
||||
return (menu_select_rw::result) (unsigned int) (FPTR)itemref;
|
||||
}
|
||||
|
||||
|
||||
} // namespace ui
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
FILE
|
||||
};
|
||||
|
||||
menu_file_selector(mame_ui_manager &mui, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool has_empty, bool has_softlist, bool has_create, result *result);
|
||||
menu_file_selector(mame_ui_manager &mui, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool has_empty, bool has_softlist, bool has_create, result &result);
|
||||
virtual ~menu_file_selector() override;
|
||||
virtual void populate() override;
|
||||
virtual void handle() override;
|
||||
@ -64,7 +64,7 @@ private:
|
||||
bool m_has_empty;
|
||||
bool m_has_softlist;
|
||||
bool m_has_create;
|
||||
result * m_result;
|
||||
result & m_result;
|
||||
std::vector<file_selector_entry> m_entrylist;
|
||||
std::string m_hover_directory;
|
||||
std::string m_filename;
|
||||
@ -92,15 +92,18 @@ public:
|
||||
WRITE_DIFF
|
||||
};
|
||||
menu_select_rw(mame_ui_manager &mui, render_container *container,
|
||||
bool can_in_place, result *result);
|
||||
bool can_in_place, result &result);
|
||||
virtual ~menu_select_rw() override;
|
||||
virtual void populate() override;
|
||||
virtual void handle() override;
|
||||
|
||||
static void *itemref_from_result(result result);
|
||||
static result result_from_itemref(void *itemref);
|
||||
|
||||
private:
|
||||
// internal state
|
||||
bool m_can_in_place;
|
||||
result * m_result;
|
||||
result & m_result;
|
||||
};
|
||||
|
||||
} // namespace ui
|
||||
|
@ -94,7 +94,7 @@ void menu_control_floppy_image::hook_load(std::string filename, bool softlist)
|
||||
can_in_place = false;
|
||||
}
|
||||
submenu_result.rw = menu_select_rw::result::INVALID;
|
||||
menu::stack_push<menu_select_rw>(ui(), container, can_in_place, &submenu_result.rw);
|
||||
menu::stack_push<menu_select_rw>(ui(), container, can_in_place, submenu_result.rw);
|
||||
state = SELECT_RW;
|
||||
}
|
||||
|
||||
|
@ -178,7 +178,7 @@ void menu_control_device_image::handle()
|
||||
switch(state) {
|
||||
case START_FILE: {
|
||||
submenu_result.filesel = menu_file_selector::result::INVALID;
|
||||
menu::stack_push<menu_file_selector>(ui(), container, image, m_current_directory, m_current_file, true, image->image_interface()!=nullptr, image->is_creatable(), &submenu_result.filesel);
|
||||
menu::stack_push<menu_file_selector>(ui(), container, image, m_current_directory, m_current_file, true, image->image_interface()!=nullptr, image->is_creatable(), submenu_result.filesel);
|
||||
state = SELECT_FILE;
|
||||
break;
|
||||
}
|
||||
@ -191,7 +191,7 @@ void menu_control_device_image::handle()
|
||||
|
||||
case START_OTHER_PART: {
|
||||
submenu_result.swparts = menu_software_parts::result::INVALID;
|
||||
menu::stack_push<menu_software_parts>(ui(), container, swi, swp->interface(), &swp, true, &submenu_result.swparts);
|
||||
menu::stack_push<menu_software_parts>(ui(), container, swi, swp->interface(), &swp, true, submenu_result.swparts);
|
||||
state = SELECT_OTHER_PART;
|
||||
break;
|
||||
}
|
||||
@ -214,7 +214,7 @@ void menu_control_device_image::handle()
|
||||
{
|
||||
submenu_result.swparts = menu_software_parts::result::INVALID;
|
||||
swp = nullptr;
|
||||
menu::stack_push<menu_software_parts>(ui(), container, swi, image->image_interface(), &swp, false, &submenu_result.swparts);
|
||||
menu::stack_push<menu_software_parts>(ui(), container, swi, image->image_interface(), &swp, false, submenu_result.swparts);
|
||||
state = SELECT_ONE_PART;
|
||||
}
|
||||
else
|
||||
|
@ -33,14 +33,14 @@ namespace ui {
|
||||
// ctor
|
||||
//-------------------------------------------------
|
||||
|
||||
menu_software_parts::menu_software_parts(mame_ui_manager &mui, render_container *container, const software_info *info, const char *interface, const software_part **part, bool other_opt, result *result)
|
||||
: menu(mui, container)
|
||||
menu_software_parts::menu_software_parts(mame_ui_manager &mui, render_container *container, const software_info *info, const char *interface, const software_part **part, bool other_opt, result &result)
|
||||
: menu(mui, container),
|
||||
m_result(result)
|
||||
{
|
||||
m_info = info;
|
||||
m_interface = interface;
|
||||
m_selected_part = part;
|
||||
m_other_opt = other_opt;
|
||||
m_result = result;
|
||||
}
|
||||
|
||||
|
||||
@ -108,7 +108,7 @@ void menu_software_parts::handle()
|
||||
if (event != nullptr && event->iptkey == IPT_UI_SELECT && event->itemref != nullptr)
|
||||
{
|
||||
software_part_menu_entry *entry = (software_part_menu_entry *) event->itemref;
|
||||
*m_result = entry->type;
|
||||
m_result = entry->type;
|
||||
*m_selected_part = entry->part;
|
||||
menu::stack_pop(machine());
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ public:
|
||||
ENTRY
|
||||
};
|
||||
|
||||
menu_software_parts(mame_ui_manager &mui, render_container *container, const software_info *info, const char *interface, const software_part **part, bool other_opt, result *result);
|
||||
menu_software_parts(mame_ui_manager &mui, render_container *container, const software_info *info, const char *interface, const software_part **part, bool other_opt, result &result);
|
||||
virtual ~menu_software_parts() override;
|
||||
virtual void populate() override;
|
||||
virtual void handle() override;
|
||||
@ -45,7 +45,7 @@ private:
|
||||
const char * m_interface;
|
||||
const software_part ** m_selected_part;
|
||||
bool m_other_opt;
|
||||
result * m_result;
|
||||
result & m_result;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user