summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor.h1
-rw-r--r--gtk2_ardour/editor_audio_import.cc67
-rw-r--r--gtk2_ardour/public_editor.h4
-rw-r--r--gtk2_ardour/rc_option_editor.cc3
-rw-r--r--gtk2_ardour/sfdb_ui.cc406
-rw-r--r--gtk2_ardour/sfdb_ui.h18
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<string> upaths = sfbrowser->get_paths ();
- for (vector<string>::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<std::string> paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality, framepos_t&) = 0;
+ virtual void do_embed (std::vector<std::string> 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<string>& 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<string> 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<std::string> 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__