Update content list when selected CPL changes in DCP content.
[dcpomatic.git] / src / wx / content_panel.cc
index 1d9f010bfda2d5808b55c60862cbf5a14fa8768b..ea1d507661ec96594a7f4726eb9df9b977b90b1d 100644 (file)
@@ -465,10 +465,29 @@ ContentPanel::set_selection (weak_ptr<Content> wc)
        }
 }
 
+void
+ContentPanel::set_selection (ContentList cl)
+{
+       ContentList content = _film->content ();
+       for (size_t i = 0; i < content.size(); ++i) {
+               if (find(cl.begin(), cl.end(), content[i]) != cl.end()) {
+                       _content->SetItemState (i, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
+               } else {
+                       _content->SetItemState (i, 0, wxLIST_STATE_SELECTED);
+               }
+       }
+}
+
 void
 ContentPanel::film_content_changed (int property)
 {
-       if (property == ContentProperty::PATH || property == DCPContentProperty::CAN_BE_PLAYED) {
+       if (
+               property == ContentProperty::PATH ||
+               property == DCPContentProperty::NEEDS_ASSETS ||
+               property == DCPContentProperty::NEEDS_KDM ||
+               property == DCPContentProperty::NAME
+               ) {
+
                setup ();
        }
 
@@ -501,7 +520,7 @@ ContentPanel::setup ()
                bool const needs_kdm = dcp && dcp->needs_kdm ();
                bool const needs_assets = dcp && dcp->needs_assets ();
 
-               string s = i->summary ();
+               wxString s = std_to_wx (i->summary ());
 
                if (!valid) {
                        s = _("MISSING: ") + s;
@@ -517,7 +536,7 @@ ContentPanel::setup ()
 
                wxListItem item;
                item.SetId (t);
-               item.SetText (std_to_wx (s));
+               item.SetText (s);
                item.SetData (i.get ());
                _content->InsertItem (item);