+ BOOST_FOREACH (dcp::EncryptedKDM i, _dkdms) {
+ root->add_child("DKDM")->add_child_text (i.as_xml ());
+ }
+
+ 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("KDMContainerNameFormat")->add_child_text (_kdm_container_name_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 ());
+ root->add_child("JumpToSelected")->add_child_text (_jump_to_selected ? "1" : "0");
+ for (int i = 0; i < NAG_COUNT; ++i) {
+ xmlpp::Element* e = root->add_child ("Nagged");
+ e->set_attribute ("Id", raw_convert<string>(i));
+ e->add_child_text (_nagged[i] ? "1" : "0");
+ }
+ root->add_child("PreviewSound")->add_child_text (_preview_sound ? "1" : "0");
+ if (_preview_sound_output) {
+ root->add_child("PreviewSoundOutput")->add_child_text (_preview_sound_output.get());
+ }
+ root->add_child("CoverSheet")->add_child_text (_cover_sheet);
+
+ try {
+ doc.write_to_file_formatted (path("config.xml").string ());
+ } catch (xmlpp::exception& e) {
+ string s = e.what ();
+ trim (s);
+ throw FileError (s, path("config.xml"));
+ }
+}
+
+void
+Config::write_cinemas () const
+{
+ xmlpp::Document doc;
+ xmlpp::Element* root = doc.create_root_node ("Cinemas");
+ root->add_child("Version")->add_child_text ("1");
+
+ for (list<shared_ptr<Cinema> >::const_iterator i = _cinemas.begin(); i != _cinemas.end(); ++i) {
+ (*i)->as_xml (root->add_child ("Cinema"));
+ }
+