X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fconfig.cc;h=81daff5b6bed8e2eee19ee743ec56391ab0f7489;hb=refs%2Fheads%2F2252-multi-stream;hp=d9a39077e560048012f8b62ff3c761e29605be5b;hpb=c66c2f0cc3371a26edb6cf2198bcc3fc45b26079;p=dcpomatic.git diff --git a/src/lib/config.cc b/src/lib/config.cc index d9a39077e..81daff5b6 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -69,7 +69,7 @@ using dcp::raw_convert; Config* Config::_instance = 0; int const Config::_current_version = 3; -boost::signals2::signal Config::FailedToLoad; +boost::signals2::signal Config::FailedToLoad; boost::signals2::signal Config::Warning; boost::signals2::signal Config::Bad; @@ -207,6 +207,9 @@ Config::set_defaults () set_notification_email_to_default (); set_cover_sheet_to_default (); + _main_divider_sash_position = {}; + _main_content_divider_sash_position = {}; + _export.set_defaults(); } @@ -604,21 +607,23 @@ try } _auto_crop_threshold = f.optional_number_child("AutoCropThreshold").get_value_or(0.1); _last_release_notes_version = f.optional_string_child("LastReleaseNotesVersion"); + _main_divider_sash_position = f.optional_number_child("MainDividerSashPosition"); + _main_content_divider_sash_position = f.optional_number_child("MainContentDividerSashPosition"); _export.read(f.optional_node_child("Export")); } catch (...) { - if (have_existing("config.xml") || have_existing("cinemas.xml") || have_existing("dkdm_recipients.xml")) { + if (have_existing("config.xml")) { backup (); /* We have a config file but it didn't load */ - FailedToLoad (); + FailedToLoad(LoadFailure::CONFIG); } set_defaults (); /* Make a new set of signing certificates and key */ _signer_chain = create_certificate_chain (); /* And similar for decryption of KDMs */ _decryption_chain = create_certificate_chain (); - write (); + write_config(); } @@ -626,9 +631,15 @@ void Config::read_cinemas() { if (boost::filesystem::exists (_cinemas_file)) { - cxml::Document f ("Cinemas"); - f.read_file (_cinemas_file); - read_cinemas (f); + try { + cxml::Document f("Cinemas"); + f.read_file(_cinemas_file); + read_cinemas(f); + } catch (...) { + backup(); + FailedToLoad(LoadFailure::CINEMAS); + write_cinemas(); + } } } @@ -637,9 +648,15 @@ void Config::read_dkdm_recipients() { if (boost::filesystem::exists (_dkdm_recipients_file)) { - cxml::Document f ("DKDMRecipients"); - f.read_file (_dkdm_recipients_file); - read_dkdm_recipients (f); + try { + cxml::Document f("DKDMRecipients"); + f.read_file(_dkdm_recipients_file); + read_dkdm_recipients(f); + } catch (...) { + backup(); + FailedToLoad(LoadFailure::DKDM_RECIPIENTS); + write_dkdm_recipients(); + } } } @@ -722,7 +739,7 @@ Config::write_config () const root->add_child("DefaultContainer")->add_child_text (_default_container->id ()); } if (_default_dcp_content_type) { - /* [XML:opt] DefaultDCPContentType Default content type ot use when creating new films (FTR, SHR, + /* [XML:opt] DefaultDCPContentType Default content type to use when creating new films (FTR, SHR, TLR, TST, XSN, RTG, TSR, POL, PSA or ADV). */ root->add_child("DefaultDCPContentType")->add_child_text (_default_dcp_content_type->isdcf_name ()); @@ -1059,6 +1076,12 @@ Config::write_config () const if (_last_release_notes_version) { root->add_child("LastReleaseNotesVersion")->add_child_text(*_last_release_notes_version); } + if (_main_divider_sash_position) { + root->add_child("MainDividerSashPosition")->add_child_text(raw_convert(*_main_divider_sash_position)); + } + if (_main_content_divider_sash_position) { + root->add_child("MainContentDividerSashPosition")->add_child_text(raw_convert(*_main_content_divider_sash_position)); + } _export.write(root->add_child("Export")); @@ -1223,7 +1246,7 @@ Config::add_to_history (boost::filesystem::path p) add_to_history_internal (_history, p); } -/** Remove non-existant items from the history */ +/** Remove non-existent items from the history */ void Config::clean_history () {