#include "ardour/plugin_manager.h"
#include "ardour/route.h"
#include "ardour/session.h"
+#include "ardour/system_exec.h"
#include "LuaBridge/LuaBridge.h"
using namespace ARDOUR;
PBD::Signal0<void> LuaInstance::LuaTimerDS;
+PBD::Signal0<void> LuaInstance::SetSession;
void
LuaInstance::register_hooks (lua_State* L)
.beginStdBitSet <LuaSignal::LAST_SIGNAL> ("Set")
.endClass()
.endNamespace ();
+
+#if 0 // Dump size -> libs/ardour/luabindings.cc
+ printf ("LuaInstance: registered %d signals\n", LuaSignal::LAST_SIGNAL);
+#endif
}
void
bind_cairo (L);
bind_dialog (L);
- register_hooks (L);
luabridge::getGlobalNamespace (L)
.beginNamespace ("ArdourUI")
.deriveClass <TimeAxisView, AxisView> ("TimeAxisView")
.endClass ()
+ .deriveClass <StripableTimeAxisView, TimeAxisView> ("StripableTimeAxisView")
+ .endClass ()
+
.beginClass <Selectable> ("Selectable")
.endClass ()
.endClass ()
.deriveClass <RouteTimeAxisView, RouteUI> ("RouteTimeAxisView")
- .addCast<TimeAxisView> ("to_timeaxisview")
+ .addCast<StripableTimeAxisView> ("to_stripabletimeaxisview")
+ .addCast<TimeAxisView> ("to_timeaxisview") // deprecated
.endClass ()
// std::list<Selectable*>
#endif
.addFunction ("hide_track_in_display", &PublicEditor::hide_track_in_display)
.addFunction ("show_track_in_display", &PublicEditor::show_track_in_display)
+ .addFunction ("set_visible_track_count", &PublicEditor::set_visible_track_count)
+ .addFunction ("fit_selection", &PublicEditor::fit_selection)
.addFunction ("regionview_from_region", &PublicEditor::regionview_from_region)
.addFunction ("set_stationary_playhead", &PublicEditor::set_stationary_playhead)
.addFunction ("drags", &PublicEditor::drags)
#endif
- .addFunction ("get_route_view_by_route_id", &PublicEditor::get_route_view_by_route_id)
+ .addFunction ("get_stripable_time_axis_by_id", &PublicEditor::get_stripable_time_axis_by_id)
.addFunction ("get_track_views", &PublicEditor::get_track_views)
.addFunction ("rtav_from_route", &PublicEditor::rtav_from_route)
.addFunction ("axis_views_from_routes", &PublicEditor::axis_views_from_routes)
#endif
.addFunction ("access_action", &PublicEditor::access_action)
+ .addFunction ("set_toggleaction", &PublicEditor::set_toggleaction)
.endClass ()
/* ArdourUI enums */
.addConst ("Add", Selection::Operation(Selection::Add))
.endNamespace ()
- .endNamespace (); // end ArdourUI
+ .endNamespace () // end ArdourUI
+
+ .beginNamespace ("ARDOUR")
+ .beginClass <ARDOUR::SystemExec> ("SystemExec")
+ .addConstructor <void (*) (std::string, std::string)> ()
+ .addFunction ("start", &ARDOUR::SystemExec::start)
+ .endClass ()
+ .endNamespace (); // end ARDOUR
// Editing Symbols
using namespace PBD;
using namespace std;
-static void _lua_print (std::string s) {
+void
+LuaInstance::_lua_print (std::string s)
+{
#ifndef NDEBUG
std::cout << "LuaInstance: " << s << "\n";
#endif
void
LuaInstance::init ()
{
+ lua.sandbox (false);
lua.do_command (
"function ScriptManager ()"
" local self = { scripts = {}, instances = {}, icons = {} }"
" assert(type(f) == 'function', 'Factory is a not a function')"
" assert(type(a) == 'table' or type(a) == 'nil', 'Given argument is invalid')"
" self.scripts[i] = { ['n'] = n, ['s'] = s, ['f'] = f, ['a'] = a, ['c'] = c }"
- " local env = _ENV; env.f = nil env.debug = nil os.exit = nil require = nil dofile = nil loadfile = nil package = nil"
+ " local env = _ENV; env.f = nil env.io = nil"
" self.instances[i] = load (string.dump(f, true), nil, nil, env)(a)"
" if type(c) == 'function' then"
" self.icons[i] = load (string.dump(c, true), nil, nil, env)(a)"
" manager = ScriptManager ()"
" ScriptManager = nil"
);
-
lua_State* L = lua.getState();
try {
}
register_classes (L);
+ register_hooks (L);
luabridge::push <PublicEditor *> (L, &PublicEditor::instance());
lua_setglobal (L, "Editor");
i->second->set_session (s);
}
point_one_second_connection = Timers::rapid_connect (sigc::mem_fun(*this, & LuaInstance::every_point_one_seconds));
+ SetSession (); /* EMIT SIGNAL */
}
void
int
LuaInstance::set_state (const XMLNode& node)
{
- LocaleGuard lg;
XMLNode* child;
if ((child = find_named_node (node, "ActionScript"))) {
XMLNode&
LuaInstance::get_action_state ()
{
- LocaleGuard lg;
std::string saved;
{
luabridge::LuaRef savedstate ((*_lua_save)());
try {
LuaState l;
l.Print.connect (&_lua_print);
+ l.sandbox (true);
lua_State* L = l.getState();
register_hooks (L);
l.do_command ("function ardour () end");
void
LuaCallback::init (void)
{
- lua.Print.connect (&_lua_print);
+ lua.Print.connect (&LuaInstance::_lua_print);
+ lua.sandbox (false);
lua.do_command (
"function ScriptManager ()"
" assert(type(f) == 'function', 'Factory is a not a function')"
" assert(type(a) == 'table' or type(a) == 'nil', 'Given argument is invalid')"
" self.script = { ['n'] = n, ['s'] = s, ['f'] = f, ['a'] = a }"
- " local env = _ENV; env.f = nil env.debug = nil os.exit = nil require = nil dofile = nil loadfile = nil package = nil"
+ " local env = _ENV; env.f = nil env.io = nil"
" self.instance = load (string.dump(f, true), nil, nil, env)(a)"
" end"
""
}
LuaInstance::register_classes (L);
+ LuaInstance::register_hooks (L);
luabridge::push <PublicEditor *> (L, &PublicEditor::instance());
lua_setglobal (L, "Editor");