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));
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
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*);