catch lua exceptions.
[ardour.git] / gtk2_ardour / processor_box.h
index 65e3612c56ebf8471b3f48c45ba19cac43f434f7..2df431139caee758269e554c3987a4713565a504 100644 (file)
@@ -44,6 +44,7 @@
 #include "ardour/types.h"
 #include "ardour/ardour.h"
 #include "ardour/plugin_insert.h"
+#include "ardour/luaproc.h"
 #include "ardour/port_insert.h"
 #include "ardour/processor.h"
 #include "ardour/route.h"
@@ -224,9 +225,13 @@ private:
        public:
                PluginDisplay(boost::shared_ptr<ARDOUR::Plugin>, uint32_t max_height = 80);
                ~PluginDisplay();
-       private:
+       protected:
                bool on_expose_event (GdkEventExpose *);
                void on_size_request (Gtk::Requisition* req);
+
+               void update_height_alloc (uint32_t inline_height);
+               virtual uint32_t render_inline (cairo_t *, uint32_t width);
+
                boost::shared_ptr<ARDOUR::Plugin> _plug;
                PBD::ScopedConnection _qdraw_connection;
                cairo_surface_t* _surf;
@@ -235,6 +240,18 @@ private:
                bool _scroll;
        };
 
+       class LuaPluginDisplay : public PluginDisplay {
+       public:
+               LuaPluginDisplay(boost::shared_ptr<ARDOUR::LuaProc>, uint32_t max_height = 80);
+               ~LuaPluginDisplay();
+       protected:
+               virtual uint32_t render_inline (cairo_t *, uint32_t width);
+       private:
+               boost::shared_ptr<ARDOUR::LuaProc> _luaproc;
+               LuaState lua_gui;
+               luabridge::LuaRef * _lua_render_inline;
+       };
+
        class PortIcon : public Gtk::DrawingArea {
        public:
                PortIcon(bool input);