diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-05-03 00:56:16 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-05-03 00:56:16 +0100 |
| commit | cc56fc111c742ed5ec072fa0bbe0b950150d40c1 (patch) | |
| tree | eadea8af082b332ccb5726dcafa7821be8c5ceaa /src | |
| parent | ccf029f29d128a6cc92a8d77b1e0d0e483fd1beb (diff) | |
Configurable default format and content type (#133).
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/config.cc | 14 | ||||
| -rw-r--r-- | src/lib/config.h | 20 | ||||
| -rw-r--r-- | src/lib/film.cc | 4 | ||||
| -rw-r--r-- | src/wx/config_dialog.cc | 50 | ||||
| -rw-r--r-- | src/wx/config_dialog.h | 4 |
5 files changed, 89 insertions, 3 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc index 5dce3748d..0e2e33a16 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -26,6 +26,8 @@ #include "server.h" #include "scaler.h" #include "filter.h" +#include "format.h" +#include "dcp_content_type.h" #include "sound_processor.h" #include "i18n.h" @@ -45,6 +47,8 @@ Config::Config () , _reference_scaler (Scaler::from_id (N_("bicubic"))) , _tms_path (N_(".")) , _sound_processor (SoundProcessor::from_id (N_("dolby_cp750"))) + , _default_format (0) + , _default_dcp_content_type (0) { _allowed_dcp_frame_rates.push_back (24); _allowed_dcp_frame_rates.push_back (25); @@ -96,6 +100,10 @@ Config::Config () _sound_processor = SoundProcessor::from_id (v); } else if (k == "language") { _language = v; + } else if (k == "default_format") { + _default_format = Format::from_metadata (v); + } else if (k == "default_dcp_content_type") { + _default_dcp_content_type = DCPContentType::from_dci_name (v); } _default_dci_metadata.read (k, v); @@ -154,6 +162,12 @@ Config::write () const if (_language) { f << "language " << _language.get() << "\n"; } + if (_default_format) { + f << "default_format " << _default_format->as_metadata() << "\n"; + } + if (_default_dcp_content_type) { + f << "default_dcp_content_type " << _default_dcp_content_type->dci_name() << "\n"; + } _default_dci_metadata.write (f); } diff --git a/src/lib/config.h b/src/lib/config.h index 011ca716f..6041045cf 100644 --- a/src/lib/config.h +++ b/src/lib/config.h @@ -33,6 +33,8 @@ class ServerDescription; class Scaler; class Filter; class SoundProcessor; +class Format; +class DCPContentType; /** @class Config * @brief A singleton class holding configuration. @@ -107,6 +109,14 @@ public: return _language; } + Format const * default_format () const { + return _default_format; + } + + DCPContentType const * default_dcp_content_type () const { + return _default_dcp_content_type; + } + /** @param n New number of local encoding threads */ void set_num_local_encoding_threads (int n) { _num_local_encoding_threads = n; @@ -169,6 +179,14 @@ public: void unset_language () { _language = boost::none; } + + void set_default_format (Format const * f) { + _default_format = f; + } + + void set_default_dcp_content_type (DCPContentType const * t) { + _default_dcp_content_type = t; + } void write () const; @@ -206,6 +224,8 @@ private: /** Default DCI metadata for newly-created Films */ DCIMetadata _default_dci_metadata; boost::optional<std::string> _language; + Format const * _default_format; + DCPContentType const * _default_dcp_content_type; /** Singleton instance, or 0 */ static Config* _instance; diff --git a/src/lib/film.cc b/src/lib/film.cc index b0785df34..0ca374604 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -88,8 +88,8 @@ int const Film::state_version = 4; Film::Film (string d, bool must_exist) : _use_dci_name (true) , _trust_content_header (true) - , _dcp_content_type (0) - , _format (0) + , _dcp_content_type (Config::instance()->default_dcp_content_type ()) + , _format (Config::instance()->default_format ()) , _scaler (Scaler::from_id ("bicubic")) , _trim_start (0) , _trim_end (0) diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index 07866f6f4..a91bfd64c 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -31,6 +31,7 @@ #include "lib/format.h" #include "lib/scaler.h" #include "lib/filter.h" +#include "lib/dcp_content_type.h" #include "config_dialog.h" #include "wx_util.h" #include "filter_dialog.h" @@ -119,6 +120,16 @@ ConfigDialog::make_misc_panel () table->Add (_default_dci_metadata_button); table->AddSpacer (1); + add_label_to_sizer (table, _misc_panel, _("Default format")); + _default_format = new wxChoice (_misc_panel, wxID_ANY); + table->Add (_default_format); + table->AddSpacer (1); + + add_label_to_sizer (table, _misc_panel, _("Default content type")); + _default_dcp_content_type = new wxChoice (_misc_panel, wxID_ANY); + table->Add (_default_dcp_content_type); + table->AddSpacer (1); + Config* config = Config::instance (); _set_language->SetValue (config->language ()); @@ -149,6 +160,29 @@ ConfigDialog::make_misc_panel () _default_dci_metadata_button->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (ConfigDialog::edit_default_dci_metadata_clicked), 0, this); + vector<Format const *> fmt = Format::all (); + int n = 0; + for (vector<Format const *>::iterator i = fmt.begin(); i != fmt.end(); ++i) { + _default_format->Append (std_to_wx ((*i)->name ())); + if (*i == config->default_format ()) { + _default_format->SetSelection (n); + } + ++n; + } + + _default_format->Connect (wxID_ANY, wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler (ConfigDialog::default_format_changed), 0, this); + + vector<DCPContentType const *> const ct = DCPContentType::all (); + n = 0; + for (vector<DCPContentType const *>::const_iterator i = ct.begin(); i != ct.end(); ++i) { + _default_dcp_content_type->Append (std_to_wx ((*i)->pretty_name ())); + if (*i == config->default_dcp_content_type ()) { + _default_dcp_content_type->SetSelection (n); + } + ++n; + } + + _default_dcp_content_type->Connect (wxID_ANY, wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler (ConfigDialog::default_dcp_content_type_changed), 0, this); } void @@ -215,7 +249,7 @@ ConfigDialog::make_ab_panel () add_label_to_sizer (table, _ab_panel, _("Reference filters")); wxSizer* s = new wxBoxSizer (wxHORIZONTAL); _reference_filters = new wxStaticText (_ab_panel, wxID_ANY, wxT ("")); - s->Add (_reference_filters, 1, wxEXPAND); + s->Add (_reference_filters, 1, wxALIGN_CENTER_VERTICAL | wxEXPAND | wxALL, 6); _reference_filters_button = new wxButton (_ab_panel, wxID_ANY, _("Edit...")); s->Add (_reference_filters_button, 0); table->Add (s, 1, wxEXPAND); @@ -462,3 +496,17 @@ ConfigDialog::setup_language_sensitivity () { _language->Enable (_set_language->GetValue ()); } + +void +ConfigDialog::default_format_changed (wxCommandEvent &) +{ + vector<Format const *> fmt = Format::all (); + Config::instance()->set_default_format (fmt[_default_format->GetSelection()]); +} + +void +ConfigDialog::default_dcp_content_type_changed (wxCommandEvent &) +{ + vector<DCPContentType const *> ct = DCPContentType::all (); + Config::instance()->set_default_dcp_content_type (ct[_default_dcp_content_type->GetSelection()]); +} diff --git a/src/wx/config_dialog.h b/src/wx/config_dialog.h index 598279e86..c926b0937 100644 --- a/src/wx/config_dialog.h +++ b/src/wx/config_dialog.h @@ -56,6 +56,8 @@ private: void edit_server_clicked (wxCommandEvent &); void remove_server_clicked (wxCommandEvent &); void server_selection_changed (wxListEvent &); + void default_format_changed (wxCommandEvent &); + void default_dcp_content_type_changed (wxCommandEvent &); void add_server_to_control (ServerDescription *); void setup_language_sensitivity (); @@ -72,6 +74,8 @@ private: wxPanel* _servers_panel; wxCheckBox* _set_language; wxChoice* _language; + wxChoice* _default_format; + wxChoice* _default_dcp_content_type; wxTextCtrl* _tms_ip; wxTextCtrl* _tms_path; wxTextCtrl* _tms_user; |
