X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fio_selector.h;h=430926f76110583c6b50d645ef316dc46b3bc84b;hb=8d1775b4582a4fe96b254dd3877377406ee51642;hp=9485eacd027e82a295634a8013be755c7639245c;hpb=d880812c3a789bd62ba9427a7fb0704a8dff561f;p=ardour.git diff --git a/gtk2_ardour/io_selector.h b/gtk2_ardour/io_selector.h index 9485eacd02..430926f761 100644 --- a/gtk2_ardour/io_selector.h +++ b/gtk2_ardour/io_selector.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_ui_io_selector_h__ @@ -29,10 +28,20 @@ using __gnu_cxx::slist; #endif #include -#include + +#include + +#include +#include +#include +#include +#include +#include +#include #include + namespace ARDOUR { class IO; class Session; @@ -43,7 +52,7 @@ namespace ARDOUR { class IOSelector : public Gtk::VBox { public: - IOSelector (ARDOUR::Session&, ARDOUR::IO&, bool for_input); + IOSelector (ARDOUR::Session&, boost::shared_ptr, bool for_input); ~IOSelector (); void redisplay (); @@ -57,15 +66,31 @@ class IOSelector : public Gtk::VBox { protected: ARDOUR::Session& session; - + private: - ARDOUR::IO& io; + boost::shared_ptr 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 displayed_name; + Gtk::TreeModelColumn full_name; + }; + + PortDisplayModelColumns port_display_columns; + /* client/port selection */ Gtk::Notebook notebook; @@ -84,45 +109,42 @@ class IOSelector : public Gtk::VBox { Gtk::Button clear_connections_button; Gtk::ScrolledWindow port_display_scroller; - PBD::Lock port_display_lock; - slist port_displays; + Glib::Mutex port_display_lock; + slist port_displays; void display_ports (); void rescan (); void clear_connections (); - void port_selection_handler (gint row, gint col, GdkEvent *ev, Gtk::CList *); + bool port_selection_changed(GdkEventButton *, Gtk::TreeView*); void ports_changed (ARDOUR::IOChange, void *); void name_changed (void*); void add_port (); void remove_port (); - gint remove_port_when_idle (ARDOUR::Port *); + void set_button_sensitivity (); - gint port_column_button_release (GdkEventButton*, Gtk::CList*); - gint connection_click (GdkEventButton *, Gtk::CList *clist); + 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 { public: - IOSelectorWindow (ARDOUR::Session&, ARDOUR::IO&, bool for_input, bool can_cancel=false); + IOSelectorWindow (ARDOUR::Session&, boost::shared_ptr, bool for_input, bool can_cancel=false); ~IOSelectorWindow (); IOSelector& selector() { return _selector; } protected: - bool on_map (GdkEventAny *); + void on_map (); private: IOSelector _selector; - Gtk::VBox vbox; - /* overall operation buttons */ Gtk::Button ok_button; @@ -139,7 +161,7 @@ class IOSelectorWindow : public ArdourDialog class PortInsertUI : public Gtk::VBox { public: - PortInsertUI (ARDOUR::Session&, ARDOUR::PortInsert&); + PortInsertUI (ARDOUR::Session&, boost::shared_ptr); void redisplay (); void finished (IOSelector::Result); @@ -155,10 +177,10 @@ class PortInsertUI : public Gtk::VBox class PortInsertWindow : public ArdourDialog { public: - PortInsertWindow (ARDOUR::Session&, ARDOUR::PortInsert&, bool can_cancel=false); + PortInsertWindow (ARDOUR::Session&, boost::shared_ptr, bool can_cancel=false); protected: - bool on_map (GdkEventAny *); + void on_map (); private: @@ -175,7 +197,7 @@ class PortInsertWindow : public ArdourDialog void cancel (); void accept (); - void plugin_going_away (ARDOUR::Redirect*); + void plugin_going_away (); };