summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_audio_import.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2007-08-26 01:54:34 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2007-08-26 01:54:34 +0000
commit45199451e0af09e33a02479aa7383f98186f4dcd (patch)
tree78ec97a1a09716dbd1f9595b6f0a9b5bce9e7ac9 /gtk2_ardour/editor_audio_import.cc
parent3dc5ac4b96ff4183a91007999b10d2c3553518b5 (diff)
round one of import design changes (still not fully functional, but basic stuff works
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2346 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_audio_import.cc')
-rw-r--r--gtk2_ardour/editor_audio_import.cc99
1 files changed, 75 insertions, 24 deletions
diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc
index 2a81f85d7f..d0b5f6dfa1 100644
--- a/gtk2_ardour/editor_audio_import.cc
+++ b/gtk2_ardour/editor_audio_import.cc
@@ -22,6 +22,8 @@
#include <errno.h>
#include <unistd.h>
+#include <sndfile.h>
+
#include <pbd/pthread_utils.h>
#include <pbd/basename.h>
#include <pbd/shortpath.h>
@@ -74,37 +76,86 @@ Editor::add_external_audio_action (ImportMode mode)
}
}
- bring_in_external_audio (mode, track, pos, false);
+ bring_in_external_audio (mode, track, pos);
}
+
void
-Editor::bring_in_external_audio (ImportMode mode, AudioTrack* track, nframes_t& pos, bool prompt)
+Editor::external_audio_dialog ()
{
+ vector<Glib::ustring> paths;
+
if (session == 0) {
MessageDialog msg (0, _("You can't import or embed an audiofile until you have a session loaded."));
msg.run ();
return;
}
- SoundFileOmega sfdb (_("Add existing audio to session"), session);
- sfdb.set_mode (mode);
+ SoundFileBrowser browser (_("Add existing audio"), session);
+ SoundFileOptionsDialog* options = 0;
- switch (sfdb.run()) {
- case SoundFileOmega::ResponseImport:
- do_import (sfdb.get_paths(), sfdb.get_split(), sfdb.get_mode(), track, pos, prompt);
- break;
+ browser.show_all ();
+
+ while (!options) {
+
+ int response = browser.run ();
- case SoundFileOmega::ResponseEmbed:
- do_embed (sfdb.get_paths(), sfdb.get_split(), sfdb.get_mode(), track, pos, prompt);
- break;
+ switch (response) {
+ case RESPONSE_OK:
+ break;
+ default:
+ // cancel from the browser - we are done
+ return;
+ }
+
+ paths = browser.get_paths ();
- default:
- break;
+ options = new SoundFileOptionsDialog (browser, paths, selection->tracks.size());
+ options->show_all ();
+
+ response = options->run ();
+ switch (response) {
+ case RESPONSE_OK:
+ // leave options non-null so that we break out of the loop
+ break;
+ default:
+ // back to the browser another try
+ delete options;
+ options = 0;
+ break;
+ }
}
+
+ browser.hide ();
+ options->hide ();
+
+ /* lets do it */
+
+ AudioTrack* track = 0;
+
+ if (!selection->tracks.empty()) {
+ AudioTimeAxisView* atv = dynamic_cast<AudioTimeAxisView*>(selection->tracks.front());
+ if (atv) {
+ track = atv->audio_track();
+ }
+ }
+
+ if (options->import.get_active()) {
+ do_import (paths, options->split_files.get_active(), options->mode, track, edit_cursor->current_frame);
+ } else {
+ do_embed (paths, options->split_files.get_active(), options->mode, track, edit_cursor->current_frame);
+ }
+
+ delete options;
+}
+
+void
+Editor::bring_in_external_audio (ImportMode mode, AudioTrack* track, nframes_t& pos)
+{
}
void
-Editor::do_import (vector<ustring> paths, bool split, ImportMode mode, AudioTrack* track, nframes_t& pos, bool prompt)
+Editor::do_import (vector<ustring> paths, bool split, ImportMode mode, AudioTrack* track, nframes_t& pos)
{
/* SFDB sets "multichan" to true to indicate "split channels"
so reverse the setting to match the way libardour
@@ -131,24 +182,24 @@ Editor::do_import (vector<ustring> paths, bool split, ImportMode mode, AudioTrac
}
bool
-Editor::idle_do_embed (vector<ustring> paths, bool split, ImportMode mode, AudioTrack* track, nframes_t& pos, bool prompt)
+Editor::idle_do_embed (vector<ustring> paths, bool split, ImportMode mode, AudioTrack* track, nframes_t& pos)
{
- _do_embed (paths, split, mode, track, pos, prompt);
+ _do_embed (paths, split, mode, track, pos);
return false;
}
void
-Editor::do_embed (vector<ustring> paths, bool split, ImportMode mode, AudioTrack* track, nframes_t& pos, bool prompt)
+Editor::do_embed (vector<ustring> paths, bool split, ImportMode mode, AudioTrack* track, nframes_t& pos)
{
#ifdef GTKOSX
- Glib::signal_idle().connect (bind (mem_fun (*this, &Editor::idle_do_embed), paths, split, mode, track, pos, prompt));
+ Glib::signal_idle().connect (bind (mem_fun (*this, &Editor::idle_do_embed), paths, split, mode, track, pos));
#else
- _do_embed (paths, split, mode, track, pos, prompt);
+ _do_embed (paths, split, mode, track, pos);
#endif
}
void
-Editor::_do_embed (vector<ustring> paths, bool split, ImportMode mode, AudioTrack* track, nframes_t& pos, bool prompt)
+Editor::_do_embed (vector<ustring> paths, bool split, ImportMode mode, AudioTrack* track, nframes_t& pos)
{
bool multiple_files = paths.size() > 1;
bool check_sample_rate = true;
@@ -201,7 +252,7 @@ Editor::_do_embed (vector<ustring> paths, bool split, ImportMode mode, AudioTrac
/* keep them paired */
- if (embed_sndfile (to_embed, split, multiple_files, check_sample_rate, mode, track, pos, prompt) < -1) {
+ if (embed_sndfile (to_embed, split, multiple_files, check_sample_rate, mode, track, pos) < -1) {
break;
}
@@ -216,7 +267,7 @@ Editor::_do_embed (vector<ustring> paths, bool split, ImportMode mode, AudioTrac
foo.clear ();
foo.push_back (*x);
- if (embed_sndfile (foo, split, multiple_files, check_sample_rate, mode, track, pos, prompt) < -1) {
+ if (embed_sndfile (foo, split, multiple_files, check_sample_rate, mode, track, pos) < -1) {
break;
}
}
@@ -224,7 +275,7 @@ Editor::_do_embed (vector<ustring> paths, bool split, ImportMode mode, AudioTrac
} else {
- if (embed_sndfile (to_embed, split, multiple_files, check_sample_rate, mode, track, pos, prompt) < -1) {
+ if (embed_sndfile (to_embed, split, multiple_files, check_sample_rate, mode, track, pos) < -1) {
break;
}
}
@@ -288,7 +339,7 @@ Editor::import_sndfile (vector<ustring> paths, ImportMode mode, AudioTrack* trac
int
Editor::embed_sndfile (vector<Glib::ustring> paths, bool split, bool multiple_files, bool& check_sample_rate, ImportMode mode,
- AudioTrack* track, nframes_t& pos, bool prompt)
+ AudioTrack* track, nframes_t& pos)
{
boost::shared_ptr<AudioFileSource> source;
SourceList sources;