From c7ae521e655354dd2f27766ee23766a0e698a89c Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 13 Dec 2018 21:51:40 +0000 Subject: [PATCH] swaroop: skippable -> disable next/previous. --- src/wx/swaroop_controls.cc | 25 ++++++++++++++++++++++--- src/wx/swaroop_controls.h | 3 +++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/wx/swaroop_controls.cc b/src/wx/swaroop_controls.cc index 6a7cde4e7..6a40e1fc0 100644 --- a/src/wx/swaroop_controls.cc +++ b/src/wx/swaroop_controls.cc @@ -44,6 +44,7 @@ SwaroopControls::SwaroopControls (wxWindow* parent, shared_ptr viewe , _next_button (new Button(this, "Next")) , _previous_button (new Button(this, "Previous")) , _current_disable_timeline (false) + , _current_disable_next_previous (false) { _button_sizer->Add (_play_button, 0, wxEXPAND); _button_sizer->Add (_pause_button, 0, wxEXPAND); @@ -144,6 +145,8 @@ SwaroopControls::setup_sensitivity () _pause_button->Enable (_viewer->playing()); _slider->Enable (!_current_disable_timeline); _spl_view->Enable (!_viewer->playing()); + _next_button->Enable (!_current_disable_next_previous && can_do_next()); + _previous_button->Enable (!_current_disable_next_previous && can_do_previous()); } void @@ -159,10 +162,16 @@ SwaroopControls::stop_clicked () _viewer->seek (DCPTime(), true); } +bool +SwaroopControls::can_do_previous () +{ + return _selected_playlist && (_selected_playlist_position - 1) >= 0; +} + void SwaroopControls::previous_clicked () { - if (!_selected_playlist || (_selected_playlist_position - 1) < 0) { + if (!can_do_previous ()) { return; } @@ -170,10 +179,16 @@ SwaroopControls::previous_clicked () update_current_content (); } +bool +SwaroopControls::can_do_next () +{ + return _selected_playlist && (_selected_playlist_position + 1) < int(_playlists[*_selected_playlist].get().size()); +} + void SwaroopControls::next_clicked () { - if (!_selected_playlist || (_selected_playlist_position + 1) >= int(_playlists[*_selected_playlist].get().size())) { + if (!can_do_next ()) { return; } @@ -311,7 +326,11 @@ SwaroopControls::update_current_content () DCPOMATIC_ASSERT (_selected_playlist); _viewer->stop (); - _current_disable_timeline = _playlists[*_selected_playlist].get()[_selected_playlist_position].disable_timeline; + + SPLEntry const & e = _playlists[*_selected_playlist].get()[_selected_playlist_position]; + _current_disable_timeline = e.disable_timeline; + _current_disable_next_previous = e.skippable; + setup_sensitivity (); reset_film (); _viewer->start (); diff --git a/src/wx/swaroop_controls.h b/src/wx/swaroop_controls.h index 91fad1537..2d0d14a67 100644 --- a/src/wx/swaroop_controls.h +++ b/src/wx/swaroop_controls.h @@ -51,6 +51,8 @@ private: void viewer_finished (); void reset_film (); void update_current_content (); + bool can_do_previous (); + bool can_do_next (); wxButton* _play_button; wxButton* _pause_button; @@ -66,6 +68,7 @@ private: wxTextCtrl* _log; bool _current_disable_timeline; + bool _current_disable_next_previous; std::vector _playlists; boost::optional _selected_playlist; -- 2.30.2