summaryrefslogtreecommitdiff
path: root/src/wx/swaroop_controls.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-12-08 22:17:35 +0000
committerCarl Hetherington <cth@carlh.net>2018-12-08 22:17:35 +0000
commit2e0c94655f51ea9f01afea57f0c5f9d0f8efeb8d (patch)
tree2f70c2b76d1c97c786c3b205f19eb983951c8d02 /src/wx/swaroop_controls.cc
parent29436ead35fbb6041fd24115623cad7638693d8e (diff)
swaroop: better handling of missing content in SPLs.
Diffstat (limited to 'src/wx/swaroop_controls.cc')
-rw-r--r--src/wx/swaroop_controls.cc36
1 files changed, 27 insertions, 9 deletions
diff --git a/src/wx/swaroop_controls.cc b/src/wx/swaroop_controls.cc
index 2f51fed3f..99a19f5de 100644
--- a/src/wx/swaroop_controls.cc
+++ b/src/wx/swaroop_controls.cc
@@ -214,7 +214,11 @@ SwaroopControls::add_playlist_to_list (SPL spl)
wxListItem it;
it.SetId(N);
it.SetColumn(0);
- it.SetText (std_to_wx(spl.name()));
+ string t = spl.name();
+ if (spl.missing()) {
+ t += " (content missing)";
+ }
+ it.SetText (std_to_wx(t));
_spl_view->InsertItem (it);
}
@@ -248,17 +252,36 @@ SwaroopControls::update_playlist_directory ()
void
SwaroopControls::spl_selection_changed ()
{
- _current_spl_view->DeleteAllItems ();
-
long int selected = _spl_view->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
if (selected == -1) {
+ _current_spl_view->DeleteAllItems ();
+ _selected_playlist = boost::none;
+ return;
+ }
+
+ 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);
return;
}
- wxProgressDialog progress (_("DCP-o-matic"), _("Loading playlist"));
+ wxProgressDialog* progress = new wxProgressDialog (_("DCP-o-matic"), _("Loading playlist"));
shared_ptr<Film> film (new Film(optional<boost::filesystem::path>()));
+ BOOST_FOREACH (SPLEntry i, _playlists[selected].get()) {
+ film->add_content (i.content);
+ if (!progress->Pulse()) {
+ /* user pressed cancel */
+ _selected_playlist = boost::none;
+ _spl_view->SetItemState (selected, 0, wxLIST_STATE_SELECTED);
+ progress->Destroy ();
+ return;
+ }
+ }
+
+ progress->Destroy ();
+ _current_spl_view->DeleteAllItems ();
int N = 0;
BOOST_FOREACH (SPLEntry i, _playlists[selected].get()) {
@@ -267,12 +290,7 @@ SwaroopControls::spl_selection_changed ()
it.SetColumn (0);
it.SetText (std_to_wx(i.name));
_current_spl_view->InsertItem (it);
- film->add_content (i.content);
++N;
- if (!progress.Pulse()) {
- /* user pressed cancel */
- return;
- }
}
_selected_playlist = selected;