summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-12-14 12:31:16 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2016-12-14 12:31:16 +0000
commit9e4b972286c5aa9b161afd09b58635eaa4973c40 (patch)
treec7abe435d2d79d09d0a73c5c4f31584abbf5978a /gtk2_ardour
parent9a7823f139e1cdee62610598152250459d32b4c5 (diff)
GUI changes to allow user to specify how/if to use SMF track/instrument names during import
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor.h1
-rw-r--r--gtk2_ardour/editor_audio_import.cc3
-rw-r--r--gtk2_ardour/editor_canvas.cc8
-rw-r--r--gtk2_ardour/editor_regions.cc2
-rw-r--r--gtk2_ardour/public_editor.h8
-rw-r--r--gtk2_ardour/sfdb_ui.cc44
-rw-r--r--gtk2_ardour/sfdb_ui.h2
7 files changed, 55 insertions, 13 deletions
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 677c0927c9..84d4bd90d4 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -428,6 +428,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
Editing::ImportDisposition disposition,
Editing::ImportMode mode,
ARDOUR::SrcQuality quality,
+ ARDOUR::MidiTrackNameSource mts,
framepos_t& pos,
boost::shared_ptr<ARDOUR::PluginInfo> instrument = boost::shared_ptr<ARDOUR::PluginInfo>());
diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc
index 822cb7b9de..0348a80072 100644
--- a/gtk2_ardour/editor_audio_import.cc
+++ b/gtk2_ardour/editor_audio_import.cc
@@ -266,6 +266,7 @@ Editor::do_import (vector<string> paths,
ImportDisposition disposition,
ImportMode mode,
SrcQuality quality,
+ MidiTrackNameSource midi_track_name_source,
framepos_t& pos,
ARDOUR::PluginInfoPtr instrument)
{
@@ -278,7 +279,7 @@ Editor::do_import (vector<string> paths,
import_status.current = 1;
import_status.total = paths.size ();
import_status.all_done = false;
- import_status.midi_track_name_source = SMFTrackName;
+ import_status.midi_track_name_source = midi_track_name_source;
ImportProgressWindow ipw (&import_status, _("Import"), _("Cancel Import"));
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc
index 6f0e26aef6..53ab840ed8 100644
--- a/gtk2_ardour/editor_canvas.cc
+++ b/gtk2_ardour/editor_canvas.cc
@@ -411,10 +411,10 @@ Editor::drop_paths_part_two (const vector<string>& paths, framepos_t frame, doub
frame = 0;
InstrumentSelector is; // instantiation builds instrument-list and sets default.
- do_import (midi_paths, Editing::ImportDistinctFiles, ImportAsTrack, SrcBest, frame, is.selected_instrument());
+ do_import (midi_paths, Editing::ImportDistinctFiles, ImportAsTrack, SrcBest, SMFTrackName, frame, is.selected_instrument());
if (UIConfiguration::instance().get_only_copy_imported_files() || copy) {
- do_import (audio_paths, Editing::ImportDistinctFiles, Editing::ImportAsTrack, SrcBest, frame);
+ do_import (audio_paths, Editing::ImportDistinctFiles, Editing::ImportAsTrack, SrcBest, SMFTrackName, frame);
} else {
do_embed (audio_paths, Editing::ImportDistinctFiles, ImportAsTrack, frame);
}
@@ -427,10 +427,10 @@ Editor::drop_paths_part_two (const vector<string>& paths, framepos_t frame, doub
/* select the track, then embed/import */
selection->set (tv);
- do_import (midi_paths, Editing::ImportSerializeFiles, ImportToTrack, SrcBest, frame);
+ do_import (midi_paths, Editing::ImportSerializeFiles, ImportToTrack, SrcBest, SMFTrackName, frame);
if (UIConfiguration::instance().get_only_copy_imported_files() || copy) {
- do_import (audio_paths, Editing::ImportSerializeFiles, Editing::ImportToTrack, SrcBest, frame);
+ do_import (audio_paths, Editing::ImportSerializeFiles, Editing::ImportToTrack, SrcBest, SMFTrackName, frame);
} else {
do_embed (audio_paths, Editing::ImportSerializeFiles, ImportToTrack, frame);
}
diff --git a/gtk2_ardour/editor_regions.cc b/gtk2_ardour/editor_regions.cc
index 845e56fdec..b66845eb0d 100644
--- a/gtk2_ardour/editor_regions.cc
+++ b/gtk2_ardour/editor_regions.cc
@@ -1322,7 +1322,7 @@ EditorRegions::drag_data_received (const RefPtr<Gdk::DragContext>& context,
bool copy = ((context->get_actions() & (Gdk::ACTION_COPY | Gdk::ACTION_LINK | Gdk::ACTION_MOVE)) == Gdk::ACTION_COPY);
if (UIConfiguration::instance().get_only_copy_imported_files() || copy) {
- _editor->do_import (paths, Editing::ImportDistinctFiles, Editing::ImportAsRegion, SrcBest, pos);
+ _editor->do_import (paths, Editing::ImportDistinctFiles, Editing::ImportAsRegion, SrcBest, SMFTrackName, pos);
} else {
_editor->do_embed (paths, Editing::ImportDistinctFiles, ImportAsRegion, pos);
}
diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h
index fb6da74dbf..d20e44e6c4 100644
--- a/gtk2_ardour/public_editor.h
+++ b/gtk2_ardour/public_editor.h
@@ -220,8 +220,12 @@ class PublicEditor : public Gtkmm2ext::Tabbable {
virtual Editing::MouseMode effective_mouse_mode () const = 0;
/** Import existing media */
- virtual void do_import (std::vector<std::string> paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality, framepos_t&, boost::shared_ptr<ARDOUR::PluginInfo> instrument=boost::shared_ptr<ARDOUR::PluginInfo>()) = 0;
- virtual void do_embed (std::vector<std::string> paths, Editing::ImportDisposition, Editing::ImportMode mode, framepos_t&, boost::shared_ptr<ARDOUR::PluginInfo> instrument=boost::shared_ptr<ARDOUR::PluginInfo>()) = 0;
+ virtual void do_import (std::vector<std::string> paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality,
+ ARDOUR::MidiTrackNameSource, framepos_t&,
+ boost::shared_ptr<ARDOUR::PluginInfo> instrument=boost::shared_ptr<ARDOUR::PluginInfo>()) = 0;
+ virtual void do_embed (std::vector<std::string> paths, Editing::ImportDisposition, Editing::ImportMode mode,
+ framepos_t&,
+ boost::shared_ptr<ARDOUR::PluginInfo> instrument=boost::shared_ptr<ARDOUR::PluginInfo>()) = 0;
/** Open main export dialog */
virtual void export_audio () = 0;
diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc
index 2039983ad3..c1c889e362 100644
--- a/gtk2_ardour/sfdb_ui.cc
+++ b/gtk2_ardour/sfdb_ui.cc
@@ -84,8 +84,24 @@ using std::string;
string SoundFileBrowser::persistent_folder;
typedef TreeView::Selection::ListHandle_Path ListPath;
+static MidiTrackNameSource
+string2miditracknamesource (string const & str)
+{
+ if (str == _("by track number")) {
+ return SMFTrackNumber;
+ } else if (str == _("by track name")) {
+ return SMFTrackName;
+ } else if (str == _("by instrument name")) {
+ return SMFInstrumentName;
+ }
+
+ warning << string_compose (_("programming error: unknown midi track name source string %1"), str) << endmsg;
+
+ return SMFTrackNumber;
+}
+
static ImportMode
-string2importmode (string str)
+string2importmode (string const & str)
{
if (str == _("as new tracks")) {
return ImportAsTrack;
@@ -1730,9 +1746,14 @@ SoundFileOmega::SoundFileOmega (string title, ARDOUR::Session* s,
options.attach (src_combo, 1, 2, 4, 5, FILL, SHRINK, 8, 0);
l = manage (new Label);
- l->set_markup (_("<b>Instrument</b>"));
+ l->set_markup (_("<b>MIDI Track Names</b>"));
options.attach (*l, 3, 4, 0, 1, FILL, SHRINK, 8, 0);
- options.attach (instrument_combo, 3, 4, 1, 2, FILL, SHRINK, 8, 0);
+ options.attach (midi_track_name_combo, 3, 4, 1, 2, FILL, SHRINK, 8, 0);
+
+ l = manage (new Label);
+ l->set_markup (_("<b>Instrument</b>"));
+ options.attach (*l, 3, 4, 2, 3, FILL, SHRINK, 8, 0);
+ options.attach (instrument_combo, 3, 4, 3, 4, FILL, SHRINK, 8, 0);
Alignment *hspace = manage (new Alignment ());
hspace->set_size_request (2, 2);
@@ -1743,6 +1764,13 @@ SoundFileOmega::SoundFileOmega (string title, ARDOUR::Session* s,
options.attach (*vspace, 2, 3, 0, 3, EXPAND, SHRINK, 0, 0);
str.clear ();
+ str.push_back (_("by track number"));
+ str.push_back (_("by track name"));
+ str.push_back (_("by instrument name"));
+ set_popdown_strings (midi_track_name_combo, str);
+ midi_track_name_combo.set_active_text (str.front());
+
+ str.clear ();
str.push_back (_("one track per file"));
set_popdown_strings (channel_combo, str);
channel_combo.set_active_text (str.front());
@@ -1881,6 +1909,12 @@ SoundFileOmega::where_combo_changed()
preview.set_import_position(get_position());
}
+MidiTrackNameSource
+SoundFileOmega::get_midi_track_name_source () const
+{
+ return string2miditracknamesource (midi_track_name_combo.get_active_text());
+}
+
ImportDisposition
SoundFileOmega::get_channel_disposition () const
{
@@ -1953,6 +1987,7 @@ SoundFileOmega::do_something (int action)
ImportDisposition chns = get_channel_disposition ();
PluginInfoPtr instrument = instrument_combo.selected_instrument();
framepos_t where;
+ MidiTrackNameSource mts = get_midi_track_name_source ();
switch (pos) {
case ImportAtEditPoint:
@@ -1974,7 +2009,7 @@ SoundFileOmega::do_something (int action)
_import_active = true;
if (copy_files_btn.get_active()) {
- PublicEditor::instance().do_import (paths, chns, mode, quality, where, instrument);
+ PublicEditor::instance().do_import (paths, chns, mode, quality, mts, where, instrument);
} else {
PublicEditor::instance().do_embed (paths, chns, mode, where, instrument);
}
@@ -1986,4 +2021,3 @@ SoundFileOmega::do_something (int action)
reset_options ();
}
}
-
diff --git a/gtk2_ardour/sfdb_ui.h b/gtk2_ardour/sfdb_ui.h
index f070d36ab6..499867036a 100644
--- a/gtk2_ardour/sfdb_ui.h
+++ b/gtk2_ardour/sfdb_ui.h
@@ -283,12 +283,14 @@ class SoundFileOmega : public SoundFileBrowser
Gtk::ComboBoxText where_combo;
Gtk::ComboBoxText channel_combo;
Gtk::ComboBoxText src_combo;
+ Gtk::ComboBoxText midi_track_name_combo;
InstrumentSelector instrument_combo;
Gtk::CheckButton copy_files_btn;
void set_mode (Editing::ImportMode);
Editing::ImportMode get_mode() const;
+ ARDOUR::MidiTrackNameSource get_midi_track_name_source () const;
Editing::ImportPosition get_position() const;
Editing::ImportDisposition get_channel_disposition() const;
ARDOUR::SrcQuality get_src_quality() const;