+ void adjust_latency ();
+ bool process_save_template_prompter (ArdourPrompter& prompter, const std::string& dir);
+ void save_as_template ();
+
+ static Gtkmm2ext::ActiveState solo_active_state (boost::shared_ptr<ARDOUR::Stripable>);
+ static Gtkmm2ext::ActiveState solo_isolate_active_state (boost::shared_ptr<ARDOUR::Stripable>);
+ static Gtkmm2ext::ActiveState solo_safe_active_state (boost::shared_ptr<ARDOUR::Stripable>);
+ static Gtkmm2ext::ActiveState mute_active_state (ARDOUR::Session*, boost::shared_ptr<ARDOUR::Stripable>);
+
+ /** Emitted when a bus has been set or unset from `display sends to this bus' mode
+ * by a click on the `Sends' button. The parameter is the route that the sends are
+ * to, or 0 if no route is now in this mode.
+ */
+ static PBD::Signal1<void, boost::shared_ptr<ARDOUR::Route> > BusSendDisplayChanged;
+
+ void comment_editor_done_editing ();
+ void setup_comment_editor ();
+ void open_comment_editor ();
+ void toggle_comment_editor ();
+
+ gint comment_key_release_handler (GdkEventKey*);
+ void comment_changed ();
+ void comment_edited ();
+ bool ignore_comment_edit;
+
+ protected:
+
+ ArdourWindow* comment_window;
+ Gtk::TextView* comment_area;
+ IOSelectorWindow *input_selector;
+ IOSelectorWindow *output_selector;
+
+ PBD::ScopedConnectionList route_connections;
+ bool self_destruct;
+
+ void init ();
+ void reset ();
+
+ void self_delete ();
+ virtual void start_step_editing () {}
+ virtual void stop_step_editing() {}
+
+ void set_invert_sensitive (bool);
+ bool verify_new_route_name (const std::string& name);
+
+ void route_gui_changed (PBD::PropertyChange const&);
+ virtual void route_color_changed () {}
+
+ void check_rec_enable_sensitivity ();
+
+ virtual void bus_send_display_changed (boost::shared_ptr<ARDOUR::Route>);
+
+ static std::string program_port_prefix;
+
+ bool mark_hidden (bool yn);
+
+ private:
+ void parameter_changed (std::string const &);
+ void relabel_solo_button ();
+ void track_mode_changed ();
+
+ std::string route_state_id () const;
+
+ protected:
+ struct SoloMuteRelease {
+ SoloMuteRelease (bool was_active)
+ : active (was_active)
+ , exclusive (false) {}
+
+ boost::shared_ptr<ARDOUR::RouteList> routes;
+ boost::shared_ptr<ARDOUR::RouteList> routes_on;
+ boost::shared_ptr<ARDOUR::RouteList> routes_off;
+ boost::shared_ptr<ARDOUR::Route> route;
+ bool active;
+ bool exclusive;
+ };
+
+ SoloMuteRelease* _solo_release;
+ SoloMuteRelease* _mute_release;
+
+ ControlSlaveUI* csu;
+
+private:
+ void setup_invert_buttons ();
+ void set_invert_button_state ();
+ void invert_menu_toggled (uint32_t);
+ bool invert_press (GdkEventButton *);
+ bool invert_release (GdkEventButton *, uint32_t i);
+
+ int _i_am_the_modifier;
+ std::vector<ArdourButton*> _invert_buttons;
+ Gtk::Menu* _invert_menu;
+
+ static void set_showing_sends_to (boost::shared_ptr<ARDOUR::Route>);
+ static boost::weak_ptr<ARDOUR::Route> _showing_sends_to;