+ /* [XML] History Filename of DCP to present in the <guilabel>File</guilabel> menu of the GUI; there can be more than one
+ of these tags.
+ */
+ BOOST_FOREACH (boost::filesystem::path i, _history) {
+ root->add_child("History")->add_child_text (i.string ());
+ }
+
+ /* [XML] DKDMGroup A group of DKDMs, each with a <code>Name</code> attribute, containing other <code><DKDMGroup></code>
+ or <code><DKDM></code> tags.
+ */
+ /* [XML] DKDM A DKDM as XML */
+ _dkdms->as_xml (root);
+
+ /* [XML] CinemasFile Filename of cinemas list file */
+ root->add_child("CinemasFile")->add_child_text (_cinemas_file.string());
+ /* [XML] ShowHintsBeforeMakeDCP 1 to show hints in the GUI before making a DCP, otherwise 0 */
+ root->add_child("ShowHintsBeforeMakeDCP")->add_child_text (_show_hints_before_make_dcp ? "1" : "0");
+ /* [XML] ConfirmKDMEmail 1 to confirm before sending KDM emails in the GUI, otherwise 0 */
+ root->add_child("ConfirmKDMEmail")->add_child_text (_confirm_kdm_email ? "1" : "0");
+ /* [XML] KDMFilenameFormat Format for KDM filenames */
+ root->add_child("KDMFilenameFormat")->add_child_text (_kdm_filename_format.specification ());
+ /* [XML] KDMContainerNameFormat Format for KDM containers (directories or ZIP files) */
+ root->add_child("KDMContainerNameFormat")->add_child_text (_kdm_container_name_format.specification ());
+ /* [XML] DCPMetadataFilenameFormat Format for DCP metadata filenames */
+ root->add_child("DCPMetadataFilenameFormat")->add_child_text (_dcp_metadata_filename_format.specification ());
+ /* [XML] DCPAssetFilenameFormat Format for DCP asset filenames */
+ root->add_child("DCPAssetFilenameFormat")->add_child_text (_dcp_asset_filename_format.specification ());
+ /* [XML] JumpToSelected 1 to make the GUI jump to the start of content when it is selected, otherwise 0 */
+ root->add_child("JumpToSelected")->add_child_text (_jump_to_selected ? "1" : "0");
+ /* [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<string>(i));
+ e->add_child_text (_nagged[i] ? "1" : "0");
+ }
+ /* [XML] PreviewSound 1 to use sound in the GUI preview, otherwise 0 */
+ root->add_child("PreviewSound")->add_child_text (_preview_sound ? "1" : "0");
+ if (_preview_sound_output) {
+ /* [XML:opt] PreviewSoundOutput Name of the audio output to use */
+ root->add_child("PreviewSoundOutput")->add_child_text (_preview_sound_output.get());
+ }
+ /* [XML] CoverSheet Text of the cover sheet to write when making DCPs */
+ root->add_child("CoverSheet")->add_child_text (_cover_sheet);
+
+ try {
+ doc.write_to_file_formatted(config_file().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");