build system tweaks for coreaudio/waves-coreaudio
[ardour.git] / gtk2_ardour / plugin_ui.h
index 9f4e2effcfc836d5ff06ac9321b89aa397d9f7a1..58dc6ce2a3ce61a92d4805f7966d4a0cc8089090 100644 (file)
@@ -103,7 +103,8 @@ class PlugUIBase : public virtual sigc::trackable, public PBD::ScopedConnectionL
        virtual void on_window_hide() {}
 
        virtual void forward_key_event (GdkEventKey*) {}
-        virtual bool non_gtk_gui() const { return false; }
+       virtual void grab_focus () {}
+  virtual bool non_gtk_gui() const { return false; }
 
        sigc::signal<void,bool> KeyboardFocused;
 
@@ -135,6 +136,14 @@ class PlugUIBase : public virtual sigc::trackable, public PBD::ScopedConnectionL
        Gtk::Label latency_label;
        /** a button which, when clicked, opens the latency GUI */
        Gtk::Button latency_button;
+       /** a button which sets all controls' automation setting to Manual */
+       ArdourButton automation_manual_all_button;
+       /** a button which sets all controls' automation setting to Play */
+       ArdourButton automation_play_all_button;
+    /** a button which sets all controls' automation setting to Write */
+       ArdourButton automation_write_all_button;
+       /** a button which sets all controls' automation setting to Touch */
+       ArdourButton automation_touch_all_button;
        
        void set_latency_label ();
 
@@ -226,9 +235,10 @@ class GenericPluginUI : public PlugUIBase, public Gtk::VBox
        /* FIXME: Unify with AutomationController */
        struct ControlUI : public Gtk::HBox {
 
-               boost::shared_ptr<ARDOUR::AutomationControl> control;
+               const Evoral::Parameter parameter() const { return param; }
 
-               Evoral::Parameter parameter() { return control->parameter(); }
+               Evoral::Parameter                            param;
+               boost::shared_ptr<ARDOUR::AutomationControl> control;
 
                /* input */
 
@@ -252,18 +262,21 @@ class GenericPluginUI : public PlugUIBase, public Gtk::VBox
                Gtk::VBox*     vbox;
                MeterInfo*     meterinfo;
 
-               ControlUI ();
+               ControlUI (const Evoral::Parameter& param);
                ~ControlUI ();
        };
 
        std::vector<ControlUI*>   input_controls;
+       std::vector<ControlUI*>   input_controls_with_automation;
        std::vector<ControlUI*>   output_controls;
        sigc::connection screen_update_connection;
        void output_update();
 
        void build ();
-       ControlUI* build_control_ui (const ARDOUR::ParameterDescriptor&           desc,
+       ControlUI* build_control_ui (const Evoral::Parameter&                     param,
+                                    const ARDOUR::ParameterDescriptor&           desc,
                                     boost::shared_ptr<ARDOUR::AutomationControl> mcontrol,
+                                    float                                        value,
                                     bool                                         is_input);
 
        void ui_parameter_changed (ControlUI* cui);
@@ -275,8 +288,7 @@ class GenericPluginUI : public PlugUIBase, public Gtk::VBox
        void astate_clicked (ControlUI*);
        void automation_state_changed (ControlUI*);
        void set_automation_state (ARDOUR::AutoState state, ControlUI* cui);
-       void start_touch (ControlUI*);
-       void stop_touch (ControlUI*);
+       void set_all_automation (ARDOUR::AutoState state);
 
        /* XXX: remove */
        void print_parameter (char *buf, uint32_t len, uint32_t param);