* Added CanvasSysEx class for displaying SysExes
[ardour.git] / gtk2_ardour / processor_box.h
index 11a3b91fd09ceb4306054a5a616ef2d7e74dc17c..0a6399caad450e4208148b650484fcf324325c4f 100644 (file)
 
 #include <ardour/types.h>
 #include <ardour/ardour.h>
-#include <ardour/io.h>
+#include <ardour/plugin_insert.h>
+#include <ardour/port_insert.h>
 #include <ardour/processor.h>
-#include <ardour/io_processor.h>
 
 #include <pbd/fastlog.h>
 
+#include "plugin_interest.h"
 #include "route_ui.h"
 #include "io_selector.h"
+#include "send_ui.h"
 #include "enums.h"
 
 class MotionController;
@@ -52,8 +54,9 @@ class PluginUIWindow;
 class RouteRedirectSelection;
 
 namespace ARDOUR {
-       class Bundle;
-       class Processor;
+       class Connection;
+       class IO;
+       class Insert;
        class Plugin;
        class PluginInsert;
        class PortInsert;
@@ -62,14 +65,13 @@ namespace ARDOUR {
        class Session;
 }
 
-
-class ProcessorBox : public Gtk::HBox
+class ProcessorBox : public Gtk::HBox, public PluginInterestedObject
 {
   public:
-       ProcessorBox (ARDOUR::Placement, ARDOUR::Session&, 
-                    boost::shared_ptr<ARDOUR::Route>, PluginSelector &, RouteRedirectSelection &, bool owner_is_mixer = false);
+       ProcessorBox (ARDOUR::Placement, ARDOUR::Session&, PluginSelector &, RouteRedirectSelection &, bool owner_is_mixer = false);
        ~ProcessorBox ();
 
+       void set_route (boost::shared_ptr<ARDOUR::Route>);
        void set_width (Width);
 
        void update();
@@ -77,21 +79,23 @@ class ProcessorBox : public Gtk::HBox
        void select_all_processors ();
        void deselect_all_processors ();
        void select_all_plugins ();
+       void select_all_inserts ();
        void select_all_sends ();
        
-       sigc::signal<void,boost::shared_ptr<ARDOUR::Processor> > InsertSelected;
-       sigc::signal<void,boost::shared_ptr<ARDOUR::Processor> > InsertUnselected;
+       sigc::signal<void,boost::shared_ptr<ARDOUR::Processor> > ProcessorSelected;
+       sigc::signal<void,boost::shared_ptr<ARDOUR::Processor> > ProcessorUnselected;
        
        static void register_actions();
 
-  protected:
-       void set_stuff_from_route ();
-
   private:
        boost::shared_ptr<ARDOUR::Route>  _route;
        ARDOUR::Session &   _session;
        bool                _owner_is_mixer;
        bool                 ab_direction;
+       std::vector<sigc::connection> connections;
+
+       /// a send that is in the process of creation
+       boost::shared_ptr<ARDOUR::Send> _send_being_created;
 
        ARDOUR::Placement   _placement;
 
@@ -106,9 +110,9 @@ class ProcessorBox : public Gtk::HBox
                    add (processor);
                    add (color);
            }
-           Gtk::TreeModelColumn<std::string>                           text;
+           Gtk::TreeModelColumn<std::string>       text;
            Gtk::TreeModelColumn<boost::shared_ptr<ARDOUR::Processor> > processor;
-           Gtk::TreeModelColumn<Gdk::Color>                            color;
+           Gtk::TreeModelColumn<Gdk::Color>        color;
        };
 
        ModelColumns columns;
@@ -125,7 +129,7 @@ class ProcessorBox : public Gtk::HBox
        Gtkmm2ext::DnDTreeView<boost::shared_ptr<ARDOUR::Processor> > processor_display;
        Gtk::ScrolledWindow    processor_scroller;
 
-       void object_drop (std::string type, uint32_t cnt, const boost::shared_ptr<ARDOUR::Processor>*);
+       void object_drop (const std::list<boost::shared_ptr<ARDOUR::Processor> >&);
 
        Width _width;
        
