summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-05-03 00:56:16 +0100
committerCarl Hetherington <cth@carlh.net>2013-05-03 00:56:16 +0100
commitcc56fc111c742ed5ec072fa0bbe0b950150d40c1 (patch)
treeeadea8af082b332ccb5726dcafa7821be8c5ceaa /src
parentccf029f29d128a6cc92a8d77b1e0d0e483fd1beb (diff)
Configurable default format and content type (#133).
Diffstat (limited to 'src')
-rw-r--r--src/lib/config.cc14
-rw-r--r--src/lib/config.h20
-rw-r--r--src/lib/film.cc4
-rw-r--r--src/wx/config_dialog.cc50
-rw-r--r--src/wx/config_dialog.h4
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;