+
+void
+Controls::show_dcp_directory (bool s)
+{
+ _dcp_directory->Show (s);
+}
+
+void
+Controls::update_dcp_directory ()
+{
+ using namespace boost::filesystem;
+
+ _dcp_directory->DeleteAllItems ();
+ _dcp_directories.clear ();
+ optional<path> dir = Config::instance()->player_dcp_directory();
+ if (!dir) {
+ return;
+ }
+
+ for (directory_iterator i = directory_iterator(*dir); i != directory_iterator(); ++i) {
+ try {
+ if (is_directory(*i) && (is_regular_file(*i / "ASSETMAP") || is_regular_file(*i / "ASSETMAP.xml"))) {
+ string const x = i->path().string().substr(dir->string().length() + 1);
+ _dcp_directory->InsertItem(_dcp_directory->GetItemCount(), std_to_wx(x));
+ _dcp_directories.push_back(x);
+ }
+ } catch (boost::filesystem::filesystem_error& e) {
+ /* Never mind */
+ }
+ }
+}
+
+void
+Controls::dcp_directory_selected ()
+{
+ long int s = _dcp_directory->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
+ if (s == -1) {
+ return;
+ }
+
+ DCPOMATIC_ASSERT (s < int(_dcp_directories.size()));
+ DCPDirectorySelected (*Config::instance()->player_dcp_directory() / _dcp_directories[s]);
+}