NoteDrag copy modifier detection is no longer explicit.
[ardour.git] / gtk2_ardour / processor_box.h
index 3480fad556bb60f2b915e17d8671c7f7936b7675..330a920e87bc4eec49a7dd6be134083ae555cd5a 100644 (file)
@@ -158,6 +158,7 @@ public:
        /** Hide any widgets that should be hidden */
        virtual void hide_things ();
 
+       void toggle_inline_display_visibility ();
        void show_all_controls ();
        void hide_all_controls ();
        void add_control_state (XMLNode *) const;
@@ -236,23 +237,31 @@ private:
 
        std::list<Control*> _controls;
 
-       void toggle_inline_display_visibility ();
        void toggle_control_visibility (Control *);
        void toggle_panner_link ();
+       void toggle_allow_feedback ();
 
        class PluginDisplay : public Gtk::DrawingArea {
        public:
-               PluginDisplay(boost::shared_ptr<ARDOUR::Plugin>, uint32_t max_height = 80);
+               PluginDisplay(ProcessorEntry&, boost::shared_ptr<ARDOUR::Plugin>, uint32_t max_height = 80);
                virtual ~PluginDisplay();
        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);
 
+               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;
@@ -261,7 +270,7 @@ private:
 
        class LuaPluginDisplay : public PluginDisplay {
        public:
-               LuaPluginDisplay(boost::shared_ptr<ARDOUR::LuaProc>, uint32_t max_height = 80);
+               LuaPluginDisplay(ProcessorEntry&, boost::shared_ptr<ARDOUR::LuaProc>, uint32_t max_height = 80);
                ~LuaPluginDisplay();
        protected:
                virtual uint32_t render_inline (cairo_t *, uint32_t width);
@@ -446,6 +455,16 @@ class ProcessorBox : public Gtk::HBox, public PluginInterestedObject, public ARD
        static Gtkmm2ext::Bindings* bindings;
        static void register_actions();
 
+       typedef std::vector<boost::shared_ptr<ARDOUR::Processor> > ProcSelection;
+
+       static ProcSelection current_processor_selection () {
+               ProcSelection ps;
+               if (_current_processor_box) {
+                       _current_processor_box->get_selected_processors (ps);
+               }
+               return ps;
+       }
+
 #ifndef NDEBUG
        static bool show_all_processors;
 #endif
@@ -527,8 +546,6 @@ class ProcessorBox : public Gtk::HBox, public PluginInterestedObject, public ARD
 
        void ab_plugins ();
 
-       typedef std::vector<boost::shared_ptr<ARDOUR::Processor> > ProcSelection;
-
        void cut_processors (const ProcSelection&);
        void copy_processors (const ProcSelection&);
        void delete_processors (const ProcSelection&);
@@ -551,6 +568,7 @@ class ProcessorBox : public Gtk::HBox, public PluginInterestedObject, public ARD
        static Glib::RefPtr<Gtk::Action> paste_action;
        static Glib::RefPtr<Gtk::Action> rename_action;
        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> edit_action;
        static Glib::RefPtr<Gtk::Action> edit_generic_action;