allow sending OSC from inline display UIs
[ardour.git] / gtk2_ardour / plugin_ui.h
index d07b287e6a68541aa5b7a518f44fbf09165ec982..4fb052b5f5b271a1ee06a8a96aa86657b33cca82 100644 (file)
@@ -42,7 +42,6 @@
 #include <gtkmm/adjustment.h>
 #include <gtkmm/togglebutton.h>
 #include <gtkmm/socket.h>
-#include <gtkmm/comboboxtext.h>
 #include <gtkmm/socket.h>
 
 #include "ardour/types.h"
@@ -130,6 +129,8 @@ class PlugUIBase : public virtual sigc::trackable, public PBD::ScopedConnectionL
        ArdourButton reset_button;
        /** a button to bypass the plugin */
        ArdourButton bypass_button;
+       /** and self-explaining button :) */
+       ArdourButton pin_management_button;
        /** a button to acquire keyboard focus */
        Gtk::EventBox focus_button;
        /** an expander containing the plugin description */
@@ -153,7 +154,6 @@ class PlugUIBase : public virtual sigc::trackable, public PBD::ScopedConnectionL
        ArdourWindow* latency_dialog;
 
        PluginEqGui* eqgui;
-       Gtk::Requisition pre_eq_size;
 
        Gtk::Image* focus_out_image;
        Gtk::Image* focus_in_image;
@@ -164,6 +164,7 @@ class PlugUIBase : public virtual sigc::trackable, public PBD::ScopedConnectionL
        void save_plugin_setting ();
        void delete_plugin_setting ();
        void reset_plugin_parameters ();
+       void manage_pins ();
        bool focus_toggled(GdkEventButton*);
        bool bypass_button_release(GdkEventButton*);
        void toggle_description ();
@@ -236,7 +237,7 @@ class GenericPluginUI : public PlugUIBase, public Gtk::VBox
 
                ArdourButton                            automate_button;
                Gtk::Label                              label;
-               Gtk::ComboBoxText*                      combo;
+               ArdourDropdown*                         combo;
                Gtkmm2ext::ClickBox*                    clickbox;
                Gtk::FileChooserButton*                 file_button;
                ArdourSpinner*                          spin_box;
@@ -262,10 +263,12 @@ class GenericPluginUI : public PlugUIBase, public Gtk::VBox
                int x0, x1, y0, y1;
        };
 
-       std::vector<ControlUI*>   input_controls;
+       std::vector<ControlUI*>   input_controls; // workaround for preset load
        std::vector<ControlUI*>   input_controls_with_automation;
        std::vector<ControlUI*>   output_controls;
+
        sigc::connection screen_update_connection;
+
        void output_update();
 
        void build ();
@@ -281,24 +284,27 @@ class GenericPluginUI : public PlugUIBase, public Gtk::VBox
 
        void ui_parameter_changed (ControlUI* cui);
        void update_control_display (ControlUI* cui);
-       void control_combo_changed (ControlUI* cui);
+       void update_input_displays (); // workaround for preset load
+       void control_combo_changed (ControlUI* cui, float value);
 
-       void astate_clicked (ControlUI*);
+       bool astate_button_event (GdkEventButton* ev, ControlUI*);
        void automation_state_changed (ControlUI*);
        void set_automation_state (ARDOUR::AutoState state, ControlUI* cui);
        void set_all_automation (ARDOUR::AutoState state);
 
+       void knob_size_request(Gtk::Requisition* req, ControlUI* cui);
+
        /* XXX: remove */
        void print_parameter (char *buf, uint32_t len, uint32_t param);
        bool integer_printer (char* buf, Gtk::Adjustment &, ControlUI *);
        bool midinote_printer(char* buf, Gtk::Adjustment &, ControlUI *);
 
-       void set_property (const ARDOUR::ParameterDescriptor& desc,
-                          Gtk::FileChooserButton*            widget);
-       void property_changed (uint32_t key, const ARDOUR::Variant& value);
+       typedef std::map<uint32_t, Gtk::FileChooserButton*> FilePathControls;
+       FilePathControls _filepath_controls;
+       void set_path_property (const ARDOUR::ParameterDescriptor& desc,
+                               Gtk::FileChooserButton*            widget);
+       void path_property_changed (uint32_t key, const ARDOUR::Variant& value);
 
-       typedef std::map<uint32_t, Gtk::FileChooserButton*> PropertyControls;
-       PropertyControls _property_controls;
 };
 
 class PluginUIWindow : public ArdourWindow