caption -> subtitle. v2.13.36
authorCarl Hetherington <cth@carlh.net>
Thu, 19 Jul 2018 23:16:15 +0000 (00:16 +0100)
committerCarl Hetherington <cth@carlh.net>
Thu, 19 Jul 2018 23:16:15 +0000 (00:16 +0100)
src/wx/caption_panel.cc
src/wx/caption_panel.h
src/wx/caption_view.cc [new file with mode: 0644]
src/wx/caption_view.h [new file with mode: 0644]
src/wx/subtitle_view.cc [deleted file]
src/wx/subtitle_view.h [deleted file]
src/wx/wscript

index c9ae977677c220e1c535d1744cad0eac3c5bca61..ca341167dc857e3d35c924696533d94fdf65eea2 100644 (file)
@@ -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 = 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 ();
        }
 }
 
index 1e7242fcb724d92ca17db4f541a5ab95a3325f91..38501e4d4301a46d87f333ca4d9af83cb527bb66 100644 (file)
@@ -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 (file)
index 0000000..c57f916
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+    Copyright (C) 2014-2018 Carl Hetherington <cth@carlh.net>
+
+    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 <http://www.gnu.org/licenses/>.
+
+*/
+
+#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> film, shared_ptr<Content> content, shared_ptr<Decoder> 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<Content> 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 (file)
index 0000000..34fec19
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+    Copyright (C) 2014-2018 Carl Hetherington <cth@carlh.net>
+
+    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 <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "lib/content_caption.h"
+#include <boost/shared_ptr.hpp>
+#include <wx/wx.h>
+#include <wx/listctrl.h>
+
+class Decoder;
+class FilmViewer;
+
+class CaptionView : public wxDialog
+{
+public:
+       CaptionView (wxWindow *, boost::shared_ptr<Film>, boost::shared_ptr<Content> content, boost::shared_ptr<Decoder>, FilmViewer* viewer);
+
+private:
+       void data_start (ContentTextCaption cts);
+       void data_stop (ContentTime time);
+       void subtitle_selected (wxListEvent &);
+
+       wxListCtrl* _list;
+       int _subs;
+       boost::optional<FrameRateChange> _frc;
+       boost::optional<int> _last_count;
+       std::vector<ContentTime> _start_times;
+       boost::weak_ptr<Content> _content;
+       FilmViewer* _film_viewer;
+};
diff --git a/src/wx/subtitle_view.cc b/src/wx/subtitle_view.cc
deleted file mode 100644 (file)
index 6d34a93..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
-    Copyright (C) 2014-2018 Carl Hetherington <cth@carlh.net>
-
-    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 <http://www.gnu.org/licenses/>.
-
-*/
-
-#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> film, shared_ptr<Content> content, shared_ptr<Decoder> 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<Content> 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 (file)
index 445f646..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-    Copyright (C) 2014-2018 Carl Hetherington <cth@carlh.net>
-
-    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 <http://www.gnu.org/licenses/>.
-
-*/
-
-#include "lib/content_caption.h"
-#include <boost/shared_ptr.hpp>
-#include <wx/wx.h>
-#include <wx/listctrl.h>
-
-class Decoder;
-class FilmViewer;
-
-class SubtitleView : public wxDialog
-{
-public:
-       SubtitleView (wxWindow *, boost::shared_ptr<Film>, boost::shared_ptr<Content> content, boost::shared_ptr<Decoder>, FilmViewer* viewer);
-
-private:
-       void data_start (ContentTextCaption cts);
-       void data_stop (ContentTime time);
-       void subtitle_selected (wxListEvent &);
-
-       wxListCtrl* _list;
-       int _subs;
-       boost::optional<FrameRateChange> _frc;
-       boost::optional<int> _last_count;
-       std::vector<ContentTime> _start_times;
-       boost::weak_ptr<Content> _content;
-       FilmViewer* _film_viewer;
-};
index b89ad5c49d8cdab547a5c811b72d135b3e115dd5..ec75bd99cf65bc83c11dfe9b7a375966a16fde0f 100644 (file)
@@ -1,5 +1,5 @@
 #
-#    Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
+#    Copyright (C) 2012-2018 Carl Hetherington <cth@carlh.net>
 #
 #    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