X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fconfig.cc;h=a4dea7fd1abb49926a3b709b3f90f1e0bc45209a;hp=1bb2f3c6a53e45fcd74b81f80b45883bb15f8eef;hb=HEAD;hpb=69a84c50d0e1196c3a83883173e4a301ff550364 diff --git a/src/lib/config.cc b/src/lib/config.cc index 1bb2f3c6a..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 #include @@ -191,6 +192,12 @@ Config::set_defaults () _initial_paths["AddDKDMPath"] = boost::none; _initial_paths["SelectCertificatePath"] = boost::none; _initial_paths["AddCombinerInputPath"] = boost::none; + _initial_paths["ExportSubtitlesPath"] = boost::none; + _initial_paths["ExportVideoPath"] = boost::none; + _initial_paths["DebugLogPath"] = boost::none; + _initial_paths["CinemaDatabasePath"] = boost::none; + _initial_paths["ConfigFilePath"] = boost::none; + _initial_paths["Preferences"] = boost::none; _use_isdcf_name_by_default = true; _write_kdms_to_disk = true; _email_kdms = false; @@ -1214,7 +1221,7 @@ void Config::drop () { delete _instance; - _instance = 0; + _instance = nullptr; } void @@ -1626,6 +1633,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) { @@ -1640,7 +1679,9 @@ optional Config::initial_path(string id) const { auto iter = _initial_paths.find(id); - DCPOMATIC_ASSERT(iter != _initial_paths.end()); + if (iter == _initial_paths.end()) { + return {}; + } return iter->second; }