*/
-#include "export_channel_selector.h"
-
#include <algorithm>
#include "pbd/convert.h"
#include <sstream>
-#include "i18n.h"
+#include "export_channel_selector.h"
+#include "route_sorter.h"
+
+#include "pbd/i18n.h"
using namespace std;
using namespace Glib;
using namespace ARDOUR;
using namespace PBD;
-struct EditorOrderRouteSorter {
- bool operator() (boost::shared_ptr<Route> a, boost::shared_ptr<Route> b) {
- return a->order_key () < b->order_key ();
- }
-};
-
PortExportChannelSelector::PortExportChannelSelector (ARDOUR::Session * session, ProfileManagerPtr manager) :
ExportChannelSelector (session, manager),
channels_label (_("Channels:"), Gtk::ALIGN_LEFT),
* fill_route_list () -> update_channel_count () -> set_channel_count () -> update_config()
* will call config->clear_channels(); and clear the config
*/
- channel_view.set_config (0);
+ channel_view.set_config (ChannelConfigPtr ());
fill_route_list ();
channel_view.set_config (state->config);
}
channel_view.add_route (master);
}
- routes.sort (EditorOrderRouteSorter ());
+ routes.sort (Stripable::PresentationOrderSorter ());
for (RouteList::iterator it = routes.begin(); it != routes.end(); ++it) {
if ((*it)->is_master () || (*it)->is_monitor ()) {
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());
+ }
}