summaryrefslogtreecommitdiff
path: root/src/wx/dcp_panel.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2019-03-15 00:52:56 +0000
committerCarl Hetherington <cth@carlh.net>2019-05-10 23:43:42 +0100
commit8c365af343a15bee11af53fc6bc16487b83260d1 (patch)
tree452bee816404f09a3bd0defa2e1a6564059240a2 /src/wx/dcp_panel.cc
parenta9ce4f64658979bc15c301b53c76846072fda0ef (diff)
Basics of setting and storing SMPTE CPL markers.
Diffstat (limited to 'src/wx/dcp_panel.cc')
-rw-r--r--src/wx/dcp_panel.cc35
1 files changed, 32 insertions, 3 deletions
diff --git a/src/wx/dcp_panel.cc b/src/wx/dcp_panel.cc
index 3defe75e4..85ed81e46 100644
--- a/src/wx/dcp_panel.cc
+++ b/src/wx/dcp_panel.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2012-2018 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2019 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -28,6 +28,7 @@
#include "static_text.h"
#include "check_box.h"
#include "dcpomatic_button.h"
+#include "markers_dialog.h"
#include "lib/ratio.h"
#include "lib/config.h"
#include "lib/dcp_content_type.h"
@@ -58,11 +59,14 @@ using std::max;
using std::make_pair;
using boost::lexical_cast;
using boost::shared_ptr;
+using boost::weak_ptr;
using dcp::locale_convert;
-DCPPanel::DCPPanel (wxNotebook* n, boost::shared_ptr<Film> film)
+DCPPanel::DCPPanel (wxNotebook* n, shared_ptr<Film> film, weak_ptr<FilmViewer> viewer)
: _audio_dialog (0)
+ , _markers_dialog (0)
, _film (film)
+ , _viewer (viewer)
, _generally_sensitive (true)
{
_panel = new wxPanel (n);
@@ -114,6 +118,8 @@ DCPPanel::DCPPanel (wxNotebook* n, boost::shared_ptr<Film> film)
_upload_after_make_dcp = new CheckBox (_panel, _("Upload DCP to TMS after it is made"));
+ _markers = new Button (_panel, _("Edit markers..."));
+
_notebook = new wxNotebook (_panel, wxID_ANY);
_sizer->Add (_notebook, 1, wxEXPAND | wxTOP, 6);
@@ -132,6 +138,7 @@ DCPPanel::DCPPanel (wxNotebook* n, boost::shared_ptr<Film> film)
_reel_length->Bind (wxEVT_SPINCTRL, boost::bind (&DCPPanel::reel_length_changed, this));
_standard->Bind (wxEVT_CHOICE, boost::bind (&DCPPanel::standard_changed, this));
_upload_after_make_dcp->Bind (wxEVT_CHECKBOX, boost::bind (&DCPPanel::upload_after_make_dcp_changed, this));
+ _markers->Bind (wxEVT_BUTTON, boost::bind (&DCPPanel::markers_clicked, this));
BOOST_FOREACH (DCPContentType const * i, DCPContentType::all()) {
_dcp_content_type->Append (std_to_wx (i->pretty_name ()));
@@ -213,6 +220,7 @@ DCPPanel::add_to_grid ()
_standard_label->Show (full);
_standard->Show (full);
_upload_after_make_dcp->Show (full);
+ _markers->Show (full);
_reencode_j2k->Show (full);
_encrypted->Show (full);
@@ -245,6 +253,9 @@ DCPPanel::add_to_grid ()
_grid->Add (_upload_after_make_dcp, wxGBPosition (r, 0), wxGBSpan (1, 2));
++r;
+
+ _grid->Add (_markers, wxGBPosition(r, 0), wxGBSpan(1, 2));
+ ++r;
}
}
@@ -366,6 +377,18 @@ DCPPanel::upload_after_make_dcp_changed ()
}
void
+DCPPanel::markers_clicked ()
+{
+ if (_markers_dialog) {
+ _markers_dialog->Destroy ();
+ _markers_dialog = 0;
+ }
+
+ _markers_dialog = new MarkersDialog (_panel, _film, _viewer);
+ _markers_dialog->Show();
+}
+
+void
DCPPanel::film_changed (int p)
{
switch (p) {
@@ -458,6 +481,7 @@ DCPPanel::film_changed (int p)
case Film::INTEROP:
checked_set (_standard, _film->interop() ? 1 : 0);
setup_dcp_name ();
+ _markers->Enable (!_film->interop());
break;
case Film::AUDIO_PROCESSOR:
if (_film->audio_processor ()) {
@@ -558,11 +582,15 @@ DCPPanel::dcp_content_type_changed ()
void
DCPPanel::set_film (shared_ptr<Film> film)
{
- /* We are changing film, so destroy any audio dialog for the old one */
+ /* We are changing film, so destroy any dialogs for the old one */
if (_audio_dialog) {
_audio_dialog->Destroy ();
_audio_dialog = 0;
}
+ if (_markers_dialog) {
+ _markers_dialog->Destroy ();
+ _markers_dialog = 0;
+ }
_film = film;
@@ -626,6 +654,7 @@ DCPPanel::setup_sensitivity ()
_reel_type->Enable (_generally_sensitive && _film && !_film->references_dcp_video() && !_film->references_dcp_audio());
_reel_length->Enable (_generally_sensitive && _film && _film->reel_type() == REELTYPE_BY_LENGTH);
_upload_after_make_dcp->Enable (_generally_sensitive);
+ _markers->Enable (_generally_sensitive);
_frame_rate_choice->Enable (_generally_sensitive && _film && !_film->references_dcp_video());
_frame_rate_spin->Enable (_generally_sensitive && _film && !_film->references_dcp_video());
_audio_channels->Enable (_generally_sensitive && _film && !_film->references_dcp_audio());