diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-02-16 11:24:33 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-02-16 11:24:33 +0000 |
| commit | 7feda7e97b67917d240585a09ed6c50d4605a83d (patch) | |
| tree | 9e96af8220a0c221c3da5e3b9a1f942bd89a7321 /src | |
| parent | d4467a8a07fa3411ce2fabc80e533e322a4fb796 (diff) | |
Add option to auto-upload to the TMS (#794).
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/film.cc | 10 | ||||
| -rw-r--r-- | src/lib/film.h | 9 | ||||
| -rw-r--r-- | src/lib/transcode_job.cc | 7 | ||||
| -rw-r--r-- | src/wx/dcp_panel.cc | 42 | ||||
| -rw-r--r-- | src/wx/dcp_panel.h | 2 |
5 files changed, 58 insertions, 12 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc index 9320cf5d2..f4d983260 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -132,6 +132,7 @@ Film::Film (boost::filesystem::path dir, bool log) , _audio_processor (0) , _reel_type (REELTYPE_SINGLE) , _reel_length (2000000000) + , _upload_after_make_dcp (false) , _state_version (current_state_version) , _dirty (false) { @@ -356,6 +357,7 @@ Film::metadata () const } root->add_child("ReelType")->add_child_text (raw_convert<string> (_reel_type)); root->add_child("ReelLength")->add_child_text (raw_convert<string> (_reel_length)); + root->add_child("UploadAfterMakeDCP")->add_child_text (_upload_after_make_dcp ? "1" : "0"); _playlist->as_xml (root->add_child ("Playlist")); return doc; @@ -441,6 +443,7 @@ Film::read_metadata () _reel_type = static_cast<ReelType> (f.optional_number_child<int>("ReelType").get_value_or (static_cast<int>(REELTYPE_SINGLE))); _reel_length = f.optional_number_child<int64_t>("ReelLength").get_value_or (2000000000); + _upload_after_make_dcp = f.optional_bool_child("UploadAfterMakeDCP").get_value_or (false); list<string> notes; /* This method is the only one that can return notes (so far) */ @@ -867,6 +870,13 @@ Film::set_reel_length (int64_t r) } void +Film::set_upload_after_make_dcp (bool u) +{ + _upload_after_make_dcp = u; + signal_changed (UPLOAD_AFTER_MAKE_DCP); +} + +void Film::signal_changed (Property p) { _dirty = true; diff --git a/src/lib/film.h b/src/lib/film.h index 2fb3e810b..a33c0238e 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -181,7 +181,8 @@ public: INTEROP, AUDIO_PROCESSOR, REEL_TYPE, - REEL_LENGTH + REEL_LENGTH, + UPLOAD_AFTER_MAKE_DCP }; @@ -265,6 +266,10 @@ public: return _reel_length; } + bool upload_after_make_dcp () const { + return _upload_after_make_dcp; + } + /* SET */ void set_directory (boost::filesystem::path); @@ -294,6 +299,7 @@ public: void set_audio_processor (AudioProcessor const * processor); void set_reel_type (ReelType); void set_reel_length (int64_t); + void set_upload_after_make_dcp (bool); /** Emitted when some property has of the Film has changed */ mutable boost::signals2::signal<void (Property)> Changed; @@ -358,6 +364,7 @@ private: ReelType _reel_type; /** Desired reel length in bytes, if _reel_type == REELTYPE_BY_LENGTH */ int64_t _reel_length; + bool _upload_after_make_dcp; int _state_version; diff --git a/src/lib/transcode_job.cc b/src/lib/transcode_job.cc index b442d8035..a879e8c77 100644 --- a/src/lib/transcode_job.cc +++ b/src/lib/transcode_job.cc @@ -22,6 +22,8 @@ */ #include "transcode_job.h" +#include "upload_job.h" +#include "job_manager.h" #include "film.h" #include "transcoder.h" #include "log.h" @@ -86,6 +88,11 @@ TranscodeJob::run () LOG_GENERAL (N_("Transcode job completed successfully: %1 fps"), fps); _transcoder.reset (); + if (_film->upload_after_make_dcp ()) { + shared_ptr<Job> job (new UploadJob (_film)); + JobManager::instance()->add (job); + } + } catch (...) { _transcoder.reset (); throw; diff --git a/src/wx/dcp_panel.cc b/src/wx/dcp_panel.cc index 3f4327cf8..c46dcba18 100644 --- a/src/wx/dcp_panel.cc +++ b/src/wx/dcp_panel.cc @@ -153,17 +153,22 @@ DCPPanel::DCPPanel (wxNotebook* n, boost::shared_ptr<Film> film) grid->Add (_standard, wxGBPosition (r, 1), wxDefaultSpan, wxALIGN_CENTER_VERTICAL); ++r; - _name->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&DCPPanel::name_changed, this)); - _use_isdcf_name->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&DCPPanel::use_isdcf_name_toggled, this)); - _edit_isdcf_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&DCPPanel::edit_isdcf_button_clicked, this)); - _copy_isdcf_name_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&DCPPanel::copy_isdcf_name_button_clicked, this)); - _dcp_content_type->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DCPPanel::dcp_content_type_changed, this)); - _signed->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&DCPPanel::signed_toggled, this)); - _encrypted->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&DCPPanel::encrypted_toggled, this)); - _edit_key->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&DCPPanel::edit_key_clicked, this)); - _reel_type->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DCPPanel::reel_type_changed, this)); - _reel_length->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&DCPPanel::reel_length_changed, this)); - _standard->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DCPPanel::standard_changed, this)); + _upload_after_make_dcp = new wxCheckBox (_panel, wxID_ANY, _("Upload DCP to TMS after it is made")); + grid->Add (_upload_after_make_dcp, wxGBPosition (r, 0), wxGBSpan (1, 2)); + ++r; + + _name->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&DCPPanel::name_changed, this)); + _use_isdcf_name->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&DCPPanel::use_isdcf_name_toggled, this)); + _edit_isdcf_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&DCPPanel::edit_isdcf_button_clicked, this)); + _copy_isdcf_name_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&DCPPanel::copy_isdcf_name_button_clicked, this)); + _dcp_content_type->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DCPPanel::dcp_content_type_changed, this)); + _signed->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&DCPPanel::signed_toggled, this)); + _encrypted->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&DCPPanel::encrypted_toggled, this)); + _edit_key->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&DCPPanel::edit_key_clicked, this)); + _reel_type->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DCPPanel::reel_type_changed, this)); + _reel_length->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&DCPPanel::reel_length_changed, this)); + _standard->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DCPPanel::standard_changed, this)); + _upload_after_make_dcp->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&DCPPanel::upload_after_make_dcp_changed, this)); vector<DCPContentType const *> const ct = DCPContentType::all (); for (vector<DCPContentType const *>::const_iterator i = ct.begin(); i != ct.end(); ++i) { @@ -289,6 +294,16 @@ DCPPanel::standard_changed () } void +DCPPanel::upload_after_make_dcp_changed () +{ + if (!_film) { + return; + } + + _film->set_upload_after_make_dcp (_upload_after_make_dcp->GetValue ()); +} + +void DCPPanel::film_changed (int p) { switch (p) { @@ -394,6 +409,9 @@ DCPPanel::film_changed (int p) case Film::REEL_LENGTH: checked_set (_reel_length, _film->reel_length() / 1000000000LL); break; + case Film::UPLOAD_AFTER_MAKE_DCP: + checked_set (_upload_after_make_dcp, _film->upload_after_make_dcp ()); + break; default: break; } @@ -491,6 +509,7 @@ DCPPanel::set_film (shared_ptr<Film> film) film_changed (Film::AUDIO_PROCESSOR); film_changed (Film::REEL_TYPE); film_changed (Film::REEL_LENGTH); + film_changed (Film::UPLOAD_AFTER_MAKE_DCP); } void @@ -513,6 +532,7 @@ DCPPanel::set_general_sensitivity (bool s) _edit_key->Enable (s && _film && _film->encrypted ()); _reel_type->Enable (s); _reel_length->Enable (s && _film && _film->reel_type() == REELTYPE_BY_LENGTH); + _upload_after_make_dcp->Enable (s); _frame_rate_choice->Enable (s); _frame_rate_spin->Enable (s); _audio_channels->Enable (s); diff --git a/src/wx/dcp_panel.h b/src/wx/dcp_panel.h index da93e752a..510a18744 100644 --- a/src/wx/dcp_panel.h +++ b/src/wx/dcp_panel.h @@ -73,6 +73,7 @@ private: void show_audio_clicked (); void reel_type_changed (); void reel_length_changed (); + void upload_after_make_dcp_changed (); void setup_frame_rate_widget (); void setup_container (); @@ -116,6 +117,7 @@ private: wxButton* _edit_key; wxChoice* _reel_type; wxSpinCtrl* _reel_length; + wxCheckBox* _upload_after_make_dcp; AudioDialog* _audio_dialog; |
