fix lack of canvas.h
[ardour.git] / gtk2_ardour / io_selector.h
index fd549cc6a244b576f8d5741a80ad6be02540887f..5d7e2589219709ba4e2964d72afe46be9190ddfc 100644 (file)
@@ -29,7 +29,13 @@ using __gnu_cxx::slist;
 #endif
 
 #include <string>
-#include <gtkmm.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>
 
@@ -66,6 +72,21 @@ class IOSelector : public Gtk::VBox {
        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;
+
        /* client/port selection */
 
        Gtk::Notebook notebook;
@@ -85,13 +106,13 @@ class IOSelector : public Gtk::VBox {
        Gtk::ScrolledWindow port_display_scroller;
 
        PBD::Lock port_display_lock;
-       slist<Gtk::CList *> port_displays;
+       slist<Gtk::TreeView *> port_displays;
        void display_ports ();
 
        void rescan ();
        void clear_connections ();
 
-       void port_selection_handler (gint row, gint col, GdkEvent *ev, Gtk::CList *);
+       void port_selection_changed(Gtk::TreeView*);
 
        void ports_changed (ARDOUR::IOChange, void *);
        void name_changed (void*);
@@ -100,11 +121,11 @@ class IOSelector : public Gtk::VBox {
        void remove_port ();
        gint remove_port_when_idle (ARDOUR::Port *);
 
-       gint port_column_button_release (GdkEventButton*, Gtk::CList*);
-       gint connection_click (GdkEventButton *, Gtk::CList *clist);
+       gint port_column_button_release (GdkEventButton*, Gtk::TreeView*);
+       gint connection_button_release (GdkEventButton *, Gtk::TreeView*);
        
-       void select_clist(Gtk::CList*);
-       void select_next_clist ();
+       void select_treeview(Gtk::TreeView*);
+       void select_next_treeview ();
 };
 
 class IOSelectorWindow : public ArdourDialog
@@ -116,7 +137,7 @@ class IOSelectorWindow : public ArdourDialog
        IOSelector& selector() { return _selector; }
 
   protected:
-       gint on_map (GdkEventAny *);
+       void on_map ();
        
   private:
        IOSelector _selector;
@@ -158,7 +179,7 @@ class PortInsertWindow : public ArdourDialog
        PortInsertWindow (ARDOUR::Session&, ARDOUR::PortInsert&, bool can_cancel=false);
        
   protected:
-       gint on_map (GdkEventAny *);
+       void on_map ();
        
   private: