+ film_content_changed (DCPContentProperty::REFERENCE_VIDEO);
+
+ setup_sensitivity ();
+}
+
+void
+VideoPanel::setup_sensitivity ()
+{
+ ContentList sel = _parent->selected ();
+
+ shared_ptr<DCPContent> dcp;
+ if (sel.size() == 1) {
+ dcp = dynamic_pointer_cast<DCPContent> (sel.front ());
+ }
+
+ list<string> why_not;
+ bool const can_reference = dcp && dcp->can_reference_video (why_not);
+ setup_refer_button (_reference, dcp, can_reference, why_not);
+
+ if (_reference->GetValue ()) {
+ _frame_type->wrapped()->Enable (false);
+ _left_crop->wrapped()->Enable (false);
+ _right_crop->wrapped()->Enable (false);
+ _top_crop->wrapped()->Enable (false);
+ _bottom_crop->wrapped()->Enable (false);
+ _fade_in->Enable (false);
+ _fade_out->Enable (false);
+ _scale->wrapped()->Enable (false);
+ _description->Enable (false);
+ _filters->Enable (false);
+ _filters_button->Enable (false);
+ _colour_conversion->Enable (false);
+ } else {
+ VideoContentList video_sel = _parent->selected_video ();
+ FFmpegContentList ffmpeg_sel = _parent->selected_ffmpeg ();
+ bool const single = video_sel.size() == 1;
+
+ _frame_type->wrapped()->Enable (true);
+ _left_crop->wrapped()->Enable (true);
+ _right_crop->wrapped()->Enable (true);
+ _top_crop->wrapped()->Enable (true);
+ _bottom_crop->wrapped()->Enable (true);
+ _fade_in->Enable (!video_sel.empty ());
+ _fade_out->Enable (!video_sel.empty ());
+ _scale->wrapped()->Enable (true);
+ _description->Enable (true);
+ _filters->Enable (true);
+ _filters_button->Enable (single && !ffmpeg_sel.empty ());
+ _colour_conversion->Enable (single && !video_sel.empty ());
+ }
+
+ VideoContentList vc = _parent->selected_video ();
+ shared_ptr<VideoContent> vcs;
+ if (!vc.empty ()) {
+ vcs = vc.front ();
+ }
+
+ if (vcs && vcs->colour_conversion ()) {
+ _edit_colour_conversion_button->Enable (!vcs->colour_conversion().get().preset());
+ } else {
+ _edit_colour_conversion_button->Enable (false);
+ }
+}
+
+void
+VideoPanel::fade_in_changed ()
+{
+ BOOST_FOREACH (shared_ptr<VideoContent> i, _parent->selected_video ()) {
+ int const vfr = _parent->film()->video_frame_rate ();
+ i->set_fade_in (_fade_in->get (vfr).frames_round (vfr));
+ }
+}
+
+void
+VideoPanel::fade_out_changed ()
+{
+ BOOST_FOREACH (shared_ptr<VideoContent> i, _parent->selected_video ()) {
+ int const vfr = _parent->film()->video_frame_rate ();
+ i->set_fade_out (_fade_out->get (vfr).frames_round (vfr));
+ }
+}
+
+void
+VideoPanel::reference_clicked ()
+{
+ ContentList c = _parent->selected ();
+ if (c.size() != 1) {
+ return;
+ }
+
+ shared_ptr<DCPContent> d = dynamic_pointer_cast<DCPContent> (c.front ());
+ if (!d) {
+ return;
+ }
+
+ d->set_reference_video (_reference->GetValue ());