-#include <string>
-
-#include <glibmm/thread.h>
-
-#include <gtkmm/box.h>
-#include <gtkmm/frame.h>
-#include <gtkmm/button.h>
-#include <gtkmm/scrolledwindow.h>
-#include <gtkmm/notebook.h>
-#include <gtkmm/treeview.h>
-#include <gtkmm/liststore.h>
-
-#include <ardour_dialog.h>
-
-
-namespace ARDOUR {
- class IO;
- class Session;
- class PortInsert;
- class Port;
- class Redirect;
-}
-
-class IOSelector : public Gtk::VBox {
- public:
- IOSelector (ARDOUR::Session&, boost::shared_ptr<ARDOUR::IO>, bool for_input);
- ~IOSelector ();
-
- void redisplay ();
-
- enum Result {
- Cancelled,
- Accepted
- };
-
- sigc::signal<void,Result> Finished;
-
- protected:
- ARDOUR::Session& session;
-
- private:
- boost::shared_ptr<ARDOUR::IO> io;
- bool for_input;
- ARDOUR::Port *selected_port;
- sigc::connection page_selection_connection;
-
- Gtk::VBox main_box;
- Gtk::HBox port_and_selector_box;
-
- /* column model */
-
- struct PortDisplayModelColumns : public Gtk::TreeModel::ColumnRecord {
-
- PortDisplayModelColumns() {
- add (displayed_name);
- add (full_name);
- }
-
- Gtk::TreeModelColumn<Glib::ustring> displayed_name;
- Gtk::TreeModelColumn<Glib::ustring> full_name;
- };
-
- PortDisplayModelColumns port_display_columns;
+class IOSelector : public PortMatrix
+{
+public:
+ IOSelector (Gtk::Window*, ARDOUR::Session *, boost::shared_ptr<ARDOUR::IO>);