summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2024-02-15 01:05:22 +0100
committerCarl Hetherington <cth@carlh.net>2024-02-17 23:51:20 +0100
commit9d843365fb77e00dd31c03d1e8ea49126ab550f2 (patch)
treeefcba16a094affdc01414ba0adb5358f3d40c5cc /src/lib
parent2fd68d37f503776bbe919d6aa01bf9cf6ec6a6dd (diff)
Add option to load prefs from ZIP (#2771).
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/config.cc33
-rw-r--r--src/lib/config.h2
2 files changed, 35 insertions, 0 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc
index f5ad60714..384db5cde 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -32,6 +32,7 @@
#include "filter.h"
#include "log.h"
#include "ratio.h"
+#include "unzipper.h"
#include "zipper.h"
#include <dcp/certificate_chain.h>
#include <dcp/name_format.h>
@@ -1633,6 +1634,38 @@ save_all_config_as_zip (boost::filesystem::path zip_file)
void
+Config::load_from_zip(boost::filesystem::path zip_file)
+{
+ Unzipper unzipper(zip_file);
+ dcp::write_string_to_file(unzipper.get("config.xml"), config_write_file());
+
+ try {
+ dcp::write_string_to_file(unzipper.get("cinemas.xml"), cinemas_file());
+ dcp::write_string_to_file(unzipper.get("dkdm_recipient.xml"), dkdm_recipients_file());
+ } catch (std::runtime_error&) {}
+
+ read();
+
+ changed(Property::USE_ANY_SERVERS);
+ changed(Property::SERVERS);
+ changed(Property::CINEMAS);
+ changed(Property::DKDM_RECIPIENTS);
+ changed(Property::SOUND);
+ changed(Property::SOUND_OUTPUT);
+ changed(Property::PLAYER_CONTENT_DIRECTORY);
+ changed(Property::PLAYER_PLAYLIST_DIRECTORY);
+ changed(Property::PLAYER_DEBUG_LOG);
+ changed(Property::HISTORY);
+ changed(Property::SHOW_EXPERIMENTAL_AUDIO_PROCESSORS);
+ changed(Property::AUDIO_MAPPING);
+ changed(Property::AUTO_CROP_THRESHOLD);
+ changed(Property::ALLOW_SMPTE_BV20);
+ changed(Property::ISDCF_NAME_PART_LENGTH);
+ changed(Property::OTHER);
+}
+
+
+void
Config::set_initial_path(string id, boost::filesystem::path path)
{
auto iter = _initial_paths.find(id);
diff --git a/src/lib/config.h b/src/lib/config.h
index dce4aafef..f3d080b0b 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -79,6 +79,8 @@ public:
boost::filesystem::path default_directory_or (boost::filesystem::path a) const;
boost::filesystem::path default_kdm_directory_or (boost::filesystem::path a) const;
+ void load_from_zip(boost::filesystem::path zip_file);
+
enum Property {
USE_ANY_SERVERS,
SERVERS,