X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fcontent_panel.cc;h=9e73900fcf012efd41e30502e27509553aae74ae;hb=HEAD;hp=d394d42e926851bf120ad41fde46f8b9f8338ac5;hpb=1758421caa406e1ec72bf96fee87eaa32d283896;p=dcpomatic.git diff --git a/src/wx/content_panel.cc b/src/wx/content_panel.cc index d394d42e9..9e73900fc 100644 --- a/src/wx/content_panel.cc +++ b/src/wx/content_panel.cc @@ -42,14 +42,17 @@ #include "lib/dcp_subtitle_decoder.h" #include "lib/dcpomatic_log.h" #include "lib/ffmpeg_content.h" +#include "lib/film.h" +#include "lib/film_util.h" #include "lib/image_content.h" #include "lib/log.h" #include "lib/playlist.h" -#include "lib/scope_guard.h" #include "lib/string_text_file.h" #include "lib/string_text_file_content.h" #include "lib/text_content.h" #include "lib/video_content.h" +#include +#include #include LIBDCP_DISABLE_WARNINGS #include @@ -151,9 +154,9 @@ public: vector folders; for (size_t i = 0; i < filenames.GetCount(); ++i) { auto path = boost::filesystem::path(wx_to_std(filenames[i])); - if (boost::filesystem::is_regular_file(path)) { + if (dcp::filesystem::is_regular_file(path)) { files.push_back(path); - } else if (boost::filesystem::is_directory(path)) { + } else if (dcp::filesystem::is_directory(path)) { if (contains_assetmap(path)) { dcps.push_back(path); } else { @@ -401,11 +404,11 @@ ContentPanel::selected_ffmpeg () void -ContentPanel::film_changed (Film::Property p) +ContentPanel::film_changed(FilmProperty p) { switch (p) { - case Film::Property::CONTENT: - case Film::Property::CONTENT_ORDER: + case FilmProperty::CONTENT: + case FilmProperty::CONTENT_ORDER: setup (); break; default: @@ -527,7 +530,7 @@ ContentPanel::check_selection () _video_panel->create (); } else if (!have_video && _video_panel) { _notebook->DeletePage (off); - _video_panel = 0; + _video_panel = nullptr; } if (have_video) { @@ -540,7 +543,7 @@ ContentPanel::check_selection () _audio_panel->create (); } else if (!have_audio && _audio_panel) { _notebook->DeletePage (off); - _audio_panel = 0; + _audio_panel = nullptr; } if (have_audio) { @@ -580,17 +583,6 @@ ContentPanel::check_selection () } -optional -ContentPanel::add_files_override_path() const -{ - DCPOMATIC_ASSERT(_film->directory()); - return Config::instance()->default_add_file_location() == Config::DefaultAddFileLocation::SAME_AS_PROJECT - ? _film->directory()->parent_path() - : boost::optional(); - -} - - void ContentPanel::add_file_clicked () { @@ -610,7 +602,8 @@ ContentPanel::add_file_clicked () wxT("All files|*.*|Subtitle files|*.srt;*.xml|Audio files|*.wav;*.w64;*.flac;*.aif;*.aiff"), wxFD_MULTIPLE | wxFD_CHANGE_DIR, "AddFilesPath", - add_files_override_path() + {}, + add_files_override_path(_film) ); if (dialog.show()) { @@ -622,7 +615,7 @@ ContentPanel::add_file_clicked () void ContentPanel::add_folder_clicked () { - DirDialog dialog(_splitter, _("Choose a folder"), wxDD_DIR_MUST_EXIST, "AddFilesPath", add_files_override_path()); + DirDialog dialog(_splitter, _("Choose a folder"), wxDD_DIR_MUST_EXIST, "AddFilesPath", add_files_override_path(_film)); if (dialog.show()) { add_folder(dialog.path()); } @@ -665,7 +658,7 @@ ContentPanel::add_folder(boost::filesystem::path folder) void ContentPanel::add_dcp_clicked () { - DirDialog dialog(_splitter, _("Choose a DCP folder"), wxDD_DIR_MUST_EXIST, "AddFilesPath", add_files_override_path()); + DirDialog dialog(_splitter, _("Choose a DCP folder"), wxDD_DIR_MUST_EXIST, "AddFilesPath", add_files_override_path(_film)); if (dialog.show()) { add_dcp(dialog.path()); } @@ -714,7 +707,7 @@ ContentPanel::remove_clicked (bool hotkey) void ContentPanel::timeline_clicked () { - if (!_film) { + if (!_film || _film->content().empty()) { return; } @@ -772,8 +765,8 @@ ContentPanel::set_film (shared_ptr film) _film = film; - film_changed (Film::Property::CONTENT); - film_changed (Film::Property::AUDIO_CHANNELS); + film_changed(FilmProperty::CONTENT); + film_changed(FilmProperty::AUDIO_CHANNELS); if (_film) { check_selection (); @@ -828,7 +821,7 @@ ContentPanel::set_selection (ContentList cl) { { _no_check_selection = true; - ScopeGuard sg = [this]() { _no_check_selection = false; }; + dcp::ScopeGuard sg = [this]() { _no_check_selection = false; }; auto content = _film->content (); for (size_t i = 0; i < content.size(); ++i) {