std::shared_ptr
[dcpomatic.git] / src / wx / controls.cc
index 022ebfe29552df64e2c4d28296ee1e590296c5ae..5364e16148333364ecbc5851b2a16cc1fc165782 100644 (file)
@@ -49,11 +49,15 @@ using std::cout;
 using std::make_pair;
 using std::exception;
 using boost::optional;
-using boost::shared_ptr;
-using boost::weak_ptr;
-using boost::dynamic_pointer_cast;
+using std::shared_ptr;
+using std::weak_ptr;
+using std::dynamic_pointer_cast;
+#if BOOST_VERSION >= 106100
+using namespace boost::placeholders;
+#endif
 using namespace dcpomatic;
 
+
 Controls::Controls (wxWindow* parent, shared_ptr<FilmViewer> viewer, bool editor_controls)
        : wxPanel (parent)
        , _slider (new wxSlider (this, wxID_ANY, 0, 0, 4096))
@@ -93,10 +97,10 @@ Controls::Controls (wxWindow* parent, shared_ptr<FilmViewer> viewer, bool editor
        time_sizer->Add (_frame_number, 0, wxEXPAND);
        time_sizer->Add (_timecode, 0, wxEXPAND);
 
-       h_sizer->Add (_rewind_button, 0, wxALL, 2);
+       h_sizer->Add (_rewind_button, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
        h_sizer->Add (time_sizer, 0, wxEXPAND);
-       h_sizer->Add (_back_button, 0, wxALL, 2);
-       h_sizer->Add (_forward_button, 0, wxALL, 2);
+       h_sizer->Add (_back_button, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
+       h_sizer->Add (_forward_button, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
 
        _button_sizer = new wxBoxSizer (wxHORIZONTAL);
        h_sizer->Add (_button_sizer, 0, wxEXPAND);
@@ -105,10 +109,17 @@ Controls::Controls (wxWindow* parent, shared_ptr<FilmViewer> viewer, bool editor
 
        _v_sizer->Add (h_sizer, 0, wxEXPAND | wxALL, 6);
 
+#ifdef __WXGTK3__
+       _frame_number->SetMinSize (wxSize(100, -1));
+       _rewind_button->SetMinSize (wxSize(48, -1));
+       _back_button->SetMinSize (wxSize(48, -1));
+       _forward_button->SetMinSize (wxSize(48, -1));
+#else
        _frame_number->SetMinSize (wxSize (84, -1));
        _rewind_button->SetMinSize (wxSize (32, -1));
        _back_button->SetMinSize (wxSize (32, -1));
        _forward_button->SetMinSize (wxSize (32, -1));
+#endif
 
        if (_eye) {
                _eye->Bind (wxEVT_CHOICE, boost::bind (&Controls::eye_changed, this));
@@ -252,15 +263,15 @@ void
 Controls::update_position_label ()
 {
        if (!_film) {
-               _frame_number->SetLabel ("0");
-               _timecode->SetLabel ("0:0:0.0");
+               checked_set (_frame_number, wxT("0"));
+               checked_set (_timecode, wxT("0:0:0.0"));
                return;
        }
 
        double const fps = _film->video_frame_rate ();
        /* Count frame number from 1 ... not sure if this is the best idea */
-       _frame_number->SetLabel (wxString::Format (wxT("%ld"), lrint (_viewer->position().seconds() * fps) + 1));
-       _timecode->SetLabel (time_to_timecode (_viewer->position(), fps));
+       checked_set (_frame_number, wxString::Format (wxT("%ld"), lrint (_viewer->position().seconds() * fps) + 1));
+       checked_set (_timecode, time_to_timecode (_viewer->position(), fps));
 }
 
 void
@@ -355,7 +366,7 @@ Controls::timecode_clicked ()
 void
 Controls::frame_number_clicked ()
 {
-       PlayheadToFrameDialog* dialog = new PlayheadToFrameDialog (this, _film->video_frame_rate ());
+       PlayheadToFrameDialog* dialog = new PlayheadToFrameDialog (this, _viewer->position(), _film->video_frame_rate());
        if (dialog->ShowModal() == wxID_OK) {
                _viewer->seek (dialog->get(), true);
        }