From 94f922178bc4395f0f51d43723d1aab12f67f4cd Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 7 Sep 2018 02:25:18 +0100 Subject: [PATCH] Rest of DCP panel. --- src/wx/dcp_panel.cc | 155 ++++++++++++++++++++++++++++-------------- src/wx/dcp_panel.h | 11 +++ src/wx/video_panel.cc | 36 +++++----- 3 files changed, 134 insertions(+), 68 deletions(-) diff --git a/src/wx/dcp_panel.cc b/src/wx/dcp_panel.cc index 353080928..3e42d8b23 100644 --- a/src/wx/dcp_panel.cc +++ b/src/wx/dcp_panel.cc @@ -678,6 +678,14 @@ DCPPanel::config_changed (Config::Property p) add_to_grid (); _sizer->Layout (); _grid->Layout (); + + _video_grid->Clear (); + add_video_panel_to_grid (); + _video_grid->Layout (); + + _audio_grid->Clear (); + add_audio_panel_to_grid (); + _audio_grid->Layout (); } } @@ -700,55 +708,35 @@ DCPPanel::make_video_panel () { wxPanel* panel = new wxPanel (_notebook); wxSizer* sizer = new wxBoxSizer (wxVERTICAL); - wxGridBagSizer* grid = new wxGridBagSizer (DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); - sizer->Add (grid, 0, wxALL, 8); + _video_grid = new wxGridBagSizer (DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); + sizer->Add (_video_grid, 0, wxALL, 8); panel->SetSizer (sizer); int r = 0; - add_label_to_sizer (grid, panel, _("Container"), true, wxGBPosition (r, 0)); - { - wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); - _container = new wxChoice (panel, wxID_ANY); - s->Add (_container, 1, wxEXPAND | wxRIGHT, DCPOMATIC_SIZER_X_GAP); - _container_size = new wxStaticText (panel, wxID_ANY, wxT ("")); - s->Add (_container_size, 1, wxLEFT | wxALIGN_CENTER_VERTICAL); - grid->Add (s, wxGBPosition (r,1 ), wxDefaultSpan, wxEXPAND); - ++r; - } + _container_label = create_label (panel, _("Container"), true); + _container = new wxChoice (panel, wxID_ANY); + _container_size = new wxStaticText (panel, wxID_ANY, wxT ("")); - add_label_to_sizer (grid, panel, _("Resolution"), true, wxGBPosition (r, 0)); + _resolution_label = create_label (panel, _("Resolution"), true); _resolution = new wxChoice (panel, wxID_ANY); - grid->Add (_resolution, wxGBPosition (r, 1)); - ++r; - add_label_to_sizer (grid, panel, _("Frame Rate"), true, wxGBPosition (r, 0)); - { - _frame_rate_sizer = new wxBoxSizer (wxHORIZONTAL); - _frame_rate_choice = new wxChoice (panel, wxID_ANY); - _frame_rate_sizer->Add (_frame_rate_choice, 1, wxALIGN_CENTER_VERTICAL); - _frame_rate_spin = new wxSpinCtrl (panel, wxID_ANY); - _frame_rate_sizer->Add (_frame_rate_spin, 1, wxALIGN_CENTER_VERTICAL); - setup_frame_rate_widget (); - _best_frame_rate = new wxButton (panel, wxID_ANY, _("Use best")); - _frame_rate_sizer->Add (_best_frame_rate, 1, wxALIGN_CENTER_VERTICAL); - grid->Add (_frame_rate_sizer, wxGBPosition (r, 1)); - ++r; - } + _frame_rate_label = create_label (panel, _("Frame Rate"), true); + _frame_rate_choice = new wxChoice (panel, wxID_ANY); + _frame_rate_sizer = new wxBoxSizer (wxHORIZONTAL); + _frame_rate_sizer->Add (_frame_rate_choice, 1, wxALIGN_CENTER_VERTICAL); + _frame_rate_spin = new wxSpinCtrl (panel, wxID_ANY); + _frame_rate_sizer->Add (_frame_rate_spin, 1, wxALIGN_CENTER_VERTICAL); + setup_frame_rate_widget (); + _best_frame_rate = new wxButton (panel, wxID_ANY, _("Use best")); + _frame_rate_sizer->Add (_best_frame_rate, 1, wxALIGN_CENTER_VERTICAL); _three_d = new wxCheckBox (panel, wxID_ANY, _("3D")); - grid->Add (_three_d, wxGBPosition (r, 0), wxGBSpan (1, 2)); ++r; - { - add_label_to_sizer (grid, panel, _("JPEG2000 bandwidth\nfor newly-encoded data"), true, wxGBPosition (r, 0)); - wxSizer* s = new wxBoxSizer (wxHORIZONTAL); - _j2k_bandwidth = new wxSpinCtrl (panel, wxID_ANY); - s->Add (_j2k_bandwidth, 1); - add_label_to_sizer (s, panel, _("Mbit/s"), false); - grid->Add (s, wxGBPosition (r, 1)); - } - ++r; + _j2k_bandwidth_label = create_label (panel, _("JPEG2000 bandwidth\nfor newly-encoded data"), true); + _j2k_bandwidth = new wxSpinCtrl (panel, wxID_ANY); + _mbits_label = create_label (panel, _("Mbit/s"), false); _container->Bind (wxEVT_CHOICE, boost::bind (&DCPPanel::container_changed, this)); _frame_rate_choice->Bind(wxEVT_CHOICE, boost::bind (&DCPPanel::frame_rate_choice_changed, this)); @@ -774,9 +762,58 @@ DCPPanel::make_video_panel () _resolution->Append (_("2K")); _resolution->Append (_("4K")); + add_video_panel_to_grid (); + return panel; } +void +DCPPanel::add_video_panel_to_grid () +{ + bool const full = Config::instance()->interface_complexity() == Config::INTERFACE_FULL; + + int r = 0; + + add_label_to_sizer (_video_grid, _container_label, true, wxGBPosition (r, 0)); + { + wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); + s->Add (_container, 1, wxEXPAND | wxRIGHT, DCPOMATIC_SIZER_X_GAP); + s->Add (_container_size, 1, wxLEFT | wxALIGN_CENTER_VERTICAL); + _video_grid->Add (s, wxGBPosition(r, 1)); + ++r; + } + + add_label_to_sizer (_video_grid, _resolution_label, true, wxGBPosition (r, 0)); + _video_grid->Add (_resolution, wxGBPosition (r, 1)); + ++r; + + add_label_to_sizer (_video_grid, _frame_rate_label, true, wxGBPosition (r, 0)); + { + _frame_rate_sizer = new wxBoxSizer (wxHORIZONTAL); + _frame_rate_sizer->Add (_frame_rate_choice, 1, wxALIGN_CENTER_VERTICAL); + _frame_rate_sizer->Add (_frame_rate_spin, 1, wxALIGN_CENTER_VERTICAL); + _frame_rate_sizer->Add (_best_frame_rate, 1, wxALIGN_CENTER_VERTICAL); + _video_grid->Add (_frame_rate_sizer, wxGBPosition (r, 1)); + ++r; + } + + _video_grid->Add (_three_d, wxGBPosition (r, 0), wxGBSpan (1, 2)); + ++r; + + _j2k_bandwidth_label->Show (full); + _j2k_bandwidth->Show (full); + _mbits_label->Show (full); + + if (full) { + add_label_to_sizer (_video_grid, _j2k_bandwidth_label, true, wxGBPosition (r, 0)); + wxSizer* s = new wxBoxSizer (wxHORIZONTAL); + s->Add (_j2k_bandwidth, 1); + add_label_to_sizer (s, _mbits_label, false); + _video_grid->Add (s, wxGBPosition (r, 1)); + ++r; + } +} + int DCPPanel::minimum_allowed_audio_channels () const { @@ -797,38 +834,56 @@ DCPPanel::make_audio_panel () { wxPanel* panel = new wxPanel (_notebook); wxSizer* sizer = new wxBoxSizer (wxVERTICAL); - wxGridBagSizer* grid = new wxGridBagSizer (DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); - sizer->Add (grid, 0, wxALL, 8); + _audio_grid = new wxGridBagSizer (DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); + sizer->Add (_audio_grid, 0, wxALL, 8); panel->SetSizer (sizer); - int r = 0; - - add_label_to_sizer (grid, panel, _("Channels"), true, wxGBPosition (r, 0)); + _channels_label = create_label (panel, _("Channels"), true); _audio_channels = new wxChoice (panel, wxID_ANY); setup_audio_channels_choice (_audio_channels, minimum_allowed_audio_channels ()); - grid->Add (_audio_channels, wxGBPosition (r, 1)); - ++r; - add_label_to_sizer (grid, panel, _("Processor"), true, wxGBPosition (r, 0)); + _processor_label = create_label (panel, _("Processor"), true); _audio_processor = new wxChoice (panel, wxID_ANY); _audio_processor->Append (_("None"), new wxStringClientData (N_("none"))); BOOST_FOREACH (AudioProcessor const * ap, AudioProcessor::all ()) { _audio_processor->Append (std_to_wx (ap->name ()), new wxStringClientData (std_to_wx (ap->id ()))); } - grid->Add (_audio_processor, wxGBPosition (r, 1)); - ++r; _show_audio = new wxButton (panel, wxID_ANY, _("Show audio...")); - grid->Add (_show_audio, wxGBPosition (r, 0), wxGBSpan (1, 2)); - ++r; _audio_channels->Bind (wxEVT_CHOICE, boost::bind (&DCPPanel::audio_channels_changed, this)); _audio_processor->Bind (wxEVT_CHOICE, boost::bind (&DCPPanel::audio_processor_changed, this)); _show_audio->Bind (wxEVT_BUTTON, boost::bind (&DCPPanel::show_audio_clicked, this)); + add_audio_panel_to_grid (); + return panel; } +void +DCPPanel::add_audio_panel_to_grid () +{ + bool const full = Config::instance()->interface_complexity() == Config::INTERFACE_FULL; + + int r = 0; + + add_label_to_sizer (_audio_grid, _channels_label, true, wxGBPosition (r, 0)); + _audio_grid->Add (_audio_channels, wxGBPosition (r, 1)); + ++r; + + _processor_label->Show (full); + _audio_processor->Show (full); + + if (full) { + add_label_to_sizer (_audio_grid, _processor_label, true, wxGBPosition (r, 0)); + _audio_grid->Add (_audio_processor, wxGBPosition (r, 1)); + ++r; + } + + _audio_grid->Add (_show_audio, wxGBPosition (r, 0), wxGBSpan (1, 2)); + ++r; +} + void DCPPanel::copy_isdcf_name_button_clicked () { diff --git a/src/wx/dcp_panel.h b/src/wx/dcp_panel.h index 0311b063e..8c20dc174 100644 --- a/src/wx/dcp_panel.h +++ b/src/wx/dcp_panel.h @@ -82,6 +82,8 @@ private: void setup_container (); void setup_dcp_name (); void add_to_grid (); + void add_video_panel_to_grid (); + void add_audio_panel_to_grid (); int minimum_allowed_audio_channels () const; @@ -97,26 +99,35 @@ private: wxNotebook* _notebook; wxBoxSizer* _sizer; wxGridBagSizer* _grid; + wxGridBagSizer* _video_grid; + wxGridBagSizer* _audio_grid; wxStaticText* _name_label; wxTextCtrl* _name; wxStaticText* _dcp_name; wxCheckBox* _use_isdcf_name; + wxStaticText* _container_label; wxChoice* _container; wxStaticText* _container_size; wxButton* _edit_isdcf_button; wxButton* _copy_isdcf_name_button; + wxStaticText* _j2k_bandwidth_label; + wxStaticText* _mbits_label; wxSpinCtrl* _j2k_bandwidth; wxStaticText* _dcp_content_type_label; wxChoice* _dcp_content_type; + wxStaticText* _frame_rate_label; wxChoice* _frame_rate_choice; wxSpinCtrl* _frame_rate_spin; wxSizer* _frame_rate_sizer; + wxStaticText* _channels_label; wxChoice* _audio_channels; + wxStaticText* _processor_label; wxChoice* _audio_processor; wxButton* _show_audio; wxButton* _best_frame_rate; wxCheckBox* _three_d; + wxStaticText* _resolution_label; wxChoice* _resolution; wxStaticText* _standard_label; wxChoice* _standard; diff --git a/src/wx/video_panel.cc b/src/wx/video_panel.cc index dbba9e3b0..cc43d082b 100644 --- a/src/wx/video_panel.cc +++ b/src/wx/video_panel.cc @@ -208,14 +208,14 @@ VideoPanel::VideoPanel (ContentPanel* p) 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); @@ -245,20 +245,20 @@ VideoPanel::add_to_grid () _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) { + _fade_in_label->Show (full); + _fade_in->Show (full); + _fade_out_label->Show (full); + _fade_out->Show (full); + _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); + + if (full) { add_label_to_sizer (_grid, _fade_in_label, true, wxGBPosition (r, 0)); _grid->Add (_fade_in, wxGBPosition (r, 1), wxGBSpan (1, 3)); ++r; -- 2.30.2