X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fexport_channel_selector.h;h=08eab87ebd5e61020c2dba54ab8deebd6c216318;hb=8112d6472ecaf688a24572c397f2bfa4e1dd38a6;hp=bc165273c73f1b66e81d32a6303253bae6348e68;hpb=b855e5f3220027502a3c88f189d511fe2a5a3c2b;p=ardour.git diff --git a/gtk2_ardour/export_channel_selector.h b/gtk2_ardour/export_channel_selector.h index bc165273c7..08eab87ebd 100644 --- a/gtk2_ardour/export_channel_selector.h +++ b/gtk2_ardour/export_channel_selector.h @@ -1,22 +1,24 @@ /* - Copyright (C) 2008 Paul Davis - Author: Sakari Bergen - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ + * Copyright (C) 2008-2013 Paul Davis + * Copyright (C) 2008-2013 Sakari Bergen + * Copyright (C) 2009-2012 David Robillard + * Copyright (C) 2013-2015 Colin Fletcher + * Copyright (C) 2016-2019 Robin Gareus + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ #ifndef __export_channel_selector_h__ #define __export_channel_selector_h__ @@ -29,10 +31,22 @@ #undef interface #endif -#include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "widgets/ardour_dropdown.h" + namespace ARDOUR { class Session; class ExportChannelConfiguration; @@ -48,14 +62,14 @@ class XMLNode; class ExportChannelSelector : public Gtk::HBox, public ARDOUR::SessionHandlePtr { - protected: +protected: typedef boost::shared_ptr ChannelConfigPtr; typedef std::list ChannelConfigList; typedef boost::shared_ptr ProfileManagerPtr; ProfileManagerPtr manager; - public: +public: ExportChannelSelector (ARDOUR::Session * session, ProfileManagerPtr manager) : SessionHandlePtr (session) , manager (manager) @@ -70,15 +84,14 @@ class ExportChannelSelector : public Gtk::HBox, public ARDOUR::SessionHandlePtr class PortExportChannelSelector : public ExportChannelSelector { - - public: +public: PortExportChannelSelector (ARDOUR::Session * session, ProfileManagerPtr manager); ~PortExportChannelSelector (); void sync_with_manager (); - private: +private: void fill_route_list (); void update_channel_count (); @@ -101,12 +114,12 @@ class PortExportChannelSelector : public ExportChannelSelector class RouteCols : public Gtk::TreeModelColumnRecord { - public: + public: struct Channel; RouteCols () : n_channels (0) - { add (selected); add (name); add (io); add (port_list_col); } + { add (selected); add (name); add (io); add (port_list_col); } void add_channels (uint32_t chans); uint32_t n_channels; @@ -126,10 +139,10 @@ class PortExportChannelSelector : public ExportChannelSelector typedef Gtk::TreeModelColumn > ComboCol; ComboCol port_list_col; - /* Channel struct, that represents the selected port and it's name */ + /* Channel struct, that represents the selected port and its name */ struct Channel { - public: + public: Channel (RouteCols & cols) { cols.add (port); cols.add (label); } Gtk::TreeModelColumn > port; @@ -146,7 +159,7 @@ class PortExportChannelSelector : public ExportChannelSelector class PortCols : public Gtk::TreeModel::ColumnRecord { - public: + public: PortCols () { add(selected); add(port); add(label); } Gtk::TreeModelColumn selected; // not used ATM @@ -158,8 +171,9 @@ class PortExportChannelSelector : public ExportChannelSelector /* Channels view */ - class ChannelTreeView : public Gtk::TreeView { - public: + class ChannelTreeView : public Gtk::TreeView + { + public: ChannelTreeView (uint32_t max_channels); void set_config (ChannelConfigPtr c); @@ -172,7 +186,7 @@ class PortExportChannelSelector : public ExportChannelSelector sigc::signal CriticalSelectionChanged; - private: + private: ChannelConfigPtr config; void update_config (); @@ -199,7 +213,7 @@ class PortExportChannelSelector : public ExportChannelSelector class RegionExportChannelSelector : public ExportChannelSelector { - public: +public: RegionExportChannelSelector (ARDOUR::Session * session, ProfileManagerPtr manager, ARDOUR::AudioRegion const & region, @@ -207,7 +221,7 @@ class RegionExportChannelSelector : public ExportChannelSelector virtual void sync_with_manager (); - private: +private: void handle_selection (); @@ -233,15 +247,17 @@ class TrackExportChannelSelector : public ExportChannelSelector { public: TrackExportChannelSelector (ARDOUR::Session * session, ProfileManagerPtr manager); + ~TrackExportChannelSelector (); virtual void sync_with_manager (); + bool track_output () const { return track_output_button.get_active(); } + private: void fill_list(); - void add_track (boost::shared_ptr route); + void add_track (boost::shared_ptr route, bool selected); void update_config(); - ChannelConfigList configs; Gtk::VBox main_layout; @@ -252,8 +268,9 @@ class TrackExportChannelSelector : public ExportChannelSelector Gtk::TreeModelColumn > route; Gtk::TreeModelColumn label; Gtk::TreeModelColumn selected; + Gtk::TreeModelColumn order_key; - TrackCols () { add (route); add(label); add(selected); } + TrackCols () { add (route); add(label); add(selected); add(order_key); } }; TrackCols track_cols; @@ -262,10 +279,16 @@ class TrackExportChannelSelector : public ExportChannelSelector Gtk::ScrolledWindow track_scroller; - Gtk::HBox options_box; - Gtk::RadioButton::Group source_group; - Gtk::RadioButton region_contents_button; - Gtk::RadioButton track_output_button; + Gtk::HBox options_box; + Gtk::CheckButton track_output_button; + ArdourWidgets::ArdourDropdown select_menu; + Gtk::CheckMenuItem* exclude_hidden; + Gtk::CheckMenuItem* exclude_muted; + void select_tracks (); + void select_busses (); + void select_none (); + + void track_outputs_selected (); }; #endif /* __export_channel_selector_h__ */