Add buttons to set trim from current playhead position (#372).
[dcpomatic.git] / src / wx / film_viewer.cc
index 0938d52a4cdd094af5cfe0255addf9376e5b52e1..bdbfc6c03ea780a6564a3a06b5c5e530ff81a2df 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012-2014 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -130,8 +130,7 @@ FilmViewer::set_film (shared_ptr<Film> f)
 
        _frame.reset ();
        
-       _slider->SetValue (0);
-       set_position_text ();
+       update_position ();
        
        if (!_film) {
                return;
@@ -144,6 +143,11 @@ FilmViewer::set_film (shared_ptr<Film> f)
                _film.reset ();
                return;
        }
+
+       /* Always burn in subtitles, even if we are set not to, otherwise we won't see them
+          in the preview.
+       */
+       _player->set_burn_subtitles (true);
        
        _film_connection = _film->Changed.connect (boost::bind (&FilmViewer::film_changed, this, _1));
 
@@ -208,7 +212,7 @@ FilmViewer::get (DCPTime p, bool accurate)
                _position = p;
        }
 
-       set_position_text ();
+       update_position ();
        refresh_panel ();
 
        _last_get_accurate = accurate;
@@ -218,18 +222,8 @@ void
 FilmViewer::timer ()
 {
        get (_position + DCPTime::from_frames (1, _film->video_frame_rate ()), true);
-
-       DCPTime const len = _film->length ();
-
-       if (len.get ()) {
-               int const new_slider_position = 4096 * _position.get() / len.get();
-               if (new_slider_position != _slider->GetValue()) {
-                       _slider->SetValue (new_slider_position);
-               }
-       }
 }
 
-
 void
 FilmViewer::paint_panel ()
 {
@@ -343,13 +337,23 @@ FilmViewer::check_play_state ()
 }
 
 void
-FilmViewer::set_position_text ()
+FilmViewer::update_position ()
 {
        if (!_film) {
+               _slider->SetValue (0);
                _frame_number->SetLabel ("0");
                _timecode->SetLabel ("0:0:0.0");
                return;
        }
+
+       DCPTime const len = _film->length ();
+
+       if (len.get ()) {
+               int const new_slider_position = 4096 * _position.get() / len.get();
+               if (new_slider_position != _slider->GetValue()) {
+                       _slider->SetValue (new_slider_position);
+               }
+       }
                
        double const fps = _film->video_frame_rate ();
        /* Count frame number from 1 ... not sure if this is the best idea */