From 8bb26628e392429c8a868af3d92cb79ee52a0fc7 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 26 Apr 2017 19:45:03 +0200 Subject: Skip script-setup if there are no parameters (and name is unique) --- gtk2_ardour/luainstance.cc | 13 ++++++++----- gtk2_ardour/script_selector.cc | 29 ++++++++++++++++++++++------- gtk2_ardour/script_selector.h | 2 ++ 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/gtk2_ardour/luainstance.cc b/gtk2_ardour/luainstance.cc index e1c04bf435..d8a1ce6382 100644 --- a/gtk2_ardour/luainstance.cc +++ b/gtk2_ardour/luainstance.cc @@ -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)); diff --git a/gtk2_ardour/script_selector.cc b/gtk2_ardour/script_selector.cc index c13b122cd1..0861c27099 100644 --- a/gtk2_ardour/script_selector.cc +++ b/gtk2_ardour/script_selector.cc @@ -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 diff --git a/gtk2_ardour/script_selector.h b/gtk2_ardour/script_selector.h index b249cfe273..e7285807f7 100644 --- a/gtk2_ardour/script_selector.h +++ b/gtk2_ardour/script_selector.h @@ -60,9 +60,11 @@ class ScriptParameterDialog : public ArdourDialog public: ScriptParameterDialog (std::string title, const ARDOUR::LuaScriptInfoPtr&, const std::vector&, 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*); -- cgit v1.2.3