*/
-#include "export_channel_selector.h"
-
#include <algorithm>
#include "pbd/convert.h"
#include <sstream>
+#include "export_channel_selector.h"
+#include "route_sorter.h"
+
#include "i18n.h"
using namespace std;
split_checkbox.set_active (state->config->get_split());
channels_spinbutton.set_value (state->config->get_n_chans());
+ /* when loading presets, config is ready set here (shared ptr)
+ * fill_route_list () -> update_channel_count () -> set_channel_count () -> update_config()
+ * will call config->clear_channels(); and clear the config
+ */
+ channel_view.set_config (ChannelConfigPtr ());
fill_route_list ();
channel_view.set_config (state->config);
}
channel_view.add_route (master);
}
+ routes.sort (Stripable::PresentationOrderSorter ());
+
for (RouteList::iterator it = routes.begin(); it != routes.end(); ++it) {
if ((*it)->is_master () || (*it)->is_monitor ()) {
continue;
if (config == c) { return; }
config = c;
+ if (!config) { return; }
uint32_t i = 1;
ExportChannelConfiguration::ChannelList chan_list = config->get_channels();
factory.reset (new RegionExportChannelFactory (_session, region, track, type));
state->config->set_region_processing_type (type);
- for (size_t chan = 0; chan < region_chans; ++chan) {
+ const size_t cc = type == RegionExportChannelFactory::Processed ? track_chans : region_chans;
+ for (size_t chan = 0; chan < cc; ++chan) {
state->config->register_channel (factory->create (chan));
}
TrackExportChannelSelector::TrackExportChannelSelector (ARDOUR::Session * session, ProfileManagerPtr manager)
: ExportChannelSelector(session, manager)
- , region_contents_button(source_group, _("Export region contents"))
- , track_output_button(source_group, _("Export track output"))
+ , track_output_button(_("Apply track/bus processing"))
, 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);
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));
+ track_output_button.signal_clicked().connect (sigc::mem_fun (*this, &TrackExportChannelSelector::track_outputs_selected));
+
fill_list();
show_all_children ();
row[track_cols.selected] = true;
}
}
+ update_config();
}
void
row[track_cols.selected] = true;
}
}
+ update_config();
}
void
Gtk::TreeModel::Row row = *it;
row[track_cols.selected] = false;
}
+ update_config();
+}
+
+void
+TrackExportChannelSelector::track_outputs_selected ()
+{
+ update_config();
}
void
row[track_cols.selected] = false;
row[track_cols.label] = route->name();
row[track_cols.route] = route;
- row[track_cols.order_key] = route->order_key();
+ row[track_cols.order_key] = route->presentation_info().order();
}
void
continue;
}
- ExportProfileManager::ChannelConfigStatePtr state = manager->add_channel_config();
+ ExportProfileManager::ChannelConfigStatePtr state;
boost::shared_ptr<Route> route = row[track_cols.route];
ExportChannelPtr channel (new PortExportChannel ());
PortExportChannel * pec = static_cast<PortExportChannel *> (channel.get());
pec->add_port(port);
+ if (!state) {
+ state = manager->add_channel_config();
+ }
state->config->register_channel(channel);
}
}
} else {
std::list<ExportChannelPtr> list;
RouteExportChannel::create_from_route (list, route);
+ if (list.size () == 0) {
+ continue;
+ }
+ state = manager->add_channel_config();
state->config->register_channels (list);
}
- state->config->set_name (route->name());
+ if (state) {
+ state->config->set_name (route->name());
+ }
+
}
CriticalSelectionChanged ();