From: Carl Hetherington Date: Fri, 14 Oct 2022 23:10:46 +0000 (+0200) Subject: Make ignore video option respect OK/Cancel. X-Git-Tag: v2.16.31~12^2~3 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=589a866b05ee0d9d27f83d37e10a1025c406951d Make ignore video option respect OK/Cancel. --- diff --git a/src/wx/content_advanced_dialog.cc b/src/wx/content_advanced_dialog.cc index 567a7c503..1a2a8b6a3 100644 --- a/src/wx/content_advanced_dialog.cc +++ b/src/wx/content_advanced_dialog.cc @@ -99,8 +99,8 @@ ContentAdvancedDialog::ContentAdvancedDialog (wxWindow* parent, shared_ptrAdd (_burnt_subtitle_language->sizer(), wxGBPosition(r, 1), wxGBSpan(1, 2), wxEXPAND); ++r; - auto ignore_video = new wxCheckBox (this, wxID_ANY, _("Ignore this content's video and use only audio, subtitles and closed captions")); - sizer->Add (ignore_video, wxGBPosition(r, 0), wxGBSpan(1, 3)); + _ignore_video = new wxCheckBox (this, wxID_ANY, _("Ignore this content's video and use only audio, subtitles and closed captions")); + sizer->Add(_ignore_video, wxGBPosition(r, 0), wxGBSpan(1, 3)); ++r; auto overall = new wxBoxSizer (wxVERTICAL); @@ -112,8 +112,8 @@ ContentAdvancedDialog::ContentAdvancedDialog (wxWindow* parent, shared_ptrEnable (static_cast(_content->video)); - ignore_video->SetValue (_content->video ? !content->video->use() : false); + _ignore_video->Enable(static_cast(_content->video)); + _ignore_video->SetValue(_content->video ? !content->video->use() : false); setup_filters (); bool const single_frame_image_content = dynamic_pointer_cast(_content) && _content->number_of_paths() == 1; @@ -128,7 +128,6 @@ ContentAdvancedDialog::ContentAdvancedDialog (wxWindow* parent, shared_ptrSetValue (_content->video && static_cast(_content->video->burnt_subtitle_language())); _burnt_subtitle_language->set (_content->video ? _content->video->burnt_subtitle_language() : boost::none); - ignore_video->Bind (wxEVT_CHECKBOX, bind(&ContentAdvancedDialog::ignore_video_changed, this, _1)); _filters_button->Bind (wxEVT_BUTTON, bind(&ContentAdvancedDialog::edit_filters, this)); _set_video_frame_rate->Bind (wxEVT_BUTTON, bind(&ContentAdvancedDialog::set_video_frame_rate, this)); _video_frame_rate->Bind (wxEVT_TEXT, boost::bind(&ContentAdvancedDialog::video_frame_rate_changed, this)); @@ -139,12 +138,10 @@ ContentAdvancedDialog::ContentAdvancedDialog (wxWindow* parent, shared_ptrvideo) { - _content->video->set_use (!ev.IsChecked()); - } + return _ignore_video->GetValue(); } diff --git a/src/wx/content_advanced_dialog.h b/src/wx/content_advanced_dialog.h index 1dd2b472d..b765fa9fb 100644 --- a/src/wx/content_advanced_dialog.h +++ b/src/wx/content_advanced_dialog.h @@ -37,8 +37,9 @@ class ContentAdvancedDialog : public wxDialog public: ContentAdvancedDialog (wxWindow* parent, std::shared_ptr content); + bool ignore_video() const; + private: - void ignore_video_changed (wxCommandEvent& ev); void edit_filters (); void filters_changed (std::vector filters); void setup_filters (); @@ -56,5 +57,6 @@ private: wxButton* _set_video_frame_rate; wxCheckBox* _burnt_subtitle; LanguageTagWidget* _burnt_subtitle_language; + wxCheckBox* _ignore_video; }; diff --git a/src/wx/content_menu.cc b/src/wx/content_menu.cc index 6c4864239..9ef674fd1 100644 --- a/src/wx/content_menu.cc +++ b/src/wx/content_menu.cc @@ -43,6 +43,7 @@ #include "lib/image_content.h" #include "lib/job_manager.h" #include "lib/playlist.h" +#include "lib/scope_guard.h" #include "lib/video_content.h" #include #include @@ -461,9 +462,19 @@ ContentMenu::properties () void ContentMenu::advanced () { - auto d = new ContentAdvancedDialog (_parent, _content.front()); - d->ShowModal (); - d->Destroy (); + DCPOMATIC_ASSERT(!_content.empty()); + + auto content = _content.front(); + auto dialog = new ContentAdvancedDialog(_parent, content); + ScopeGuard sg = [dialog]() { dialog->Destroy(); }; + + if (dialog->ShowModal() == wxID_CANCEL) { + return; + } + + if (content->video) { + content->video->set_use(!dialog->ignore_video()); + } }