summaryrefslogtreecommitdiff
path: root/src/wx/film_editor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/wx/film_editor.cc')
-rw-r--r--src/wx/film_editor.cc106
1 files changed, 70 insertions, 36 deletions
diff --git a/src/wx/film_editor.cc b/src/wx/film_editor.cc
index 4955d9f3d..3c5e1e0a7 100644
--- a/src/wx/film_editor.cc
+++ b/src/wx/film_editor.cc
@@ -54,6 +54,7 @@
#include "imagemagick_content_dialog.h"
#include "timeline_dialog.h"
#include "audio_mapping_view.h"
+#include "container.h"
using std::string;
using std::cout;
@@ -126,6 +127,11 @@ FilmEditor::make_dcp_panel ()
grid->Add (_edit_dci_button, wxGBPosition (r, 1), wxDefaultSpan);
++r;
+ add_label_to_grid_bag_sizer (grid, _dcp_panel, _("Container"), wxGBPosition (r, 0));
+ _container = new wxChoice (_dcp_panel, wxID_ANY);
+ grid->Add (_container, wxGBPosition (r, 1));
+ ++r;
+
add_label_to_grid_bag_sizer (grid, _dcp_panel, _("Content Type"), wxGBPosition (r, 0));
_dcp_content_type = new wxChoice (_dcp_panel, wxID_ANY);
grid->Add (_dcp_content_type, wxGBPosition (r, 1));
@@ -137,11 +143,16 @@ FilmEditor::make_dcp_panel ()
_dcp_frame_rate = new wxChoice (_dcp_panel, wxID_ANY);
s->Add (_dcp_frame_rate, 1, wxALIGN_CENTER_VERTICAL);
_best_dcp_frame_rate = new wxButton (_dcp_panel, wxID_ANY, _("Use best"));
- s->Add (_best_dcp_frame_rate, 1, wxALIGN_CENTER_VERTICAL | wxALL | wxEXPAND, 6);
+ s->Add (_best_dcp_frame_rate, 1, wxALIGN_CENTER_VERTICAL | wxEXPAND);
grid->Add (s, wxGBPosition (r, 1));
}
++r;
+ vector<Container const *> const co = Container::all ();
+ for (vector<Container const *>::const_iterator i = co.begin(); i != co.end(); ++i) {
+ _container->Append (std_to_wx ((*i)->name ()));
+ }
+
vector<DCPContentType const *> const ct = DCPContentType::all ();
for (vector<DCPContentType const *>::const_iterator i = ct.begin(); i != ct.end(); ++i) {
_dcp_content_type->Append (std_to_wx ((*i)->pretty_name ()));
@@ -159,7 +170,8 @@ FilmEditor::connect_to_widgets ()
_name->Connect (wxID_ANY, wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler (FilmEditor::name_changed), 0, this);
_use_dci_name->Connect (wxID_ANY, wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler (FilmEditor::use_dci_name_toggled), 0, this);
_edit_dci_button->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (FilmEditor::edit_dci_button_clicked), 0, this);
- _format->Connect (wxID_ANY, wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler (FilmEditor::format_changed), 0, this);
+ _container->Connect (wxID_ANY, wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler (FilmEditor::container_changed), 0, this);
+// _format->Connect (wxID_ANY, wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler (FilmEditor::format_changed), 0, this);
_content->Connect (wxID_ANY, wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler (FilmEditor::content_selection_changed), 0, this);
_content->Connect (wxID_ANY, wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler (FilmEditor::content_selection_changed), 0, this);
_content_add->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (FilmEditor::content_add_clicked), 0, this);
@@ -434,44 +446,48 @@ FilmEditor::make_subtitle_panel ()
void
FilmEditor::left_crop_changed (wxCommandEvent &)
{
- if (!_film) {
+ shared_ptr<VideoContent> c = selected_video_content ();
+ if (!c) {
return;
}
- _film->set_left_crop (_left_crop->GetValue ());
+ c->set_left_crop (_left_crop->GetValue ());
}
/** Called when the right crop widget has been changed */
void
FilmEditor::right_crop_changed (wxCommandEvent &)
{
- if (!_film) {
+ shared_ptr<VideoContent> c = selected_video_content ();
+ if (!c) {
return;
}
- _film->set_right_crop (_right_crop->GetValue ());
+ c->set_right_crop (_right_crop->GetValue ());
}
/** Called when the top crop widget has been changed */
void
FilmEditor::top_crop_changed (wxCommandEvent &)
{
- if (!_film) {
+ shared_ptr<VideoContent> c = selected_video_content ();
+ if (!c) {
return;
}
- _film->set_top_crop (_top_crop->GetValue ());
+ c->set_top_crop (_top_crop->GetValue ());
}
/** Called when the bottom crop value has been changed */
void
FilmEditor::bottom_crop_changed (wxCommandEvent &)
{
- if (!_film) {
+ shared_ptr<VideoContent> c = selected_video_content ();
+ if (!c) {
return;
}
- _film->set_bottom_crop (_bottom_crop->GetValue ());
+ c->set_bottom_crop (_bottom_crop->GetValue ());
}
/** Called when the name widget has been changed */
@@ -561,7 +577,7 @@ FilmEditor::film_changed (Film::Property p)
case Film::CONTENT:
setup_content ();
setup_formats ();
- setup_format ();
+// setup_format ();
setup_subtitle_control_sensitivity ();
setup_show_audio_sensitivity ();
break;
@@ -570,15 +586,8 @@ FilmEditor::film_changed (Film::Property p)
checked_set (_loop_count, _film->loop());
setup_loop_sensitivity ();
break;
- case Film::FORMAT:
- setup_format ();
- break;
- case Film::CROP:
- checked_set (_left_crop, _film->crop().left);
- checked_set (_right_crop, _film->crop().right);
- checked_set (_top_crop, _film->crop().top);
- checked_set (_bottom_crop, _film->crop().bottom);
- setup_scaling_description ();
+ case Film::CONTAINER:
+ setup_container ();
break;
case Film::FILTERS:
{
@@ -655,7 +664,7 @@ FilmEditor::film_changed (Film::Property p)
}
void
-FilmEditor::film_content_changed (weak_ptr<Content> content, int property)
+FilmEditor::film_content_changed (weak_ptr<Content> weak_content, int property)
{
if (!_film) {
/* We call this method ourselves (as well as using it as a signal handler)
@@ -663,8 +672,20 @@ FilmEditor::film_content_changed (weak_ptr<Content> content, int property)
*/
return;
}
-
- if (property == FFmpegContentProperty::SUBTITLE_STREAMS) {
+
+ shared_ptr<Content> content = weak_content.lock ();
+ shared_ptr<VideoContent> video_content;
+ if (content) {
+ video_content = dynamic_pointer_cast<VideoContent> (content);
+ }
+
+ if (property == VideoContentProperty::VIDEO_CROP) {
+ checked_set (_left_crop, video_content ? video_content->crop().left : 0);
+ checked_set (_right_crop, video_content ? video_content->crop().right : 0);
+ checked_set (_top_crop, video_content ? video_content->crop().top : 0);
+ checked_set (_bottom_crop, video_content ? video_content->crop().bottom : 0);
+ setup_scaling_description ();
+ } else if (property == FFmpegContentProperty::SUBTITLE_STREAMS) {
setup_subtitle_control_sensitivity ();
} else if (property == FFmpegContentProperty::AUDIO_STREAMS) {
setup_show_audio_sensitivity ();
@@ -675,37 +696,39 @@ FilmEditor::film_content_changed (weak_ptr<Content> content, int property)
}
void
-FilmEditor::setup_format ()
+FilmEditor::setup_container ()
{
int n = 0;
- vector<Format const *>::iterator i = _formats.begin ();
- while (i != _formats.end() && *i != _film->format ()) {
+ vector<Container const *> containers = Container::all ();
+ vector<Container const *>::iterator i = containers.begin ();
+ while (i != containers.end() && *i != _film->container ()) {
++i;
++n;
}
- if (i == _formats.end()) {
- checked_set (_format, -1);
+ if (i == containers.end()) {
+ checked_set (_container, -1);
} else {
- checked_set (_format, n);
+ checked_set (_container, n);
}
setup_dcp_name ();
setup_scaling_description ();
}
-/** Called when the format widget has been changed */
+/** Called when the container widget has been changed */
void
-FilmEditor::format_changed (wxCommandEvent &)
+FilmEditor::container_changed (wxCommandEvent &)
{
if (!_film) {
return;
}
- int const n = _format->GetSelection ();
+ int const n = _container->GetSelection ();
if (n >= 0) {
- assert (n < int (_formats.size()));
- _film->set_format (_formats[n]);
+ vector<Container const *> containers = Container::all ();
+ assert (n < int (containers.size()));
+ _film->set_container (containers[n]);
}
}
@@ -755,8 +778,7 @@ FilmEditor::set_film (shared_ptr<Film> f)
film_changed (Film::CONTENT);
film_changed (Film::LOOP);
film_changed (Film::DCP_CONTENT_TYPE);
- film_changed (Film::FORMAT);
- film_changed (Film::CROP);
+ film_changed (Film::CONTAINER);
film_changed (Film::FILTERS);
film_changed (Film::SCALER);
film_changed (Film::AUDIO_GAIN);
@@ -769,6 +791,7 @@ FilmEditor::set_film (shared_ptr<Film> f)
film_changed (Film::DCI_METADATA);
film_changed (Film::DCP_VIDEO_FRAME_RATE);
+ film_content_changed (boost::shared_ptr<Content> (), VideoContentProperty::VIDEO_CROP);
film_content_changed (boost::shared_ptr<Content> (), FFmpegContentProperty::SUBTITLE_STREAMS);
film_content_changed (boost::shared_ptr<Content> (), FFmpegContentProperty::SUBTITLE_STREAM);
film_content_changed (boost::shared_ptr<Content> (), FFmpegContentProperty::AUDIO_STREAMS);
@@ -1102,6 +1125,17 @@ FilmEditor::selected_content ()
return c[s];
}
+shared_ptr<VideoContent>
+FilmEditor::selected_video_content ()
+{
+ shared_ptr<Content> c = selected_content ();
+ if (!c) {
+ return shared_ptr<VideoContent> ();
+ }
+
+ return dynamic_pointer_cast<VideoContent> (c);
+}
+
void
FilmEditor::setup_scaling_description ()
{