X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fconfig.cc;h=30ed1243b6890e70e010e4263ca1878c252761db;hb=396c26415da57f42271ddcf56c1169a437d5a981;hp=6f7c8ec556c369a21b5d47b96190a85902789530;hpb=ada96204dfa1456da77e2ea7469f492cfc0a5483;p=dcpomatic.git diff --git a/src/lib/config.cc b/src/lib/config.cc index 6f7c8ec55..30ed1243b 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -29,7 +29,8 @@ #include "cinema.h" #include "util.h" #include "cross.h" -#include "raw_convert.h" +#include "film.h" +#include #include #include #include @@ -58,6 +59,7 @@ using std::cerr; using boost::shared_ptr; using boost::optional; using boost::algorithm::trim; +using dcp::raw_convert; Config* Config::_instance = 0; boost::signals2::signal Config::FailedToLoad; @@ -90,7 +92,7 @@ Config::set_defaults () _default_dcp_audio_channels = 6; _default_j2k_bandwidth = 100000000; _default_audio_delay = 0; - _default_interop = false; + _default_interop = true; _mail_server = ""; _mail_port = 25; _mail_user = ""; @@ -109,9 +111,10 @@ Config::set_defaults () #endif _cinemas_file = path ("cinemas.xml"); _show_hints_before_make_dcp = true; + _confirm_kdm_email = true; _kdm_filename_format = dcp::NameFormat ("KDM %f %c %s"); - _dcp_metadata_filename_format = dcp::NameFormat ("%t_%i"); - _dcp_asset_filename_format = dcp::NameFormat ("%t_%i"); + _dcp_metadata_filename_format = dcp::NameFormat ("%t"); + _dcp_asset_filename_format = dcp::NameFormat ("%t"); _allowed_dcp_frame_rates.clear (); _allowed_dcp_frame_rates.push_back (24); @@ -157,7 +160,11 @@ try optional version = f.optional_number_child ("Version"); _num_local_encoding_threads = f.number_child ("NumLocalEncodingThreads"); - _default_directory = f.string_child ("DefaultDirectory"); + _default_directory = f.optional_string_child ("DefaultDirectory"); + if (_default_directory && _default_directory->empty ()) { + /* We used to store an empty value for this to mean "none set" */ + _default_directory = boost::optional (); + } boost::optional b = f.optional_number_child ("ServerPort"); if (!b) { @@ -294,9 +301,10 @@ 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_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_%i")); - _dcp_asset_filename_format = dcp::NameFormat (f.optional_string_child("DCPAssetFilenameFormat").get_value_or ("%t_%i")); + _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")); /* Replace any cinemas from config.xml with those from the configured file */ if (boost::filesystem::exists (_cinemas_file)) { @@ -370,7 +378,9 @@ Config::write_config_xml () const root->add_child("Version")->add_child_text ("2"); root->add_child("NumLocalEncodingThreads")->add_child_text (raw_convert (_num_local_encoding_threads)); - root->add_child("DefaultDirectory")->add_child_text (_default_directory.string ()); + if (_default_directory) { + root->add_child("DefaultDirectory")->add_child_text (_default_directory->string ()); + } root->add_child("ServerPortBase")->add_child_text (raw_convert (_server_port_base)); root->add_child("UseAnyServers")->add_child_text (_use_any_servers ? "1" : "0"); @@ -379,7 +389,7 @@ Config::write_config_xml () const } root->add_child("OnlyServersEncode")->add_child_text (_only_servers_encode ? "1" : "0"); - root->add_child("TMSProtocol")->add_child_text (raw_convert (_tms_protocol)); + root->add_child("TMSProtocol")->add_child_text (raw_convert (static_cast (_tms_protocol))); root->add_child("TMSIP")->add_child_text (_tms_ip); root->add_child("TMSPath")->add_child_text (_tms_path); root->add_child("TMSUser")->add_child_text (_tms_user); @@ -454,6 +464,7 @@ Config::write_config_xml () const root->add_child("CinemasFile")->add_child_text (_cinemas_file.string()); 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("DCPMetadataFilenameFormat")->add_child_text (_dcp_metadata_filename_format.specification ()); root->add_child("DCPAssetFilenameFormat")->add_child_text (_dcp_asset_filename_format.specification ()); @@ -490,17 +501,17 @@ Config::write_cinemas_xml () const boost::filesystem::path Config::default_directory_or (boost::filesystem::path a) const { - if (_default_directory.empty()) { + if (!_default_directory) { return a; } boost::system::error_code ec; - bool const e = boost::filesystem::exists (_default_directory, ec); + bool const e = boost::filesystem::exists (*_default_directory, ec); if (ec || !e) { return a; } - return _default_directory; + return *_default_directory; } void @@ -587,3 +598,47 @@ Config::set_cinemas_file (boost::filesystem::path file) changed (OTHER); } + +void +Config::save_template (shared_ptr film, string name) const +{ + film->write_template (template_path (name)); +} + +list +Config::templates () const +{ + if (!boost::filesystem::exists (path ("templates"))) { + return list (); + } + + list n; + for (boost::filesystem::directory_iterator i (path("templates")); i != boost::filesystem::directory_iterator(); ++i) { + n.push_back (i->path().filename().string()); + } + return n; +} + +bool +Config::existing_template (string name) const +{ + return boost::filesystem::exists (template_path (name)); +} + +boost::filesystem::path +Config::template_path (string name) const +{ + return path("templates") / tidy_for_filename (name); +} + +void +Config::rename_template (string old_name, string new_name) const +{ + boost::filesystem::rename (template_path (old_name), template_path (new_name)); +} + +void +Config::delete_template (string name) const +{ + boost::filesystem::remove (template_path (name)); +}