summaryrefslogtreecommitdiff
path: root/gtk2_ardour/io_selector.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/io_selector.cc')
-rw-r--r--gtk2_ardour/io_selector.cc47
1 files changed, 31 insertions, 16 deletions
diff --git a/gtk2_ardour/io_selector.cc b/gtk2_ardour/io_selector.cc
index a4defec834..954ddb6b9a 100644
--- a/gtk2_ardour/io_selector.cc
+++ b/gtk2_ardour/io_selector.cc
@@ -40,19 +40,36 @@ using namespace ARDOUR;
using namespace Gtk;
IOSelector::IOSelector (ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO> io, bool offer_inputs)
- : PortMatrix (
- session, io->default_type(), offer_inputs,
- PortGroupList::Mask (PortGroupList::BUSS |
- PortGroupList::SYSTEM |
- PortGroupList::OTHER)),
- _io (io)
+ : PortMatrix (session, io->default_type(), offer_inputs,
+ PortGroupList::Mask (PortGroupList::BUSS |
+ PortGroupList::SYSTEM |
+ PortGroupList::OTHER))
+ , _io (io)
{
+ list<string> our_ports;
+
/* Listen for ports changing on the IO */
if (_offer_inputs) {
_io->output_changed.connect (mem_fun(*this, &IOSelector::ports_changed));
+
+ const PortSet& ps (_io->outputs());
+
+ for (PortSet::const_iterator i = ps.begin(); i != ps.end(); ++i) {
+ our_ports.push_back ((*i).name());
+ }
+
} else {
_io->input_changed.connect (mem_fun(*this, &IOSelector::ports_changed));
+
+ const PortSet& ps (_io->inputs());
+
+ for (PortSet::const_iterator i = ps.begin(); i != ps.end(); ++i) {
+ our_ports.push_back ((*i).name());
+ }
+
}
+
+ set_ports (our_ports);
}
void
@@ -204,16 +221,14 @@ IOSelector::row_descriptor () const
return _("port");
}
-IOSelectorWindow::IOSelectorWindow (
- ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO> io, bool for_input, bool can_cancel
- )
- : ArdourDialog ("I/O selector"),
- _selector (session, io, !for_input),
- add_button (_("Add Port")),
- disconnect_button (_("Disconnect All")),
- ok_button (can_cancel ? _("OK"): _("Close")),
- cancel_button (_("Cancel")),
- rescan_button (_("Rescan"))
+IOSelectorWindow::IOSelectorWindow (ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO> io, bool for_input, bool can_cancel)
+ : ArdourDialog ("I/O selector")
+ , _selector (session, io, !for_input)
+ , add_button (_("Add Port"))
+ , disconnect_button (_("Disconnect All"))
+ , ok_button (can_cancel ? _("OK"): _("Close"))
+ , cancel_button (_("Cancel"))
+ , rescan_button (_("Rescan"))
{
add_events (Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK);