/*
- Copyright (C) 2012-2016 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2018 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
#include "content_colour_conversion_dialog.h"
#include "content_widget.h"
#include "content_panel.h"
+#include "static_text.h"
+#include "check_box.h"
+#include "dcpomatic_button.h"
#include "lib/filter.h"
#include "lib/ffmpeg_content.h"
#include "lib/colour_conversion.h"
VideoPanel::VideoPanel (ContentPanel* p)
: ContentSubPanel (p, _("Video"))
{
- _reference = new wxCheckBox (this, wxID_ANY, _("Use this DCP's video as OV and make VF"));
- _reference_note = new wxStaticText (this, wxID_ANY, _(""));
+ _reference = new CheckBox (this, _("Use this DCP's video as OV and make VF"));
+ _reference_note = new StaticText (this, wxT(""));
_reference_note->Wrap (200);
wxFont font = _reference_note->GetFont();
font.SetStyle(wxFONTSTYLE_ITALIC);
font.SetPointSize(font.GetPointSize() - 1);
_reference_note->SetFont(font);
- _grid = new wxGridBagSizer (DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
- _sizer->Add (_grid, 0, wxALL, 8);
-
_type_label = create_label (this, _("Type"), true);
_frame_type = new ContentChoice<VideoContent, VideoFrameType> (
this,
&caster<VideoFrameType, int>
);
- _crop_label = create_label (this, _("Crop"), true);
-
- _left_crop_label = create_label (this, _("Left"), true);
+ _left_crop_label = create_label (this, _("Left crop"), true);
_left_crop = new ContentSpinCtrl<VideoContent> (
this,
new wxSpinCtrl (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize (64, -1)),
boost::mem_fn (&VideoContent::set_left_crop)
);
- _right_crop_label = create_label (this, _("Right"), true);
+ _right_crop_label = create_label (this, _("Right crop"), true);
_right_crop = new ContentSpinCtrl<VideoContent> (
this,
new wxSpinCtrl (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize (64, -1)),
boost::mem_fn (&VideoContent::set_right_crop)
);
- _top_crop_label = create_label (this, _("Top"), true);
+ _top_crop_label = create_label (this, _("Top crop"), true);
_top_crop = new ContentSpinCtrl<VideoContent> (
this,
new wxSpinCtrl (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize (64, -1)),
boost::mem_fn (&VideoContent::set_top_crop)
);
- _bottom_crop_label = create_label (this, _("Bottom"), true);
+ _bottom_crop_label = create_label (this, _("Bottom crop"), true);
_bottom_crop = new ContentSpinCtrl<VideoContent> (
this,
new wxSpinCtrl (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize (64, -1)),
size.SetHeight (-1);
_filters_label = create_label (this, _("Filters"), true);
- _filters = new wxStaticText (this, wxID_ANY, _("None"), wxDefaultPosition, size);
- _filters_button = new wxButton (this, wxID_ANY, _("Edit..."));
+ _filters = new StaticText (this, _("None"), wxDefaultPosition, size);
+ _filters_button = new Button (this, _("Edit..."));
_colour_conversion_label = create_label (this, _("Colour conversion"), true);
_colour_conversion = new wxChoice (this, wxID_ANY, wxDefaultPosition, size);
/// TRANSLATORS: translate the word "Custom" here; do not include the "Colour|" prefix
_colour_conversion->Append (S_("Colour|Custom"));
- _edit_colour_conversion_button = new wxButton (this, wxID_ANY, _("Edit..."));
+ _edit_colour_conversion_button = new Button (this, _("Edit..."));
- _description = new wxStaticText (this, wxID_ANY, wxT ("\n \n \n \n \n"), wxDefaultPosition, wxDefaultSize);
+ _description = new StaticText (this, wxT ("\n \n \n \n \n"), wxDefaultPosition, wxDefaultSize);
_description->SetFont(font);
- _left_crop->wrapped()->SetRange (0, 1024);
- _top_crop->wrapped()->SetRange (0, 1024);
- _right_crop->wrapped()->SetRange (0, 1024);
- _bottom_crop->wrapped()->SetRange (0, 1024);
+ _left_crop->wrapped()->SetRange (0, 4096);
+ _top_crop->wrapped()->SetRange (0, 4096);
+ _right_crop->wrapped()->SetRange (0, 4096);
+ _bottom_crop->wrapped()->SetRange (0, 4096);
_scale->wrapped()->Clear ();
BOOST_FOREACH (VideoContentScale const & i, VideoContentScale::all ()) {
_colour_conversion->Bind (wxEVT_CHOICE, boost::bind (&VideoPanel::colour_conversion_changed, this));
_edit_colour_conversion_button->Bind (wxEVT_BUTTON, boost::bind (&VideoPanel::edit_colour_conversion_clicked, this));
- Config::instance()->Changed.connect (boost::bind (&VideoPanel::config_changed, this, _1));
-
add_to_grid ();
}
-void
-VideoPanel::config_changed (Config::Property p)
-{
- if (p == Config::INTERFACE_COMPLEXITY) {
- _grid->Clear ();
- add_to_grid ();
- _sizer->Layout ();
- _grid->Layout ();
- }
-}
-
void
VideoPanel::add_to_grid ()
{
- Config::Interface const interface = Config::instance()->interface_complexity();
+ bool const full = Config::instance()->interface_complexity() == Config::INTERFACE_FULL;
int r = 0;
- _reference->Show (interface == Config::INTERFACE_FULL);
- _reference_note->Show (interface == Config::INTERFACE_FULL);
+ _reference->Show (full);
+ _reference_note->Show (full);
- if (interface == Config::INTERFACE_FULL) {
+ if (full) {
wxBoxSizer* reference_sizer = new wxBoxSizer (wxVERTICAL);
reference_sizer->Add (_reference, 0);
reference_sizer->Add (_reference_note, 0);
_frame_type->add (_grid, wxGBPosition(r, 1), wxGBSpan(1, 2));
++r;
- int flags = wxTOP;
-#ifdef __WXOSX__
- flags |= wxALIGN_RIGHT;
-#endif
- _grid->Add (_crop_label, wxGBPosition(r, 0), wxDefaultSpan, flags, DCPOMATIC_SIZER_Y_GAP / 2);
-
int cr = 0;
wxGridBagSizer* crop = new wxGridBagSizer (DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
add_label_to_sizer (crop, _left_crop_label, true, wxGBPosition (cr, 0));
_top_crop->add (crop, wxGBPosition (cr, 1));
add_label_to_sizer (crop, _bottom_crop_label, true, wxGBPosition (cr, 2));
_bottom_crop->add (crop, wxGBPosition (cr, 3));
- _grid->Add (crop, wxGBPosition (r, 1), wxGBSpan (2, 3));
+ _grid->Add (crop, wxGBPosition (r, 0), wxGBSpan (2, 4));
r += 2;
- _fade_in_label->Show (interface == Config::INTERFACE_FULL);
- _fade_in->Show (interface == Config::INTERFACE_FULL);
- _fade_out_label->Show (interface == Config::INTERFACE_FULL);
- _fade_out->Show (interface == Config::INTERFACE_FULL);
- _scale_to_label->Show (interface == Config::INTERFACE_FULL);
- _scale->show (interface == Config::INTERFACE_FULL);
- _filters_label->Show (interface == Config::INTERFACE_FULL);
- _filters->Show (interface == Config::INTERFACE_FULL);
- _filters_button->Show (interface == Config::INTERFACE_FULL);
- _colour_conversion_label->Show (interface == Config::INTERFACE_FULL);
- _colour_conversion->Show (interface == Config::INTERFACE_FULL);
- _edit_colour_conversion_button->Show (interface == Config::INTERFACE_FULL);
-
- if (interface == Config::INTERFACE_FULL) {
- add_label_to_sizer (_grid, _fade_in_label, true, wxGBPosition (r, 0));
- _grid->Add (_fade_in, wxGBPosition (r, 1), wxGBSpan (1, 3));
- ++r;
+ _scale_to_label->Show (full);
+ _scale->show (full);
+ _filters_label->Show (full);
+ _filters->Show (full);
+ _filters_button->Show (full);
+ _colour_conversion_label->Show (full);
+ _colour_conversion->Show (full);
+ _edit_colour_conversion_button->Show (full);
+
+ add_label_to_sizer (_grid, _fade_in_label, true, wxGBPosition (r, 0));
+ _grid->Add (_fade_in, wxGBPosition (r, 1), wxGBSpan (1, 3));
+ ++r;
- add_label_to_sizer (_grid, _fade_out_label, true, wxGBPosition (r, 0));
- _grid->Add (_fade_out, wxGBPosition (r, 1), wxGBSpan (1, 3));
- ++r;
+ add_label_to_sizer (_grid, _fade_out_label, true, wxGBPosition (r, 0));
+ _grid->Add (_fade_out, wxGBPosition (r, 1), wxGBSpan (1, 3));
+ ++r;
+ if (full) {
add_label_to_sizer (_grid, _scale_to_label, true, wxGBPosition (r, 0));
_scale->add (_grid, wxGBPosition (r, 1), wxGBSpan (1, 2));
++r;
switch (property) {
case Film::VIDEO_FRAME_RATE:
case Film::CONTAINER:
- setup_description ();
- setup_sensitivity ();
- break;
case Film::RESOLUTION:
setup_description ();
+ setup_sensitivity ();
break;
case Film::REEL_TYPE:
case Film::INTEROP:
if (check.size() == 1) {
_fade_in->set (
- ContentTime::from_frames (vc.front()->video->fade_in (), vc.front()->active_video_frame_rate ()),
- vc.front()->active_video_frame_rate ()
+ ContentTime::from_frames (vc.front()->video->fade_in(), vc.front()->active_video_frame_rate(_parent->film())),
+ vc.front()->active_video_frame_rate(_parent->film())
);
} else {
_fade_in->clear ();
if (check.size() == 1) {
_fade_out->set (
- ContentTime::from_frames (vc.front()->video->fade_out (), vc.front()->active_video_frame_rate ()),
- vc.front()->active_video_frame_rate ()
+ ContentTime::from_frames (vc.front()->video->fade_out(), vc.front()->active_video_frame_rate(_parent->film())),
+ vc.front()->active_video_frame_rate(_parent->film())
);
} else {
_fade_out->clear ();
return;
}
- string d = vc.front()->video->processing_description ();
+ string d = vc.front()->video->processing_description (_parent->film());
size_t lines = count (d.begin(), d.end(), '\n');
for (int i = lines; i < 6; ++i) {
}
string why_not;
- bool const can_reference = dcp && dcp->can_reference_video (why_not);
+ bool const can_reference = dcp && dcp->can_reference_video (_parent->film(), why_not);
setup_refer_button (_reference, _reference_note, dcp, can_reference, why_not);
if (_reference->GetValue ()) {