#include "util.h"
#include "cross.h"
#include "film.h"
+#include "dkdm_wrapper.h"
#include <dcp/raw_convert.h>
#include <dcp/name_format.h>
#include <dcp/certificate_chain.h>
using std::cerr;
using boost::shared_ptr;
using boost::optional;
+using boost::dynamic_pointer_cast;
using boost::algorithm::trim;
using dcp::raw_convert;
/** Construct default configuration */
Config::Config ()
+ /* DKDMs are not considered a thing to reset on set_defaults() */
+ : _dkdms (new DKDMGroup ("root"))
{
set_defaults ();
}
_language = optional<string> ();
_default_still_length = 10;
_default_container = Ratio::from_id ("185");
+ _default_scale_to = 0;
_default_dcp_content_type = DCPContentType::from_isdcf_name ("FTR");
_default_dcp_audio_channels = 6;
_default_j2k_bandwidth = 100000000;
_allowed_dcp_frame_rates.push_back (60);
set_kdm_email_to_default ();
+ set_cover_sheet_to_default ();
}
void
_default_container = Ratio::from_id (c.get ());
}
+ c = f.optional_string_child ("DefaultScaleTo");
+ if (c) {
+ _default_scale_to = Ratio::from_id (c.get ());
+ }
+
c = f.optional_string_child ("DefaultDCPContentType");
if (c) {
_default_dcp_content_type = DCPContentType::from_isdcf_name (c.get ());
_decryption_chain = create_certificate_chain ();
}
- list<cxml::NodePtr> dkdm = f.node_children ("DKDM");
- BOOST_FOREACH (cxml::NodePtr i, f.node_children ("DKDM")) {
- _dkdms.push_back (dcp::EncryptedKDM (i->content ()));
+ if (f.optional_node_child("DKDMGroup")) {
+ /* New-style: all DKDMs in a group */
+ _dkdms = dynamic_pointer_cast<DKDMGroup> (DKDMBase::read (f.node_child("DKDMGroup")));
+ } else {
+ /* Old-style: one or more DKDM nodes */
+ _dkdms.reset (new DKDMGroup ("root"));
+ BOOST_FOREACH (cxml::ConstNodePtr i, f.node_children("DKDM")) {
+ _dkdms->add (DKDMBase::read (i));
+ }
}
-
_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);
}
_preview_sound = f.optional_bool_child("PreviewSound").get_value_or (false);
_preview_sound_output = f.optional_string_child("PreviewSoundOutput");
+ if (f.optional_string_child("CoverSheet")) {
+ _cover_sheet = f.optional_string_child("CoverSheet").get();
+ }
/* Replace any cinemas from config.xml with those from the configured file */
if (boost::filesystem::exists (_cinemas_file)) {
write ();
}
-
/** @return Filename to write configuration to */
boost::filesystem::path
Config::path (string file, bool create_directories)
if (_default_container) {
root->add_child("DefaultContainer")->add_child_text (_default_container->id ());
}
+ if (_default_scale_to) {
+ root->add_child("DefaultScaleTo")->add_child_text (_default_scale_to->id ());
+ }
if (_default_dcp_content_type) {
root->add_child("DefaultDCPContentType")->add_child_text (_default_dcp_content_type->isdcf_name ());
}
root->add_child("History")->add_child_text (i->string ());
}
- BOOST_FOREACH (dcp::EncryptedKDM i, _dkdms) {
- root->add_child("DKDM")->add_child_text (i.as_xml ());
- }
+ _dkdms->as_xml (root);
root->add_child("CinemasFile")->add_child_text (_cinemas_file.string());
root->add_child("ShowHintsBeforeMakeDCP")->add_child_text (_show_hints_before_make_dcp ? "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 ());
changed ();
}
+void
+Config::set_cover_sheet_to_default ()
+{
+ _cover_sheet = _(
+ "$CPL_NAME\n\n"
+ "Type: $TYPE\n"
+ "Format: $CONTAINER\n"
+ "Audio: $AUDIO\n"
+ "Length: $LENGTH\n"
+ );
+}
+
void
Config::add_to_history (boost::filesystem::path p)
{
{
return path("config.xml", false);
}
+
+void
+Config::reset_cover_sheet ()
+{
+ set_cover_sheet_to_default ();
+ changed ();
+}