summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2016-11-08 08:25:55 +0100
committer Miodrag Milanovic <mmicko@gmail.com>2016-11-08 08:25:55 +0100
commita4daf9bf3d19bb1c74132544798673b004dd98a5 (patch)
treef5502ebe3c50bead5cc58544f94a94a5bb6a406a
parentef51470515bc1142b775252fe8de25b778815abb (diff)
ability to show custom menu using LUA [headkaze]
-rw-r--r--src/frontend/mame/luaengine.cpp8
-rw-r--r--src/frontend/mame/ui/pluginopt.cpp15
-rw-r--r--src/frontend/mame/ui/pluginopt.h3
3 files changed, 26 insertions, 0 deletions
diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp
index dd0574620b1..d6ef79ead22 100644
--- a/src/frontend/mame/luaengine.cpp
+++ b/src/frontend/mame/luaengine.cpp
@@ -15,6 +15,7 @@
#include "drivenum.h"
#include "emuopts.h"
#include "ui/ui.h"
+#include "ui/pluginopt.h"
#include "luaengine.h"
#include "natkeyboard.h"
#include "uiinput.h"
@@ -749,6 +750,11 @@ void lua_engine::initialize()
sol().registry()[popfield] = pop;
m_menu.push_back(name);
};
+ emu["show_menu"] = [this](const char *name) {
+ mame_ui_manager &mui = mame_machine_manager::instance()->ui();
+ render_container &container = machine().render().ui_container();
+ ui::menu_plugin::show_menu(mui, container, (char *)name);
+ };
emu["register_callback"] = [this](sol::function cb, const std::string &name) {
std::string field = "cb_" + name;
sol().registry()[field] = cb;
@@ -1340,6 +1346,7 @@ void lua_engine::initialize()
* target:hidden() - is target hidden
* target:is_ui_target() - is ui render target
* target:index() - target index
+ * target:view_name(index) - current target layout view name
* target.max_update_rate -
* target.view - current target layout view
* target.orientation - current target orientation
@@ -1361,6 +1368,7 @@ void lua_engine::initialize()
"hidden", &render_target::hidden,
"is_ui_target", &render_target::is_ui_target,
"index", &render_target::index,
+ "view_name", &render_target::view_name,
"max_update_rate", sol::property(&render_target::max_update_rate, &render_target::set_max_update_rate),
"view", sol::property(&render_target::view, &render_target::set_view),
"orientation", sol::property(&render_target::orientation, &render_target::set_orientation),
diff --git a/src/frontend/mame/ui/pluginopt.cpp b/src/frontend/mame/ui/pluginopt.cpp
index d71b5c043d4..11884b6be40 100644
--- a/src/frontend/mame/ui/pluginopt.cpp
+++ b/src/frontend/mame/ui/pluginopt.cpp
@@ -41,6 +41,21 @@ void menu_plugin::populate()
item_append(menu_item_type::SEPARATOR);
}
+void menu_plugin::show_menu(mame_ui_manager &mui, render_container &container, char *menu)
+{
+ // reset the menu stack
+ menu::stack_reset(mui.machine());
+
+ // add the plugin menu entry
+ menu::stack_push<menu_plugin_opt>(mui, container, menu);
+
+ // force the menus on
+ mui.show_menu();
+
+ // make sure MAME is paused
+ mui.machine().pause();
+}
+
menu_plugin::~menu_plugin()
{
}
diff --git a/src/frontend/mame/ui/pluginopt.h b/src/frontend/mame/ui/pluginopt.h
index 21348f23750..2aac32a6ea6 100644
--- a/src/frontend/mame/ui/pluginopt.h
+++ b/src/frontend/mame/ui/pluginopt.h
@@ -25,6 +25,9 @@ class menu_plugin : public menu
{
public:
menu_plugin(mame_ui_manager &mui, render_container &container);
+
+ static void show_menu(mame_ui_manager &mui, render_container &container, char *menu);
+
virtual ~menu_plugin();
private: