X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fconfig.cc;h=6a61aae46318b8376fe3b738bee31eacc168418a;hp=81d4ab16038ac1261f9e47630ef5e6c244aec686;hb=87c1ac59d40f611fed94fa4120f9c21ef2baa2d2;hpb=da38c8a0156808595be0aae1b1490069a663fb78 diff --git a/src/lib/config.cc b/src/lib/config.cc index 81d4ab160..6a61aae46 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -33,7 +33,6 @@ #include "filter.h" #include "log.h" #include "ratio.h" -#include "types.h" #include "zipper.h" #include #include @@ -141,9 +140,9 @@ Config::set_defaults () _dkdm_recipients_file = read_path ("dkdm_recipients.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"); - _dkdm_filename_format = dcp::NameFormat ("DKDM %f %c %s"); + _kdm_container_name_format = dcp::NameFormat("KDM_%f_%c"); + _kdm_filename_format = dcp::NameFormat("KDM_%f_%c_%s"); + _dkdm_filename_format = dcp::NameFormat("DKDM_%f_%c_%s"); _dcp_metadata_filename_format = dcp::NameFormat ("%t"); _dcp_asset_filename_format = dcp::NameFormat ("%t"); _jump_to_selected = true; @@ -154,6 +153,7 @@ Config::set_defaults () _sound_output = optional (); _last_kdm_write_type = KDM_WRITE_FLAT; _last_dkdm_write_type = DKDM_WRITE_INTERNAL; + _default_add_file_location = DefaultAddFileLocation::SAME_AS_LAST_TIME; /* I think the scaling factor here should be the ratio of the longest frame encode time to the shortest; if the thread count is T, longest time is L @@ -186,7 +186,11 @@ Config::set_defaults () _player_kdm_directory = boost::none; _audio_mapping = boost::none; _custom_languages.clear (); - _add_files_path = boost::none; + _initial_paths.clear(); + _initial_paths["AddFilesPath"] = boost::none; + _initial_paths["AddDKDMPath"] = boost::none; + _initial_paths["SelectCertificatePath"] = boost::none; + _initial_paths["AddCombinerInputPath"] = boost::none; _use_isdcf_name_by_default = true; _write_kdms_to_disk = true; _email_kdms = false; @@ -194,6 +198,7 @@ Config::set_defaults () _default_kdm_duration = RoughDuration(1, RoughDuration::Unit::WEEKS); _auto_crop_threshold = 0.1; _last_release_notes_version = boost::none; + _allow_smpte_bv20 = false; _allowed_dcp_frame_rates.clear (); _allowed_dcp_frame_rates.push_back (24); @@ -600,7 +605,9 @@ try } catch (std::runtime_error& e) {} } - _add_files_path = f.optional_string_child("AddFilesPath"); + for (auto& initial: _initial_paths) { + initial.second = f.optional_string_child(initial.first); + } _use_isdcf_name_by_default = f.optional_bool_child("UseISDCFNameByDefault").get_value_or(true); _write_kdms_to_disk = f.optional_bool_child("WriteKDMsToDisk").get_value_or(true); _email_kdms = f.optional_bool_child("EmailKDMs").get_value_or(false); @@ -615,6 +622,16 @@ try _main_divider_sash_position = f.optional_number_child("MainDividerSashPosition"); _main_content_divider_sash_position = f.optional_number_child("MainContentDividerSashPosition"); + if (auto loc = f.optional_string_child("DefaultAddFileLocation")) { + if (*loc == "last") { + _default_add_file_location = DefaultAddFileLocation::SAME_AS_LAST_TIME; + } else if (*loc == "project") { + _default_add_file_location = DefaultAddFileLocation::SAME_AS_PROJECT; + } + } + + _allow_smpte_bv20 = f.optional_bool_child("AllowSMPTEBv20").get_value_or(false); + _export.read(f.optional_node_child("Export")); } catch (...) { @@ -1072,9 +1089,10 @@ Config::write_config () const for (auto const& i: _custom_languages) { root->add_child("CustomLanguage")->add_child_text(i.to_string()); } - if (_add_files_path) { - /* [XML] AddFilesPath The default path that will be offered in the picker when adding files to a film. */ - root->add_child("AddFilesPath")->add_child_text(_add_files_path->string()); + for (auto const& initial: _initial_paths) { + if (initial.second) { + root->add_child(initial.first)->add_child_text(initial.second->string()); + } } root->add_child("UseISDCFNameByDefault")->add_child_text(_use_isdcf_name_by_default ? "1" : "0"); root->add_child("WriteKDMsToDisk")->add_child_text(_write_kdms_to_disk ? "1" : "0"); @@ -1091,6 +1109,13 @@ Config::write_config () const root->add_child("MainContentDividerSashPosition")->add_child_text(raw_convert(*_main_content_divider_sash_position)); } + root->add_child("DefaultAddFileLocation")->add_child_text( + _default_add_file_location == DefaultAddFileLocation::SAME_AS_LAST_TIME ? "last" : "project" + ); + + /* [XML] AllowSMPTEBv20 1 to allow the user to choose SMPTE (Bv2.0 only) as a standard, otherwise 0 */ + root->add_child("AllowSMPTEBv20")->add_child_text(_allow_smpte_bv20 ? "1" : "0"); + _export.write(root->add_child("Export")); auto target = config_write_file(); @@ -1267,7 +1292,7 @@ Config::add_to_player_history (boost::filesystem::path p) add_to_history_internal (_player_history, p); } -/** Remove non-existant items from the player history */ +/** Remove non-existent items from the player history */ void Config::clean_player_history () { @@ -1592,3 +1617,22 @@ save_all_config_as_zip (boost::filesystem::path zip_file) zipper.close (); } + +void +Config::set_initial_path(string id, boost::filesystem::path path) +{ + auto iter = _initial_paths.find(id); + DCPOMATIC_ASSERT(iter != _initial_paths.end()); + iter->second = path; + changed(); +} + + +optional +Config::initial_path(string id) const +{ + auto iter = _initial_paths.find(id); + DCPOMATIC_ASSERT(iter != _initial_paths.end()); + return iter->second; +} +