X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fwx%2Fswaroop_controls.cc;h=5ce6c45fc7a637f6e6c1e99124d596f7698cb422;hb=2ecead272e146c78850e333fa408395d51fdd132;hp=925fcb5e720961c7121ff604127399726b504470;hpb=106bde1d2c9246fc62c8f37f560701abf0e80c51;p=dcpomatic.git diff --git a/src/wx/swaroop_controls.cc b/src/wx/swaroop_controls.cc index 925fcb5e7..5ce6c45fc 100644 --- a/src/wx/swaroop_controls.cc +++ b/src/wx/swaroop_controls.cc @@ -104,9 +104,6 @@ SwaroopControls::SwaroopControls (wxWindow* parent, shared_ptr viewe _v_sizer->Add (e_sizer, 1, wxEXPAND); - _log = new wxTextCtrl (this, wxID_ANY, wxT(""), wxDefaultPosition, wxSize(-1, 200), wxTE_READONLY | wxTE_MULTILINE); - _v_sizer->Add (_log, 0, wxALL | wxEXPAND, DCPOMATIC_SIZER_GAP); - _play_button->Bind (wxEVT_BUTTON, boost::bind(&SwaroopControls::play_clicked, this)); _pause_button->Bind (wxEVT_BUTTON, boost::bind(&SwaroopControls::pause_clicked, this)); _stop_button->Bind (wxEVT_BUTTON, boost::bind(&SwaroopControls::stop_clicked, this)); @@ -158,7 +155,8 @@ SwaroopControls::check_restart () void SwaroopControls::viewer_position_changed () { - if (!_selected_playlist || !_viewer->playing() || _viewer->position().get() % DCPTime::HZ) { + /* Write position every two minutes if we're playing */ + if (!_selected_playlist || !_viewer->playing() || _viewer->position().get() % (2 * 60 * DCPTime::HZ)) { return; } @@ -186,6 +184,7 @@ SwaroopControls::started () _viewer->set_background_image (false); } +/** Called when the viewer finishes a single piece of content, or it is explicitly stopped */ void SwaroopControls::stopped () { @@ -194,6 +193,17 @@ SwaroopControls::stopped () _pause_button->Enable (false); } +void +SwaroopControls::deselect_playlist () +{ + long int const selected = _spl_view->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + if (selected != -1) { + _selected_playlist = boost::none; + _spl_view->SetItemState (selected, 0, wxLIST_STATE_SELECTED); + } + ResetFilm (shared_ptr(new Film(optional()))); +} + void SwaroopControls::decrement_allowed_shows () { @@ -243,6 +253,7 @@ SwaroopControls::stop_clicked () } _viewer->set_background_image (true); decrement_allowed_shows (); + deselect_playlist (); } bool @@ -282,6 +293,11 @@ SwaroopControls::next_clicked () void SwaroopControls::log (wxString s) { + optional log = Config::instance()->player_activity_log_file(); + if (!log) { + return; + } + struct timeval time; gettimeofday (&time, 0); char buffer[64]; @@ -289,14 +305,10 @@ SwaroopControls::log (wxString s) struct tm* t = localtime (&sec); strftime (buffer, 64, "%c", t); wxString ts = std_to_wx(string(buffer)) + N_(": "); - _log->SetValue(_log->GetValue() + ts + s + "\n"); - - optional log = Config::instance()->player_activity_log_file(); - if (!log) { + FILE* f = fopen_boost (*log, "a"); + if (!f) { return; } - - FILE* f = fopen_boost (*log, "a"); fprintf (f, "%s%s\n", wx_to_std(ts).c_str(), wx_to_std(s).c_str()); fclose (f); } @@ -434,8 +446,7 @@ SwaroopControls::spl_selection_changed () if (_playlists[selected].missing()) { error_dialog (this, "This playlist cannot be loaded as some content is missing."); - _selected_playlist = boost::none; - _spl_view->SetItemState (selected, 0, wxLIST_STATE_SELECTED); + deselect_playlist (); return; } @@ -478,9 +489,8 @@ SwaroopControls::select_playlist (int selected, int position) } if (dcp->needs_kdm()) { /* We didn't get a KDM for this */ - error_dialog (this, "This playlist cannot be loaded as a KDM is missing."); - _selected_playlist = boost::none; - _spl_view->SetItemState (selected, 0, wxLIST_STATE_SELECTED); + error_dialog (this, "This playlist cannot be loaded as a KDM is missing or incorrect."); + deselect_playlist (); return; } } @@ -492,12 +502,13 @@ SwaroopControls::select_playlist (int selected, int position) ffmpeg->add_kdm (*kdm); ffmpeg->examine (_film, shared_ptr()); } catch (KDMError& e) { - error_dialog (this, "Could not load KDM."); + error_dialog (this, "This playlist cannot be loaded as a KDM is missing or incorrect."); + deselect_playlist (); + return; } } else { - error_dialog (this, "This playlist cannot be loaded as a KDM is missing."); - _selected_playlist = boost::none; - _spl_view->SetItemState (selected, 0, wxLIST_STATE_SELECTED); + error_dialog (this, "This playlist cannot be loaded as a KDM is missing or incorrect."); + deselect_playlist (); return; } } @@ -589,7 +600,8 @@ SwaroopControls::viewer_finished () _selected_playlist_position = 0; _viewer->set_background_image (true); ResetFilm (shared_ptr(new Film(optional()))); - stopped (); decrement_allowed_shows (); + _play_button->Enable (true); + _pause_button->Enable (false); } }