From 76aac52d4af81809ca554a48f31d83d75385556c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 4 Sep 2007 03:01:57 +0000 Subject: [PATCH] make sfdb browser a member of session, to retain settings git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2366 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor.cc | 6 ++++++ gtk2_ardour/editor.h | 3 +++ gtk2_ardour/editor_audio_import.cc | 24 +++++++++++++----------- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 647d62ca17..c2ce0c55d1 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -77,6 +77,7 @@ #include "canvas_impl.h" #include "actions.h" #include "gui_thread.h" +#include "sfdb_ui.h" #ifdef FFT_ANALYSIS #include "analysis_window.h" @@ -313,6 +314,7 @@ Editor::Editor () _dragging_playhead = false; _dragging_hscrollbar = false; _scrubbing = false; + sfbrowser = 0; location_marker_color = ARDOUR_UI::config()->canvasvar_LocationMarker.get(); location_range_color = ARDOUR_UI::config()->canvasvar_LocationRange.get(); @@ -1155,6 +1157,10 @@ Editor::connect_to_session (Session *t) session->locations()->StateChanged.connect (mem_fun(*this, &Editor::refresh_location_display_s)); session->locations()->end_location()->changed.connect (mem_fun(*this, &Editor::end_location_changed)); + if (sfbrowser) { + sfbrowser->set_session (session); + } + handle_new_duration (); redisplay_regions (); diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 68535738da..a1424ff143 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -102,6 +102,7 @@ class MixerStrip; class StreamView; class AudioStreamView; class ControlPoint; +class SoundFileBrowser; #ifdef FFT_ANALYSIS class AnalysisWindow; #endif @@ -965,6 +966,8 @@ class Editor : public PublicEditor void external_audio_dialog (); bool check_multichannel_status (const std::vector& paths); + SoundFileBrowser* sfbrowser; + void bring_in_external_audio (Editing::ImportMode mode, nframes64_t& pos); void do_import (vector paths, Editing::ImportDisposition, Editing::ImportMode mode, nframes64_t&); diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index b34ce7e197..5a0a9f447a 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -78,14 +78,16 @@ Editor::external_audio_dialog () msg.run (); return; } + + if (sfbrowser == 0) { + sfbrowser = new SoundFileBrowser (*this, _("Add existing audio"), session, selection->tracks.size()); + } - SoundFileBrowser browser (*this, _("Add existing audio"), session, selection->tracks.size()); + sfbrowser->show_all (); - browser.show_all (); + int response = sfbrowser->run (); - int response = browser.run (); - - switch (response) { + switch (response) { case RESPONSE_OK: break; default: @@ -93,15 +95,15 @@ Editor::external_audio_dialog () return; } - browser.hide (); + sfbrowser->hide (); /* lets do it */ - paths = browser.get_paths (); + paths = sfbrowser->get_paths (); - ImportPosition pos = browser.get_position (); - ImportMode mode = browser.get_mode (); - ImportDisposition chns = browser.get_channel_disposition (); + ImportPosition pos = sfbrowser->get_position (); + ImportMode mode = sfbrowser->get_mode (); + ImportDisposition chns = sfbrowser->get_channel_disposition (); nframes64_t where; switch (pos) { @@ -119,7 +121,7 @@ Editor::external_audio_dialog () break; } - if (browser.import.get_active()) { + if (sfbrowser->import.get_active()) { do_import (paths, chns, mode, where); } else { do_embed (paths, chns, mode, where);