diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-04-15 16:35:32 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-04-15 16:35:32 +0100 |
| commit | fcfaa5e1de1e166508793d71ed53edcb145656da (patch) | |
| tree | aaab01d73473d5021228b3d6b029f5b1c3c521af /src/lib | |
| parent | 32bd6c0c623b8e19470955705c2da795a95ab476 (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.cc | 6 | ||||
| -rw-r--r-- | src/lib/colour_conversion.h | 1 | ||||
| -rw-r--r-- | src/lib/config.cc | 59 | ||||
| -rw-r--r-- | src/lib/config.h | 119 | ||||
| -rw-r--r-- | src/lib/isdcf_metadata.cc | 19 | ||||
| -rw-r--r-- | src/lib/isdcf_metadata.h | 2 |
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 |
