summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Mueller <github@johannes-mueller.org>2017-07-12 17:34:22 +0200
committerRobin Gareus <robin@gareus.org>2017-07-15 11:37:15 +0200
commit0da2d7bf8af5e7cd0d15f4c1f8cbbd99a23cd186 (patch)
tree112b20b497fc7a650be1233f5fb80eb225135588
parent46501da2201e1d7284e8196fbc55fc36b07b37e0 (diff)
Inflate template archives rather in `.config/ardour5/` than in ...
`.config/ardour5/(templates|route_templates)`. We put as toplevel directory of the archive `templates` or `route_templates`. Then no matter if the user imports a session template or a route template archives, we always put them into the correct folder. As now the user can also import route templates while the SessionTemplateManager is visible and vice versa, we need to signal the successful import to the corresponding template manager. Therfor we introduce the signal TemplatesImported.
-rw-r--r--gtk2_ardour/template_dialog.cc16
-rw-r--r--gtk2_ardour/template_dialog.h5
2 files changed, 13 insertions, 8 deletions
diff --git a/gtk2_ardour/template_dialog.cc b/gtk2_ardour/template_dialog.cc
index 4b3b9ca9a4..daba8bdd7f 100644
--- a/gtk2_ardour/template_dialog.cc
+++ b/gtk2_ardour/template_dialog.cc
@@ -36,6 +36,9 @@
#include "pbd/i18n.h"
#include "pbd/xml++.h"
+#include "gtkmm2ext/gui_thread.h"
+
+#include "ardour/filesystem_paths.h"
#include "ardour/template_utils.h"
#include "template_dialog.h"
@@ -64,6 +67,9 @@ TemplateDialog::TemplateDialog ()
session_tm->init ();
route_tm->init ();
+
+ session_tm->TemplatesImported.connect (*this, invalidator (*this), boost::bind (&RouteTemplateManager::init, route_tm), gui_context ());
+ route_tm->TemplatesImported.connect (*this, invalidator (*this), boost::bind (&SessionTemplateManager::init, session_tm), gui_context ());
}
TemplateManager::TemplateManager ()
@@ -260,7 +266,7 @@ TemplateManager::export_all_templates ()
return;
}
- PBD::copy_recurse (templates_dir (), tmpdir);
+ PBD::copy_recurse (templates_dir (), Glib::build_filename (tmpdir, Glib::path_get_basename (templates_dir ())));
vector<string> files;
PBD::find_files_matching_regex (files, tmpdir, string ("\\.template$"), /* recurse = */ true);
@@ -315,17 +321,12 @@ TemplateManager::import_template_set ()
return;
}
- if (!g_file_test (templates_dir().c_str(), G_FILE_TEST_IS_DIR)) {
- cout << "making " << templates_dir() << endl;
- g_mkdir (templates_dir().c_str(), 0755);
- }
-
_current_action = _("Importing templates");
FileArchive ar (dialog.get_filename ());
PBD::ScopedConnectionList progress_connection;
ar.progress.connect_same_thread (progress_connection, boost::bind (&_set_progress, this, _1, _2));
- ar.inflate (templates_dir());
+ ar.inflate (user_config_directory ());
vector<string> files;
PBD::find_files_matching_regex (files, templates_dir (), string ("\\.template$"), /* recurse = */ true);
@@ -346,6 +347,7 @@ TemplateManager::import_template_set ()
}
init ();
+ TemplatesImported (); /* emit signal */
}
bool
diff --git a/gtk2_ardour/template_dialog.h b/gtk2_ardour/template_dialog.h
index 470d5b92a5..0d1ba29e8c 100644
--- a/gtk2_ardour/template_dialog.h
+++ b/gtk2_ardour/template_dialog.h
@@ -37,7 +37,8 @@ namespace ARDOUR {
class XMLTree;
class XMLNode;
-class TemplateDialog : public ArdourDialog
+class TemplateDialog : public ArdourDialog,
+ public PBD::ScopedConnectionList
{
public:
TemplateDialog ();
@@ -51,6 +52,8 @@ public:
virtual ~TemplateManager () {}
virtual void init () = 0;
+ PBD::Signal0<void> TemplatesImported;
+
protected:
TemplateManager ();