-IOSelectorWindow::on_map ()
-{
- _selector.redisplay ();
- Window::on_map ();
-}
-
-/*************************
- The IO Selector "widget"
- *************************/
-
-IOSelector::IOSelector (Session& sess, boost::shared_ptr<IO> ior, bool input)
- : session (sess),
- io (ior),
- for_input (input),
- port_frame (for_input? _("Inputs") : _("Outputs")),
- add_port_button (for_input? _("Add Input") : _("Add Output")),
- remove_port_button (for_input? _("Remove Input") : _("Remove Output")),
- clear_connections_button (_("Disconnect All"))
-{
- selected_port = 0;
-
- notebook.set_name ("IOSelectorNotebook");
- notebook.set_size_request (-1, 125);
-
- clear_connections_button.set_name ("IOSelectorButton");
- add_port_button.set_name ("IOSelectorButton");
- remove_port_button.set_name ("IOSelectorButton");
-
- selector_frame.set_name ("IOSelectorFrame");
- port_frame.set_name ("IOSelectorFrame");
-
- selector_frame.set_label (_("Available connections"));
-
- selector_button_box.set_spacing (5);
- selector_button_box.set_border_width (5);
-
- selector_box.set_spacing (5);
- selector_box.set_border_width (5);
- selector_box.pack_start (notebook);
- selector_box.pack_start (selector_button_box, false, false);
-
- selector_frame.add (selector_box);
-
- port_box.set_spacing (5);
- port_box.set_border_width (5);
-
- port_display_scroller.set_name ("IOSelectorNotebook");
- port_display_scroller.set_border_width (0);
- port_display_scroller.set_size_request (-1, 170);
- port_display_scroller.add (port_box);
- port_display_scroller.set_policy (POLICY_NEVER,
- POLICY_AUTOMATIC);
-
- port_button_box.set_spacing (5);
- port_button_box.set_border_width (5);
-
- port_button_box.pack_start (add_port_button, false, false);
-
- // The IO selector only works for single typed IOs
- const ARDOUR::DataType t = io->default_type();
-
- if (for_input) {
- if (io->input_maximum().get(t) < 0 || io->input_maximum().get(t) > (size_t) io->n_inputs().get(t)) {
- add_port_button.set_sensitive (true);
- } else {
- add_port_button.set_sensitive (false);
- }
-
- } else {
- if (io->output_maximum().get(t) < 0 || io->output_maximum().get(t) > (size_t) io->n_outputs().get(t)) {
- add_port_button.set_sensitive (true);
- } else {
- add_port_button.set_sensitive (false);
- }
-
- }
-
- port_button_box.pack_start (remove_port_button, false, false);
-
- if (for_input) {
- if (io->input_minimum().get(t) < 0 || io->input_minimum().get(t) < (size_t) io->n_inputs().get(t)) {
- remove_port_button.set_sensitive (true);
- } else {
- remove_port_button.set_sensitive (false);
- }
-
- } else {
- if (io->output_minimum().get(t) < 0 || io->output_minimum().get(t) < (size_t) io->n_outputs().get(t)) {
- remove_port_button.set_sensitive (true);
- } else {
- remove_port_button.set_sensitive (false);
- }
- }
-
- port_button_box.pack_start (clear_connections_button, false, false);
-
- port_and_button_box.set_border_width (5);
- port_and_button_box.pack_start (port_button_box, false, false);
- port_and_button_box.pack_start (port_display_scroller);
-
- port_frame.add (port_and_button_box);
-
- port_and_selector_box.set_spacing (5);
- port_and_selector_box.pack_start (port_frame);
- port_and_selector_box.pack_start (selector_frame);
-
- set_spacing (5);
- set_border_width (5);
- pack_start (port_and_selector_box);
-
- rescan();
- display_ports ();
-
- clear_connections_button.signal_clicked().connect (mem_fun(*this, &IOSelector::clear_connections));
-
- add_port_button.signal_clicked().connect (mem_fun(*this, &IOSelector::add_port));
- remove_port_button.signal_clicked().connect (mem_fun(*this, &IOSelector::remove_port));
-
- if (for_input) {
- io->input_changed.connect (mem_fun(*this, &IOSelector::ports_changed));
- } else {
- io->output_changed.connect (mem_fun(*this, &IOSelector::ports_changed));
- }
-
- io->NameChanged.connect (mem_fun(*this, &IOSelector::name_changed));
-
- main_box.show();
- port_and_selector_box.show();
- notebook.show();
- selector_frame.show();
- selector_box.show();
- selector_button_box.show();
- port_box.show();
- port_button_box.show();
- port_and_button_box.show();
- port_frame.show();
- add_port_button.show();
- remove_port_button.show();
- clear_connections_button.show();
- port_display_scroller.show();
-
- show();
-
-}
-
-IOSelector::~IOSelector ()
-{
-}
-
-void
-IOSelector::set_button_sensitivity ()