Move panner bypass state up to the PannerShell so that it is preserved even when...
[ardour.git] / gtk2_ardour / lv2_plugin_ui.h
index 1af023974c12d0d208b81b631922bc53c996acb0..b9d644081c775680beca1ad87bbc1898caf8cddc 100644 (file)
@@ -1,6 +1,6 @@
 /*
-    Copyright (C) 2008 Paul Davis
-    Author: Dave Robillard
+    Copyright (C) 2008-2011 Paul Davis
+    Author: David Robillard
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 #ifndef __ardour_lv2_plugin_ui_h__
 #define __ardour_lv2_plugin_ui_h__
 
+#ifdef WAF_BUILD
+#include "gtk2ardour-config.h"
+#endif
+
 #include <vector>
 #include <map>
 #include <list>
 #include <sigc++/signal.h>
 #include <gtkmm/widget.h>
 
-#include <ardour_dialog.h>
-#include <ardour/types.h>
+#include "ardour_dialog.h"
+#include "ardour/types.h"
 #include "plugin_ui.h"
 
-#ifdef HAVE_LV2
+#ifdef LV2_SUPPORT
+
+#include "lv2_external_ui.h"
 
 namespace ARDOUR {
        class PluginInsert;
@@ -53,28 +59,47 @@ class LV2PluginUI : public PlugUIBase, public Gtk::VBox
        int package (Gtk::Window&);
 
   private:
+
+       void parameter_changed (uint32_t, float);
+
        boost::shared_ptr<ARDOUR::LV2Plugin> _lv2;
        std::vector<int> _output_ports;
        sigc::connection _screen_update_connection;
-       
-       Gtk::Widget*   _gui_widget;
-       SLV2UIInstance _inst;
-       float*         _values;
-       
+
+       Gtk::Widget* _gui_widget;
+       float*       _values;
+       std::vector<boost::shared_ptr<ARDOUR::AutomationControl> > _controllables;
+
+       struct lv2_external_ui_host _external_ui_host;
+       LV2_Feature _external_ui_feature;
+       struct lv2_external_ui* _external_ui_ptr;
+       Gtk::Window* _win_ptr;
+
+       static void on_external_ui_closed(void* controller);
+
+       void* _inst;
+
        static void lv2_ui_write(
-                       LV2UI_Controller controller,
-                       uint32_t         port_index,
-                       uint32_t         buffer_size,
-                       uint32_t         format,
-                       const void*      buffer);
-       
-       void parameter_changed(uint32_t, float);
+                       void*       controller,
+                       uint32_t    port_index,
+                       uint32_t    buffer_size,
+                       uint32_t    format,
+                       const void* buffer);
+
+       void lv2ui_instantiate(const std::string& title);
+       void lv2ui_free();
+
+       void parameter_update(uint32_t, float);
        bool configure_handler (GdkEventConfigure*);
        void save_plugin_setting ();
        void output_update();
        bool is_update_wanted(uint32_t index);
+
+       virtual bool on_window_show(const std::string& title);
+       virtual void on_window_hide();
 };
-#endif // HAVE_LV2
+
+#endif // LV2_SUPPORT
 
 #endif /* __ardour_lv2_plugin_ui_h__ */