X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Ftext_view.cc;h=9b591b19161406408c88bef739a4c4323a1f91d0;hb=1f251f64efee1984e8ff662e44568a7619df7b2f;hp=583632dd0ae9d0cedd6de021b27c176f2dbe2184;hpb=df17bbd25da69fc38eb2dcd8b4a2531cf0bab0bc;p=dcpomatic.git diff --git a/src/wx/text_view.cc b/src/wx/text_view.cc index 583632dd0..9b591b191 100644 --- a/src/wx/text_view.cc +++ b/src/wx/text_view.cc @@ -18,6 +18,9 @@ */ +#include "text_view.h" +#include "film_viewer.h" +#include "wx_util.h" #include "lib/string_text_file_decoder.h" #include "lib/content_text.h" #include "lib/video_decoder.h" @@ -26,16 +29,16 @@ #include "lib/config.h" #include "lib/string_text_file_content.h" #include "lib/text_decoder.h" -#include "text_view.h" -#include "film_viewer.h" -#include "wx_util.h" using std::list; using boost::shared_ptr; +using boost::weak_ptr; using boost::bind; using boost::dynamic_pointer_cast; -TextView::TextView (wxWindow* parent, shared_ptr film, shared_ptr content, shared_ptr caption, shared_ptr decoder, FilmViewer* viewer) +TextView::TextView ( + wxWindow* parent, shared_ptr film, shared_ptr content, shared_ptr text, shared_ptr decoder, weak_ptr viewer + ) : wxDialog (parent, wxID_ANY, _("Captions"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) , _content (content) , _film_viewer (viewer) @@ -87,8 +90,8 @@ TextView::TextView (wxWindow* parent, shared_ptr film, shared_ptr _frc = film->active_frame_rate_change (content->position()); /* Find the decoder that is being used for our TextContent and attach to it */ - BOOST_FOREACH (shared_ptr i, decoder->caption) { - if (i->content() == caption) { + BOOST_FOREACH (shared_ptr i, decoder->text) { + if (i->content() == text) { i->PlainStart.connect (bind (&TextView::data_start, this, _1)); i->Stop.connect (bind (&TextView::data_stop, this, _1)); } @@ -133,7 +136,9 @@ TextView::subtitle_selected (wxListEvent& ev) } 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()]); + shared_ptr lc = _content.lock (); + DCPOMATIC_ASSERT (lc); + shared_ptr fv = _film_viewer.lock (); + DCPOMATIC_ASSERT (fv); + fv->seek (lc, _start_times[ev.GetIndex()], true); }