Reducing differences in File Manager options when entering from

softlist vs fullpath. nw.
This commit is contained in:
Fabio Priuli 2014-08-27 11:29:59 +00:00
parent c0b27ba357
commit 747d998ca5
3 changed files with 35 additions and 15 deletions

View File

@ -237,16 +237,25 @@ void ui_menu_control_device_image::handle()
case SELECT_OTHER_PART:
switch(submenu_result) {
case ui_menu_software_parts::T_ENTRY: {
case ui_menu_software_parts::T_ENTRY:
load_software_part();
break;
}
case ui_menu_software_parts::T_FMGR:
state = START_FILE;
handle();
break;
case ui_menu_software_parts::T_EMPTY:
image->unload();
ui_menu::stack_pop(machine());
break;
case ui_menu_software_parts::T_SWLIST:
state = START_SOFTLIST;
handle();
break;
case -1: // return to system
ui_menu::stack_pop(machine());
break;

View File

@ -30,13 +30,13 @@
// ctor
//-------------------------------------------------
ui_menu_software_parts::ui_menu_software_parts(running_machine &machine, render_container *container, const software_info *info, const char *interface, const software_part **part, bool opt_fmgr, int *result)
ui_menu_software_parts::ui_menu_software_parts(running_machine &machine, render_container *container, const software_info *info, const char *interface, const software_part **part, bool other_opt, int *result)
: ui_menu(machine, container)
{
m_info = info;
m_interface = interface;
m_selected_part = part;
m_opt_fmgr = opt_fmgr;
m_other_opt = other_opt;
m_result = result;
}
@ -56,6 +56,25 @@ ui_menu_software_parts::~ui_menu_software_parts()
void ui_menu_software_parts::populate()
{
if (m_other_opt)
{
software_part_menu_entry *entry1 = (software_part_menu_entry *) m_pool_alloc(sizeof(*entry1));
entry1->type = T_EMPTY;
entry1->part = 0;
item_append("[empty slot]", 0, 0, entry1);
software_part_menu_entry *entry2 = (software_part_menu_entry *) m_pool_alloc(sizeof(*entry2));
entry2->type = T_FMGR;
entry2->part = 0;
item_append("[file manager]", 0, 0, entry2);
software_part_menu_entry *entry3 = (software_part_menu_entry *) m_pool_alloc(sizeof(*entry3));
entry3->type = T_SWLIST;
entry3->part = 0;
item_append("[software list]", 0, 0, entry3);
}
for (const software_part *swpart = m_info->first_part(); swpart != NULL; swpart = swpart->next())
{
if (swpart->matches_interface(m_interface))
@ -71,14 +90,6 @@ void ui_menu_software_parts::populate()
item_append(m_info->shortname(), menu_part_name.cstr(), 0, entry);
}
}
if (m_opt_fmgr)
{
software_part_menu_entry *entry = (software_part_menu_entry *) m_pool_alloc(sizeof(*entry));
entry->type = T_FMGR;
entry->part = 0;
item_append("[file manager]", 0, 0, entry);
}
}

View File

@ -16,8 +16,8 @@
class ui_menu_software_parts : public ui_menu {
public:
enum { T_ENTRY, T_FMGR };
ui_menu_software_parts(running_machine &machine, render_container *container, const software_info *info, const char *interface, const software_part **part, bool opt_fmgr, int *result);
enum { T_EMPTY, T_FMGR, T_SWLIST, T_ENTRY, };
ui_menu_software_parts(running_machine &machine, render_container *container, const software_info *info, const char *interface, const software_part **part, bool other_opt, int *result);
virtual ~ui_menu_software_parts();
virtual void populate();
virtual void handle();
@ -32,7 +32,7 @@ private:
const software_info * m_info;
const char * m_interface;
const software_part ** m_selected_part;
bool m_opt_fmgr;
bool m_other_opt;
int * m_result;
};