From be4337689ef37d5739ff54ab127d7c73e31be6b0 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sun, 23 Dec 2012 18:25:26 +0000 Subject: make import dialog non-modal git-svn-id: svn://localhost/ardour2/branches/3.0@13717 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor.h | 1 - gtk2_ardour/editor_audio_import.cc | 67 ------ gtk2_ardour/public_editor.h | 4 + gtk2_ardour/rc_option_editor.cc | 3 - gtk2_ardour/sfdb_ui.cc | 406 ++++++++++++++++++++++--------------- gtk2_ardour/sfdb_ui.h | 18 +- 6 files changed, 259 insertions(+), 240 deletions(-) diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 0221a82286..17891c3765 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -323,7 +323,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Editing::ZoomFocus get_zoom_focus () const { return zoom_focus; } double get_current_zoom () const { return frames_per_unit; } void cycle_zoom_focus (); - void temporal_zoom_step (bool coarser); void tav_zoom_step (bool coarser); void tav_zoom_smooth (bool coarser, bool force_all); diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index 2954503d1e..6069bd7a03 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -130,73 +130,6 @@ Editor::external_audio_dialog () } sfbrowser->show_all (); - - - bool keepRunning; - - do { - keepRunning = false; - - int response = sfbrowser->run (); - - switch (response) { - case RESPONSE_APPLY: - // leave the dialog open - break; - - case RESPONSE_OK: - sfbrowser->hide (); - break; - - default: - // cancel from the browser - we are done - sfbrowser->hide (); - return; - } - - /* lets do it */ - - vector upaths = sfbrowser->get_paths (); - for (vector::iterator x = upaths.begin(); x != upaths.end(); ++x) { - paths.push_back (*x); - } - - ImportPosition pos = sfbrowser->get_position (); - ImportMode mode = sfbrowser->get_mode (); - ImportDisposition chns = sfbrowser->get_channel_disposition (); - framepos_t where; - - switch (pos) { - case ImportAtEditPoint: - where = get_preferred_edit_position (); - break; - case ImportAtTimestamp: - where = -1; - break; - case ImportAtPlayhead: - where = playhead_cursor->current_frame; - break; - case ImportAtStart: - where = _session->current_start_frame(); - break; - } - - SrcQuality quality = sfbrowser->get_src_quality(); - - - if (sfbrowser->copy_files_btn.get_active()) { - do_import (paths, chns, mode, quality, where); - } else { - do_embed (paths, chns, mode, where); - } - - if (response == RESPONSE_APPLY) { - sfbrowser->clear_selection (); - keepRunning = true; - } - paths.clear(); - - } while (keepRunning); } void diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index 21db5c8e22..aebb818d9b 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -218,6 +218,10 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible { virtual Editing::MouseMode effective_mouse_mode () const = 0; + /** Import existing media */ + virtual void do_import (std::vector paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality, framepos_t&) = 0; + virtual void do_embed (std::vector paths, Editing::ImportDisposition, Editing::ImportMode mode, framepos_t&) = 0; + /** Open main export dialog */ virtual void export_audio () = 0; diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index bf2624970b..dab5a074f3 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -107,9 +107,6 @@ private: { SoundFileChooser sfdb (*_parent, _("Choose Click")); - sfdb.show_all (); - sfdb.present (); - if (sfdb.run () == RESPONSE_OK) { click_chosen (sfdb.get_filename()); } diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc index 3ac1dff2ab..ee6a86290f 100644 --- a/gtk2_ardour/sfdb_ui.cc +++ b/gtk2_ardour/sfdb_ui.cc @@ -62,6 +62,7 @@ #include "utils.h" #include "gain_meter.h" #include "main_clock.h" +#include "public_editor.h" #ifdef FREESOUND #include "sfdb_freesound_mootcher.h" @@ -414,192 +415,197 @@ SoundFileBox::save_tags (const vector& tags) } SoundFileBrowser::SoundFileBrowser (Gtk::Window& parent, string title, ARDOUR::Session* s, bool persistent) - : ArdourDialog (parent, title, false, false), - found_list (ListStore::create(found_list_columns)), - freesound_list (ListStore::create(freesound_list_columns)), - chooser (FILE_CHOOSER_ACTION_OPEN), - preview (persistent), - found_search_btn (_("Search")), - found_list_view (found_list), - freesound_search_btn (_("Search")), - freesound_list_view (freesound_list) + : ArdourWindow (parent, title) + , found_list (ListStore::create(found_list_columns)) + , freesound_list (ListStore::create(freesound_list_columns)) + , chooser (FILE_CHOOSER_ACTION_OPEN) + , preview (persistent) + , found_search_btn (_("Search")) + , found_list_view (found_list) + , freesound_search_btn (_("Search")) + , freesound_list_view (freesound_list) + , resetting_ourselves (false) + , matches (0) + , _status (0) + , _done (false) + , ok_button (Stock::OK) + , cancel_button (Stock::CANCEL) + , apply_button (Stock::APPLY) + , gm (0) { - resetting_ourselves = false; - gm = 0; - - resetting_ourselves = false; - gm = 0; #ifdef GTKOSX chooser.add_shortcut_folder_uri("file:///Library/GarageBand/Apple Loops"); chooser.add_shortcut_folder_uri("file:///Library/Audio/Apple Loops"); chooser.add_shortcut_folder_uri("file:///Library/Application Support/GarageBand/Instrument Library/Sampler/Sampler Files"); - chooser.add_shortcut_folder_uri("file:///Volumes"); #endif -#ifdef FREESOUND - mootcher = new Mootcher(); -#endif - //add the file chooser - { - chooser.set_border_width (12); - - audio_and_midi_filter.add_custom (FILE_FILTER_FILENAME, sigc::mem_fun (*this, &SoundFileBrowser::on_audio_and_midi_filter)); - audio_and_midi_filter.set_name (_("Audio and MIDI files")); - audio_filter.add_custom (FILE_FILTER_FILENAME, sigc::mem_fun(*this, &SoundFileBrowser::on_audio_filter)); - audio_filter.set_name (_("Audio files")); - - midi_filter.add_custom (FILE_FILTER_FILENAME, sigc::mem_fun(*this, &SoundFileBrowser::on_midi_filter)); - midi_filter.set_name (_("MIDI files")); - - matchall_filter.add_pattern ("*.*"); - matchall_filter.set_name (_("All files")); + chooser.set_border_width (12); + + audio_and_midi_filter.add_custom (FILE_FILTER_FILENAME, sigc::mem_fun (*this, &SoundFileBrowser::on_audio_and_midi_filter)); + audio_and_midi_filter.set_name (_("Audio and MIDI files")); + + audio_filter.add_custom (FILE_FILTER_FILENAME, sigc::mem_fun(*this, &SoundFileBrowser::on_audio_filter)); + audio_filter.set_name (_("Audio files")); + + midi_filter.add_custom (FILE_FILTER_FILENAME, sigc::mem_fun(*this, &SoundFileBrowser::on_midi_filter)); + midi_filter.set_name (_("MIDI files")); + + matchall_filter.add_pattern ("*.*"); + matchall_filter.set_name (_("All files")); + + chooser.add_filter (audio_and_midi_filter); + chooser.add_filter (audio_filter); + chooser.add_filter (midi_filter); + chooser.add_filter (matchall_filter); + chooser.set_select_multiple (true); + chooser.signal_update_preview().connect(sigc::mem_fun(*this, &SoundFileBrowser::update_preview)); + chooser.signal_file_activated().connect (sigc::mem_fun (*this, &SoundFileBrowser::chooser_file_activated)); - chooser.add_filter (audio_and_midi_filter); - chooser.add_filter (audio_filter); - chooser.add_filter (midi_filter); - chooser.add_filter (matchall_filter); - chooser.set_select_multiple (true); - chooser.signal_update_preview().connect(sigc::mem_fun(*this, &SoundFileBrowser::update_preview)); - chooser.signal_file_activated().connect (sigc::mem_fun (*this, &SoundFileBrowser::chooser_file_activated)); #ifdef GTKOSX - /* some broken redraw behaviour - this is a bandaid */ - chooser.signal_selection_changed().connect (mem_fun (chooser, &Widget::queue_draw)); + /* some broken redraw behaviour - this is a bandaid */ + chooser.signal_selection_changed().connect (mem_fun (chooser, &Widget::queue_draw)); #endif - - if (!persistent_folder.empty()) { - chooser.set_current_folder (persistent_folder); - } - notebook.append_page (chooser, _("Browse Files")); + + if (!persistent_folder.empty()) { + chooser.set_current_folder (persistent_folder); } + notebook.append_page (chooser, _("Browse Files")); + hpacker.set_spacing (6); hpacker.pack_start (notebook, true, true); hpacker.pack_start (preview, false, false); - get_vbox()->pack_start (hpacker, true, true); - - //add tag search - { - VBox* vbox; - HBox* hbox; - + vpacker.set_spacing (6); + vpacker.pack_start (hpacker, true, true); - hbox = manage(new HBox); - hbox->pack_start (found_entry); - hbox->pack_start (found_search_btn); + add (vpacker); - Gtk::ScrolledWindow *scroll = manage(new ScrolledWindow); - scroll->add(found_list_view); - scroll->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); - - vbox = manage(new VBox); - vbox->pack_start (*hbox, PACK_SHRINK); - vbox->pack_start (*scroll); - - found_list_view.append_column(_("Paths"), found_list_columns.pathname); - - found_list_view.get_selection()->signal_changed().connect(sigc::mem_fun(*this, &SoundFileBrowser::found_list_view_selected)); - - found_list_view.signal_row_activated().connect (sigc::mem_fun (*this, &SoundFileBrowser::found_list_view_activated)); - - found_search_btn.signal_clicked().connect(sigc::mem_fun(*this, &SoundFileBrowser::found_search_clicked)); - found_entry.signal_activate().connect(sigc::mem_fun(*this, &SoundFileBrowser::found_search_clicked)); + //add tag search - freesound_stop_btn.signal_clicked().connect(sigc::mem_fun(*this, &SoundFileBrowser::freesound_stop_clicked)); + VBox* vbox; + HBox* hbox; + + + hbox = manage(new HBox); + hbox->pack_start (found_entry); + hbox->pack_start (found_search_btn); + + Gtk::ScrolledWindow *scroll = manage(new ScrolledWindow); + scroll->add(found_list_view); + scroll->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); + + vbox = manage(new VBox); + vbox->pack_start (*hbox, PACK_SHRINK); + vbox->pack_start (*scroll); + + found_list_view.append_column(_("Paths"), found_list_columns.pathname); + + found_list_view.get_selection()->signal_changed().connect(sigc::mem_fun(*this, &SoundFileBrowser::found_list_view_selected)); + + found_list_view.signal_row_activated().connect (sigc::mem_fun (*this, &SoundFileBrowser::found_list_view_activated)); + + found_search_btn.signal_clicked().connect(sigc::mem_fun(*this, &SoundFileBrowser::found_search_clicked)); + found_entry.signal_activate().connect(sigc::mem_fun(*this, &SoundFileBrowser::found_search_clicked)); + + freesound_stop_btn.signal_clicked().connect(sigc::mem_fun(*this, &SoundFileBrowser::freesound_stop_clicked)); + + notebook.append_page (*vbox, _("Search Tags")); - notebook.append_page (*vbox, _("Search Tags")); - } +#ifdef FREESOUND //add freesound search -#ifdef FREESOUND - { - VBox* vbox; - HBox* passbox; - Label* label; - - passbox = manage(new HBox); - passbox->set_spacing (6); - - label = manage (new Label); - label->set_text (_("Tags:")); - passbox->pack_start (*label, false, false); - passbox->pack_start (freesound_entry, true, true); - - label = manage (new Label); - label->set_text (_("Sort:")); - passbox->pack_start (*label, false, false); - passbox->pack_start (freesound_sort, false, false); - freesound_sort.clear_items(); - - // Order of the following must correspond with enum sortMethod - // in sfdb_freesound_mootcher.h - freesound_sort.append_text(_("None")); - freesound_sort.append_text(_("Longest")); - freesound_sort.append_text(_("Shortest")); - freesound_sort.append_text(_("Newest")); - freesound_sort.append_text(_("Oldest")); - freesound_sort.append_text(_("Most downloaded")); - freesound_sort.append_text(_("Least downloaded")); - freesound_sort.append_text(_("Highest rated")); - freesound_sort.append_text(_("Lowest rated")); - freesound_sort.set_active(0); - - passbox->pack_start (freesound_search_btn, false, false); - passbox->pack_end (freesound_stop_btn, false, false); - freesound_stop_btn.set_label(_("Stop")); - - Gtk::ScrolledWindow *scroll = manage(new ScrolledWindow); - scroll->add(freesound_list_view); - scroll->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); - - vbox = manage(new VBox); - vbox->set_spacing (3); - vbox->pack_start (*passbox, PACK_SHRINK); - vbox->pack_start (freesound_progress_bar, PACK_SHRINK); - vbox->pack_start (*scroll); - - freesound_list_view.append_column(_("ID") , freesound_list_columns.id); - freesound_list_view.append_column(_("Filename"), freesound_list_columns.filename); - // freesound_list_view.append_column(_("URI") , freesound_list_columns.uri); - freesound_list_view.append_column(_("Duration"), freesound_list_columns.duration); - freesound_list_view.append_column(_("Size"), freesound_list_columns.filesize); - freesound_list_view.append_column(_("Samplerate"), freesound_list_columns.smplrate); - freesound_list_view.append_column(_("License"), freesound_list_columns.license); - freesound_list_view.get_column(0)->set_alignment(0.5); - freesound_list_view.get_column(1)->set_expand(true); - freesound_list_view.get_column(2)->set_alignment(0.5); - freesound_list_view.get_column(3)->set_alignment(0.5); - freesound_list_view.get_column(4)->set_alignment(0.5); - freesound_list_view.get_column(5)->set_alignment(0.5); - - freesound_list_view.get_selection()->signal_changed().connect(sigc::mem_fun(*this, &SoundFileBrowser::freesound_list_view_selected)); - - freesound_list_view.get_selection()->set_mode (SELECTION_MULTIPLE); - freesound_list_view.signal_row_activated().connect (sigc::mem_fun (*this, &SoundFileBrowser::freesound_list_view_activated)); - freesound_search_btn.signal_clicked().connect(sigc::mem_fun(*this, &SoundFileBrowser::freesound_search_clicked)); - freesound_entry.signal_activate().connect(sigc::mem_fun(*this, &SoundFileBrowser::freesound_search_clicked)); - freesound_stop_btn.signal_clicked().connect(sigc::mem_fun(*this, &SoundFileBrowser::freesound_stop_clicked)); - notebook.append_page (*vbox, _("Search Freesound")); - } + mootcher = new Mootcher(); + + HBox* passbox; + Label* label; + + passbox = manage(new HBox); + passbox->set_spacing (6); + + label = manage (new Label); + label->set_text (_("Tags:")); + passbox->pack_start (*label, false, false); + passbox->pack_start (freesound_entry, true, true); + + label = manage (new Label); + label->set_text (_("Sort:")); + passbox->pack_start (*label, false, false); + passbox->pack_start (freesound_sort, false, false); + freesound_sort.clear_items(); + + // Order of the following must correspond with enum sortMethod + // in sfdb_freesound_mootcher.h + freesound_sort.append_text(_("None")); + freesound_sort.append_text(_("Longest")); + freesound_sort.append_text(_("Shortest")); + freesound_sort.append_text(_("Newest")); + freesound_sort.append_text(_("Oldest")); + freesound_sort.append_text(_("Most downloaded")); + freesound_sort.append_text(_("Least downloaded")); + freesound_sort.append_text(_("Highest rated")); + freesound_sort.append_text(_("Lowest rated")); + freesound_sort.set_active(0); + + passbox->pack_start (freesound_search_btn, false, false); + passbox->pack_end (freesound_stop_btn, false, false); + freesound_stop_btn.set_label(_("Stop")); + + scroll = manage(new ScrolledWindow); + scroll->add(freesound_list_view); + scroll->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); + + vbox = manage(new VBox); + vbox->set_spacing (3); + vbox->pack_start (*passbox, PACK_SHRINK); + vbox->pack_start (freesound_progress_bar, PACK_SHRINK); + vbox->pack_start (*scroll); + + freesound_list_view.append_column(_("ID") , freesound_list_columns.id); + freesound_list_view.append_column(_("Filename"), freesound_list_columns.filename); + // freesound_list_view.append_column(_("URI") , freesound_list_columns.uri); + freesound_list_view.append_column(_("Duration"), freesound_list_columns.duration); + freesound_list_view.append_column(_("Size"), freesound_list_columns.filesize); + freesound_list_view.append_column(_("Samplerate"), freesound_list_columns.smplrate); + freesound_list_view.append_column(_("License"), freesound_list_columns.license); + freesound_list_view.get_column(0)->set_alignment(0.5); + freesound_list_view.get_column(1)->set_expand(true); + freesound_list_view.get_column(2)->set_alignment(0.5); + freesound_list_view.get_column(3)->set_alignment(0.5); + freesound_list_view.get_column(4)->set_alignment(0.5); + freesound_list_view.get_column(5)->set_alignment(0.5); + + freesound_list_view.get_selection()->signal_changed().connect(sigc::mem_fun(*this, &SoundFileBrowser::freesound_list_view_selected)); + + freesound_list_view.get_selection()->set_mode (SELECTION_MULTIPLE); + freesound_list_view.signal_row_activated().connect (sigc::mem_fun (*this, &SoundFileBrowser::freesound_list_view_activated)); + freesound_search_btn.signal_clicked().connect(sigc::mem_fun(*this, &SoundFileBrowser::freesound_search_clicked)); + freesound_entry.signal_activate().connect(sigc::mem_fun(*this, &SoundFileBrowser::freesound_search_clicked)); + freesound_stop_btn.signal_clicked().connect(sigc::mem_fun(*this, &SoundFileBrowser::freesound_stop_clicked)); + notebook.append_page (*vbox, _("Search Freesound")); #endif - notebook.set_size_request (500, -1); - notebook.signal_switch_page().connect ( - sigc::hide_return (sigc::hide (sigc::hide (sigc::mem_fun (*this, &SoundFileBrowser::reset_options)))) - ); + notebook.signal_switch_page().connect (sigc::hide_return (sigc::hide (sigc::hide (sigc::mem_fun (*this, &SoundFileBrowser::reset_options))))); set_session (s); - add_button (Stock::CANCEL, RESPONSE_CANCEL); - add_button (Stock::APPLY, RESPONSE_APPLY); - add_button (Stock::OK, RESPONSE_OK); + Gtk::HButtonBox* button_box = manage (new HButtonBox); + + button_box->set_layout (BUTTONBOX_END); + button_box->pack_start (cancel_button, false, false); + cancel_button.signal_clicked().connect (sigc::bind (sigc::mem_fun (*this, &SoundFileBrowser::do_something), RESPONSE_CANCEL)); + button_box->pack_start (apply_button, false, false); + apply_button.signal_clicked().connect (sigc::bind (sigc::mem_fun (*this, &SoundFileBrowser::do_something), RESPONSE_APPLY)); + button_box->pack_start (ok_button, false, false); + ok_button.signal_clicked().connect (sigc::bind (sigc::mem_fun (*this, &SoundFileBrowser::do_something), RESPONSE_OK)); + vpacker.pack_end (*button_box, false, false); } SoundFileBrowser::~SoundFileBrowser () @@ -607,11 +613,33 @@ SoundFileBrowser::~SoundFileBrowser () persistent_folder = chooser.get_current_folder(); } +int +SoundFileBrowser::run () +{ + set_modal (true); + show_all (); + present (); + + _done = false; + + while (!_done) { + gtk_main_iteration (); + } + + return _status; +} + +void +SoundFileBrowser::do_something (int action) +{ + _done = true; + _status = action; +} void SoundFileBrowser::on_show () { - ArdourDialog::on_show (); + ArdourWindow::on_show (); start_metering (); } @@ -643,7 +671,7 @@ SoundFileBrowser::freesound_list_view_activated (const TreeModel::Path&, TreeVie void SoundFileBrowser::set_session (Session* s) { - ArdourDialog::set_session (s); + ArdourWindow::set_session (s); preview.set_session (s); if (_session) { @@ -734,7 +762,7 @@ void SoundFileBrowser::found_list_view_selected () { if (!reset_options ()) { - set_response_sensitive (RESPONSE_OK, false); + ok_button.set_sensitive (false); } else { string file; @@ -744,9 +772,9 @@ SoundFileBrowser::found_list_view_selected () TreeIter iter = found_list->get_iter(*rows.begin()); file = (*iter)[found_list_columns.pathname]; chooser.set_filename (file); - set_response_sensitive (RESPONSE_OK, true); + ok_button.set_sensitive (true); } else { - set_response_sensitive (RESPONSE_OK, false); + ok_button.set_sensitive (false); } preview.setup_labels (file); @@ -760,7 +788,7 @@ SoundFileBrowser::freesound_list_view_selected () #ifdef FREESOUND if (!reset_options ()) { - set_response_sensitive (RESPONSE_OK, false); + ok_button.set_sensitive (false); } else { string file; @@ -786,10 +814,10 @@ SoundFileBrowser::freesound_list_view_selected () if (file != "") { chooser.set_filename (file); - set_response_sensitive (RESPONSE_OK, true); + ok_button.set_sensitive (true); } } else { - set_response_sensitive (RESPONSE_OK, false); + ok_button.set_sensitive (false); } freesound_progress_bar.set_text( @@ -1429,7 +1457,7 @@ SoundFileChooser::SoundFileChooser (Gtk::Window& parent, string title, ARDOUR::S void SoundFileChooser::on_hide () { - ArdourDialog::on_hide(); + ArdourWindow::on_hide(); stop_metering (); if (_session) { @@ -1579,7 +1607,7 @@ SoundFileOmega::SoundFileOmega (Gtk::Window& parent, string title, ARDOUR::Sessi options.pack_start (block_four, false, false); - get_vbox()->pack_start (options, false, false); + vpacker.pack_start (options, false, false); /* setup disposition map */ @@ -1630,7 +1658,7 @@ SoundFileOmega::get_mode () const void SoundFileOmega::on_hide () { - ArdourDialog::on_hide(); + ArdourWindow::on_hide(); if (_session) { _session->cancel_audition(); } @@ -1714,13 +1742,59 @@ SoundFileOmega::file_selection_changed () } if (!reset_options ()) { - set_response_sensitive (RESPONSE_OK, false); + ok_button.set_sensitive (false); } else { if (chooser.get_filenames().size() > 0) { - set_response_sensitive (RESPONSE_OK, true); + ok_button.set_sensitive (true); } else { - set_response_sensitive (RESPONSE_OK, false); + ok_button.set_sensitive (false); } } } +void +SoundFileOmega::do_something (int action) +{ + SoundFileBrowser::do_something (action); + + if (action == RESPONSE_CANCEL) { + hide (); + return; + } + + /* lets do it */ + + vector paths = get_paths (); + ImportPosition pos = get_position (); + ImportMode mode = get_mode (); + ImportDisposition chns = get_channel_disposition (); + framepos_t where; + + switch (pos) { + case ImportAtEditPoint: + where = PublicEditor::instance().get_preferred_edit_position (); + break; + case ImportAtTimestamp: + where = -1; + break; + case ImportAtPlayhead: + where = _session->transport_frame(); + break; + case ImportAtStart: + where = _session->current_start_frame(); + break; + } + + SrcQuality quality = get_src_quality(); + + if (copy_files_btn.get_active()) { + PublicEditor::instance().do_import (paths, chns, mode, quality, where); + } else { + PublicEditor::instance().do_embed (paths, chns, mode, where); + } + + if (action == RESPONSE_OK) { + hide (); + } +} + diff --git a/gtk2_ardour/sfdb_ui.h b/gtk2_ardour/sfdb_ui.h index 7e50834d58..d0e63568cd 100644 --- a/gtk2_ardour/sfdb_ui.h +++ b/gtk2_ardour/sfdb_ui.h @@ -46,7 +46,7 @@ #include "ardour/audiofilesource.h" #include "ardour/session_handle.h" -#include "ardour_dialog.h" +#include "ardour_window.h" #include "editing.h" #include "audio_clock.h" @@ -110,7 +110,7 @@ class SoundFileBox : public Gtk::VBox, public ARDOUR::SessionHandlePtr void stop_audition (); }; -class SoundFileBrowser : public ArdourDialog +class SoundFileBrowser : public ArdourWindow { private: class FoundTagColumns : public Gtk::TreeModel::ColumnRecord @@ -155,6 +155,9 @@ class SoundFileBrowser : public ArdourDialog SoundFileBrowser (Gtk::Window& parent, std::string title, ARDOUR::Session* _s, bool persistent); virtual ~SoundFileBrowser (); + int run (); + int status () const { return _status; } + virtual void set_session (ARDOUR::Session*); std::vector get_paths (); @@ -188,6 +191,8 @@ class SoundFileBrowser : public ArdourDialog protected: bool resetting_ourselves; int matches; + int _status; + bool _done; Gtk::FileFilter audio_and_midi_filter; Gtk::FileFilter audio_filter; @@ -195,6 +200,11 @@ class SoundFileBrowser : public ArdourDialog Gtk::FileFilter custom_filter; Gtk::FileFilter matchall_filter; Gtk::HBox hpacker; + Gtk::VBox vpacker; + + Gtk::Button ok_button; + Gtk::Button cancel_button; + Gtk::Button apply_button; static std::string persistent_folder; @@ -230,7 +240,7 @@ class SoundFileBrowser : public ArdourDialog protected: void on_show(); - + virtual void do_something (int action); }; class SoundFileChooser : public SoundFileBrowser @@ -293,6 +303,8 @@ class SoundFileOmega : public SoundFileBrowser bool reset_options (); void reset_options_noret (); bool bad_file_message (); + + void do_something (int action); }; #endif // __ardour_sfdb_ui_h__ -- cgit v1.2.3