X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Fconfig.cc;h=f41d40e0931300ae9a8f648067a18154309a568c;hb=e340b96b4a33725e70e3703b0c60ba8da95bca3b;hp=30ed1243b6890e70e010e4263ca1878c252761db;hpb=396c26415da57f42271ddcf56c1169a437d5a981;p=dcpomatic.git diff --git a/src/lib/config.cc b/src/lib/config.cc index 30ed1243b..f41d40e09 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -32,7 +32,6 @@ #include "film.h" #include #include -#include #include #include #include @@ -112,6 +111,7 @@ Config::set_defaults () _cinemas_file = path ("cinemas.xml"); _show_hints_before_make_dcp = true; _confirm_kdm_email = true; + _kdm_container_name_format = dcp::NameFormat ("KDM %f %c"); _kdm_filename_format = dcp::NameFormat ("KDM %f %c %s"); _dcp_metadata_filename_format = dcp::NameFormat ("%t"); _dcp_asset_filename_format = dcp::NameFormat ("%t"); @@ -232,6 +232,7 @@ try _default_j2k_bandwidth = f.optional_number_child("DefaultJ2KBandwidth").get_value_or (200000000); _default_audio_delay = f.optional_number_child("DefaultAudioDelay").get_value_or (0); _default_interop = f.optional_bool_child("DefaultInterop").get_value_or (false); + _default_kdm_directory = f.optional_string_child("DefaultKDMDirectory"); /* Load any cinemas from config.xml */ read_cinemas (f); @@ -302,6 +303,7 @@ try _cinemas_file = f.optional_string_child("CinemasFile").get_value_or (path ("cinemas.xml").string ()); _show_hints_before_make_dcp = f.optional_bool_child("ShowHintsBeforeMakeDCP").get_value_or (true); _confirm_kdm_email = f.optional_bool_child("ConfirmKDMEmail").get_value_or (true); + _kdm_container_name_format = dcp::NameFormat (f.optional_string_child("KDMContainerNameFormat").get_value_or ("KDM %f %c")); _kdm_filename_format = dcp::NameFormat (f.optional_string_child("KDMFilenameFormat").get_value_or ("KDM %f %c %s")); _dcp_metadata_filename_format = dcp::NameFormat (f.optional_string_child("DCPMetadataFilenameFormat").get_value_or ("%t")); _dcp_asset_filename_format = dcp::NameFormat (f.optional_string_child("DCPAssetFilenameFormat").get_value_or ("%t")); @@ -366,12 +368,12 @@ Config::instance () void Config::write () const { - write_config_xml (); - write_cinemas_xml (); + write_config (); + write_cinemas (); } void -Config::write_config_xml () const +Config::write_config () const { xmlpp::Document doc; xmlpp::Element* root = doc.create_root_node ("Config"); @@ -416,6 +418,9 @@ Config::write_config_xml () const root->add_child("DefaultJ2KBandwidth")->add_child_text (raw_convert (_default_j2k_bandwidth)); root->add_child("DefaultAudioDelay")->add_child_text (raw_convert (_default_audio_delay)); root->add_child("DefaultInterop")->add_child_text (_default_interop ? "1" : "0"); + if (_default_kdm_directory) { + root->add_child("DefaultKDMDirectory")->add_child_text (_default_kdm_directory->string ()); + } root->add_child("MailServer")->add_child_text (_mail_server); root->add_child("MailPort")->add_child_text (raw_convert (_mail_port)); root->add_child("MailUser")->add_child_text (_mail_user); @@ -466,6 +471,7 @@ Config::write_config_xml () const root->add_child("ShowHintsBeforeMakeDCP")->add_child_text (_show_hints_before_make_dcp ? "1" : "0"); root->add_child("ConfirmKDMEmail")->add_child_text (_confirm_kdm_email ? "1" : "0"); root->add_child("KDMFilenameFormat")->add_child_text (_kdm_filename_format.specification ()); + root->add_child("KDMContainerNameFormat")->add_child_text (_kdm_container_name_format.specification ()); root->add_child("DCPMetadataFilenameFormat")->add_child_text (_dcp_metadata_filename_format.specification ()); root->add_child("DCPAssetFilenameFormat")->add_child_text (_dcp_asset_filename_format.specification ()); @@ -479,7 +485,7 @@ Config::write_config_xml () const } void -Config::write_cinemas_xml () const +Config::write_cinemas () const { xmlpp::Document doc; xmlpp::Element* root = doc.create_root_node ("Cinemas"); @@ -501,17 +507,29 @@ Config::write_cinemas_xml () const boost::filesystem::path Config::default_directory_or (boost::filesystem::path a) const { - if (!_default_directory) { + return directory_or (_default_directory, a); +} + +boost::filesystem::path +Config::default_kdm_directory_or (boost::filesystem::path a) const +{ + return directory_or (_default_kdm_directory, a); +} + +boost::filesystem::path +Config::directory_or (optional dir, boost::filesystem::path a) const +{ + if (!dir) { return a; } boost::system::error_code ec; - bool const e = boost::filesystem::exists (*_default_directory, ec); + bool const e = boost::filesystem::exists (*dir, ec); if (ec || !e) { return a; } - return *_default_directory; + return *dir; } void