summaryrefslogtreecommitdiff
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
parent2fd68d37f503776bbe919d6aa01bf9cf6ec6a6dd (diff)
Add option to load prefs from ZIP (#2771).
-rw-r--r--cscript2
-rw-r--r--src/lib/config.cc33
-rw-r--r--src/lib/config.h2
-rw-r--r--src/tools/dcpomatic.cc13
4 files changed, 49 insertions, 1 deletions
diff --git a/cscript b/cscript
index 8c6c126db..222a911b5 100644
--- a/cscript
+++ b/cscript
@@ -507,7 +507,7 @@ def dependencies(target, options):
# Use distro-provided FFmpeg on Arch
deps = []
- deps.append(('libdcp', 'v1.8.96'))
+ deps.append(('libdcp', 'v1.8.97'))
deps.append(('libsub', 'v1.6.47'))
deps.append(('leqm-nrt', '30dcaea1373ac62fba050e02ce5b0c1085797a23'))
deps.append(('rtaudio', 'f619b76'))
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,
diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc
index 976842bea..459ce341c 100644
--- a/src/tools/dcpomatic.cc
+++ b/src/tools/dcpomatic.cc
@@ -36,6 +36,7 @@
#include "wx/full_config_dialog.h"
#include "wx/hints_dialog.h"
#include "wx/html_dialog.h"
+#include "wx/file_dialog.h"
#include "wx/i18n_hook.h"
#include "wx/id.h"
#include "wx/job_manager_view.h"
@@ -244,6 +245,7 @@ enum {
ID_tools_system_information,
ID_tools_restore_default_preferences,
ID_tools_export_preferences,
+ ID_tools_import_preferences,
ID_help_report_a_problem,
/* IDs for shortcuts (with no associated menu item) */
ID_add_file,
@@ -355,6 +357,7 @@ public:
Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_system_information, this),ID_tools_system_information);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_restore_default_preferences, this), ID_tools_restore_default_preferences);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_export_preferences, this), ID_tools_export_preferences);
+ Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_import_preferences, this), ID_tools_import_preferences);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::help_about, this), wxID_ABOUT);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::help_report_a_problem, this), ID_help_report_a_problem);
@@ -776,6 +779,15 @@ private:
}
}
+ void tools_import_preferences()
+ {
+ FileDialog dialog(this, _("Specify ZIP file"), wxT("ZIP files (*.zip)|*.zip"), wxFD_OPEN, "Preferences");
+
+ if (dialog.show()) {
+ Config::instance()->load_from_zip(dialog.path());
+ }
+ }
+
void jobs_make_dcp ()
{
double required;
@@ -1393,6 +1405,7 @@ private:
add_item (tools, _("Restore default preferences"), ID_tools_restore_default_preferences, ALWAYS);
tools->AppendSeparator ();
add_item (tools, _("Export preferences..."), ID_tools_export_preferences, ALWAYS);
+ add_item (tools, _("Import preferences..."), ID_tools_import_preferences, ALWAYS);
wxMenu* help = new wxMenu;
#ifdef __WXOSX__