From 8587855b9940f5929fe3df92a8aa9bdc3741a19e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 11 Mar 2015 13:24:40 -0500 Subject: more infrastructure for copying old configuration files --- libs/ardour/globals.cc | 77 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 72 insertions(+), 5 deletions(-) (limited to 'libs/ardour/globals.cc') diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index 6370947652..948d36d675 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -85,6 +85,7 @@ #include "ardour/audioregion.h" #include "ardour/buffer_manager.h" #include "ardour/control_protocol_manager.h" +#include "ardour/directory_names.h" #include "ardour/event_type_map.h" #include "ardour/filesystem_paths.h" #include "ardour/midi_region.h" @@ -131,7 +132,7 @@ PBD::Signal1 ARDOUR::BootMessage; PBD::Signal3 ARDOUR::PluginScanMessage; PBD::Signal1 ARDOUR::PluginScanTimeout; PBD::Signal0 ARDOUR::GUIIdle; -PBD::Signal2 ARDOUR::CopyConfigurationFiles; +PBD::Signal3 ARDOUR::CopyConfigurationFiles; namespace ARDOUR { extern void setup_enum_writer (); @@ -239,6 +240,70 @@ lotsa_files_please () #endif } +int +ARDOUR::copy_configuration_files (string const & old_dir, string const & new_dir, int old_version) +{ + string old_name; + string new_name; + + if (old_version == 3) { + + old_name = Glib::build_filename (old_dir, "recent"); + new_name = Glib::build_filename (new_dir, "recent"); + + copy_file (old_name, new_name); + + /* can only copy ardour.rc - UI config is not compatible */ + + old_name = Glib::build_filename (old_dir, "ardour.rc"); + new_name = Glib::build_filename (new_dir, "config"); + + copy_file (old_name, new_name); + + /* copy templates and route templates */ + + old_name = Glib::build_filename (old_dir, "templates"); + new_name = Glib::build_filename (new_dir, "templates"); + + copy_files (old_name, new_name); + + old_name = Glib::build_filename (old_dir, "route_templates"); + new_name = Glib::build_filename (new_dir, "route_templates"); + + copy_files (old_name, new_name); + + /* presets */ + + old_name = Glib::build_filename (old_dir, "presets"); + new_name = Glib::build_filename (new_dir, "presets"); + + copy_files (old_name, new_name); + + /* presets */ + + old_name = Glib::build_filename (old_dir, "plugin_statuses"); + new_name = Glib::build_filename (new_dir, "plugin_statuses"); + + copy_file (old_name, new_name); + + /* export formats */ + + old_name = Glib::build_filename (old_dir, export_formats_dir_name); + new_name = Glib::build_filename (new_dir, export_formats_dir_name); + + vector export_formats; + g_mkdir_with_parents (Glib::build_filename (new_dir, export_formats_dir_name).c_str(), 0755); + find_files_matching_pattern (export_formats, old_name, "*.format"); + for (vector::iterator i = export_formats.begin(); i != export_formats.end(); ++i) { + std::string from = *i; + std::string to = Glib::build_filename (new_name, Glib::path_get_basename (*i)); + copy_file (from, to); + } + } + + return 0; +} + static void maybe_copy_old_configuration_files () { @@ -248,11 +313,13 @@ maybe_copy_old_configuration_files () return; } - string old_config_dir = user_config_directory (version-1); - string current_config_dir = user_config_directory (); - + version--; + + string old_config_dir = user_config_directory (version); + if (Glib::file_test (old_config_dir, Glib::FILE_TEST_IS_DIR)) { - CopyConfigurationFiles (old_config_dir, current_config_dir); /* EMIT SIGNAL */ + string current_config_dir = user_config_directory (); + CopyConfigurationFiles (old_config_dir, current_config_dir, version); /* EMIT SIGNAL */ } } -- cgit v1.2.3