Don't de-select tracks when order changes
[ardour.git] / gtk2_ardour / luainstance.cc
index 691473963bb77a5a06b454fc5d0591c2ee0277f3..d8a1ce6382d1bf72c310f42aeb7d88bcd706e703 100644 (file)
@@ -34,6 +34,7 @@
 #include "ardour_ui.h"
 #include "public_editor.h"
 #include "region_selection.h"
+#include "luadialog.h"
 #include "luainstance.h"
 #include "luasignal.h"
 #include "marker.h"
@@ -548,6 +549,51 @@ LuaInstance::bind_cairo (lua_State* L)
 
 }
 
+void
+LuaInstance::bind_dialog (lua_State* L)
+{
+       luabridge::getGlobalNamespace (L)
+               .beginNamespace ("LuaDialog")
+
+               .beginClass <LuaDialog::Message> ("Message")
+               .addConstructor <void (*) (std::string const&, std::string const&, LuaDialog::Message::MessageType, LuaDialog::Message::ButtonType)> ()
+               .addFunction ("run", &LuaDialog::Message::run)
+               .endClass ()
+
+               .beginClass <LuaDialog::Dialog> ("Dialog")
+               .addConstructor <void (*) (std::string const&, luabridge::LuaRef)> ()
+               .addCFunction ("run", &LuaDialog::Dialog::run)
+               .endClass ()
+
+               /* enums */
+               .beginNamespace ("MessageType")
+               .addConst ("Info", LuaDialog::Message::Info)
+               .addConst ("Warning", LuaDialog::Message::Warning)
+               .addConst ("Question", LuaDialog::Message::Question)
+               .addConst ("Error", LuaDialog::Message::Error)
+               .endNamespace ()
+
+               .beginNamespace ("ButtonType")
+               .addConst ("OK", LuaDialog::Message::OK)
+               .addConst ("Close", LuaDialog::Message::Close)
+               .addConst ("Cancel", LuaDialog::Message::Cancel)
+               .addConst ("Yes_No", LuaDialog::Message::Yes_No)
+               .addConst ("OK_Cancel", LuaDialog::Message::OK_Cancel)
+               .endNamespace ()
+
+               .beginNamespace ("Response")
+               .addConst ("OK", 0)
+               .addConst ("Cancel", 1)
+               .addConst ("Close", 2)
+               .addConst ("Yes", 3)
+               .addConst ("No", 4)
+               .addConst ("None", -1)
+               .endNamespace ()
+
+               .endNamespace ();
+
+}
+
 void
 LuaInstance::register_classes (lua_State* L)
 {
@@ -557,6 +603,7 @@ LuaInstance::register_classes (lua_State* L)
        LuaBindings::osc (L);
 
        bind_cairo (L);
+       bind_dialog (L);
        register_hooks (L);
 
        luabridge::getGlobalNamespace (L)
@@ -1188,11 +1235,14 @@ LuaInstance::interactive_add (LuaScriptInfo::ScriptType type, int id)
        LuaScriptParamList lsp = LuaScriptParams::script_params (spi, param_function);
 
        ScriptParameterDialog spd (_("Set Script Parameters"), spi, reg, lsp);
-       switch (spd.run ()) {
-               case Gtk::RESPONSE_ACCEPT:
-                       break;
-               default:
-                       return false;
+
+       if (!spd.need_interation ()) {
+               switch (spd.run ()) {
+                       case Gtk::RESPONSE_ACCEPT:
+                               break;
+                       default:
+                               return false;
+               }
        }
 
        LuaScriptParamPtr lspp (new LuaScriptParam("x-script-origin", "", spi->path, false));