Updated nl_NL translation from Rob van Nieuwkerk.
[dcpomatic.git] / src / wx / playlist_controls.cc
index 56ff5f40d1ce7235abd83083dea1b8c3f38311f4..129e0ceca407eee9990cac7a69e092552c8bb90e 100644 (file)
@@ -109,7 +109,7 @@ PlaylistControls::PlaylistControls (wxWindow* parent, shared_ptr<FilmViewer> vie
        _previous_button->Bind (wxEVT_BUTTON, boost::bind(&PlaylistControls::previous_clicked,  this));
        _spl_view->Bind        (wxEVT_LIST_ITEM_SELECTED,   boost::bind(&PlaylistControls::spl_selection_changed, this));
        _spl_view->Bind        (wxEVT_LIST_ITEM_DESELECTED, boost::bind(&PlaylistControls::spl_selection_changed, this));
-       _viewer->Finished.connect (boost::bind(&PlaylistControls::viewer_finished, this));
+       viewer->Finished.connect (boost::bind(&PlaylistControls::viewer_finished, this));
        _refresh_spl_view->Bind (wxEVT_BUTTON, boost::bind(&PlaylistControls::update_playlist_directory, this));
        _refresh_content_view->Bind (wxEVT_BUTTON, boost::bind(&ContentView::update, _content_view));
 
@@ -148,18 +148,26 @@ PlaylistControls::deselect_playlist ()
 void
 PlaylistControls::play_clicked ()
 {
-       _viewer->start ();
+       auto viewer = _viewer.lock ();
+       if (viewer) {
+               viewer->start ();
+       }
 }
 
 void
 PlaylistControls::setup_sensitivity ()
 {
+       auto viewer = _viewer.lock ();
+       if (!viewer) {
+               return;
+       }
+
        Controls::setup_sensitivity ();
        bool const active_job = _active_job && *_active_job != "examine_content";
        bool const c = _film && !_film->content().empty() && !active_job;
-       _play_button->Enable (c && !_viewer->playing());
-       _pause_button->Enable (_viewer->playing());
-       _spl_view->Enable (!_viewer->playing());
+       _play_button->Enable (c && !viewer->playing());
+       _pause_button->Enable (viewer->playing());
+       _spl_view->Enable (!viewer->playing());
        _next_button->Enable (can_do_next());
        _previous_button->Enable (can_do_previous());
 }
@@ -167,14 +175,22 @@ PlaylistControls::setup_sensitivity ()
 void
 PlaylistControls::pause_clicked ()
 {
-       _viewer->stop ();
+       auto viewer = _viewer.lock ();
+       if (viewer) {
+               viewer->stop ();
+       }
 }
 
 void
 PlaylistControls::stop_clicked ()
 {
-       _viewer->stop ();
-       _viewer->seek (DCPTime(), true);
+       auto viewer = _viewer.lock ();
+       if (!viewer) {
+               return;
+       }
+
+       viewer->stop ();
+       viewer->seek (DCPTime(), true);
        if (_selected_playlist) {
                _selected_playlist_position = 0;
                update_current_content ();
@@ -288,7 +304,7 @@ PlaylistControls::update_playlist_directory ()
        }
 
        sort (_playlists.begin(), _playlists.end(), SPLComparator());
-       BOOST_FOREACH (SPL i, _playlists) {
+       for (auto i: _playlists) {
                add_playlist_to_list (i);
        }
 
@@ -349,7 +365,7 @@ PlaylistControls::select_playlist (int selected, int position)
 
        wxProgressDialog dialog (_("DCP-o-matic"), "Loading playlist and KDMs");
 
-       BOOST_FOREACH (SPLEntry const & i, _playlists[selected].get()) {
+       for (auto const& i: _playlists[selected].get()) {
                dialog.Pulse ();
                shared_ptr<DCPContent> dcp = dynamic_pointer_cast<DCPContent> (i.content);
                if (dcp && dcp->needs_kdm()) {
@@ -375,7 +391,7 @@ PlaylistControls::select_playlist (int selected, int position)
        _current_spl_view->DeleteAllItems ();
 
        int N = 0;
-       BOOST_FOREACH (SPLEntry i, _playlists[selected].get()) {
+       for (auto i: _playlists[selected].get()) {
                wxListItem it;
                it.SetId (N);
                it.SetColumn (0);
@@ -436,7 +452,8 @@ PlaylistControls::update_current_content ()
 void
 PlaylistControls::viewer_finished ()
 {
-       if (!_selected_playlist) {
+       auto viewer = _viewer.lock ();
+       if (!_selected_playlist || !viewer) {
                return;
        }
 
@@ -444,7 +461,7 @@ PlaylistControls::viewer_finished ()
        if (_selected_playlist_position < int(_playlists[*_selected_playlist].get().size())) {
                /* Next piece of content on the SPL */
                update_current_content ();
-               _viewer->start ();
+               viewer->start ();
        } else {
                /* Finished the whole SPL */
                _selected_playlist_position = 0;