#include "sound_processor.h"
#include "colour_conversion.h"
#include "cinema.h"
+#include "util.h"
#include "i18n.h"
using std::ofstream;
using std::list;
using std::max;
+using std::exception;
+using std::cerr;
using boost::shared_ptr;
using boost::lexical_cast;
using boost::optional;
/** Construct default configuration */
Config::Config ()
: _num_local_encoding_threads (max (2U, boost::thread::hardware_concurrency()))
- , _server_port (6192)
+ , _server_port_base (6192)
, _tms_path (".")
, _sound_processor (SoundProcessor::from_id (N_("dolby_cp750")))
, _default_still_length (10)
_colour_conversions.push_back (PresetColourConversion (_("sRGB"), 2.4, true, libdcp::colour_matrix::srgb_to_xyz, 2.6));
_colour_conversions.push_back (PresetColourConversion (_("sRGB non-linearised"), 2.4, false, libdcp::colour_matrix::srgb_to_xyz, 2.6));
- _colour_conversions.push_back (PresetColourConversion (_("Rec. 709"), 2.4, false, libdcp::colour_matrix::rec709_to_xyz, 2.2));
+ _colour_conversions.push_back (PresetColourConversion (_("Rec. 709"), 2.2, false, libdcp::colour_matrix::rec709_to_xyz, 2.6));
}
void
Config::read ()
{
+ LocaleGuard lg;
+
if (!boost::filesystem::exists (file (false))) {
read_old_metadata ();
return;
_num_local_encoding_threads = f.number_child<int> ("NumLocalEncodingThreads");
_default_directory = f.string_child ("DefaultDirectory");
- _server_port = f.number_child<int> ("ServerPort");
-
- list<shared_ptr<cxml::Node> > servers = f.node_children ("Server");
- for (list<shared_ptr<cxml::Node> >::iterator i = servers.begin(); i != servers.end(); ++i) {
- _servers.push_back (ServerDescription (*i));
- }
+ boost::optional<int> b = f.optional_number_child<int> ("ServerPort");
+ if (!b) {
+ b = f.optional_number_child<int> ("ServerPortBase");
+ }
+ _server_port_base = b.get ();
+
_tms_ip = f.string_child ("TMSIP");
_tms_path = f.string_child ("TMSPath");
_tms_user = f.string_child ("TMSUser");
/* Loading version 0 (before Rec. 709 was added as a preset).
Add it in.
*/
- _colour_conversions.push_back (PresetColourConversion (_("Rec. 709"), 2.4, false, libdcp::colour_matrix::rec709_to_xyz, 2.2));
+ _colour_conversions.push_back (PresetColourConversion (_("Rec. 709"), 2.2, false, libdcp::colour_matrix::rec709_to_xyz, 2.6));
}
list<shared_ptr<cxml::Node> > cin = f.node_children ("Cinema");
} else if (k == N_("default_directory")) {
_default_directory = v;
} else if (k == N_("server_port")) {
- _server_port = atoi (v.c_str ());
- } else if (k == N_("server")) {
- optional<ServerDescription> server = ServerDescription::create_from_metadata (v);
- if (server) {
- _servers.push_back (server.get ());
- }
+ _server_port_base = atoi (v.c_str ());
} else if (k == N_("tms_ip")) {
_tms_ip = v;
} else if (k == N_("tms_path")) {
p /= ".dvdomatic";
} else {
p /= "dcpomatic";
+ boost::filesystem::create_directory (p, ec);
p /= "config.xml";
}
return p;
_instance = new Config;
try {
_instance->read ();
- } catch (...) {
+ } catch (exception& e) {
/* configuration load failed; never mind, just
stick with the default.
*/
+ cerr << "dcpomatic: failed to load configuration (" << e.what() << ")\n";
+ } catch (...) {
+ cerr << "dcpomatic: failed to load configuration\n";
}
}
void
Config::write () const
{
+ LocaleGuard lg;
+
xmlpp::Document doc;
xmlpp::Element* root = doc.create_root_node ("Config");
root->add_child("Version")->add_child_text ("1");
root->add_child("NumLocalEncodingThreads")->add_child_text (lexical_cast<string> (_num_local_encoding_threads));
root->add_child("DefaultDirectory")->add_child_text (_default_directory.string ());
- root->add_child("ServerPort")->add_child_text (lexical_cast<string> (_server_port));
-
- for (vector<ServerDescription>::const_iterator i = _servers.begin(); i != _servers.end(); ++i) {
- i->as_xml (root->add_child ("Server"));
- }
-
+ root->add_child("ServerPortBase")->add_child_text (lexical_cast<string> (_server_port_base));
root->add_child("TMSIP")->add_child_text (_tms_ip);
root->add_child("TMSPath")->add_child_text (_tms_path);
root->add_child("TMSUser")->add_child_text (_tms_user);