make import dialog non-modal
git-svn-id: svn://localhost/ardour2/branches/3.0@13717 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
348db7bae5
commit
be4337689e
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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"));
|
||||
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));
|
||||
|
||||
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));
|
||||
#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);
|
||||
vpacker.set_spacing (6);
|
||||
vpacker.pack_start (hpacker, true, true);
|
||||
|
||||
add (vpacker);
|
||||
|
||||
//add tag search
|
||||
{
|
||||
VBox* vbox;
|
||||
HBox* hbox;
|
||||
|
||||
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"));
|
||||
|
||||
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"));
|
||||
}
|
||||
#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 ();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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__
|
||||
|
Loading…
Reference in New Issue
Block a user