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: case SELECT_OTHER_PART:
switch(submenu_result) { switch(submenu_result) {
case ui_menu_software_parts::T_ENTRY: { case ui_menu_software_parts::T_ENTRY:
load_software_part(); load_software_part();
break; break;
}
case ui_menu_software_parts::T_FMGR: case ui_menu_software_parts::T_FMGR:
state = START_FILE; state = START_FILE;
handle(); handle();
break; 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 case -1: // return to system
ui_menu::stack_pop(machine()); ui_menu::stack_pop(machine());
break; break;

View File

@ -30,13 +30,13 @@
// ctor // 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) : ui_menu(machine, container)
{ {
m_info = info; m_info = info;
m_interface = interface; m_interface = interface;
m_selected_part = part; m_selected_part = part;
m_opt_fmgr = opt_fmgr; m_other_opt = other_opt;
m_result = result; m_result = result;
} }
@ -56,6 +56,25 @@ ui_menu_software_parts::~ui_menu_software_parts()
void ui_menu_software_parts::populate() 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()) for (const software_part *swpart = m_info->first_part(); swpart != NULL; swpart = swpart->next())
{ {
if (swpart->matches_interface(m_interface)) 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); 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 { class ui_menu_software_parts : public ui_menu {
public: public:
enum { T_ENTRY, T_FMGR }; 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 opt_fmgr, int *result); 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 ~ui_menu_software_parts();
virtual void populate(); virtual void populate();
virtual void handle(); virtual void handle();
@ -32,7 +32,7 @@ private:
const software_info * m_info; const software_info * m_info;
const char * m_interface; const char * m_interface;
const software_part ** m_selected_part; const software_part ** m_selected_part;
bool m_opt_fmgr; bool m_other_opt;
int * m_result; int * m_result;
}; };