From 39f65bbce209e1be1591dd0a32c34ad6a11bcf97 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 4 Oct 2018 03:36:40 +0200 Subject: Sort Factory/Lua-script session-templates --- gtk2_ardour/session_dialog.cc | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/gtk2_ardour/session_dialog.cc b/gtk2_ardour/session_dialog.cc index 66b46d6893..d8ecc543a9 100644 --- a/gtk2_ardour/session_dialog.cc +++ b/gtk2_ardour/session_dialog.cc @@ -564,6 +564,15 @@ SessionDialog::open_button_pressed (GdkEventButton* ev) return true; } +struct LuaScriptListSorter +{ + bool operator() (LuaScriptInfoPtr const a, LuaScriptInfoPtr const b) const { + printf ("-- CMD %s <> %s = %d\n", a->name.c_str(), b->name.c_str(), ARDOUR::cmp_nocase_utf8 (a->name, b->name)); + return ARDOUR::cmp_nocase_utf8 (a->name, b->name) < 0; + } +}; + + void SessionDialog::populate_session_templates () { @@ -573,23 +582,21 @@ SessionDialog::populate_session_templates () template_model->clear (); - /* Add Lua Scripts dedicated to session-setup */ - LuaScriptList& ms (LuaScripting::instance ().scripts (LuaScriptInfo::SessionInit)); - for (LuaScriptList::const_iterator s = ms.begin(); s != ms.end(); ++s) { - TreeModel::Row row = *(template_model->append ()); - row[session_template_columns.name] = (*s)->name; - row[session_template_columns.path] = "urn:ardour:" + (*s)->path; - row[session_template_columns.description] = (*s)->description; - row[session_template_columns.modified_with_short] = _("{Factory Template}"); - row[session_template_columns.modified_with_long] = _("{Factory Template}"); - } + /* Get Lua Scripts dedicated to session-setup */ + LuaScriptList scripts (LuaScripting::instance ().scripts (LuaScriptInfo::SessionInit)); /* Add Lua Action Scripts which can also be used for session-setup */ LuaScriptList& as (LuaScripting::instance ().scripts (LuaScriptInfo::EditorAction)); for (LuaScriptList::const_iterator s = as.begin(); s != as.end(); ++s) { - if (!((*s)->subtype & LuaScriptInfo::SessionSetup)) { - continue; + if ((*s)->subtype & LuaScriptInfo::SessionSetup) { + scripts.push_back (*s); } + } + + LuaScriptListSorter cmp; + std::sort (scripts.begin(), scripts.end(), cmp); + + for (LuaScriptList::const_iterator s = scripts.begin(); s != scripts.end(); ++s) { TreeModel::Row row = *(template_model->append ()); row[session_template_columns.name] = (*s)->name; row[session_template_columns.path] = "urn:ardour:" + (*s)->path; @@ -598,7 +605,6 @@ SessionDialog::populate_session_templates () row[session_template_columns.modified_with_long] = _("{Factory Template}"); } - //Add any "template sessions" found in the user's preferences folder for (vector::iterator x = templates.begin(); x != templates.end(); ++x) { TreeModel::Row row; -- cgit v1.2.3