+ void set_default_interop (bool i) {
+ maybe_set (_default_interop, i);
+ }
+
+ void set_mail_server (std::string s) {
+ maybe_set (_mail_server, s);
+ }
+
+ void set_mail_port (int p) {
+ maybe_set (_mail_port, p);
+ }
+
+ void set_mail_user (std::string u) {
+ maybe_set (_mail_user, u);
+ }
+
+ void set_mail_password (std::string p) {
+ maybe_set (_mail_password, p);
+ }
+
+ void set_kdm_subject (std::string s) {
+ maybe_set (_kdm_subject, s);
+ }
+
+ void set_kdm_from (std::string f) {
+ maybe_set (_kdm_from, f);
+ }
+
+ void set_kdm_cc (std::vector<std::string> f) {
+ maybe_set (_kdm_cc, f);
+ }
+
+ void set_kdm_bcc (std::string f) {
+ maybe_set (_kdm_bcc, f);
+ }
+
+ void set_kdm_email (std::string e) {
+ maybe_set (_kdm_email, e);
+ }
+
+ void reset_kdm_email ();
+
+ void set_signer_chain (boost::shared_ptr<const dcp::CertificateChain> s) {
+ maybe_set (_signer_chain, s);
+ }
+
+ void set_decryption_chain (boost::shared_ptr<const dcp::CertificateChain> c) {
+ maybe_set (_decryption_chain, c);
+ }
+
+ void set_check_for_updates (bool c) {
+ maybe_set (_check_for_updates, c);
+ if (!c) {
+ set_check_for_test_updates (false);
+ }
+ }
+
+ void set_check_for_test_updates (bool c) {
+ maybe_set (_check_for_test_updates, c);
+ }
+
+ void set_maximum_j2k_bandwidth (int b) {
+ maybe_set (_maximum_j2k_bandwidth, b);
+ }
+
+ void set_log_types (int t) {
+ maybe_set (_log_types, t);
+ }
+
+ void set_analyse_ebur128 (bool a) {
+ maybe_set (_analyse_ebur128, a);
+ }
+
+ void set_automatic_audio_analysis (bool a) {
+ maybe_set (_automatic_audio_analysis, a);
+ }
+
+#ifdef DCPOMATIC_WINDOWS
+ void set_win32_console (bool c) {
+ maybe_set (_win32_console, c);
+ }
+#endif
+
+ void set_dkdms (std::vector<dcp::EncryptedKDM> dkdms) {
+ _dkdms = dkdms;
+ changed ();
+ }
+
+ void set_cinemas_file (boost::filesystem::path file);
+
+ void set_show_hints_before_make_dcp (bool s) {
+ maybe_set (_show_hints_before_make_dcp, s);
+ }
+
+ void set_kdm_filename_format (dcp::NameFormat n) {
+ maybe_set (_kdm_filename_format, n);
+ }
+
+ void set_dcp_metadata_filename_format (dcp::NameFormat n) {
+ maybe_set (_dcp_metadata_filename_format, n);
+ }
+
+ void set_dcp_asset_filename_format (dcp::NameFormat n) {
+ maybe_set (_dcp_asset_filename_format, n);
+ }
+
+ void clear_history () {
+ _history.clear ();
+ changed ();
+ }
+
+ void add_to_history (boost::filesystem::path p);
+
+ void changed (Property p = OTHER);
+ boost::signals2::signal<void (Property)> Changed;
+ /** Emitted if ::read() failed on an existing Config file. There is nothing
+ a listener can do about it: this is just for information.
+ */
+ static boost::signals2::signal<void ()> FailedToLoad;
+
+ void write () const;