diff options
author | Johannes Mueller <github@johannes-mueller.org> | 2017-07-12 17:34:22 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-07-15 11:37:15 +0200 |
commit | 0da2d7bf8af5e7cd0d15f4c1f8cbbd99a23cd186 (patch) | |
tree | 112b20b497fc7a650be1233f5fb80eb225135588 | |
parent | 46501da2201e1d7284e8196fbc55fc36b07b37e0 (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.cc | 16 | ||||
-rw-r--r-- | gtk2_ardour/template_dialog.h | 5 |
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 (); |