summaryrefslogtreecommitdiff
path: root/src/wx/swaroop_controls.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/wx/swaroop_controls.cc')
-rw-r--r--src/wx/swaroop_controls.cc25
1 files changed, 22 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<FilmViewer> 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 ();