X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fconfig.cc;h=caea995be50c96cb1879aeb647235ee219672078;hb=fe933ebb2c55b4235fcba5d02af2ba91c272fc88;hp=3334e6fbf164b72123eb46f0ebde307be40b9305;hpb=0afe79d5c913f4c85a8de4ae448a8e54b8249dff;p=dcpomatic.git diff --git a/src/lib/config.cc b/src/lib/config.cc index 3334e6fbf..caea995be 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -78,6 +78,8 @@ boost::signals2::signal Config::Bad; Config::Config () /* DKDMs are not considered a thing to reset on set_defaults() */ : _dkdms (new DKDMGroup ("root")) + , _default_kdm_duration (1, RoughDuration::Unit::WEEKS) + , _export(this) { set_defaults (); } @@ -188,6 +190,7 @@ Config::set_defaults () _write_kdms_to_disk = true; _email_kdms = false; _default_kdm_type = dcp::Formulation::MODIFIED_TRANSITIONAL_1; + _default_kdm_duration = RoughDuration(1, RoughDuration::Unit::WEEKS); _auto_crop_threshold = 0.1; _allowed_dcp_frame_rates.clear (); @@ -201,6 +204,8 @@ Config::set_defaults () set_kdm_email_to_default (); set_notification_email_to_default (); set_cover_sheet_to_default (); + + _export.set_defaults(); } void @@ -580,8 +585,15 @@ try _write_kdms_to_disk = f.optional_bool_child("WriteKDMsToDisk").get_value_or(true); _email_kdms = f.optional_bool_child("EmailKDMs").get_value_or(false); _default_kdm_type = dcp::string_to_formulation(f.optional_string_child("DefaultKDMType").get_value_or("modified-transitional-1")); + if (auto duration = f.optional_node_child("DefaultKDMDuration")) { + _default_kdm_duration = RoughDuration(duration); + } else { + _default_kdm_duration = RoughDuration(1, RoughDuration::Unit::WEEKS); + } _auto_crop_threshold = f.optional_number_child("AutoCropThreshold").get_value_or(0.1); + _export.read(f.optional_node_child("Export")); + if (boost::filesystem::exists (_cinemas_file)) { cxml::Document f ("Cinemas"); f.read_file (_cinemas_file); @@ -725,6 +737,7 @@ Config::write_config () const /* [XML:opt] DefaultKDMDirectory Default directory to write KDMs to. */ root->add_child("DefaultKDMDirectory")->add_child_text (_default_kdm_directory->string ()); } + _default_kdm_duration.as_xml(root->add_child("DefaultKDMDuration")); /* [XML] MailServer Hostname of SMTP server to use. */ root->add_child("MailServer")->add_child_text (_mail_server); /* [XML] MailPort Port number to use on SMTP server. */ @@ -1018,17 +1031,19 @@ Config::write_config () const root->add_child("DefaultKDMType")->add_child_text(dcp::formulation_to_string(_default_kdm_type)); root->add_child("AutoCropThreshold")->add_child_text(raw_convert(_auto_crop_threshold)); + _export.write(root->add_child("Export")); + auto target = config_write_file(); try { auto const s = doc.write_to_string_formatted (); boost::filesystem::path tmp (string(target.string()).append(".tmp")); - auto f = fopen_boost (tmp, "w"); + dcp::File f(tmp, "w"); if (!f) { throw FileError (_("Could not open file for writing"), tmp); } - checked_fwrite (s.c_str(), s.bytes(), f, tmp); - fclose (f); + f.checked_write(s.c_str(), s.bytes()); + f.close(); boost::filesystem::remove (target); boost::filesystem::rename (tmp, target); } catch (xmlpp::exception& e) { @@ -1408,13 +1423,8 @@ Config::copy_and_link (boost::filesystem::path new_file) const bool Config::have_write_permission () const { - auto f = fopen_boost (config_write_file(), "r+"); - if (!f) { - return false; - } - - fclose (f); - return true; + dcp::File f(config_write_file(), "r+"); + return static_cast(f); } /** @param output_channels Number of output channels in use.