+class RegionExportChannelSelector : public ExportChannelSelector
+{
+ public:
+ RegionExportChannelSelector (ARDOUR::Session * session,
+ ProfileManagerPtr manager,
+ ARDOUR::AudioRegion const & region,
+ ARDOUR::AudioTrack & track);
+
+ virtual void sync_with_manager ();
+
+ private:
+
+ void handle_selection ();
+
+ ARDOUR::ExportProfileManager::ChannelConfigStatePtr state;
+ boost::shared_ptr<ARDOUR::RegionExportChannelFactory> factory;
+ ARDOUR::AudioRegion const & region;
+ ARDOUR::AudioTrack & track;
+
+ uint32_t region_chans;
+ uint32_t track_chans;
+
+ /*** GUI components ***/
+
+ Gtk::VBox vbox;
+
+ Gtk::RadioButtonGroup type_group;
+ Gtk::RadioButton raw_button;
+ Gtk::RadioButton fades_button;
+ Gtk::RadioButton processed_button;
+};
+
+class TrackExportChannelSelector : public ExportChannelSelector
+{
+ public:
+ TrackExportChannelSelector (ARDOUR::Session * session, ProfileManagerPtr manager);
+
+ virtual void sync_with_manager ();
+
+ private:
+
+ void fill_list();
+ void add_track (boost::shared_ptr<ARDOUR::Route> route);
+ void update_config();
+ ChannelConfigList configs;
+
+ Gtk::VBox main_layout;
+
+ struct TrackCols : public Gtk::TreeModelColumnRecord
+ {
+ public:
+ Gtk::TreeModelColumn<boost::shared_ptr<ARDOUR::Route> > route;
+ Gtk::TreeModelColumn<std::string> label;
+ Gtk::TreeModelColumn<bool> selected;
+ Gtk::TreeModelColumn<uint32_t> order_key;
+
+ TrackCols () { add (route); add(label); add(selected); add(order_key); }
+ };
+ TrackCols track_cols;
+
+ Glib::RefPtr<Gtk::ListStore> track_list;
+ Gtk::TreeView track_view;
+
+ Gtk::ScrolledWindow track_scroller;
+
+ Gtk::HBox options_box;
+ Gtk::RadioButton::Group source_group;
+ Gtk::RadioButton region_contents_button;
+ Gtk::RadioButton track_output_button;
+ Gtk::Button select_tracks_button;
+ Gtk::Button select_busses_button;
+ Gtk::Button select_none_button;
+ void select_tracks ();
+ void select_busses ();
+ void select_none ();
+};
+