From 5008f986d2d9d5891919d2db4de6268470a0ff7a Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 20 Jul 2018 00:16:15 +0100 Subject: caption -> subtitle. --- src/wx/caption_panel.cc | 24 ++++----- src/wx/caption_panel.h | 8 +-- src/wx/caption_view.cc | 133 ++++++++++++++++++++++++++++++++++++++++++++++++ src/wx/caption_view.h | 46 +++++++++++++++++ src/wx/subtitle_view.cc | 133 ------------------------------------------------ src/wx/subtitle_view.h | 46 ----------------- src/wx/wscript | 4 +- 7 files changed, 197 insertions(+), 197 deletions(-) create mode 100644 src/wx/caption_view.cc create mode 100644 src/wx/caption_view.h delete mode 100644 src/wx/subtitle_view.cc delete mode 100644 src/wx/subtitle_view.h (limited to 'src') diff --git a/src/wx/caption_panel.cc b/src/wx/caption_panel.cc index c9ae97767..ca341167d 100644 --- a/src/wx/caption_panel.cc +++ b/src/wx/caption_panel.cc @@ -21,7 +21,7 @@ #include "caption_panel.h" #include "film_editor.h" #include "wx_util.h" -#include "subtitle_view.h" +#include "caption_view.h" #include "content_panel.h" #include "fonts_dialog.h" #include "caption_appearance_dialog.h" @@ -45,7 +45,7 @@ using boost::dynamic_pointer_cast; CaptionPanel::CaptionPanel (ContentPanel* p) : ContentSubPanel (p, _("Captions")) - , _subtitle_view (0) + , _caption_view (0) , _fonts_dialog (0) { wxBoxSizer* reference_sizer = new wxBoxSizer (wxVERTICAL); @@ -144,8 +144,8 @@ CaptionPanel::CaptionPanel (ContentPanel* p) { wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); - _subtitle_view_button = new wxButton (this, wxID_ANY, _("View...")); - s->Add (_subtitle_view_button, 1, wxALL, DCPOMATIC_SIZER_GAP); + _caption_view_button = new wxButton (this, wxID_ANY, _("View...")); + s->Add (_caption_view_button, 1, wxALL, DCPOMATIC_SIZER_GAP); _fonts_dialog_button = new wxButton (this, wxID_ANY, _("Fonts...")); s->Add (_fonts_dialog_button, 1, wxALL, DCPOMATIC_SIZER_GAP); _appearance_dialog_button = new wxButton (this, wxID_ANY, _("Appearance...")); @@ -172,7 +172,7 @@ CaptionPanel::CaptionPanel (ContentPanel* p) _line_spacing->Bind (wxEVT_SPINCTRL, boost::bind (&CaptionPanel::line_spacing_changed, this)); _language->Bind (wxEVT_TEXT, boost::bind (&CaptionPanel::language_changed, this)); _stream->Bind (wxEVT_CHOICE, boost::bind (&CaptionPanel::stream_changed, this)); - _subtitle_view_button->Bind (wxEVT_BUTTON, boost::bind (&CaptionPanel::subtitle_view_clicked, this)); + _caption_view_button->Bind (wxEVT_BUTTON, boost::bind (&CaptionPanel::caption_view_clicked, this)); _fonts_dialog_button->Bind (wxEVT_BUTTON, boost::bind (&CaptionPanel::fonts_dialog_clicked, this)); _appearance_dialog_button->Bind (wxEVT_BUTTON, boost::bind (&CaptionPanel::appearance_dialog_clicked, this)); } @@ -342,7 +342,7 @@ CaptionPanel::setup_sensitivity () _line_spacing->Enable (!reference && use); _language->Enable (!reference && any_subs > 0 && use); _stream->Enable (!reference && ffmpeg_subs == 1); - _subtitle_view_button->Enable (!reference); + _caption_view_button->Enable (!reference); _fonts_dialog_button->Enable (!reference); _appearance_dialog_button->Enable (!reference && any_subs > 0 && use); } @@ -436,11 +436,11 @@ CaptionPanel::content_selection_changed () } void -CaptionPanel::subtitle_view_clicked () +CaptionPanel::caption_view_clicked () { - if (_subtitle_view) { - _subtitle_view->Destroy (); - _subtitle_view = 0; + if (_caption_view) { + _caption_view->Destroy (); + _caption_view = 0; } ContentList c = _parent->selected_caption (); @@ -449,8 +449,8 @@ CaptionPanel::subtitle_view_clicked () shared_ptr decoder = decoder_factory (c.front(), _parent->film()->log(), false); if (decoder) { - _subtitle_view = new SubtitleView (this, _parent->film(), c.front(), decoder, _parent->film_viewer()); - _subtitle_view->Show (); + _caption_view = new CaptionView (this, _parent->film(), c.front(), decoder, _parent->film_viewer()); + _caption_view->Show (); } } diff --git a/src/wx/caption_panel.h b/src/wx/caption_panel.h index 1e7242fcb..38501e4d4 100644 --- a/src/wx/caption_panel.h +++ b/src/wx/caption_panel.h @@ -22,7 +22,7 @@ class wxCheckBox; class wxSpinCtrl; -class SubtitleView; +class CaptionView; class FontsDialog; class CaptionPanel : public ContentSubPanel @@ -45,7 +45,7 @@ private: void line_spacing_changed (); void language_changed (); void stream_changed (); - void subtitle_view_clicked (); + void caption_view_clicked (); void fonts_dialog_clicked (); void reference_clicked (); void appearance_dialog_clicked (); @@ -64,8 +64,8 @@ private: wxSpinCtrl* _line_spacing; wxTextCtrl* _language; wxChoice* _stream; - wxButton* _subtitle_view_button; - SubtitleView* _subtitle_view; + wxButton* _caption_view_button; + CaptionView* _caption_view; wxButton* _fonts_dialog_button; FontsDialog* _fonts_dialog; wxButton* _appearance_dialog_button; diff --git a/src/wx/caption_view.cc b/src/wx/caption_view.cc new file mode 100644 index 000000000..c57f9161e --- /dev/null +++ b/src/wx/caption_view.cc @@ -0,0 +1,133 @@ +/* + Copyright (C) 2014-2018 Carl Hetherington + + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DCP-o-matic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DCP-o-matic. If not, see . + +*/ + +#include "lib/text_caption_file_decoder.h" +#include "lib/content_caption.h" +#include "lib/video_decoder.h" +#include "lib/audio_decoder.h" +#include "lib/film.h" +#include "lib/config.h" +#include "lib/text_caption_file_content.h" +#include "lib/caption_decoder.h" +#include "caption_view.h" +#include "film_viewer.h" +#include "wx_util.h" + +using std::list; +using boost::shared_ptr; +using boost::bind; +using boost::dynamic_pointer_cast; + +CaptionView::CaptionView (wxWindow* parent, shared_ptr film, shared_ptr content, shared_ptr decoder, FilmViewer* viewer) + : wxDialog (parent, wxID_ANY, _("Captions"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) + , _content (content) + , _film_viewer (viewer) +{ + _list = new wxListCtrl (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT | wxLC_SINGLE_SEL); + + { + wxListItem ip; + ip.SetId (0); + ip.SetText (_("Start")); + ip.SetWidth (100); + _list->InsertColumn (0, ip); + } + + { + wxListItem ip; + ip.SetId (1); + ip.SetText (_("End")); + ip.SetWidth (100); + _list->InsertColumn (1, ip); + } + + { + wxListItem ip; + ip.SetId (2); + ip.SetText (_("Caption")); + ip.SetWidth (640); + _list->InsertColumn (2, ip); + } + + wxBoxSizer* sizer = new wxBoxSizer (wxVERTICAL); + sizer->Add (_list, 1, wxEXPAND | wxALL, DCPOMATIC_SIZER_X_GAP); + + _list->Bind (wxEVT_LIST_ITEM_SELECTED, boost::bind (&CaptionView::subtitle_selected, this, _1)); + + wxSizer* buttons = CreateSeparatedButtonSizer (wxOK); + if (buttons) { + sizer->Add (buttons, wxSizerFlags().Expand().DoubleBorder()); + } + + if (decoder->video) { + decoder->video->set_ignore (true); + } + if (decoder->audio) { + decoder->audio->set_ignore (true); + } + + _subs = 0; + _frc = film->active_frame_rate_change (content->position()); + decoder->caption->PlainStart.connect (bind (&CaptionView::data_start, this, _1)); + decoder->caption->Stop.connect (bind (&CaptionView::data_stop, this, _1)); + while (!decoder->pass ()) {} + SetSizerAndFit (sizer); +} + +void +CaptionView::data_start (ContentTextCaption cts) +{ + BOOST_FOREACH (dcp::SubtitleString const & i, cts.subs) { + wxListItem list_item; + list_item.SetId (_subs); + _list->InsertItem (list_item); + _list->SetItem (_subs, 0, std_to_wx (cts.from().timecode (_frc->source))); + _list->SetItem (_subs, 2, std_to_wx (i.text ())); + _start_times.push_back (cts.from ()); + ++_subs; + } + + _last_count = cts.subs.size (); +} + +void +CaptionView::data_stop (ContentTime time) +{ + if (!_last_count) { + return; + } + + for (int i = _subs - *_last_count; i < _subs; ++i) { + _list->SetItem (i, 1, std_to_wx (time.timecode (_frc->source))); + } +} + +void +CaptionView::subtitle_selected (wxListEvent& ev) +{ + if (!Config::instance()->jump_to_selected ()) { + return; + } + + DCPOMATIC_ASSERT (ev.GetIndex() < int(_start_times.size())); + shared_ptr locked = _content.lock (); + DCPOMATIC_ASSERT (locked); + _film_viewer->set_position (locked, _start_times[ev.GetIndex()]); +} diff --git a/src/wx/caption_view.h b/src/wx/caption_view.h new file mode 100644 index 000000000..34fec1905 --- /dev/null +++ b/src/wx/caption_view.h @@ -0,0 +1,46 @@ +/* + Copyright (C) 2014-2018 Carl Hetherington + + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DCP-o-matic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DCP-o-matic. If not, see . + +*/ + +#include "lib/content_caption.h" +#include +#include +#include + +class Decoder; +class FilmViewer; + +class CaptionView : public wxDialog +{ +public: + CaptionView (wxWindow *, boost::shared_ptr, boost::shared_ptr content, boost::shared_ptr, FilmViewer* viewer); + +private: + void data_start (ContentTextCaption cts); + void data_stop (ContentTime time); + void subtitle_selected (wxListEvent &); + + wxListCtrl* _list; + int _subs; + boost::optional _frc; + boost::optional _last_count; + std::vector _start_times; + boost::weak_ptr _content; + FilmViewer* _film_viewer; +}; diff --git a/src/wx/subtitle_view.cc b/src/wx/subtitle_view.cc deleted file mode 100644 index 6d34a93db..000000000 --- a/src/wx/subtitle_view.cc +++ /dev/null @@ -1,133 +0,0 @@ -/* - Copyright (C) 2014-2018 Carl Hetherington - - This file is part of DCP-o-matic. - - DCP-o-matic is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - DCP-o-matic is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with DCP-o-matic. If not, see . - -*/ - -#include "lib/text_caption_file_decoder.h" -#include "lib/content_caption.h" -#include "lib/video_decoder.h" -#include "lib/audio_decoder.h" -#include "lib/film.h" -#include "lib/config.h" -#include "lib/text_caption_file_content.h" -#include "lib/caption_decoder.h" -#include "subtitle_view.h" -#include "film_viewer.h" -#include "wx_util.h" - -using std::list; -using boost::shared_ptr; -using boost::bind; -using boost::dynamic_pointer_cast; - -SubtitleView::SubtitleView (wxWindow* parent, shared_ptr film, shared_ptr content, shared_ptr decoder, FilmViewer* viewer) - : wxDialog (parent, wxID_ANY, _("Subtitles"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) - , _content (content) - , _film_viewer (viewer) -{ - _list = new wxListCtrl (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT | wxLC_SINGLE_SEL); - - { - wxListItem ip; - ip.SetId (0); - ip.SetText (_("Start")); - ip.SetWidth (100); - _list->InsertColumn (0, ip); - } - - { - wxListItem ip; - ip.SetId (1); - ip.SetText (_("End")); - ip.SetWidth (100); - _list->InsertColumn (1, ip); - } - - { - wxListItem ip; - ip.SetId (2); - ip.SetText (_("Subtitle")); - ip.SetWidth (640); - _list->InsertColumn (2, ip); - } - - wxBoxSizer* sizer = new wxBoxSizer (wxVERTICAL); - sizer->Add (_list, 1, wxEXPAND | wxALL, DCPOMATIC_SIZER_X_GAP); - - _list->Bind (wxEVT_LIST_ITEM_SELECTED, boost::bind (&SubtitleView::subtitle_selected, this, _1)); - - wxSizer* buttons = CreateSeparatedButtonSizer (wxOK); - if (buttons) { - sizer->Add (buttons, wxSizerFlags().Expand().DoubleBorder()); - } - - if (decoder->video) { - decoder->video->set_ignore (true); - } - if (decoder->audio) { - decoder->audio->set_ignore (true); - } - - _subs = 0; - _frc = film->active_frame_rate_change (content->position()); - decoder->caption->PlainStart.connect (bind (&SubtitleView::data_start, this, _1)); - decoder->caption->Stop.connect (bind (&SubtitleView::data_stop, this, _1)); - while (!decoder->pass ()) {} - SetSizerAndFit (sizer); -} - -void -SubtitleView::data_start (ContentTextCaption cts) -{ - BOOST_FOREACH (dcp::SubtitleString const & i, cts.subs) { - wxListItem list_item; - list_item.SetId (_subs); - _list->InsertItem (list_item); - _list->SetItem (_subs, 0, std_to_wx (cts.from().timecode (_frc->source))); - _list->SetItem (_subs, 2, std_to_wx (i.text ())); - _start_times.push_back (cts.from ()); - ++_subs; - } - - _last_count = cts.subs.size (); -} - -void -SubtitleView::data_stop (ContentTime time) -{ - if (!_last_count) { - return; - } - - for (int i = _subs - *_last_count; i < _subs; ++i) { - _list->SetItem (i, 1, std_to_wx (time.timecode (_frc->source))); - } -} - -void -SubtitleView::subtitle_selected (wxListEvent& ev) -{ - if (!Config::instance()->jump_to_selected ()) { - return; - } - - DCPOMATIC_ASSERT (ev.GetIndex() < int(_start_times.size())); - shared_ptr locked = _content.lock (); - DCPOMATIC_ASSERT (locked); - _film_viewer->set_position (locked, _start_times[ev.GetIndex()]); -} diff --git a/src/wx/subtitle_view.h b/src/wx/subtitle_view.h deleted file mode 100644 index 445f646aa..000000000 --- a/src/wx/subtitle_view.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - Copyright (C) 2014-2018 Carl Hetherington - - This file is part of DCP-o-matic. - - DCP-o-matic is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - DCP-o-matic is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with DCP-o-matic. If not, see . - -*/ - -#include "lib/content_caption.h" -#include -#include -#include - -class Decoder; -class FilmViewer; - -class SubtitleView : public wxDialog -{ -public: - SubtitleView (wxWindow *, boost::shared_ptr, boost::shared_ptr content, boost::shared_ptr, FilmViewer* viewer); - -private: - void data_start (ContentTextCaption cts); - void data_stop (ContentTime time); - void subtitle_selected (wxListEvent &); - - wxListCtrl* _list; - int _subs; - boost::optional _frc; - boost::optional _last_count; - std::vector _start_times; - boost::weak_ptr _content; - FilmViewer* _film_viewer; -}; diff --git a/src/wx/wscript b/src/wx/wscript index b89ad5c49..ec75bd99c 100644 --- a/src/wx/wscript +++ b/src/wx/wscript @@ -1,5 +1,5 @@ # -# Copyright (C) 2012-2015 Carl Hetherington +# Copyright (C) 2012-2018 Carl Hetherington # # This file is part of DCP-o-matic. # @@ -34,6 +34,7 @@ sources = """ batch_job_view.cc caption_appearance_dialog.cc caption_panel.cc + caption_view.cc cinema_dialog.cc colour_conversion_editor.cc config_dialog.cc @@ -97,7 +98,6 @@ sources = """ self_dkdm_dialog.cc server_dialog.cc servers_list_dialog.cc - subtitle_view.cc system_font_dialog.cc table_dialog.cc templates_dialog.cc -- cgit v1.2.3