Tweak trim-to-end behaviour and button label.
[dcpomatic.git] / src / wx / timing_panel.cc
index c7268e8a5e71feb2c05e969f0dc215a95113a533..9bf4cacf70a5ceddd28fbb49907f47273c2891ed 100644 (file)
 #include "lib/dcp_content.h"
 #include "lib/ffmpeg_content.h"
 #include <dcp/locale_convert.h>
-#ifdef __WXGTK__
+#include "lib/warnings.h"
+#if defined(__WXGTK20__) && !defined(__WXGTK3__)
+#define TIMING_PANEL_ALIGNMENT_HACK 1
+DCPOMATIC_DISABLE_WARNINGS
 #include <gtk/gtk.h>
+DCPOMATIC_ENABLE_WARNINGS
 #endif
 #include <boost/foreach.hpp>
 #include <set>
@@ -50,6 +54,9 @@ using boost::shared_ptr;
 using boost::weak_ptr;
 using boost::dynamic_pointer_cast;
 using boost::optional;
+#if BOOST_VERSION >= 106100
+using namespace boost::placeholders;
+#endif
 using dcp::locale_convert;
 using namespace dcpomatic;
 
@@ -68,23 +75,23 @@ TimingPanel::TimingPanel (ContentPanel* p, weak_ptr<FilmViewer> viewer)
 
        //// TRANSLATORS: this is an abbreviation for "hours"
        _h_label = new StaticText (this, _("h"), wxDefaultPosition, size, wxALIGN_CENTRE_HORIZONTAL);
-#ifdef DCPOMATIC_LINUX
+#ifdef TIMING_PANEL_ALIGNMENT_HACK
        /* Hack to work around failure to centre text on GTK */
        gtk_label_set_line_wrap (GTK_LABEL(_h_label->GetHandle()), FALSE);
 #endif
        //// TRANSLATORS: this is an abbreviation for "minutes"
        _m_label = new StaticText (this, _("m"), wxDefaultPosition, size, wxALIGN_CENTRE_HORIZONTAL);
-#ifdef DCPOMATIC_LINUX
+#ifdef TIMING_PANEL_ALIGNMENT_HACK
        gtk_label_set_line_wrap (GTK_LABEL (_m_label->GetHandle()), FALSE);
 #endif
        //// TRANSLATORS: this is an abbreviation for "seconds"
        _s_label = new StaticText (this, _("s"), wxDefaultPosition, size, wxALIGN_CENTRE_HORIZONTAL);
-#ifdef DCPOMATIC_LINUX
+#ifdef TIMING_PANEL_ALIGNMENT_HACK
        gtk_label_set_line_wrap (GTK_LABEL(_s_label->GetHandle()), FALSE);
 #endif
        //// TRANSLATORS: this is an abbreviation for "frames"
        _f_label = new StaticText (this, _("f"), wxDefaultPosition, size, wxALIGN_CENTRE_HORIZONTAL);
-#ifdef DCPOMATIC_LINUX
+#ifdef TIMING_PANEL_ALIGNMENT_HACK
        gtk_label_set_line_wrap (GTK_LABEL(_f_label->GetHandle()), FALSE);
 #endif
 
@@ -98,7 +105,7 @@ TimingPanel::TimingPanel (ContentPanel* p, weak_ptr<FilmViewer> viewer)
        _trim_start_to_playhead = new Button (this, _("Trim up to current position"));
        _trim_end_label = create_label (this, _("Trim from end"), true);
        _trim_end = new Timecode<ContentTime> (this);
-       _trim_end_to_playhead = new Button (this, _("Trim after current position"));
+       _trim_end_to_playhead = new Button (this, _("Trim from current position to end"));
        _play_length_label = create_label (this, _("Play length"), true);
        _play_length = new Timecode<DCPTime> (this);
 
@@ -556,11 +563,11 @@ TimingPanel::trim_start_to_playhead_clicked ()
                }
        }
 
+       fv->set_coalesce_player_changes (false);
+
        if (new_ph) {
                fv->seek (new_ph.get(), true);
        }
-
-       fv->set_coalesce_player_changes (false);
 }
 
 void
@@ -576,7 +583,7 @@ TimingPanel::trim_end_to_playhead_clicked ()
        BOOST_FOREACH (shared_ptr<Content> i, _parent->selected ()) {
                if (i->position() < ph && ph < i->end(film)) {
                        FrameRateChange const frc = film->active_frame_rate_change (i->position ());
-                       i->set_trim_end (ContentTime(i->position() + i->full_length(film) - ph - DCPTime::from_frames(1, frc.dcp), frc) - i->trim_start());
+                       i->set_trim_end (ContentTime(i->position() + i->full_length(film) - ph, frc) - i->trim_start());
                }
        }
 }