From ab47be7b5a99e34b7f125b16556d2295e480553b Mon Sep 17 00:00:00 2001 From: Sakari Bergen Date: Sun, 8 Mar 2009 10:56:40 +0000 Subject: [PATCH] Some preparations for allowing multiple channel configurations in export channel configurations. Also unified the timespan selector interface... git-svn-id: svn://localhost/ardour2/branches/3.0@4748 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/export_channel_selector.cc | 24 ++++++++++--------- gtk2_ardour/export_channel_selector.h | 26 ++++++++++++++------- gtk2_ardour/export_dialog.cc | 20 ++++++++-------- gtk2_ardour/export_timespan_selector.cc | 19 +++++++-------- gtk2_ardour/export_timespan_selector.h | 31 ++++++++++++++----------- 5 files changed, 68 insertions(+), 52 deletions(-) diff --git a/gtk2_ardour/export_channel_selector.cc b/gtk2_ardour/export_channel_selector.cc index 509f465b7b..5700aaa929 100644 --- a/gtk2_ardour/export_channel_selector.cc +++ b/gtk2_ardour/export_channel_selector.cc @@ -40,13 +40,13 @@ using namespace ARDOUR; using namespace PBD; -PortExportChannelSelector::PortExportChannelSelector () : +PortExportChannelSelector::PortExportChannelSelector (ARDOUR::Session * session, ProfileManagerPtr manager) : + ExportChannelSelector (session, manager), channels_label (_("Channels:"), Gtk::ALIGN_LEFT), split_checkbox (_("Split to mono files")), max_channels (20), channel_view (max_channels) { - channels_hbox.pack_start (channels_label, false, false, 0); channels_hbox.pack_end (channels_spinbutton, false, false, 0); @@ -78,6 +78,7 @@ PortExportChannelSelector::PortExportChannelSelector () : /* Finalize */ + sync_with_manager(); show_all_children (); } @@ -90,10 +91,9 @@ PortExportChannelSelector::~PortExportChannelSelector () } void -PortExportChannelSelector::set_state (ARDOUR::ExportProfileManager::ChannelConfigStatePtr const state_, ARDOUR::Session * session_) +PortExportChannelSelector::sync_with_manager () { - state = state_; - session = session_; + state = manager->get_channel_configs().front(); split_checkbox.set_active (state->config->get_split()); channels_spinbutton.set_value (state->config->get_n_chans()); @@ -433,8 +433,11 @@ PortExportChannelSelector::ChannelTreeView::update_selection_text (Glib::ustring update_config (); } -RegionExportChannelSelector::RegionExportChannelSelector (ARDOUR::AudioRegion const & region, ARDOUR::AudioTrack & track) : - session (0), +RegionExportChannelSelector::RegionExportChannelSelector (ARDOUR::Session * session, + ProfileManagerPtr manager, + ARDOUR::AudioRegion const & region, + ARDOUR::AudioTrack & track) : + ExportChannelSelector (session, manager), region (region), track (track), region_chans (region.n_channels()), @@ -458,16 +461,15 @@ RegionExportChannelSelector::RegionExportChannelSelector (ARDOUR::AudioRegion co processed_button.signal_toggled ().connect (sigc::mem_fun (*this, &RegionExportChannelSelector::handle_selection)); vbox.pack_start (processed_button); + sync_with_manager(); vbox.show_all_children (); show_all_children (); } void -RegionExportChannelSelector::set_state (ARDOUR::ExportProfileManager::ChannelConfigStatePtr const state_, ARDOUR::Session * session_) +RegionExportChannelSelector::sync_with_manager () { - state = state_; - session = session_; - + state = manager->get_channel_configs().front(); handle_selection (); } diff --git a/gtk2_ardour/export_channel_selector.h b/gtk2_ardour/export_channel_selector.h index 9f1217c53d..14b614d5a9 100644 --- a/gtk2_ardour/export_channel_selector.h +++ b/gtk2_ardour/export_channel_selector.h @@ -47,12 +47,21 @@ class ExportChannelSelector : public Gtk::HBox { protected: typedef boost::shared_ptr ChannelConfigPtr; - typedef boost::shared_ptr HandlerPtr; + typedef boost::shared_ptr ProfileManagerPtr; + + ARDOUR::Session * session; + ProfileManagerPtr manager; public: + ExportChannelSelector (ARDOUR::Session * session, ProfileManagerPtr manager) + : session (session) + , manager (manager) + {} + virtual ~ExportChannelSelector () {} - virtual void set_state (ARDOUR::ExportProfileManager::ChannelConfigStatePtr const state_, ARDOUR::Session * session_) = 0; + virtual void sync_with_manager () = 0; + sigc::signal CriticalSelectionChanged; }; @@ -61,10 +70,10 @@ class PortExportChannelSelector : public ExportChannelSelector public: - PortExportChannelSelector (); + PortExportChannelSelector (ARDOUR::Session * session, ProfileManagerPtr manager); ~PortExportChannelSelector (); - void set_state (ARDOUR::ExportProfileManager::ChannelConfigStatePtr const state_, ARDOUR::Session * session_); + void sync_with_manager (); private: @@ -74,7 +83,6 @@ class PortExportChannelSelector : public ExportChannelSelector typedef std::list CahnnelList; - ARDOUR::Session * session; ARDOUR::ExportProfileManager::ChannelConfigStatePtr state; /*** GUI stuff ***/ @@ -189,15 +197,17 @@ class PortExportChannelSelector : public ExportChannelSelector class RegionExportChannelSelector : public ExportChannelSelector { public: - RegionExportChannelSelector (ARDOUR::AudioRegion const & region, ARDOUR::AudioTrack & track); + RegionExportChannelSelector (ARDOUR::Session * session, + ProfileManagerPtr manager, + ARDOUR::AudioRegion const & region, + ARDOUR::AudioTrack & track); - virtual void set_state (ARDOUR::ExportProfileManager::ChannelConfigStatePtr const state_, ARDOUR::Session * session_); + virtual void sync_with_manager (); private: void handle_selection (); - ARDOUR::Session * session; ARDOUR::ExportProfileManager::ChannelConfigStatePtr state; boost::shared_ptr factory; ARDOUR::AudioRegion const & region; diff --git a/gtk2_ardour/export_dialog.cc b/gtk2_ardour/export_dialog.cc index 4f11ad410e..a6a6b8dfcc 100644 --- a/gtk2_ardour/export_dialog.cc +++ b/gtk2_ardour/export_dialog.cc @@ -168,8 +168,8 @@ void ExportDialog::init_components () { preset_selector.reset (new ExportPresetSelector ()); - timespan_selector.reset (new ExportTimespanSelectorMultiple ()); - channel_selector.reset (new PortExportChannelSelector ()); + timespan_selector.reset (new ExportTimespanSelectorMultiple (session, profile_manager)); + channel_selector.reset (new PortExportChannelSelector (session, profile_manager)); file_notebook.reset (new ExportFileNotebook ()); } @@ -198,8 +198,8 @@ ExportDialog::close_dialog () void ExportDialog::sync_with_manager () { - timespan_selector->set_state (profile_manager->get_timespans().front(), session); - channel_selector->set_state (profile_manager->get_channel_configs().front(), session); + timespan_selector->sync_with_manager(); + channel_selector->sync_with_manager(); file_notebook->sync_with_manager (); update_warnings (); @@ -363,8 +363,8 @@ void ExportRangeDialog::init_components () { preset_selector.reset (new ExportPresetSelector ()); - timespan_selector.reset (new ExportTimespanSelectorSingle (range_id)); - channel_selector.reset (new PortExportChannelSelector ()); + timespan_selector.reset (new ExportTimespanSelectorSingle (session, profile_manager, range_id)); + channel_selector.reset (new PortExportChannelSelector (session, profile_manager)); file_notebook.reset (new ExportFileNotebook ()); } @@ -376,8 +376,8 @@ void ExportSelectionDialog::init_components () { preset_selector.reset (new ExportPresetSelector ()); - timespan_selector.reset (new ExportTimespanSelectorSingle (X_("selection"))); - channel_selector.reset (new PortExportChannelSelector ()); + timespan_selector.reset (new ExportTimespanSelectorSingle (session, profile_manager, X_("selection"))); + channel_selector.reset (new PortExportChannelSelector (session, profile_manager)); file_notebook.reset (new ExportFileNotebook ()); } @@ -401,7 +401,7 @@ ExportRegionDialog::init_components () Glib::ustring loc_id = profile_manager->set_single_range (region.position(), region.position() + region.length(), region.name()); preset_selector.reset (new ExportPresetSelector ()); - timespan_selector.reset (new ExportTimespanSelectorSingle (loc_id)); - channel_selector.reset (new RegionExportChannelSelector (region, track)); + timespan_selector.reset (new ExportTimespanSelectorSingle (session, profile_manager, loc_id)); + channel_selector.reset (new RegionExportChannelSelector (session, profile_manager, region, track)); file_notebook.reset (new ExportFileNotebook ()); } diff --git a/gtk2_ardour/export_timespan_selector.cc b/gtk2_ardour/export_timespan_selector.cc index 59875c4872..2ed01715fd 100644 --- a/gtk2_ardour/export_timespan_selector.cc +++ b/gtk2_ardour/export_timespan_selector.cc @@ -39,7 +39,9 @@ using namespace ARDOUR; using namespace PBD; -ExportTimespanSelector::ExportTimespanSelector () : +ExportTimespanSelector::ExportTimespanSelector (ARDOUR::Session * session, ProfileManagerPtr manager) : + session (session), + manager (manager), time_format_label (_("Show Times as:"), Gtk::ALIGN_LEFT) { @@ -126,13 +128,10 @@ ExportTimespanSelector::set_time_format_from_state () } void -ExportTimespanSelector::set_state (ARDOUR::ExportProfileManager::TimespanStatePtr const state_, ARDOUR::Session * session_) +ExportTimespanSelector::sync_with_manager () { - state = state_; - session = session_; - + state = manager->get_timespans().front(); fill_range_list (); - CriticalSelectionChanged(); } @@ -293,8 +292,8 @@ ExportTimespanSelector::update_range_name (Glib::ustring const & path, Glib::ust /*** ExportTimespanSelectorSingle ***/ -ExportTimespanSelectorSingle::ExportTimespanSelectorSingle (Glib::ustring range_id) : - ExportTimespanSelector (), +ExportTimespanSelectorSingle::ExportTimespanSelectorSingle (ARDOUR::Session * session, ProfileManagerPtr manager, Glib::ustring range_id) : + ExportTimespanSelector (session, manager), range_id (range_id) { range_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_NEVER); @@ -358,8 +357,8 @@ ExportTimespanSelectorSingle::fill_range_list () /*** ExportTimespanSelectorMultiple ***/ -ExportTimespanSelectorMultiple::ExportTimespanSelectorMultiple () : - ExportTimespanSelector () +ExportTimespanSelectorMultiple::ExportTimespanSelectorMultiple (ARDOUR::Session * session, ProfileManagerPtr manager) : + ExportTimespanSelector (session, manager) { range_scroller.set_policy (Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); range_view.append_column_editable ("", range_cols.selected); diff --git a/gtk2_ardour/export_timespan_selector.h b/gtk2_ardour/export_timespan_selector.h index db1f4cd0e9..e2291faf5a 100644 --- a/gtk2_ardour/export_timespan_selector.h +++ b/gtk2_ardour/export_timespan_selector.h @@ -43,26 +43,31 @@ using ARDOUR::CDMarkerFormat; /// Timespan Selector base class ExportTimespanSelector : public Gtk::VBox { + protected: + typedef std::list LocationList; + typedef boost::shared_ptr HandlerPtr; + typedef boost::shared_ptr ProfileManagerPtr; + + typedef boost::shared_ptr TimespanPtr; + typedef std::list TimespanList; + typedef boost::shared_ptr TimespanListPtr; + typedef ARDOUR::ExportProfileManager::TimespanStatePtr TimespanStatePtr; + public: - ExportTimespanSelector (); + ExportTimespanSelector (ARDOUR::Session * session, ProfileManagerPtr manager); + virtual ~ExportTimespanSelector (); - void set_state (ARDOUR::ExportProfileManager::TimespanStatePtr const state_, ARDOUR::Session * session_); + void sync_with_manager (); sigc::signal CriticalSelectionChanged; protected: - typedef std::list LocationList; - typedef boost::shared_ptr HandlerPtr; - - typedef boost::shared_ptr TimespanPtr; - typedef std::list TimespanList; - typedef boost::shared_ptr TimespanListPtr; - - ARDOUR::Session * session; - ARDOUR::ExportProfileManager::TimespanStatePtr state; + ARDOUR::Session * session; + ProfileManagerPtr manager; + TimespanStatePtr state; virtual void fill_range_list () = 0; @@ -123,7 +128,7 @@ class ExportTimespanSelector : public Gtk::VBox { class ExportTimespanSelectorMultiple : public ExportTimespanSelector { public: - ExportTimespanSelectorMultiple (); + ExportTimespanSelectorMultiple (ARDOUR::Session * session, ProfileManagerPtr manager); private: @@ -138,7 +143,7 @@ class ExportTimespanSelectorMultiple : public ExportTimespanSelector class ExportTimespanSelectorSingle : public ExportTimespanSelector { public: - ExportTimespanSelectorSingle (Glib::ustring range_id); + ExportTimespanSelectorSingle (ARDOUR::Session * session, ProfileManagerPtr manager, Glib::ustring range_id); private: