-/** Construct an IOSelector.
- * @param session Session to operate on.
- * @param io IO to operate on.
- * @param for_input true if the selector is for an input, otherwise false.
- */
-
-IOSelector::IOSelector (ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO> io, bool for_input)
- : _port_group_list (session, io, for_input), _io (io), _for_input (for_input),
- _column_labels (_port_group_list)
-{
- _row_labels_vbox[0] = _row_labels_vbox[1] = 0;
- _side_vbox_pad[0] = _side_vbox_pad[1] = 0;
-
- Gtk::HBox* c = new Gtk::HBox;
- for (PortGroupList::iterator i = _port_group_list.begin(); i != _port_group_list.end(); ++i) {
- Gtk::CheckButton* b = new Gtk::CheckButton ((*i)->name);
- b->set_active (true);
- b->signal_toggled().connect (sigc::bind (sigc::mem_fun (*this, &IOSelector::group_visible_toggled), b, (*i)->name));
- c->pack_start (*Gtk::manage (b), false, false);
- }
- pack_start (*Gtk::manage (c));
-
- _side_vbox[0].pack_start (*Gtk::manage (new Gtk::Label ("")));
- _overall_hbox.pack_start (_side_vbox[0], false, false);
- _scrolled_window.set_policy (Gtk::POLICY_ALWAYS, Gtk::POLICY_NEVER);
- _scrolled_window.set_shadow_type (Gtk::SHADOW_NONE);
- Gtk::VBox* b = new Gtk::VBox;
- b->pack_start (_column_labels, false, false);
- b->pack_start (_port_group_hbox, false, false);
- Gtk::Alignment* a = new Gtk::Alignment (0, 1, 0, 0);
- a->add (*Gtk::manage (b));
- _scrolled_window.add (*Gtk::manage (a));
- _overall_hbox.pack_start (_scrolled_window);
- _side_vbox[1].pack_start (*Gtk::manage (new Gtk::Label ("")));
- _overall_hbox.pack_start (_side_vbox[1]);
- pack_start (_overall_hbox);
-
- _port_group_hbox.signal_size_allocate().connect (sigc::hide (sigc::mem_fun (*this, &IOSelector::setup_dimensions)));
-
- /* Listen for ports changing on the IO */
- if (_for_input) {
- _io->input_changed.connect (mem_fun(*this, &IOSelector::ports_changed));