additional DEBUG_TRACE output for slave/diskreader
[ardour.git] / gtk2_ardour / script_selector.cc
index 3fab40a5e74d5a8d2dbc03d740d61da9868c4984..794d57797ad225a7d38e9107c38de72943303324 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
 
+#include <gtkmm/frame.h>
+#include <gtkmm/stock.h>
+#include <gtkmm/table.h>
+
 #include "gtkmm2ext/utils.h"
 
 #include "script_selector.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace std;
 using namespace Gtk;
@@ -42,22 +46,22 @@ ScriptSelector::ScriptSelector (std::string title, LuaScriptInfo::ScriptType typ
 
        l = manage (new Label (_("<b>Type:</b>"), Gtk::ALIGN_END, Gtk::ALIGN_CENTER, false));
        l->set_use_markup ();
-       t->attach (*l, 0, 1, ty, ty+1);
-       t->attach (_type, 1, 2, ty, ty+1);
+       t->attach (*l, 0, 1, ty, ty+1, FILL|EXPAND, SHRINK);
+       t->attach (_type, 1, 2, ty, ty+1, FILL|EXPAND, SHRINK);
        ++ty;
 
        l = manage (new Label (_("<b>Author:</b>"), Gtk::ALIGN_END, Gtk::ALIGN_CENTER, false));
        l->set_use_markup ();
-       t->attach (*l, 0, 1, ty, ty+1);
-       t->attach (_author, 1, 2, ty, ty+1);
+       t->attach (*l, 0, 1, ty, ty+1, FILL|EXPAND, SHRINK);
+       t->attach (_author, 1, 2, ty, ty+1, FILL|EXPAND, SHRINK);
        ++ty;
 
-       l = manage (new Label (_("<b>Description:</b>"), Gtk::ALIGN_END, Gtk::ALIGN_CENTER, false));
-       l->set_use_markup ();
-       t->attach (*l, 0, 1, ty, ty+1);
-       t->attach (_description, 1, 2, ty, ty+1);
+       Frame* f = manage(new Frame (_("Description")));
+       f->add (_description);
+       t->attach (*f, 0, 2, ty, ty+1);
        ++ty;
 
+       _description.set_padding (5, 5);
        _description.set_line_wrap();
 
        get_vbox()->set_spacing (6);
@@ -113,6 +117,7 @@ void
 ScriptSelector::refresh ()
 {
        LuaScripting::instance ().refresh ();
+       _script.reset ();
        _scripts = LuaScripting::instance ().scripts (_script_type);
        setup_list ();
 }
@@ -175,17 +180,21 @@ ScriptParameterDialog::ScriptParameterDialog (std::string title,
        }
 
        for (size_t i = 0; i < _lsp.size (); ++i) {
-               CheckButton* c = manage (new CheckButton (_lsp[i]->title));
                Entry* e = manage (new Entry());
-               c->set_active (!_lsp[i]->optional); // also if default ??
-               c->set_sensitive (_lsp[i]->optional);
-               e->set_text (_lsp[i]->dflt);
-               e->set_sensitive (c->get_active ());
+               if (_lsp[i]->optional) {
+                       CheckButton* c = manage (new CheckButton (_lsp[i]->title));
+                       c->set_active (!_lsp[i]->dflt.empty());
+                       c->signal_toggled().connect (sigc::bind (sigc::mem_fun (*this, &ScriptParameterDialog::active_changed), i, c, e));
+                       t->attach (*c, 0, 1, ty, ty+1);
+               } else {
+                       Label* l = manage (new Label (_lsp[i]->title, Gtk::ALIGN_LEFT));
+                       t->attach (*l, 0, 1, ty, ty+1);
+               }
 
-               c->signal_toggled().connect (sigc::bind (sigc::mem_fun (*this, &ScriptParameterDialog::active_changed), i, c, e));
+               e->set_text (_lsp[i]->dflt);
+               e->set_sensitive (!_lsp[i]->dflt.empty());
                e->signal_changed().connect (sigc::bind (sigc::mem_fun (*this, &ScriptParameterDialog::value_changed), i, e));
 
-               t->attach (*c, 0, 1, ty, ty+1);
                t->attach (*e, 1, 2, ty, ty+1);
                ++ty;
        }
@@ -199,23 +208,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