@@ -142,10 +146,10 @@ class ProcessorBox : public Gtk::HBox
        void show_processor_menu (gint arg);
 
        void choose_send ();
-       void send_io_finished (IOSelector::Result, boost::shared_ptr<ARDOUR::Send>, IOSelectorWindow*);
-       void choose_processor ();
+       void send_io_finished (IOSelector::Result, boost::weak_ptr<ARDOUR::Processor>, IOSelectorWindow*);
+       void choose_insert ();
        void choose_plugin ();
-       void processor_plugin_chosen (boost::shared_ptr<ARDOUR::Plugin>);
+       void use_plugins (const SelectedPlugins&);
 
        bool no_processor_redisplay;
        bool ignore_delete;
@@ -153,7 +157,7 @@ class ProcessorBox : public Gtk::HBox
        bool processor_button_press_event (GdkEventButton *);
        bool processor_button_release_event (GdkEventButton *);
        void redisplay_processors ();
-       void add_processor_to_display (boost::shared_ptr<ARDOUR::Processor>);
+       void add_processor_to_display (boost::weak_ptr<ARDOUR::Processor>);
        void row_deleted (const Gtk::TreeModel::Path& path);
        void show_processor_active (boost::weak_ptr<ARDOUR::Processor>);
        void show_processor_name (boost::weak_ptr<ARDOUR::Processor>);
@@ -163,8 +167,8 @@ class ProcessorBox : public Gtk::HBox
 
        void processors_reordered (const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator&, int*);
        void compute_processor_sort_keys ();
-       vector<sigc::connection> processor_active_connections;
-       vector<sigc::connection> processor_name_connections;
+       std::vector<sigc::connection> processor_active_connections;
+       std::vector<sigc::connection> processor_name_connections;
        
        bool processor_drag_in_progress;
        void processor_drag_begin (GdkDragContext*);
@@ -185,12 +189,11 @@ class ProcessorBox : public Gtk::HBox
        void get_selected_processors (vector<boost::shared_ptr<ARDOUR::Processor> >&);
 
        static Glib::RefPtr<Gtk::Action> paste_action;
-       void paste_processor_list (std::list<boost::shared_ptr<ARDOUR::Processor> >& processors);
+       void paste_processor_list (const std::list<boost::shared_ptr<ARDOUR::Processor> >& processors);
+       void paste_processor_state (const XMLNode&);
        
        void activate_processor (boost::shared_ptr<ARDOUR::Processor>);
        void deactivate_processor (boost::shared_ptr<ARDOUR::Processor>);
-       void cut_processor (boost::shared_ptr<ARDOUR::Processor>);
-       void copy_processor (boost::shared_ptr<ARDOUR::Processor>);
        void edit_processor (boost::shared_ptr<ARDOUR::Processor>);
        void hide_processor_editor (boost::shared_ptr<ARDOUR::Processor>);
        void rename_processor (boost::shared_ptr<ARDOUR::Processor>);
@@ -204,7 +207,7 @@ class ProcessorBox : public Gtk::HBox
        static bool leave_box (GdkEventCrossing*, ProcessorBox*);
 
        static void rb_choose_plugin ();
-       static void rb_choose_processor ();
+       static void rb_choose_insert ();
        static void rb_choose_send ();
        static void rb_clear ();
        static void rb_cut ();
@@ -218,9 +221,8 @@ class ProcessorBox : public Gtk::HBox
        static void rb_deactivate ();
        static void rb_activate_all ();
        static void rb_deactivate_all ();
-       static void rb_edit ();
        static void rb_ab_plugins ();
-       static void rb_deactivate_plugins ();
+       static void rb_edit ();
        
        void route_name_changed (PluginUIWindow* plugin_ui, boost::weak_ptr<ARDOUR::PluginInsert> pi);
        std::string generate_processor_title (boost::shared_ptr<ARDOUR::PluginInsert> pi);