From 8d68fb1ac3622cf0bd888cf574fd7bfde081e293 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 10 Sep 2022 01:07:17 +0200 Subject: [PATCH] Add Sort-by dropdown, re-layout import dialog --- gtk2_ardour/sfdb_ui.cc | 97 +++++++++++++++++++++++++----------------- gtk2_ardour/sfdb_ui.h | 5 +-- 2 files changed, 59 insertions(+), 43 deletions(-) diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc index 5649e52ed9..5088efacea 100644 --- a/gtk2_ardour/sfdb_ui.cc +++ b/gtk2_ardour/sfdb_ui.cc @@ -1510,9 +1510,13 @@ SoundFileOmega::reset_options () channel_combo.set_sensitive (false); action_combo.set_sensitive (false); + sort_combo.set_sensitive (false); where_combo.set_sensitive (false); copy_files_btn.set_active (true); copy_files_btn.set_sensitive (false); + midi_track_name_combo.set_sensitive (false); + smf_tempo_btn.set_sensitive (false); + smf_marker_btn.set_sensitive (false); return false; @@ -1521,6 +1525,7 @@ SoundFileOmega::reset_options () channel_combo.set_sensitive (true); action_combo.set_sensitive (true); where_combo.set_sensitive (true); + sort_combo.set_sensitive (paths.size () > 1 && (ImportAsTrack == get_mode () || ImportAsTrigger == get_mode ())); /* if we get through this function successfully, this may be reset at the end, once we know if we can use hard links @@ -1549,11 +1554,9 @@ SoundFileOmega::reset_options () return false; } - if (have_a_midi_file) { - smf_tempo_btn.show (); - } else { - smf_tempo_btn.hide (); - } + midi_track_name_combo.set_sensitive (have_a_midi_file); + smf_tempo_btn.set_sensitive (have_a_midi_file); + smf_marker_btn.set_sensitive (have_a_midi_file); string existing_choice; vector action_strings; @@ -1851,8 +1854,8 @@ SoundFileOmega::SoundFileOmega (string title, ARDOUR::Session* s, : SoundFileBrowser (title, s, persistent) , instrument_combo (InstrumentSelector::ForTrackSelector) , copy_files_btn ( _("Copy files to session")) - , smf_tempo_btn (_("Use MIDI Tempo Map (if defined)")) - , smf_marker_btn (_("Import MIDI markers (if any)")) + , smf_tempo_btn (_("Use MIDI Tempo Map")) + , smf_marker_btn (_("Import MIDI markers")) , selected_audio_track_cnt (selected_audio_tracks) , selected_midi_track_cnt (selected_midi_tracks) , _import_active (false) @@ -1862,10 +1865,6 @@ SoundFileOmega::SoundFileOmega (string title, ARDOUR::Session* s, set_size_request (-1, 550); - block_two.set_border_width (12); - block_three.set_border_width (12); - block_four.set_border_width (12); - str.clear (); str.push_back (_("file timestamp")); str.push_back (_("edit point")); @@ -1885,39 +1884,44 @@ SoundFileOmega::SoundFileOmega (string title, ARDOUR::Session* s, l = manage (new Label); l->set_markup (_("Insert at")); - options.attach (*l, 0, 1, 3, 4, FILL, SHRINK, 8, 0); - options.attach (where_combo, 0, 1, 4, 5, FILL, SHRINK, 8, 0); + options.attach (*l, 0, 1, 2, 3, FILL, SHRINK, 8, 0); + options.attach (where_combo, 0, 1, 3, 4, FILL, SHRINK, 8, 0); l = manage (new Label); l->set_markup (_("Mapping")); + options.attach (*l, 0, 1, 4, 5, FILL, SHRINK, 8, 0); + options.attach (channel_combo, 0, 1, 5, 6, FILL, SHRINK, 8, 0); + + /* 2nd col */ + l = manage (new Label); + l->set_markup (_("Sort order")); options.attach (*l, 1, 2, 0, 1, FILL, SHRINK, 8, 0); - options.attach (channel_combo, 1, 2, 1, 2, FILL, SHRINK, 8, 0); + options.attach (sort_combo, 1, 2, 1, 2, FILL, SHRINK, 8, 0); l = manage (new Label); l->set_markup (_("Conversion quality")); - options.attach (*l, 1, 2, 3, 4, FILL, SHRINK, 8, 0); - options.attach (src_combo, 1, 2, 4, 5, FILL, SHRINK, 8, 0); + options.attach (*l, 1, 2, 2, 3, FILL, SHRINK, 8, 0); + options.attach (src_combo, 1, 2, 3, 4, FILL, SHRINK, 8, 0); + + options.attach (copy_files_btn, 1, 2, 5, 6, FILL, SHRINK, 8, 0); + + /* 3rd, 4th col: MIDI */ + l = manage (new Label); + l->set_markup (_("Instrument")); + options.attach (*l, 2, 4, 0, 1, FILL, SHRINK, 8, 0); + options.attach (instrument_combo, 2, 4, 1, 2, FILL, SHRINK, 8, 0); l = manage (new Label); l->set_markup (_("MIDI Track Names")); - options.attach (*l, 2, 3, 0, 1, FILL, SHRINK, 8, 0); - options.attach (midi_track_name_combo, 2, 3, 1, 2, FILL, SHRINK, 8, 0); + options.attach (*l, 2, 4, 2, 3, FILL, SHRINK, 8, 0); + options.attach (midi_track_name_combo, 2, 4, 3, 4, FILL, SHRINK, 8, 0); - options.attach (smf_tempo_btn, 2, 3, 3, 4, FILL, SHRINK, 8, 0); - options.attach (smf_marker_btn, 2, 3, 4, 5, FILL, SHRINK, 8, 0); - - l = manage (new Label); - l->set_markup (_("Instrument")); - options.attach (*l, 3, 4, 0, 1, FILL, SHRINK, 8, 0); - options.attach (instrument_combo, 3, 4, 1, 2, FILL, SHRINK, 8, 0); - - Alignment *hspace = manage (new Alignment ()); - hspace->set_size_request (2, 2); - options.attach (*hspace, 0, 3, 2, 3, FILL, SHRINK, 0, 8); + options.attach (smf_tempo_btn, 2, 3, 5, 6, FILL, SHRINK, 8, 0); + options.attach (smf_marker_btn, 3, 4, 5, 6, FILL, SHRINK, 8, 0); Alignment *vspace = manage (new Alignment ()); vspace->set_size_request (2, 2); - options.attach (*vspace, 2, 3, 0, 3, EXPAND, SHRINK, 0, 0); + options.attach (*vspace, 0, 4, 6, 7, EXPAND, SHRINK, 0, 0); str.clear (); str.push_back (_("by track number")); @@ -1944,21 +1948,19 @@ SoundFileOmega::SoundFileOmega (string title, ARDOUR::Session* s, src_combo.set_sensitive (false); src_combo.signal_changed().connect (sigc::mem_fun (*this, &SoundFileOmega::src_combo_changed)); + str.clear (); + str.push_back (_("by file name")); + str.push_back (_("by modification time")); + str.push_back (_("by selection order")); + set_popdown_strings (sort_combo, str); + sort_combo.set_active_text (str.front()); + sort_combo.set_sensitive (false); + action_combo.signal_changed().connect (sigc::mem_fun (*this, &SoundFileOmega::reset_options_noret)); channel_combo.signal_changed().connect (sigc::mem_fun (*this, &SoundFileOmega::reset_options_noret)); copy_files_btn.set_active (true); - Gtk::Label* copy_label = dynamic_cast(copy_files_btn.get_child()); - - if (copy_label) { - copy_label->set_size_request (175, -1); - copy_label->set_line_wrap (true); - } - - block_four.pack_start (copy_files_btn, false, false); - options.attach (block_four, 3, 4, 4, 5, FILL, SHRINK, 8, 0); - vpacker.pack_start (options, false, true); /* setup disposition map */ @@ -2009,6 +2011,21 @@ SoundFileOmega::get_mode () const return string2importmode (action_combo.get_active_text()); } +SoundFileBrowser::SortOrder +SoundFileOmega::sort_order () const +{ + std::string const& str (sort_combo.get_active_text()); + if (str == _("by file name")) { + return SoundFileBrowser::FileName; + } else if (str == _("by modification time")) { + return SoundFileBrowser::FileMtime; + } else if (str == _("by selection order")) { + return SoundFileBrowser::SelectionOrder; + } + warning << string_compose (_("programming error: unknown import sort string %1"), str) << endmsg; + return SelectionOrder; +} + void SoundFileOmega::on_hide () { diff --git a/gtk2_ardour/sfdb_ui.h b/gtk2_ardour/sfdb_ui.h index 1a155acf47..e93d539d31 100644 --- a/gtk2_ardour/sfdb_ui.h +++ b/gtk2_ardour/sfdb_ui.h @@ -309,6 +309,7 @@ public: void reset (uint32_t selected_audio_tracks, uint32_t selected_midi_tracks); Gtk::ComboBoxText action_combo; + Gtk::ComboBoxText sort_combo; Gtk::ComboBoxText where_combo; Gtk::ComboBoxText channel_combo; Gtk::ComboBoxText src_combo; @@ -330,6 +331,7 @@ public: protected: void on_hide(); + virtual SortOrder sort_order () const; private: uint32_t selected_audio_track_cnt; @@ -339,9 +341,6 @@ private: DispositionMap disposition_map; Gtk::Table options; - Gtk::VBox block_two; - Gtk::VBox block_three; - Gtk::VBox block_four; bool check_info (const std::vector& paths, bool& same_size, bool& src_needed, bool& multichannel, bool& must_copy);