X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fconfig.h;h=c02b12eb5456ec68ff66b08df9344b8bc9973fb6;hb=e340b96b4a33725e70e3703b0c60ba8da95bca3b;hp=3df5c3795e7d4666835a5a5bf3efcf4c98107bee;hpb=3412af70b950dcdc604413ef05c26becda6da789;p=dcpomatic.git diff --git a/src/lib/config.h b/src/lib/config.h index 3df5c3795..c02b12eb5 100644 --- a/src/lib/config.h +++ b/src/lib/config.h @@ -39,6 +39,7 @@ class CinemaSoundProcessor; class DCPContentType; class Ratio; class Cinema; +class Film; /** @class Config * @brief A singleton class holding configuration. @@ -51,15 +52,21 @@ public: return _num_local_encoding_threads; } - boost::filesystem::path default_directory () const { + boost::optional default_directory () const { return _default_directory; } + boost::optional default_kdm_directory () const { + return _default_kdm_directory; + } + boost::filesystem::path default_directory_or (boost::filesystem::path a) const; + boost::filesystem::path default_kdm_directory_or (boost::filesystem::path a) const; enum Property { USE_ANY_SERVERS, SERVERS, + CINEMAS, OTHER }; @@ -177,6 +184,14 @@ public: return _default_interop; } + void set_default_kdm_directory (boost::filesystem::path d) { + if (_default_kdm_directory && _default_kdm_directory.get() == d) { + return; + } + _default_kdm_directory = d; + changed (); + } + std::string mail_server () const { return _mail_server; } @@ -267,6 +282,14 @@ public: return _show_hints_before_make_dcp; } + bool confirm_kdm_email () const { + return _confirm_kdm_email; + } + + dcp::NameFormat kdm_container_name_format () const { + return _kdm_container_name_format; + } + dcp::NameFormat kdm_filename_format () const { return _kdm_filename_format; } @@ -285,7 +308,11 @@ public: } void set_default_directory (boost::filesystem::path d) { - maybe_set (_default_directory, d); + if (_default_directory && *_default_directory == d) { + return; + } + _default_directory = d; + changed (); } /** @param p New server port */ @@ -323,12 +350,12 @@ public: void add_cinema (boost::shared_ptr c) { _cinemas.push_back (c); - changed (); + changed (CINEMAS); } void remove_cinema (boost::shared_ptr c) { _cinemas.remove (c); - changed (); + changed (CINEMAS); } void set_allowed_dcp_frame_rates (std::list const & r) { @@ -486,6 +513,14 @@ public: maybe_set (_show_hints_before_make_dcp, s); } + void set_confirm_kdm_email (bool s) { + maybe_set (_confirm_kdm_email, s); + } + + void set_kdm_container_name_format (dcp::NameFormat n) { + maybe_set (_kdm_container_name_format, n); + } + void set_kdm_filename_format (dcp::NameFormat n) { maybe_set (_kdm_filename_format, n); } @@ -513,8 +548,15 @@ public: static boost::signals2::signal FailedToLoad; void write () const; + void write_config () const; + void write_cinemas () const; void save_template (boost::shared_ptr film, std::string name) const; + bool existing_template (std::string name) const; + std::list templates () const; + boost::filesystem::path template_path (std::string name) const; + void rename_template (std::string old_name, std::string new_name) const; + void delete_template (std::string name) const; static Config* instance (); static void drop (); @@ -527,10 +569,9 @@ private: void read (); void set_defaults (); void set_kdm_email_to_default (); - void write_config_xml () const; - void write_cinemas_xml () const; void read_cinemas (cxml::Document const & f); boost::shared_ptr create_certificate_chain (); + boost::filesystem::path directory_or (boost::optional dir, boost::filesystem::path a) const; template void maybe_set (T& member, T new_value) { @@ -544,7 +585,7 @@ private: /** number of threads to use for J2K encoding on the local machine */ int _num_local_encoding_threads; /** default directory to put new films in */ - boost::filesystem::path _default_directory; + boost::optional _default_directory; /** base port number to use for J2K encoding servers; * this port and the two above it will be used. */ @@ -581,6 +622,10 @@ private: int _default_j2k_bandwidth; int _default_audio_delay; bool _default_interop; + /** Default directory to offer to write KDMs to; if it's not set, + the home directory will be offered. + */ + boost::optional _default_kdm_directory; std::list > _cinemas; std::string _mail_server; int _mail_port; @@ -611,7 +656,9 @@ private: std::vector _dkdms; boost::filesystem::path _cinemas_file; bool _show_hints_before_make_dcp; + bool _confirm_kdm_email; dcp::NameFormat _kdm_filename_format; + dcp::NameFormat _kdm_container_name_format; dcp::NameFormat _dcp_metadata_filename_format; dcp::NameFormat _dcp_asset_filename_format;