- disconnect_button.set_name ("IOSelectorButton");
- disconnect_button.set_image (*Gtk::manage (new Gtk::Image (Gtk::Stock::DISCONNECT, Gtk::ICON_SIZE_BUTTON)));
- get_action_area()->pack_start (disconnect_button, false, false);
-
- if (_selector.maximum_rows() > _selector.n_rows()) {
- add_button.set_name ("IOSelectorButton");
- add_button.set_image (*Gtk::manage (new Gtk::Image (Gtk::Stock::ADD, Gtk::ICON_SIZE_BUTTON)));
- get_action_area()->pack_start (add_button, false, false);
- add_button.signal_clicked().connect (sigc::mem_fun (_selector, &IOSelector::add_row));
- }
-
- if (!for_input) {
- io->output_changed.connect (mem_fun(*this, &IOSelectorWindow::ports_changed));
- } else {
- io->input_changed.connect (mem_fun(*this, &IOSelectorWindow::ports_changed));
- }
-
- rescan_button.set_name ("IOSelectorButton");
- rescan_button.set_image (*Gtk::manage (new Gtk::Image (Gtk::Stock::REFRESH, Gtk::ICON_SIZE_BUTTON)));
- get_action_area()->pack_start (rescan_button, false, false);
-
- if (can_cancel) {
- cancel_button.set_name ("IOSelectorButton");
- cancel_button.set_image (*Gtk::manage (new Gtk::Image (Gtk::Stock::CANCEL, Gtk::ICON_SIZE_BUTTON)));
- get_action_area()->pack_start (cancel_button, false, false);
- } else {
- cancel_button.hide();
+ if (our_ports.empty() || other_ports.empty()) {
+ /* we're looking at a bundle with no parts associated with this channel,
+ so nothing to connect */
+ return PortMatrixNode::NOT_ASSOCIATED;