summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_sources.cc
diff options
context:
space:
mode:
authorBen Loftis <ben@harrisonconsoles.com>2019-08-01 16:04:55 -0500
committerBen Loftis <ben@harrisonconsoles.com>2019-08-12 10:48:08 -0500
commit82ebfa75f3f0bec2cfc59e2ab47c1de81916478d (patch)
treec471715176d5bf4b541500ec54e9d105f0819560 /gtk2_ardour/editor_sources.cc
parentff440276c161a3985bcc4c53b5bb5f6aaac9e265 (diff)
Source List: Explicitly check whether a file is in the {Audio|MIDI} folder where it should be.
Anywhere else (even somewhere else inside the session folder) should be flagged "weird"
Diffstat (limited to 'gtk2_ardour/editor_sources.cc')
-rw-r--r--gtk2_ardour/editor_sources.cc38
1 files changed, 29 insertions, 9 deletions
diff --git a/gtk2_ardour/editor_sources.cc b/gtk2_ardour/editor_sources.cc
index 2167d11b82..2021ec52ce 100644
--- a/gtk2_ardour/editor_sources.cc
+++ b/gtk2_ardour/editor_sources.cc
@@ -24,11 +24,13 @@
#include "pbd/basename.h"
#include "pbd/enumwriter.h"
+#include "pbd/file_utils.h"
#include "ardour/audioregion.h"
#include "ardour/source.h"
#include "ardour/audiofilesource.h"
#include "ardour/silentfilesource.h"
+#include "ardour/smf_source.h"
#include "ardour/region_factory.h"
#include "ardour/session.h"
#include "ardour/session_directory.h"
@@ -350,21 +352,39 @@ EditorSources::populate_row (TreeModel::Row row, boost::shared_ptr<ARDOUR::Regio
row[_columns.take_id] = source->take_id();
//PATH
+ string pathstr = source->name();
if (missing_source) {
- row[_columns.path] = _("(MISSING) ") + Gtkmm2ext::markup_escape_text (source->name());
+ pathstr = _("(MISSING) ") + Gtkmm2ext::markup_escape_text (source->name());
} else {
+
+ //is it a file?
boost::shared_ptr<FileSource> fs = boost::dynamic_pointer_cast<FileSource>(source);
- if (fs) {
- const string sound_directory = _session->session_directory().sound_path();
- if ( fs->path().find(sound_directory) == std::string::npos ) { // external file
- row[_columns.path] = Gtkmm2ext::markup_escape_text (fs->path());
- } else {
- row[_columns.path] = source->name();
- }
+ if (!fs) {
+ pathstr = Gtkmm2ext::markup_escape_text (source->name()); //someday: sequence region(?)
} else {
- row[_columns.path] = Gtkmm2ext::markup_escape_text (source->name());
+
+ //audio file?
+ boost::shared_ptr<AudioFileSource> afs = boost::dynamic_pointer_cast<AudioFileSource>(source);
+ if (afs) {
+ const string audio_directory = _session->session_directory().sound_path();
+ if ( !PBD::path_is_within(audio_directory, fs->path())) {
+ pathstr = Gtkmm2ext::markup_escape_text (fs->path());
+ }
+ }
+
+ //midi file?
+ boost::shared_ptr<SMFSource> mfs = boost::dynamic_pointer_cast<SMFSource>(source);
+ if (mfs) {
+ const string midi_directory = _session->session_directory().midi_path();
+ if ( !PBD::path_is_within(midi_directory, fs->path())) {
+ pathstr = Gtkmm2ext::markup_escape_text (fs->path());
+ }
+ }
+
}
}
+
+ row[_columns.path] = pathstr;
//Natural Position (samples, an invisible column for sorting)
row[_columns.natural_s] = source->natural_position();