auditioner always runs at normal speed, independent of transport speed
[ardour.git] / gtk2_ardour / processor_box.h
index 0d378456e492c90460888440cd762b5038879c12..cb13f42b436b0a3504b76e703db598e6a2d045f4 100644 (file)
 #include <gtkmm/menu.h>
 #include <gtkmm/scrolledwindow.h>
 
-#include "gtkmm2ext/auto_spin.h"
 #include "gtkmm2ext/bindings.h"
-#include "gtkmm2ext/click_box.h"
 #include "gtkmm2ext/dndtreeview.h"
 #include "gtkmm2ext/dndvbox.h"
-#include "gtkmm2ext/pixfader.h"
 #include "gtkmm2ext/persistent_tooltip.h"
 
 #include "pbd/stateful.h"
 #include "pbd/fastlog.h"
 
 #include "widgets/ardour_button.h"
+#include "widgets/ardour_fader.h"
+#include "widgets/slider_controller.h"
 
 #include "plugin_interest.h"
+#include "plugin_display.h"
 #include "io_selector.h"
 #include "send_ui.h"
 #include "enums.h"
@@ -224,10 +224,13 @@ private:
                std::string state_id () const;
                void set_tooltip ();
 
+               void start_touch ();
+               void end_touch ();
+
                boost::weak_ptr<ARDOUR::AutomationControl> _control;
                /* things for a slider */
                Gtk::Adjustment _adjustment;
-               Gtkmm2ext::HSliderController _slider;
+               ArdourWidgets::HSliderController _slider;
                Gtkmm2ext::PersistentTooltip _slider_persistant_tooltip;
                /* things for a button */
                ArdourWidgets::ArdourButton _button;
@@ -243,34 +246,22 @@ private:
        void toggle_panner_link ();
        void toggle_allow_feedback ();
 
-       class PluginDisplay : public Gtk::DrawingArea {
+       class PluginInlineDisplay : public PluginDisplay {
        public:
-               PluginDisplay(ProcessorEntry&, boost::shared_ptr<ARDOUR::Plugin>, uint32_t max_height = 80);
-               virtual ~PluginDisplay();
+               PluginInlineDisplay(ProcessorEntry&, boost::shared_ptr<ARDOUR::Plugin>, uint32_t max_height = 80);
+               ~PluginInlineDisplay() {}
        protected:
-               bool on_expose_event (GdkEventExpose *);
                void on_size_request (Gtk::Requisition* req);
                bool on_button_press_event (GdkEventButton *ev);
-               bool on_button_release_event (GdkEventButton *ev);
-
-               void plugin_going_away () {
-                       _qdraw_connection.disconnect ();
-               }
-
                void update_height_alloc (uint32_t inline_height);
-               virtual uint32_t render_inline (cairo_t *, uint32_t width);
+
+               void display_frame (cairo_t* cr, double w, double h);
 
                ProcessorEntry& _entry;
-               boost::shared_ptr<ARDOUR::Plugin> _plug;
-               PBD::ScopedConnection _qdraw_connection;
-               PBD::ScopedConnection _death_connection;
-               cairo_surface_t* _surf;
-               uint32_t _max_height;
-               uint32_t _cur_height;
                bool _scroll;
        };
 
-       class LuaPluginDisplay : public PluginDisplay {
+       class LuaPluginDisplay : public PluginInlineDisplay {
        public:
                LuaPluginDisplay(ProcessorEntry&, boost::shared_ptr<ARDOUR::LuaProc>, uint32_t max_height = 80);
                ~LuaPluginDisplay();
@@ -561,6 +552,8 @@ private:
        void for_selected_processors (void (ProcessorBox::*pmf)(boost::shared_ptr<ARDOUR::Processor>));
        void get_selected_processors (ProcSelection&) const;
 
+       void set_disk_io_position (ARDOUR::DiskIOPoint);
+
        bool can_cut() const;
        bool stub_processor_selected() const;
 
@@ -571,6 +564,7 @@ private:
        static Glib::RefPtr<Gtk::Action> delete_action;
        static Glib::RefPtr<Gtk::Action> backspace_action;
        static Glib::RefPtr<Gtk::Action> manage_pins_action;
+       static Glib::RefPtr<Gtk::Action> disk_io_action;
        static Glib::RefPtr<Gtk::Action> edit_action;
        static Glib::RefPtr<Gtk::Action> edit_generic_action;
        void paste_processor_state (const XMLNodeList&, boost::shared_ptr<ARDOUR::Processor>);
@@ -604,6 +598,7 @@ private:
        static void rb_deactivate_all ();
        static void rb_ab_plugins ();
        static void rb_manage_pins ();
+       static void rb_set_disk_io_position (ARDOUR::DiskIOPoint);
        static void rb_edit ();
        static void rb_edit_generic ();