X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fconfig.cc;h=8ae511361d511ea3ff3c624639f75acc58c1eb5e;hb=de049ab850e4a4e28d70b31a86cb68bc01540773;hp=6a61aae46318b8376fe3b738bee31eacc168418a;hpb=87c1ac59d40f611fed94fa4120f9c21ef2baa2d2;p=dcpomatic.git diff --git a/src/lib/config.cc b/src/lib/config.cc index 6a61aae46..8ae511361 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -25,7 +25,6 @@ #include "config.h" #include "constants.h" #include "cross.h" -#include "crypto.h" #include "dcp_content_type.h" #include "dkdm_recipient.h" #include "dkdm_wrapper.h" @@ -106,7 +105,7 @@ Config::set_defaults () _language = optional (); _default_still_length = 10; _default_dcp_content_type = DCPContentType::from_isdcf_name ("FTR"); - _default_dcp_audio_channels = 6; + _default_dcp_audio_channels = 8; _default_j2k_bandwidth = 150000000; _default_audio_delay = 0; _default_interop = false; @@ -188,6 +187,7 @@ Config::set_defaults () _custom_languages.clear (); _initial_paths.clear(); _initial_paths["AddFilesPath"] = boost::none; + _initial_paths["AddKDMPath"] = boost::none; _initial_paths["AddDKDMPath"] = boost::none; _initial_paths["SelectCertificatePath"] = boost::none; _initial_paths["AddCombinerInputPath"] = boost::none; @@ -199,6 +199,7 @@ Config::set_defaults () _auto_crop_threshold = 0.1; _last_release_notes_version = boost::none; _allow_smpte_bv20 = false; + _isdcf_name_part_length = 14; _allowed_dcp_frame_rates.clear (); _allowed_dcp_frame_rates.push_back (24); @@ -212,6 +213,13 @@ Config::set_defaults () set_notification_email_to_default (); set_cover_sheet_to_default (); + _gpu_binary_location = ""; + _enable_gpu = false; + _selected_gpu = 0; + _gpu_license_server = ""; + _gpu_license_port = 5000; + _gpu_license = ""; + _main_divider_sash_position = {}; _main_content_divider_sash_position = {}; @@ -290,7 +298,7 @@ Config::read_config() try { cxml::Document f ("Config"); - f.read_file (config_read_file()); + f.read_file(dcp::filesystem::fix_long_path(config_read_file())); auto version = f.optional_number_child ("Version"); if (version && *version < _current_version) { @@ -486,7 +494,7 @@ try of the nags. */ for (auto i: f.node_children("Nagged")) { - auto const id = i->number_attribute("Id"); + auto const id = number_attribute(i, "Id", "id"); if (id >= 0 && id < NAG_COUNT) { _nagged[id] = raw_convert(i->content()); } @@ -557,7 +565,7 @@ try _default_notify = f.optional_bool_child("DefaultNotify").get_value_or(false); for (auto i: f.node_children("Notification")) { - int const id = i->number_attribute("Id"); + int const id = number_attribute(i, "Id", "id"); if (id >= 0 && id < NOTIFICATION_COUNT) { _notification[id] = raw_convert(i->content()); } @@ -631,6 +639,14 @@ try } _allow_smpte_bv20 = f.optional_bool_child("AllowSMPTEBv20").get_value_or(false); + _isdcf_name_part_length = f.optional_number_child("ISDCFNamePartLength").get_value_or(14); + + _enable_gpu = f.optional_bool_child("EnableGpu").get_value_or(false); + _gpu_binary_location = f.string_child("GpuBinaryLocation"); + _selected_gpu = f.number_child("SelectedGpu"); + _gpu_license_server = f.string_child ("GpuLicenseServer"); + _gpu_license_port = f.number_child ("GpuLicensePort"); + _gpu_license = f.string_child("GpuLicense"); _export.read(f.optional_node_child("Export")); } @@ -652,10 +668,10 @@ catch (...) { void Config::read_cinemas() { - if (boost::filesystem::exists (_cinemas_file)) { + if (dcp::filesystem::exists(_cinemas_file)) { try { cxml::Document f("Cinemas"); - f.read_file(_cinemas_file); + f.read_file(dcp::filesystem::fix_long_path(_cinemas_file)); read_cinemas(f); } catch (...) { backup(); @@ -669,10 +685,10 @@ Config::read_cinemas() void Config::read_dkdm_recipients() { - if (boost::filesystem::exists (_dkdm_recipients_file)) { + if (dcp::filesystem::exists(_dkdm_recipients_file)) { try { cxml::Document f("DKDMRecipients"); - f.read_file(_dkdm_recipients_file); + f.read_file(dcp::filesystem::fix_long_path(_dkdm_recipients_file)); read_dkdm_recipients(f); } catch (...) { backup(); @@ -954,7 +970,7 @@ Config::write_config () const /* [XML] Nagged 1 if a particular nag screen has been shown and should not be shown again, otherwise 0. */ for (int i = 0; i < NAG_COUNT; ++i) { xmlpp::Element* e = root->add_child ("Nagged"); - e->set_attribute ("Id", raw_convert(i)); + e->set_attribute("id", raw_convert(i)); e->add_child_text (_nagged[i] ? "1" : "0"); } /* [XML] PreviewSound 1 to use sound in the GUI preview and player, otherwise 0. */ @@ -1009,7 +1025,7 @@ Config::write_config () const /* [XML] Notification 1 if a notification type is enabled, otherwise 0. */ for (int i = 0; i < NOTIFICATION_COUNT; ++i) { xmlpp::Element* e = root->add_child ("Notification"); - e->set_attribute ("Id", raw_convert(i)); + e->set_attribute("id", raw_convert(i)); e->add_child_text (_notification[i] ? "1" : "0"); } @@ -1115,6 +1131,15 @@ Config::write_config () const /* [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"); + /* [XML] ISDCFNamePartLength Maximum length of the "name" part of an ISDCF name, which should be 14 according to the standard */ + root->add_child("ISDCFNamePartLength")->add_child_text(raw_convert(_isdcf_name_part_length)); + + root->add_child("GpuBinaryLocation")->add_child_text (_gpu_binary_location); + root->add_child("EnableGpu")->add_child_text ((_enable_gpu ? "1" : "0")); + root->add_child("SelectedGpu")->add_child_text (raw_convert (_selected_gpu)); + root->add_child("GpuLicenseServer")->add_child_text (_gpu_license_server); + root->add_child("GpuLicensePort")->add_child_text (raw_convert (_gpu_license_port)); + root->add_child("GpuLicense")->add_child_text (_gpu_license); _export.write(root->add_child("Export")); @@ -1129,8 +1154,8 @@ Config::write_config () const } f.checked_write(s.c_str(), s.bytes()); f.close(); - boost::filesystem::remove (target); - boost::filesystem::rename (tmp, target); + dcp::filesystem::remove(target); + dcp::filesystem::rename(tmp, target); } catch (xmlpp::exception& e) { string s = e.what (); trim (s); @@ -1153,8 +1178,8 @@ write_file (string root_node, string node, string version, list> t try { doc.write_to_file_formatted (file.string() + ".tmp"); - boost::filesystem::remove (file); - boost::filesystem::rename (file.string() + ".tmp", file); + dcp::filesystem::remove(file); + dcp::filesystem::rename(file.string() + ".tmp", file); } catch (xmlpp::exception& e) { string s = e.what (); trim (s); @@ -1197,7 +1222,7 @@ Config::directory_or (optional dir, boost::filesystem:: } boost::system::error_code ec; - auto const e = boost::filesystem::exists (*dir, ec); + auto const e = dcp::filesystem::exists(*dir, ec); if (ec || !e) { return a; } @@ -1320,7 +1345,7 @@ Config::clean_history_internal (vector& h) h.clear (); for (auto i: old) { try { - if (boost::filesystem::is_directory(i)) { + if (dcp::filesystem::is_directory(i)) { h.push_back (i); } } catch (...) { @@ -1333,7 +1358,7 @@ Config::clean_history_internal (vector& h) bool Config::have_existing (string file) { - return boost::filesystem::exists (read_path(file)); + return dcp::filesystem::exists(read_path(file)); } @@ -1360,10 +1385,10 @@ Config::set_cinemas_file (boost::filesystem::path file) _cinemas_file = file; - if (boost::filesystem::exists (_cinemas_file)) { + if (dcp::filesystem::exists(_cinemas_file)) { /* Existing file; read it in */ cxml::Document f ("Cinemas"); - f.read_file (_cinemas_file); + f.read_file(dcp::filesystem::fix_long_path(_cinemas_file)); read_cinemas (f); } @@ -1392,12 +1417,12 @@ Config::save_template (shared_ptr film, string name) const list Config::templates () const { - if (!boost::filesystem::exists(read_path("templates"))) { + if (!dcp::filesystem::exists(read_path("templates"))) { return {}; } list n; - for (auto const& i: boost::filesystem::directory_iterator(read_path("templates"))) { + for (auto const& i: dcp::filesystem::directory_iterator(read_path("templates"))) { n.push_back (i.path().filename().string()); } return n; @@ -1406,7 +1431,7 @@ Config::templates () const bool Config::existing_template (string name) const { - return boost::filesystem::exists (template_read_path(name)); + return dcp::filesystem::exists(template_read_path(name)); } @@ -1427,13 +1452,13 @@ Config::template_write_path (string name) const void Config::rename_template (string old_name, string new_name) const { - boost::filesystem::rename (template_read_path(old_name), template_write_path(new_name)); + dcp::filesystem::rename(template_read_path(old_name), template_write_path(new_name)); } void Config::delete_template (string name) const { - boost::filesystem::remove (template_write_path(name)); + dcp::filesystem::remove(template_write_path(name)); } /** @return Path to the config.xml containing the actual settings, following a link if required */ @@ -1441,14 +1466,14 @@ boost::filesystem::path config_file (boost::filesystem::path main) { cxml::Document f ("Config"); - if (!boost::filesystem::exists (main)) { + if (!dcp::filesystem::exists(main)) { /* It doesn't exist, so there can't be any links; just return it */ return main; } /* See if there's a link */ try { - f.read_file (main); + f.read_file(dcp::filesystem::fix_long_path(main)); auto link = f.optional_string_child("Link"); if (link) { return *link; @@ -1502,7 +1527,7 @@ void Config::copy_and_link (boost::filesystem::path new_file) const { write (); - boost::filesystem::copy_file (config_read_file(), new_file, boost::filesystem::copy_option::overwrite_if_exists); + dcp::filesystem::copy_file(config_read_file(), new_file, boost::filesystem::copy_option::overwrite_if_exists); link (new_file); } @@ -1607,10 +1632,10 @@ save_all_config_as_zip (boost::filesystem::path zip_file) auto config = Config::instance(); zipper.add ("config.xml", dcp::file_to_string(config->config_read_file())); - if (boost::filesystem::exists(config->cinemas_file())) { + if (dcp::filesystem::exists(config->cinemas_file())) { zipper.add ("cinemas.xml", dcp::file_to_string(config->cinemas_file())); } - if (boost::filesystem::exists(config->dkdm_recipients_file())) { + if (dcp::filesystem::exists(config->dkdm_recipients_file())) { zipper.add ("dkdm_recipients.xml", dcp::file_to_string(config->dkdm_recipients_file())); }