Some preparations for allowing multiple channel configurations in export channel...
authorSakari Bergen <sakari.bergen@beatwaves.net>
Sun, 8 Mar 2009 10:56:40 +0000 (10:56 +0000)
committerSakari Bergen <sakari.bergen@beatwaves.net>
Sun, 8 Mar 2009 10:56:40 +0000 (10:56 +0000)
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
gtk2_ardour/export_channel_selector.h
gtk2_ardour/export_dialog.cc
gtk2_ardour/export_timespan_selector.cc
gtk2_ardour/export_timespan_selector.h

index 509f465b7b6e68ba1ac3ca6dc1223b1c24273628..5700aaa92921134dd8f7d9d078424dcdcf0e0573 100644 (file)
 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 ();
 }
 
index 9f1217c53d9fb076454152e8d6c5832ad002f033..14b614d5a9a32059541ac799ca819f8cb01ed574 100644 (file)
@@ -47,12 +47,21 @@ class ExportChannelSelector : public Gtk::HBox
 {
   protected:
        typedef boost::shared_ptr<ARDOUR::ExportChannelConfiguration> ChannelConfigPtr;
-       typedef boost::shared_ptr<ARDOUR::ExportHandler> HandlerPtr;
+       typedef boost::shared_ptr<ARDOUR::ExportProfileManager> 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<void> 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<ARDOUR::ExportChannelPtr> 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<ARDOUR::RegionExportChannelFactory> factory;
        ARDOUR::AudioRegion const & region;
index 4f11ad410ecaa5d61ac48a8787b81f59f4a268ea..a6a6b8dfcc2796d16ed857da17e21810deb34dd4 100644 (file)
@@ -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 ());
 }
index 59875c48724fe533c440adbaafb2f2753d4e1e0a..2ed01715fd59f1b8e7308be1069201c52a48237a 100644 (file)
@@ -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);
index db1f4cd0e98d961b8a46d7e418b0ab47277a5357..e2291faf5a26be6a7cb5948c90b63f96125473f3 100644 (file)
@@ -43,26 +43,31 @@ using ARDOUR::CDMarkerFormat;
 
 /// Timespan Selector base
 class ExportTimespanSelector : public Gtk::VBox {
+  protected:
+       typedef std::list<ARDOUR::Location *> LocationList;
+       typedef boost::shared_ptr<ARDOUR::ExportHandler> HandlerPtr;
+       typedef boost::shared_ptr<ARDOUR::ExportProfileManager> ProfileManagerPtr;
+
+       typedef boost::shared_ptr<ARDOUR::ExportTimespan> TimespanPtr;
+       typedef std::list<TimespanPtr> TimespanList;
+       typedef boost::shared_ptr<TimespanList> 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<void> CriticalSelectionChanged;
 
   protected:
 
-       typedef std::list<ARDOUR::Location *> LocationList;
-       typedef boost::shared_ptr<ARDOUR::ExportHandler> HandlerPtr;
-
-       typedef boost::shared_ptr<ARDOUR::ExportTimespan> TimespanPtr;
-       typedef std::list<TimespanPtr> TimespanList;
-       typedef boost::shared_ptr<TimespanList> 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: