summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor_audio_import.cc27
-rw-r--r--gtk2_ardour/sfdb_ui.cc66
-rw-r--r--gtk2_ardour/sfdb_ui.h9
3 files changed, 67 insertions, 35 deletions
diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc
index c2351c74fc..6200a6f98f 100644
--- a/gtk2_ardour/editor_audio_import.cc
+++ b/gtk2_ardour/editor_audio_import.cc
@@ -98,7 +98,8 @@ void
Editor::external_audio_dialog ()
{
vector<string> paths;
- uint32_t track_cnt;
+ uint32_t audio_track_cnt;
+ uint32_t midi_track_cnt;
if (_session == 0) {
MessageDialog msg (_("You can't import or embed an audiofile until you have a session loaded."));
@@ -106,22 +107,32 @@ Editor::external_audio_dialog ()
return;
}
- track_cnt = 0;
+ audio_track_cnt = 0;
+ midi_track_cnt = 0;
for (TrackSelection::iterator x = selection->tracks.begin(); x != selection->tracks.end(); ++x) {
AudioTimeAxisView* atv = dynamic_cast<AudioTimeAxisView*>(*x);
- if (!atv) {
- continue;
- } else if (atv->is_audio_track()) {
- track_cnt++;
+ if (atv) {
+ if (atv->is_audio_track()) {
+ audio_track_cnt++;
+ }
+
+ } else {
+ MidiTimeAxisView* mtv = dynamic_cast<MidiTimeAxisView*>(*x);
+
+ if (mtv) {
+ if (mtv->is_midi_track()) {
+ midi_track_cnt++;
+ }
+ }
}
}
if (sfbrowser == 0) {
- sfbrowser = new SoundFileOmega (*this, _("Add Existing Media"), _session, track_cnt, true);
+ sfbrowser = new SoundFileOmega (*this, _("Add Existing Media"), _session, audio_track_cnt, midi_track_cnt, true);
} else {
- sfbrowser->reset (track_cnt);
+ sfbrowser->reset (audio_track_cnt, midi_track_cnt);
}
sfbrowser->show_all ();
diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc
index 3d1677b0b9..2b98fd5dcc 100644
--- a/gtk2_ardour/sfdb_ui.cc
+++ b/gtk2_ardour/sfdb_ui.cc
@@ -940,28 +940,41 @@ SoundFileOmega::reset_options ()
string existing_choice;
vector<string> action_strings;
- if (selected_track_cnt > 0) {
- if (channel_combo.get_active_text().length()) {
- ImportDisposition id = get_channel_disposition();
-
- switch (id) {
- case Editing::ImportDistinctFiles:
- if (selected_track_cnt == paths.size()) {
+ if (chooser.get_filter() == &audio_filter) {
+
+ /* AUDIO */
+
+ if (selected_audio_track_cnt > 0) {
+ if (channel_combo.get_active_text().length()) {
+ ImportDisposition id = get_channel_disposition();
+
+ switch (id) {
+ case Editing::ImportDistinctFiles:
+ if (selected_audio_track_cnt == paths.size()) {
+ action_strings.push_back (importmode2string (ImportToTrack));
+ }
+ break;
+
+ case Editing::ImportDistinctChannels:
+ /* XXX it would be nice to allow channel-per-selected track
+ but its too hard we don't want to deal with all the
+ different per-file + per-track channel configurations.
+ */
+ break;
+
+ default:
action_strings.push_back (importmode2string (ImportToTrack));
+ break;
}
- break;
+ }
+ }
- case Editing::ImportDistinctChannels:
- /* XXX it would be nice to allow channel-per-selected track
- but its too hard we don't want to deal with all the
- different per-file + per-track channel configurations.
- */
- break;
+ } else {
- default:
- action_strings.push_back (importmode2string (ImportToTrack));
- break;
- }
+ /* MIDI */
+
+ if (selected_midi_track_cnt > 0) {
+ action_strings.push_back (importmode2string (ImportToTrack));
}
}
@@ -1225,11 +1238,15 @@ SoundFileChooser::get_filename ()
return paths.front();
}
-SoundFileOmega::SoundFileOmega (Gtk::Window& parent, string title, ARDOUR::Session* s, int selected_tracks, bool persistent,
+SoundFileOmega::SoundFileOmega (Gtk::Window& parent, string title, ARDOUR::Session* s,
+ uint32_t selected_audio_tracks,
+ uint32_t selected_midi_tracks,
+ bool persistent,
Editing::ImportMode mode_hint)
- : SoundFileBrowser (parent, title, s, persistent),
- copy_files_btn ( _("Copy files to session")),
- selected_track_cnt (selected_tracks)
+ : SoundFileBrowser (parent, title, s, persistent)
+ , copy_files_btn ( _("Copy files to session"))
+ , selected_audio_track_cnt (selected_audio_tracks)
+ , selected_midi_track_cnt (selected_midi_tracks)
{
VBox* vbox;
HBox* hbox;
@@ -1449,9 +1466,10 @@ SoundFileOmega::get_channel_disposition () const
}
void
-SoundFileOmega::reset (int selected_tracks)
+SoundFileOmega::reset (uint32_t selected_audio_tracks, uint32_t selected_midi_tracks)
{
- selected_track_cnt = selected_tracks;
+ selected_audio_track_cnt = selected_audio_tracks;
+ selected_midi_track_cnt = selected_midi_tracks;
reset_options ();
}
diff --git a/gtk2_ardour/sfdb_ui.h b/gtk2_ardour/sfdb_ui.h
index d0cde342f8..5e24d99434 100644
--- a/gtk2_ardour/sfdb_ui.h
+++ b/gtk2_ardour/sfdb_ui.h
@@ -205,10 +205,12 @@ class SoundFileOmega : public SoundFileBrowser
{
public:
- SoundFileOmega (Gtk::Window& parent, std::string title, ARDOUR::Session* _s, int selected_tracks, bool persistent,
+ SoundFileOmega (Gtk::Window& parent, std::string title, ARDOUR::Session* _s,
+ uint32_t selected_audio_tracks, uint32_t selected_midi_tracks,
+ bool persistent,
Editing::ImportMode mode_hint = Editing::ImportAsTrack);
- void reset (int selected_tracks);
+ void reset (uint32_t selected_audio_tracks, uint32_t selected_midi_tracks);
Gtk::ComboBoxText action_combo;
Gtk::ComboBoxText where_combo;
@@ -227,7 +229,8 @@ class SoundFileOmega : public SoundFileBrowser
void on_hide();
private:
- uint32_t selected_track_cnt;
+ uint32_t selected_audio_track_cnt;
+ uint32_t selected_midi_track_cnt;
typedef std::map<std::string,Editing::ImportDisposition> DispositionMap;
DispositionMap disposition_map;