global ARDOUR signal to ask GUI to copy configuration files across versions
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 11 Mar 2015 17:12:50 +0000 (12:12 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Wed, 11 Mar 2015 18:24:47 +0000 (13:24 -0500)
libs/ardour/ardour/ardour.h
libs/ardour/ardour/filesystem_paths.h
libs/ardour/globals.cc

index 29cfa4b354665cf46f923f90291df11d0f223926..486d5def7ddc3420a12da23c9d77fc8ac13a8674 100644 (file)
@@ -51,6 +51,7 @@ namespace ARDOUR {
        extern LIBARDOUR_API PBD::Signal3<void,std::string,std::string,bool> PluginScanMessage;
        extern LIBARDOUR_API PBD::Signal1<void,int> PluginScanTimeout;
        extern LIBARDOUR_API PBD::Signal0<void> GUIIdle;
+       extern LIBARDOUR_API PBD::Signal2<void,std::string,std::string> CopyConfigurationFiles;
 
        /**
         * @param with_vst true to enable VST Support
index 82b84f5424b4dc2fd67a64e16e9f6a5f09a95a7c..feca4ccb3742992ed431de1643af8a4cb12a8935 100644 (file)
@@ -32,7 +32,7 @@ namespace ARDOUR {
         * If @param version is negative, the build-time string PROGRAM_VERSION
         * will be used to determine the version number.
         *
-        * @post user_config_directory() exists
+        * @post user_config_directory() exists IF version was negative.
         *
         * 
         */
index 5f98a130b1a22d99f6f90cb8e205503ee84dd0d4..6370947652ba5f3ec420d86967a08d161c0aca39 100644 (file)
@@ -131,6 +131,7 @@ PBD::Signal1<void,std::string> ARDOUR::BootMessage;
 PBD::Signal3<void,std::string,std::string,bool> ARDOUR::PluginScanMessage;
 PBD::Signal1<void,int> ARDOUR::PluginScanTimeout;
 PBD::Signal0<void> ARDOUR::GUIIdle;
+PBD::Signal2<void,std::string,std::string> ARDOUR::CopyConfigurationFiles;
 
 namespace ARDOUR {
 extern void setup_enum_writer ();
@@ -238,6 +239,23 @@ lotsa_files_please ()
 #endif
 }
 
+static void
+maybe_copy_old_configuration_files ()
+{
+       int version = atoi (X_(PROGRAM_VERSION));
+
+       if (version <= 1) {
+               return;
+       }
+
+       string old_config_dir = user_config_directory (version-1);
+       string current_config_dir = user_config_directory ();
+       
+       if (Glib::file_test (old_config_dir, Glib::FILE_TEST_IS_DIR)) {
+               CopyConfigurationFiles (old_config_dir, current_config_dir); /* EMIT SIGNAL */
+       }
+}
+
 bool
 ARDOUR::init (bool use_windows_vst, bool try_optimization, const char* localedir)
 {
@@ -284,6 +302,8 @@ ARDOUR::init (bool use_windows_vst, bool try_optimization, const char* localedir
        // allow ardour the absolute maximum number of open files
        lotsa_files_please ();
 
+       maybe_copy_old_configuration_files ();
+       
 #ifdef HAVE_LRDF
        lrdf_init();
 #endif