summaryrefslogtreecommitdiff
path: root/gtk2_ardour/export_channel_selector.cc
diff options
context:
space:
mode:
authorColin Fletcher <colin.m.fletcher@googlemail.com>2015-06-05 23:08:38 +0100
committerColin Fletcher <colin.m.fletcher@googlemail.com>2015-06-08 11:17:55 +0100
commit8b3c729f2647b78bad4f8c2852de08a8f1a09bab (patch)
treea516cfc2c3c913e625b5ce150491b704df23699f /gtk2_ardour/export_channel_selector.cc
parente801155ddeab9345994da5f56b56746662275de7 (diff)
Add 'Select tracks/busses' & 'Deselect all' buttons to stem export
Add buttons to to select all tracks, select all busses and deselect all to the stem export channel selector.
Diffstat (limited to 'gtk2_ardour/export_channel_selector.cc')
-rw-r--r--gtk2_ardour/export_channel_selector.cc45
1 files changed, 45 insertions, 0 deletions
diff --git a/gtk2_ardour/export_channel_selector.cc b/gtk2_ardour/export_channel_selector.cc
index 5fa4a0d395..159c69eafe 100644
--- a/gtk2_ardour/export_channel_selector.cc
+++ b/gtk2_ardour/export_channel_selector.cc
@@ -541,12 +541,18 @@ TrackExportChannelSelector::TrackExportChannelSelector (ARDOUR::Session * sessio
: ExportChannelSelector(session, manager)
, region_contents_button(source_group, _("Export region contents"))
, track_output_button(source_group, _("Export track output"))
+ , select_tracks_button (_("Select all tracks"))
+ , select_busses_button (_("Select all busses"))
+ , select_none_button (_("Deselect all"))
{
pack_start(main_layout);
// Options
options_box.pack_start(region_contents_button);
options_box.pack_start(track_output_button);
+ options_box.pack_start (select_tracks_button);
+ options_box.pack_start (select_busses_button);
+ options_box.pack_start (select_none_button);
main_layout.pack_start(options_box, false, false);
// Track scroller
@@ -578,6 +584,10 @@ TrackExportChannelSelector::TrackExportChannelSelector (ARDOUR::Session * sessio
column->pack_start (*text_renderer, false);
column->add_attribute (text_renderer->property_text(), track_cols.label);
+ select_tracks_button.signal_clicked().connect (sigc::mem_fun (*this, &TrackExportChannelSelector::select_tracks));
+ select_busses_button.signal_clicked().connect (sigc::mem_fun (*this, &TrackExportChannelSelector::select_busses));
+ select_none_button.signal_clicked().connect (sigc::mem_fun (*this, &TrackExportChannelSelector::select_none));
+
fill_list();
show_all_children ();
@@ -591,6 +601,41 @@ TrackExportChannelSelector::sync_with_manager ()
}
void
+TrackExportChannelSelector::select_tracks ()
+{
+ for (Gtk::ListStore::Children::iterator it = track_list->children().begin(); it != track_list->children().end(); ++it) {
+ Gtk::TreeModel::Row row = *it;
+ boost::shared_ptr<Route> route = row[track_cols.route];
+ if (boost::dynamic_pointer_cast<Track> (route)) {
+ // it's a track
+ row[track_cols.selected] = true;
+ }
+ }
+}
+
+void
+TrackExportChannelSelector::select_busses ()
+{
+ for (Gtk::ListStore::Children::iterator it = track_list->children().begin(); it != track_list->children().end(); ++it) {
+ Gtk::TreeModel::Row row = *it;
+ boost::shared_ptr<Route> route = row[track_cols.route];
+ if (!boost::dynamic_pointer_cast<Track> (route)) {
+ // it's not a track, must be a bus
+ row[track_cols.selected] = true;
+ }
+ }
+}
+
+void
+TrackExportChannelSelector::select_none ()
+{
+ for (Gtk::ListStore::Children::iterator it = track_list->children().begin(); it != track_list->children().end(); ++it) {
+ Gtk::TreeModel::Row row = *it;
+ row[track_cols.selected] = false;
+ }
+}
+
+void
TrackExportChannelSelector::fill_list()
{
track_list->clear();