From c287ebec9b92d7abb48a92daf11bac0152cc6789 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 22 Apr 2009 01:35:31 +0000 Subject: a long tricky day of playing with ArdourStartup and session naming/loading etc. git-svn-id: svn://localhost/ardour2/branches/3.0@4995 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/template_utils.cc | 55 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 8 deletions(-) (limited to 'libs/ardour/template_utils.cc') diff --git a/libs/ardour/template_utils.cc b/libs/ardour/template_utils.cc index ae7f653fb8..6dac270a50 100644 --- a/libs/ardour/template_utils.cc +++ b/libs/ardour/template_utils.cc @@ -2,6 +2,7 @@ #include #include "pbd/filesystem.h" +#include "pbd/basename.h" #include "pbd/pathscanner.h" #include "pbd/xml++.h" @@ -62,19 +63,57 @@ user_route_template_directory () static bool template_filter (const string &str, void *arg) { - return (str.length() > strlen(temp_suffix) && - str.find (temp_suffix) == (str.length() - strlen (temp_suffix))); + cerr << "Checking into " << str << " using " << template_suffix << endl; + return (str.length() > strlen(template_suffix) && + str.find (template_suffix) == (str.length() - strlen (template_suffix))); } void -find_route_templates (vector& template_names) +find_session_templates (vector& template_names) { vector *templates; PathScanner scanner; - SearchPath spath (system_data_search_path()); + SearchPath spath (system_template_directory()); + spath += user_template_directory (); - spath += user_config_directory(); - spath.add_subdirectory_to_paths(route_templates_dir_name); + templates = scanner (spath.to_string(), template_filter, 0, false, true); + + if (!templates) { + cerr << "Found nothing along " << spath.to_string() << endl; + return; + } + + cerr << "Found " << templates->size() << " along " << spath.to_string() << endl; + + for (vector::iterator i = templates->begin(); i != templates->end(); ++i) { + string fullpath = *(*i); + + XMLTree tree; + + if (!tree.read (fullpath.c_str())) { + continue; + } + + XMLNode* root = tree.root(); + + TemplateInfo rti; + + rti.name = basename_nosuffix (fullpath); + rti.path = fullpath; + + template_names.push_back (rti); + } + + free (templates); +} + +void +find_route_templates (vector& template_names) +{ + vector *templates; + PathScanner scanner; + SearchPath spath (system_route_template_directory()); + spath += user_route_template_directory (); templates = scanner (spath.to_string(), template_filter, 0, false, true); @@ -93,7 +132,7 @@ find_route_templates (vector& template_names) XMLNode* root = tree.root(); - RouteTemplateInfo rti; + TemplateInfo rti; rti.name = IO::name_from_state (*root->children().front()); rti.path = fullpath; @@ -104,4 +143,4 @@ find_route_templates (vector& template_names) free (templates); } -} // namespace ARDOUR +} -- cgit v1.2.3