From efc858dc8149f3b3456781451ef42dc69eee2d5e Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Thu, 7 Dec 2017 09:17:53 -0600 Subject: Drop the "Lua" in Lua Action Buttons: Removed the term "Lua", because users were turned off by something they didn't understand. A special-case Lua script ("Shortcut") allows the user to select an arbitrary Action. The "Shortcut" script is selected by default, and in this case there is no "Type" or "Author" displayed. Action-Buttons may still trigger Lua scripts, as a secondary function. --- gtk2_ardour/luainstance.cc | 2 +- gtk2_ardour/rc_option_editor.cc | 2 +- gtk2_ardour/script_selector.cc | 80 ++++++++++++++++++++++++++++++----------- gtk2_ardour/script_selector.h | 5 ++- 4 files changed, 66 insertions(+), 23 deletions(-) (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/luainstance.cc b/gtk2_ardour/luainstance.cc index a0f247179e..8f9572b98e 100644 --- a/gtk2_ardour/luainstance.cc +++ b/gtk2_ardour/luainstance.cc @@ -1358,7 +1358,7 @@ LuaInstance::interactive_add (LuaScriptInfo::ScriptType type, int id) switch (type) { case LuaScriptInfo::EditorAction: reg = lua_action_names (); - title = _("Add Lua Action"); + title = _("Add Shortcut or Lua Script"); break; case LuaScriptInfo::EditorHook: reg = lua_slot_names (); diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 0f33de33ce..f5dfcab0a1 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -3814,7 +3814,7 @@ RCOptionEditor::RCOptionEditor () add_option (_("Appearance/Toolbar"), new ColumVisibilityOption ( - "action-table-columns", _("Lua Action Script Button Visibility"), 4, + "action-table-columns", _("Display Action-Buttons"), 4, sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_action_table_columns), sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_action_table_columns) ) diff --git a/gtk2_ardour/script_selector.cc b/gtk2_ardour/script_selector.cc index 94d6e67671..ea28c414b6 100644 --- a/gtk2_ardour/script_selector.cc +++ b/gtk2_ardour/script_selector.cc @@ -31,28 +31,26 @@ using namespace ARDOUR; ScriptSelector::ScriptSelector (std::string title, LuaScriptInfo::ScriptType type) : ArdourDialog (title) + , _type_label ("Type:", Gtk::ALIGN_END, Gtk::ALIGN_CENTER) , _type ("", Gtk::ALIGN_START, Gtk::ALIGN_CENTER) + , _author_label ("Author:", Gtk::ALIGN_END, Gtk::ALIGN_CENTER) , _author ("", Gtk::ALIGN_START, Gtk::ALIGN_CENTER) , _description ("", Gtk::ALIGN_START, Gtk::ALIGN_START) , _scripts (LuaScripting::instance ().scripts (type)) , _script_type (type) { - Gtk::Label* l; - Table* t = manage (new Table (3, 2)); t->set_spacings (6); int ty = 0; - l = manage (new Label (_("Type:"), Gtk::ALIGN_END, Gtk::ALIGN_CENTER, false)); - l->set_use_markup (); - t->attach (*l, 0, 1, ty, ty+1, FILL|EXPAND, SHRINK); + _type_label.set_use_markup (); + t->attach (_type_label, 0, 1, ty, ty+1, FILL|EXPAND, SHRINK); t->attach (_type, 1, 2, ty, ty+1, FILL|EXPAND, SHRINK); ++ty; - l = manage (new Label (_("Author:"), Gtk::ALIGN_END, Gtk::ALIGN_CENTER, false)); - l->set_use_markup (); - t->attach (*l, 0, 1, ty, ty+1, FILL|EXPAND, SHRINK); + _author_label.set_use_markup (); + t->attach (_author_label, 0, 1, ty, ty+1, FILL|EXPAND, SHRINK); t->attach (_author, 1, 2, ty, ty+1, FILL|EXPAND, SHRINK); ++ty; @@ -81,36 +79,78 @@ ScriptSelector::ScriptSelector (std::string title, LuaScriptInfo::ScriptType typ setup_list (); show_all (); + + script_combo_changed(); +} + +bool +ScriptSelector::script_separator (const Glib::RefPtr &, const Gtk::TreeModel::iterator &i) +{ + _script_combo.set_active (i); + + return _script_combo.get_active_text () == "separator"; } void ScriptSelector::setup_list () { _combocon.block(); + vector script_names; for (LuaScriptList::const_iterator s = _scripts.begin(); s != _scripts.end(); ++s) { - script_names.push_back ((*s)->name); + if ( (*s)->name != "Shortcut" ) { + script_names.push_back ((*s)->name); + } } - - Gtkmm2ext::set_popdown_strings (_script_combo, script_names); - if (script_names.size() > 0) { - _script_combo.set_active(0); - script_combo_changed (); + + _script_combo.clear(); + _script_combo.set_row_separator_func ( sigc::mem_fun (*this, &ScriptSelector::script_separator) ); + + _script_combo.append_text ("Shortcut"); + _script_combo.append_text ("separator"); + + vector::const_iterator i; + for (i = script_names.begin(); i != script_names.end(); ++i) { + _script_combo.append_text (*i); } + + _script_combo.set_active(0); + script_combo_changed (); + _combocon.unblock(); } void ScriptSelector::script_combo_changed () { - int i = _script_combo.get_active_row_number(); - _script = _scripts[i]; + std::string nm = _script_combo.get_active_text(); + + for (LuaScriptList::const_iterator s = _scripts.begin(); s != _scripts.end(); ++s) { + if ( (*s)->name == nm ) { + _script = (*s); + } + } - _type.set_text(LuaScriptInfo::type2str (_script->type)); - _author.set_text (_script->author); - _description.set_text (_script->description); + if (_script) { + + if (_script->name == "Shortcut" ) { + _type.hide(); + _type_label.hide(); + _author.hide(); + _author_label.hide(); + _description.set_text (_script->description); + } else { + _type.show(); + _type_label.show(); + _author.show(); + _author_label.show(); + _type.set_text(LuaScriptInfo::type2str (_script->type)); + _author.set_text (_script->author); + _description.set_text (_script->description); + } - _add->set_sensitive (Glib::file_test(_script->path, Glib::FILE_TEST_EXISTS)); + _add->set_sensitive (Glib::file_test(_script->path, Glib::FILE_TEST_EXISTS)); + } } void diff --git a/gtk2_ardour/script_selector.h b/gtk2_ardour/script_selector.h index 54c26ee227..f8f17f5c02 100644 --- a/gtk2_ardour/script_selector.h +++ b/gtk2_ardour/script_selector.h @@ -34,11 +34,14 @@ private: void setup_list (); void refresh (); void script_combo_changed (); - + bool script_separator (const Glib::RefPtr &, const Gtk::TreeModel::iterator &i); + Gtk::Button* _add; Gtk::ComboBoxText _script_combo; + Gtk::Label _type_label; Gtk::Label _type; + Gtk::Label _author_label; Gtk::Label _author; Gtk::Label _description; -- cgit v1.2.3