summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-04-15 16:35:32 +0100
committerCarl Hetherington <cth@carlh.net>2015-04-15 16:35:32 +0100
commitfcfaa5e1de1e166508793d71ed53edcb145656da (patch)
treeaaab01d73473d5021228b3d6b029f5b1c3c521af /src/lib
parent32bd6c0c623b8e19470955705c2da795a95ab476 (diff)
00cc8646894f6519d1e2726f3e7a4fbc1e11d8f3 from master; make the config dialog update itself when the configuration changes, and add a menu option to restore the default configuration.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/colour_conversion.cc6
-rw-r--r--src/lib/colour_conversion.h1
-rw-r--r--src/lib/config.cc59
-rw-r--r--src/lib/config.h119
-rw-r--r--src/lib/isdcf_metadata.cc19
-rw-r--r--src/lib/isdcf_metadata.h2
6 files changed, 120 insertions, 86 deletions
diff --git a/src/lib/colour_conversion.cc b/src/lib/colour_conversion.cc
index 6c5a6679f..eea6f77cf 100644
--- a/src/lib/colour_conversion.cc
+++ b/src/lib/colour_conversion.cc
@@ -216,3 +216,9 @@ operator!= (ColourConversion const & a, ColourConversion const & b)
{
return !(a == b);
}
+
+bool
+operator== (PresetColourConversion const & a, PresetColourConversion const & b)
+{
+ return a.name == b.name && a.conversion == b.conversion;
+}
diff --git a/src/lib/colour_conversion.h b/src/lib/colour_conversion.h
index 47e6d2b6f..9f07e0956 100644
--- a/src/lib/colour_conversion.h
+++ b/src/lib/colour_conversion.h
@@ -63,5 +63,6 @@ public:
bool operator== (ColourConversion const &, ColourConversion const &);
bool operator!= (ColourConversion const &, ColourConversion const &);
+bool operator== (PresetColourConversion const &, PresetColourConversion const &);
#endif
diff --git a/src/lib/config.cc b/src/lib/config.cc
index bf70f95ac..cc0edd4a5 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -58,25 +58,32 @@ Config* Config::_instance = 0;
/** Construct default configuration */
Config::Config ()
- : _num_local_encoding_threads (max (2U, boost::thread::hardware_concurrency()))
- , _server_port_base (6192)
- , _use_any_servers (true)
- , _tms_path (".")
- , _cinema_sound_processor (CinemaSoundProcessor::from_id (N_("dolby_cp750")))
- , _allow_any_dcp_frame_rate (false)
- , _default_still_length (10)
- , _default_container (Ratio::from_id ("185"))
- , _default_dcp_content_type (DCPContentType::from_isdcf_name ("FTR"))
- , _default_j2k_bandwidth (100000000)
- , _default_audio_delay (0)
- , _check_for_updates (false)
- , _check_for_test_updates (false)
- , _maximum_j2k_bandwidth (250000000)
- , _log_types (Log::TYPE_GENERAL | Log::TYPE_WARNING | Log::TYPE_ERROR | Log::TYPE_DEBUG)
+{
+ set_defaults ();
+}
+
+void
+Config::set_defaults ()
+{
+ _num_local_encoding_threads = max (2U, boost::thread::hardware_concurrency ());
+ _server_port_base = 6192;
+ _use_any_servers = true;
+ _tms_path = ".";
+ _cinema_sound_processor = CinemaSoundProcessor::from_id (N_("dolby_cp750"));
+ _allow_any_dcp_frame_rate = false;
+ _default_still_length = 10;
+ _default_container = Ratio::from_id ("185");
+ _default_dcp_content_type = DCPContentType::from_isdcf_name ("FTR");
+ _default_j2k_bandwidth = 100000000;
+ _default_audio_delay = 0;
+ _check_for_updates = false;
+ _check_for_test_updates = false;
+ _maximum_j2k_bandwidth = 250000000;
+ _log_types = Log::TYPE_GENERAL | Log::TYPE_WARNING | Log::TYPE_ERROR | Log::TYPE_DEBUG;
#ifdef DCPOMATIC_WINDOWS
- , _win32_console (false)
+ _win32_console = false;
#endif
-{
+
_allowed_dcp_frame_rates.push_back (24);
_allowed_dcp_frame_rates.push_back (25);
_allowed_dcp_frame_rates.push_back (30);
@@ -87,7 +94,14 @@ Config::Config ()
_colour_conversions.push_back (PresetColourConversion (_("sRGB"), dcp::ColourConversion::srgb_to_xyz ()));
_colour_conversions.push_back (PresetColourConversion (_("Rec. 709"), dcp::ColourConversion::rec709_to_xyz ()));
- reset_kdm_email ();
+ set_kdm_email_to_default ();
+}
+
+void
+Config::restore_defaults ()
+{
+ Config::instance()->set_defaults ();
+ Config::instance()->changed ();
}
void
@@ -419,7 +433,7 @@ Config::changed ()
}
void
-Config::reset_kdm_email ()
+Config::set_kdm_email_to_default ()
{
_kdm_email = _(
"Dear Projectionist\n\n"
@@ -432,6 +446,13 @@ Config::reset_kdm_email ()
}
void
+Config::reset_kdm_email ()
+{
+ set_kdm_email_to_default ();
+ changed ();
+}
+
+void
Config::add_to_history (boost::filesystem::path p)
{
/* Remove existing instances of this path in the history */
diff --git a/src/lib/config.h b/src/lib/config.h
index 45a9e282b..4f47ab314 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -49,7 +49,6 @@ class Cinema;
class Config : public boost::noncopyable
{
public:
-
/** @return number of threads to use for J2K encoding on the local machine */
int num_local_encoding_threads () const {
return _num_local_encoding_threads;
@@ -231,43 +230,36 @@ public:
/** @param n New number of local encoding threads */
void set_num_local_encoding_threads (int n) {
- _num_local_encoding_threads = n;
- changed ();
+ maybe_set (_num_local_encoding_threads, n);
}
void set_default_directory (boost::filesystem::path d) {
- _default_directory = d;
- changed ();
+ maybe_set (_default_directory, d);
}
/** @param p New server port */
void set_server_port_base (int p) {
- _server_port_base = p;
- changed ();
+ maybe_set (_server_port_base, p);
}
/** @param i IP address of a TMS that we can copy DCPs to */
void set_tms_ip (std::string i) {
- _tms_ip = i;
- changed ();
+ maybe_set (_tms_ip, i);
}
/** @param p Path on a TMS that we should changed DCPs to */
void set_tms_path (std::string p) {
- _tms_path = p;
- changed ();
+ maybe_set (_tms_path, p);
}
/** @param u User name to log into the TMS with */
void set_tms_user (std::string u) {
- _tms_user = u;
- changed ();
+ maybe_set (_tms_user, u);
}
/** @param p Password to log into the TMS with */
void set_tms_password (std::string p) {
- _tms_password = p;
- changed ();
+ maybe_set (_tms_password, p);
}
void add_cinema (boost::shared_ptr<Cinema> c) {
@@ -281,146 +273,127 @@ public:
}
void set_allowed_dcp_frame_rates (std::list<int> const & r) {
- _allowed_dcp_frame_rates = r;
- changed ();
+ maybe_set (_allowed_dcp_frame_rates, r);
}
void set_allow_any_dcp_frame_rate (bool a) {
- _allow_any_dcp_frame_rate = a;
- changed ();
+ maybe_set (_allow_any_dcp_frame_rate, a);
}
void set_default_isdcf_metadata (ISDCFMetadata d) {
- _default_isdcf_metadata = d;
- changed ();
+ maybe_set (_default_isdcf_metadata, d);
}
void set_language (std::string l) {
+ if (_language && _language.get() == l) {
+ return;
+ }
_language = l;
changed ();
}
void unset_language () {
+ if (!_language) {
+ return;
+ }
+
_language = boost::none;
changed ();
}
void set_default_still_length (int s) {
- _default_still_length = s;
- changed ();
+ maybe_set (_default_still_length, s);
}
void set_default_container (Ratio const * c) {
- _default_container = c;
- changed ();
+ maybe_set (_default_container, c);
}
void set_default_dcp_content_type (DCPContentType const * t) {
- _default_dcp_content_type = t;
- changed ();
+ maybe_set (_default_dcp_content_type, t);
}
void set_dcp_issuer (std::string i) {
- _dcp_issuer = i;
- changed ();
+ maybe_set (_dcp_issuer, i);
}
void set_default_j2k_bandwidth (int b) {
- _default_j2k_bandwidth = b;
- changed ();
+ maybe_set (_default_j2k_bandwidth, b);
}
void set_default_audio_delay (int d) {
- _default_audio_delay = d;
- changed ();
+ maybe_set (_default_audio_delay, d);
}
void set_colour_conversions (std::vector<PresetColourConversion> const & c) {
- _colour_conversions = c;
- changed ();
+ maybe_set (_colour_conversions, c);
}
void set_mail_server (std::string s) {
- _mail_server = s;
- changed ();
+ maybe_set (_mail_server, s);
}
void set_mail_user (std::string u) {
- _mail_user = u;
- changed ();
+ maybe_set (_mail_user, u);
}
void set_mail_password (std::string p) {
- _mail_password = p;
- changed ();
+ maybe_set (_mail_password, p);
}
void set_kdm_subject (std::string s) {
- _kdm_subject = s;
- changed ();
+ maybe_set (_kdm_subject, s);
}
void set_kdm_from (std::string f) {
- _kdm_from = f;
- changed ();
+ maybe_set (_kdm_from, f);
}
void set_kdm_cc (std::string f) {
- _kdm_cc = f;
- changed ();
+ maybe_set (_kdm_cc, f);
}
void set_kdm_bcc (std::string f) {
- _kdm_bcc = f;
- changed ();
+ maybe_set (_kdm_bcc, f);
}
void set_kdm_email (std::string e) {
- _kdm_email = e;
- changed ();
+ maybe_set (_kdm_email, e);
}
void reset_kdm_email ();
void set_signer (boost::shared_ptr<const dcp::Signer> s) {
- _signer = s;
- changed ();
+ maybe_set (_signer, s);
}
void set_decryption_certificate (dcp::Certificate c) {
- _decryption_certificate = c;
- changed ();
+ maybe_set (_decryption_certificate, c);
}
void set_decryption_private_key (std::string k) {
- _decryption_private_key = k;
- changed ();
+ maybe_set (_decryption_private_key, k);
}
void set_check_for_updates (bool c) {
- _check_for_updates = c;
- changed ();
+ maybe_set (_check_for_updates, c);
}
void set_check_for_test_updates (bool c) {
- _check_for_test_updates = c;
- changed ();
+ maybe_set (_check_for_test_updates, c);
}
void set_maximum_j2k_bandwidth (int b) {
- _maximum_j2k_bandwidth = b;
- changed ();
+ maybe_set (_maximum_j2k_bandwidth, b);
}
void set_log_types (int t) {
- _log_types = t;
- changed ();
+ maybe_set (_log_types, t);
}
#ifdef DCPOMATIC_WINDOWS
void set_win32_console (bool c) {
- _win32_console = c;
- changed ();
+ maybe_set (_win32_console, c);
}
#endif
@@ -436,6 +409,7 @@ public:
static Config* instance ();
static void drop ();
+ static void restore_defaults ();
private:
Config ();
@@ -443,6 +417,17 @@ private:
void read ();
void write () const;
void make_decryption_keys ();
+ void set_defaults ();
+ void set_kdm_email_to_default ();
+
+ template <class T>
+ void maybe_set (T& member, T new_value) {
+ if (member == new_value) {
+ return;
+ }
+ member = new_value;
+ changed ();
+ }
/** number of threads to use for J2K encoding on the local machine */
int _num_local_encoding_threads;
diff --git a/src/lib/isdcf_metadata.cc b/src/lib/isdcf_metadata.cc
index 9d9d825f5..e9d2e313e 100644
--- a/src/lib/isdcf_metadata.cc
+++ b/src/lib/isdcf_metadata.cc
@@ -66,3 +66,22 @@ ISDCFMetadata::as_xml (xmlpp::Node* root) const
root->add_child("TwoDVersionOfThreeD")->add_child_text (two_d_version_of_three_d ? "1" : "0");
root->add_child("MasteredLuminance")->add_child_text (mastered_luminance);
}
+
+bool
+operator== (ISDCFMetadata const & a, ISDCFMetadata const & b)
+{
+ return a.content_version == b.content_version &&
+ a.audio_language == b.audio_language &&
+ a.subtitle_language == b.subtitle_language &&
+ a.territory == b.territory &&
+ a.rating == b.rating &&
+ a.studio == b.studio &&
+ a.facility == b.facility &&
+ a.package_type == b.package_type &&
+ a.temp_version == b.temp_version &&
+ a.pre_release == b.pre_release &&
+ a.red_band == b.red_band &&
+ a.chain == b.chain &&
+ a.two_d_version_of_three_d == b.two_d_version_of_three_d &&
+ a.mastered_luminance == b.mastered_luminance;
+}
diff --git a/src/lib/isdcf_metadata.h b/src/lib/isdcf_metadata.h
index 62c821d82..6b326ddc8 100644
--- a/src/lib/isdcf_metadata.h
+++ b/src/lib/isdcf_metadata.h
@@ -62,4 +62,6 @@ public:
std::string mastered_luminance;
};
+bool operator== (ISDCFMetadata const & a, ISDCFMetadata const & b);
+
#endif