1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
// license:BSD-3-Clause
// copyright-holders:Nicola Salmoria, Aaron Giles, Nathan Woods
/***************************************************************************
ui/swlist.h
Internal MAME user interface for software list.
***************************************************************************/
#ifndef MAME_FRONTEND_UI_SWLIST_H
#define MAME_FRONTEND_UI_SWLIST_H
#include "ui/menu.h"
namespace ui {
// ======================> menu_software_parts
class menu_software_parts : public menu
{
public:
enum class result
{
INVALID = -1,
EMPTY = 0x2000,
FMGR,
SWLIST,
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);
virtual ~menu_software_parts() override;
private:
struct software_part_menu_entry {
result type;
const software_part *part;
};
virtual void populate() override;
virtual void handle() override;
// variables
const software_info * m_info;
const char * m_interface;
const software_part ** m_selected_part;
bool m_other_opt;
result & m_result;
};
// ======================> menu_software_list
class menu_software_list : public menu
{
public:
menu_software_list(mame_ui_manager &mui, render_container &container, software_list_device *swlist, const char *interface, std::string &result);
virtual ~menu_software_list() override;
virtual void populate() override;
virtual void handle() override;
private:
struct entry_info
{
entry_info() = default;
entry_info(entry_info const &) = default;
entry_info(entry_info &&) = default;
entry_info &operator=(entry_info const &) = default;
entry_info &operator=(entry_info &&) = default;
std::string short_name;
std::string long_name;
};
// variables
software_list_device * m_swlist; // currently selected list
const char * m_interface;
std::string & m_result;
std::list<entry_info> m_entrylist;
std::string m_filename_buffer;
bool m_ordered_by_shortname;
// functions
int compare_entries(const entry_info &e1, const entry_info &e2, bool shortname);
void append_software_entry(const software_info &swinfo);
};
// ======================> menu_software
class menu_software : public menu
{
public:
menu_software(mame_ui_manager &mui, render_container &container, const char *interface, software_list_device **result);
virtual ~menu_software() override;
virtual void populate() override;
virtual void handle() override;
private:
const char * m_interface;
software_list_device ** m_result;
};
} // namespace ui
#endif /* MAME_FRONTEND_UI_SWLIST_H */
|