GUI changes to allow user to specify how/if to use SMF track/instrument names during...
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 14 Dec 2016 12:31:16 +0000 (12:31 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Wed, 14 Dec 2016 12:31:16 +0000 (12:31 +0000)
gtk2_ardour/editor.h
gtk2_ardour/editor_audio_import.cc
gtk2_ardour/editor_canvas.cc
gtk2_ardour/editor_regions.cc
gtk2_ardour/public_editor.h
gtk2_ardour/sfdb_ui.cc
gtk2_ardour/sfdb_ui.h

index 677c0927c96d48bfe6ab895902263aecfe2041ba..84d4bd90d474fcfadc5f6da40512af60823b1343 100644 (file)
@@ -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>());
 
index 822cb7b9deb91f92354287d13a468ffb6f59e5d2..0348a800720924fc83c55711b8e09f947bb87f41 100644 (file)
@@ -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"));
 
index 6f0e26aef65b3ca4a1381a2b4ad725823c328c09..53ab840ed8934965aab429c23ba0bfd307dc75c3 100644 (file)
@@ -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);
                        }
index 845e56fdec5cb00e852a04b61123c0dde6f089bb..b66845eb0d3aebc106665ccc20544f8e05261020 100644 (file)
@@ -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);
                }
index fb6da74dbf085788e516996988ba948b9c7438b6..d20e44e6c40c6aaee81cfb60ebd633112e56482b 100644 (file)
@@ -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;
index 2039983ad38b914026fce62ce51eebcc12a552c2..c1c889e362ee839943685fcfd6f268528f5e44e4 100644 (file)
@@ -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);
@@ -1742,6 +1763,13 @@ SoundFileOmega::SoundFileOmega (string title, ARDOUR::Session* s,
        vspace->set_size_request (2, 2);
        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);
@@ -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 ();
        }
 }
-
index f070d36ab6daf245313921daac16de4339484ad8..499867036ab3d519068c9682abacda47cae772d8 100644 (file)
@@ -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;