X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fio_selector.h;h=5ece771a638c7975c001ebba0b45a21f1779d613;hb=078151e4d43d83e13bad142d6b609db6ce6c5f8f;hp=abc902ba4c1c4a1968e5ad5e9212edb45259f3ce;hpb=f5091b8db024c3499c72cac8694cde678e8f73bb;p=ardour.git diff --git a/gtk2_ardour/io_selector.h b/gtk2_ardour/io_selector.h index abc902ba4c..5ece771a63 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,21 +28,31 @@ using __gnu_cxx::slist; #endif #include -#include + +#include + +#include +#include +#include +#include +#include +#include +#include #include + namespace ARDOUR { class IO; class Session; class PortInsert; class Port; - class Redirect; + class IOProcessor; } 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; + Glib::Mutex port_display_lock; slist port_displays; void display_ports (); void rescan (); void clear_connections (); - void port_selection_changed(); + bool port_selection_changed(GdkEventButton *, Gtk::TreeView*); void ports_changed (ARDOUR::IOChange, void *); - void name_changed (void*); + void name_changed (); void add_port (); void remove_port (); - gint remove_port_when_idle (ARDOUR::Port *); + void set_button_sensitivity (); - gint port_column_button_release (GdkEventButton*, Gtk::TreeView*); - gint connection_click (GdkEventButton *, Gtk::TreeView*); + gint connection_button_release (GdkEventButton *, Gtk::TreeView*); - void select_clist(Gtk::TreeView*); - 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,8 @@ class PortInsertWindow : public ArdourDialog void cancel (); void accept (); - void plugin_going_away (ARDOUR::Redirect*); + void plugin_going_away (); + sigc::connection going_away_connection; };