#include "audio_panel.h"
#include "content_panel.h"
+#include "content_panel.h"
+#include "cucumber_bridge.h"
+#include "cucumber_registry.h"
#include "dcpomatic_button.h"
#include "dir_dialog.h"
#include "file_dialog.h"
#include "timeline_dialog.h"
#include "timing_panel.h"
#include "video_panel.h"
+#include "video_panel.h"
+#include "wx_util.h"
#include "wx_util.h"
#include "lib/audio_content.h"
#include "lib/case_insensitive_sorter.h"
}
+static
+wxString
+text_for_content(shared_ptr<Content> content, bool& alert)
+{
+ bool const valid = content->paths_valid();
+
+ auto dcp = dynamic_pointer_cast<DCPContent>(content);
+ bool const needs_kdm = dcp && dcp->needs_kdm();
+ bool const needs_assets = dcp && dcp->needs_assets();
+
+ auto s = std_to_wx(content->summary());
+
+ if (!valid) {
+ s = _("MISSING: ") + s;
+ }
+
+ if (needs_kdm) {
+ s = _("NEEDS KDM: ") + s;
+ }
+
+ if (needs_assets) {
+ s = _("NEEDS OV: ") + s;
+ }
+
+ alert = !valid || needs_kdm || needs_assets;
+
+ return s;
+}
+
+
void
ContentPanel::setup ()
{
vector<ContentListCtrl::Item> items;
for (auto i: content) {
- bool const valid = i->paths_valid ();
-
- auto dcp = dynamic_pointer_cast<DCPContent> (i);
- bool const needs_kdm = dcp && dcp->needs_kdm ();
- bool const needs_assets = dcp && dcp->needs_assets ();
-
- auto s = std_to_wx (i->summary ());
-
- if (!valid) {
- s = _("MISSING: ") + s;
- }
-
- if (needs_kdm) {
- s = _("NEEDS KDM: ") + s;
+ int const t = _content->GetItemCount ();
+ bool alert = false;
+ wxString const s = text_for_content(i, alert);
+ items.push_back({s, i, alert});
+
+ wxListItem item;
+ item.SetId (t);
+ item.SetText (s);
+ item.SetData (i.get ());
+ _content->InsertItem (item);
+
+ if (i.get() == selected_content) {
+ _content->SetItemState (t, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
}
- if (needs_assets) {
- s = _("NEEDS OV: ") + s;
+ if (alert) {
+ _content->SetItemTextColour (t, *wxRED);
}
-
- items.push_back({s, i, !valid || needs_kdm || needs_assets});
}
_content->set(items);
{
return _splitter;
}
+
+
+void
+ContentPanel::cucumber_add_content_file (string filename)
+{
+ list<boost::filesystem::path> path_list;
+ path_list.push_back (filename);
+ add_files (path_list);
+}
+
+
+/** This may not be called from the GUI thread */
+std::string
+ContentPanel::cucumber_get_content_list ()
+{
+ /* The playlist method that we end up calling has a mutex, so this should be ok */
+ std::string s;
+ BOOST_FOREACH (shared_ptr<Content> i, _film->content()) {
+ bool alert;
+ s += wx_to_std (text_for_content(i, alert)) + "\n";
+ }
+ return s;
+}