summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-04-26 19:45:03 +0200
committerRobin Gareus <robin@gareus.org>2017-04-26 19:45:22 +0200
commit8bb26628e392429c8a868af3d92cb79ee52a0fc7 (patch)
tree7ee94fa43887a69c4adb6e02dae72f8e9a656bf8
parent4b4d64dd7fd1cf01495f0828cc6250f722a45f70 (diff)
Skip script-setup if there are no parameters (and name is unique)
-rw-r--r--gtk2_ardour/luainstance.cc13
-rw-r--r--gtk2_ardour/script_selector.cc29
-rw-r--r--gtk2_ardour/script_selector.h2
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<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*);