+ void draw_connection (cairo_t*, double, double, double, double, bool, bool, bool dashed = false);
+ void draw_connection (cairo_t*, const CtrlWidget&, const CtrlWidget&, bool dashed = false);
+ const CtrlWidget& get_io_ctrl (CtrlType ct, ARDOUR::DataType dt, uint32_t id, uint32_t ip = 0) const;
+
+ static void edge_coordinates (const CtrlWidget& w, double &x, double &y);
+ static std::string port_label (const std::string&, bool);
+
+ void reset_mapping ();
+ void reset_configuration ();
+ void toggle_sidechain ();
+ void connect_sidechain ();
+ void add_remove_plugin_clicked (bool);
+ void add_remove_port_clicked (bool, ARDOUR::DataType);
+ void add_remove_inpin_clicked (bool, ARDOUR::DataType);
+ void add_sidechain_port (ARDOUR::DataType);
+ void select_output_preset (uint32_t n_audio);
+ void handle_input_action (const CtrlElem &, const CtrlElem &);
+ void handle_output_action (const CtrlElem &, const CtrlElem &);
+ void handle_thru_action (const CtrlElem &, const CtrlElem &);
+ bool handle_disconnect (const CtrlElem &, bool no_signal = false);
+ void disconnect_other_outputs (uint32_t skip_pc, ARDOUR::DataType dt, uint32_t id);
+ void disconnect_other_thru (ARDOUR::DataType dt, uint32_t id);
+ void remove_port (boost::weak_ptr<ARDOUR::Port>);
+ void disconnect_port (boost::weak_ptr<ARDOUR::Port>);
+ void connect_port (boost::weak_ptr<ARDOUR::Port>, boost::weak_ptr<ARDOUR::Port>);
+ void add_send_from (boost::weak_ptr<ARDOUR::Port>, boost::weak_ptr<ARDOUR::Route>);
+ uint32_t add_port_to_table (boost::shared_ptr<ARDOUR::Port>, uint32_t, bool);
+ uint32_t maybe_add_route_to_input_menu (boost::shared_ptr<ARDOUR::Route>, ARDOUR::DataType, boost::weak_ptr<ARDOUR::Port>);
+ void port_connected_or_disconnected (boost::weak_ptr<ARDOUR::Port>, boost::weak_ptr<ARDOUR::Port>);
+
+ bool sc_input_press (GdkEventButton *, boost::weak_ptr<ARDOUR::Port>);
+ bool sc_input_release (GdkEventButton *);