clean up that godawful ugly latency GUI in plugin UIs
[ardour.git] / gtk2_ardour / plugin_ui.h
index 8f00ef8201cc40302a7a8e208bd2dadeae2bc245..e65abbac59d33a8741988d6d1c441aa943f426c1 100644 (file)
@@ -43,8 +43,6 @@
 
 #include "ardour/types.h"
 
-#include "ardour_dialog.h"
-#include "latency_gui.h"
 #include "automation_controller.h"
 
 namespace ARDOUR {
@@ -67,11 +65,14 @@ namespace Gtkmm2ext {
        class PixmapButton;
 }
 
+class LatencyGUI;
+class ArdourDialog;
+
 class PlugUIBase : public virtual sigc::trackable
 {
   public:
        PlugUIBase (boost::shared_ptr<ARDOUR::PluginInsert>);
-       virtual ~PlugUIBase() {}
+       virtual ~PlugUIBase();
 
        virtual gint get_preferred_height () = 0;
        virtual gint get_preferred_width () = 0;
@@ -83,6 +84,8 @@ class PlugUIBase : public virtual sigc::trackable
 
        virtual void update_presets ();
 
+       void latency_button_clicked ();
+
   protected:
        boost::shared_ptr<ARDOUR::PluginInsert> insert;
        boost::shared_ptr<ARDOUR::Plugin> plugin;
@@ -91,7 +94,12 @@ class PlugUIBase : public virtual sigc::trackable
        Gtk::ToggleButton bypass_button;
        Gtk::EventBox focus_button;
 
-       LatencyGUI latency_gui;
+       Gtk::Label latency_label;
+       Gtk::Button latency_button;
+       void set_latency_label ();
+
+       LatencyGUI* latency_gui;
+       ArdourDialog* latency_dialog;
 
        Gtk::Expander plugin_eq_bin;
        Gtk::ToggleButton eqgui_toggle;
@@ -202,6 +210,7 @@ class GenericPluginUI : public PlugUIBase, public Gtk::HPaned
        ControlUI* build_control_ui (guint32 port_index, boost::shared_ptr<ARDOUR::AutomationControl>);
        std::vector<string> setup_scale_values(guint32 port_index, ControlUI* cui);
        void parameter_changed (ControlUI* cui);
+       void toggle_parameter_changed (ControlUI* cui);
        void update_control_display (ControlUI* cui);
        void control_port_toggled (ControlUI* cui);
        void control_combo_changed (ControlUI* cui);
@@ -240,6 +249,7 @@ class PluginUIWindow : public Gtk::Window
 
   private:
        PlugUIBase* _pluginui;
+       sigc::connection death_connection;
        Gtk::Window* parent;
        Gtk::VBox vbox;
        bool non_gtk_gui;