+ 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;