summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 ();