Merge branch 'add_lua_interpreter_launch_command'

This commit is contained in:
Chris Beck 2014-11-28 18:51:34 -05:00
commit 87d5f3b440
4 changed files with 31 additions and 0 deletions

View file

@ -16,6 +16,7 @@
#include "gui/auxiliary/canvas.hpp" // for tcanvas
#include "gui/auxiliary/window_builder.hpp" // for twindow_builder, etc
#include "gui/dialogs/lua_interpreter.hpp"
#include "gui/widgets/clickable.hpp" // for tclickable_
#include "gui/widgets/control.hpp" // for tcontrol
#include "gui/widgets/multi_page.hpp" // for tmulti_page
@ -438,4 +439,10 @@ int intf_set_dialog_active(lua_State *L)
return 0;
}
int show_lua_console(lua_State * /*L*/, CVideo & video, lua_kernel_base * lk)
{
gui2::tlua_interpreter::display(video, lk);
return 0;
}
} // end namespace lua_gui2

View file

@ -17,6 +17,7 @@
struct lua_State;
class CVideo;
class lua_kernel_base;
namespace lua_gui2 {
@ -27,6 +28,7 @@ int intf_set_dialog_markup(lua_State *L);
int intf_set_dialog_canvas(lua_State *L);
int intf_set_dialog_active(lua_State *L);
int show_dialog(lua_State *L, CVideo & video);
int show_lua_console(lua_State*L, CVideo & video, lua_kernel_base * lk);
} // end namespace lua_gui2

View file

@ -110,6 +110,24 @@ int lua_kernel_base::intf_show_dialog(lua_State *L)
return lua_gui2::show_dialog(L, *video_);
}
// The show lua console callback is similarly a method of lua kernel
int lua_kernel_base::intf_show_lua_console(lua_State *L)
{
if (!video_) {
ERR_LUA << "Cannot show dialog, no video object is available to this lua kernel.";
lua_error(L);
return 0;
}
if (cmd_log_.external_log_ != NULL) {
std::string message = "There is already an external logger attached to this lua kernel, you cannot open the lua console right now.";
log_error(message.c_str());
cmd_log_ << message << "\n";
return 0;
}
return lua_gui2::show_lua_console(L, *video_, this);
}
// End Callback implementations
@ -238,6 +256,7 @@ lua_kernel_base::lua_kernel_base(CVideo * video)
{ "dofile", boost::bind(&lua_kernel_base::intf_dofile, this, _1)},
{ "require", boost::bind(&lua_kernel_base::intf_require, this, _1)},
{ "show_dialog", boost::bind(&lua_kernel_base::intf_show_dialog, this, _1)},
{ "show_lua_console", boost::bind(&lua_kernel_base::intf_show_lua_console, this, _1)},
{ NULL, NULL }
};

View file

@ -89,6 +89,9 @@ protected:
// Show a dialog to the currently connected video object (if available)
int intf_show_dialog(lua_State * L);
// Show the interactive lua console (for debugging purposes)
int intf_show_lua_console(lua_State * L);
// Execute a protected call. Error handler is called in case of an error, using syntax for log_error and throw_exception above. Returns true if successful.
bool protected_call(int nArgs, int nRets, error_handler);
// Load a string onto the stack as a function. Returns true if successful, error handler is called if not.