Skip script-setup if there are no parameters (and name is unique)
authorRobin Gareus <robin@gareus.org>
Wed, 26 Apr 2017 17:45:03 +0000 (19:45 +0200)
committerRobin Gareus <robin@gareus.org>
Wed, 26 Apr 2017 17:45:22 +0000 (19:45 +0200)
gtk2_ardour/luainstance.cc
gtk2_ardour/script_selector.cc
gtk2_ardour/script_selector.h

index e1c04bf4357af16832626c7fbec92a68c7a192da..d8a1ce6382d1bf72c310f42aeb7d88bcd706e703 100644 (file)
@@ -1235,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));
index c13b122cd1faff681154cd9a595c5aa2faa7910e..0861c27099e2186eb173a471fdbf5c3e85e9c70f 100644 (file)
@@ -204,23 +204,38 @@ ScriptParameterDialog::ScriptParameterDialog (std::string title,
        update_sensitivity ();
 }
 
-void
-ScriptParameterDialog::update_sensitivity ()
+bool
+ScriptParameterDialog::need_interation () const
+{
+       if (_lsp.size () > 0) {
+               return false;
+       }
+       if (!parameters_ok ()) {
+               return false;
+       }
+       return true;
+}
+
+bool
+ScriptParameterDialog::parameters_ok () const
 {
        std::string n = _name_entry.get_text ();
        if (n.empty() || std::find (_existing_names.begin(), _existing_names.end(), n) != _existing_names.end()) {
-               _add->set_sensitive (false);
-               return;
+               return false;
        }
 
        for (size_t i = 0; i < _lsp.size(); ++i) {
                if (!_lsp[i]->optional && _lsp[i]->value.empty()) {
-                       _add->set_sensitive (false);
-                       return;
+                       return false;
                }
        }
+       return true;
+}
 
-       _add->set_sensitive (true);
+void
+ScriptParameterDialog::update_sensitivity ()
+{
+       _add->set_sensitive (parameters_ok ());
 }
 
 void
index b249cfe273f2c92d3079fafa8ee9f72fd518d7bb..e7285807f7e8cf0df707ebfa3885ff19f7a07b50 100644 (file)
@@ -60,9 +60,11 @@ class ScriptParameterDialog : public ArdourDialog
 public:
        ScriptParameterDialog (std::string title, const ARDOUR::LuaScriptInfoPtr&, const std::vector<std::string>&, ARDOUR::LuaScriptParamList&);
        std::string name () { return _name_entry.get_text (); }
+       bool need_interation () const;
 
 private:
        void update_sensitivity ();
+       bool parameters_ok () const;
        void active_changed (int, Gtk::CheckButton*, Gtk::Entry*);
        void value_changed (int, Gtk::Entry*);