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:
Paul Davis 2012-12-23 18:25:26 +00:00
parent 348db7bae5
commit be4337689e
6 changed files with 258 additions and 239 deletions

View File

@ -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);

View File

@ -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

View File

@ -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;

View File

@ -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());
}

View File

@ -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 ();
}
}

View File

@ -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__