X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fprocessor_box.h;h=a72eb3223dff0e76b09e2cbe97d0febc9b8c9ed2;hb=d176cbc80476cdc8ca082631efc171ea39116d63;hp=f21fffa3f0e905f355913d9da5935b18fadccfef;hpb=c74c4d3803195ea8eb7de2f96a159abfe1127b74;p=ardour.git diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h index f21fffa3f0..a72eb3223d 100644 --- a/gtk2_ardour/processor_box.h +++ b/gtk2_ardour/processor_box.h @@ -34,6 +34,7 @@ #include "gtkmm2ext/click_box.h" #include "gtkmm2ext/dndvbox.h" #include "gtkmm2ext/pixfader.h" +#include "gtkmm2ext/persistent_tooltip.h" #include "pbd/stateful.h" #include "pbd/signals.h" @@ -52,8 +53,8 @@ #include "io_selector.h" #include "send_ui.h" #include "enums.h" -#include "window_proxy.h" #include "ardour_button.h" +#include "window_manager.h" class MotionController; class PluginSelector; @@ -74,28 +75,31 @@ namespace ARDOUR { class ProcessorBox; -/** A WindowProxy for Processor UI windows; it knows how to ask a ProcessorBox - * to create a UI window for a particular processor. - */ -class ProcessorWindowProxy : public WindowProxy +class ProcessorWindowProxy : public WM::ProxyBase { -public: - ProcessorWindowProxy (std::string const &, XMLNode const *, ProcessorBox *, boost::weak_ptr); + public: + ProcessorWindowProxy (std::string const &, ProcessorBox *, boost::weak_ptr); - void show (); - bool rc_configured () const { - return false; - } + Gtk::Window* get (bool create = false); + + boost::weak_ptr processor () const { + return _processor; + } - boost::weak_ptr processor () const { - return _processor; - } + ARDOUR::SessionHandlePtr* session_handle(); + void toggle(); + void set_custom_ui_mode(bool use_custom) { want_custom = use_custom; } - bool marked; + bool marked; -private: - ProcessorBox* _processor_box; - boost::weak_ptr _processor; + void set_state (const XMLNode&); + XMLNode& get_state () const; + + private: + ProcessorBox* _processor_box; + boost::weak_ptr _processor; + bool is_custom; + bool want_custom; }; class ProcessorEntry : public Gtkmm2ext::DnDVBoxChild, public sigc::trackable @@ -118,7 +122,6 @@ public: void set_position (Position); boost::shared_ptr processor () const; void set_enum_width (Width); - virtual void set_pixel_width (int); /** Hide any widgets that should be hidden */ virtual void hide_things (); @@ -130,8 +133,6 @@ public: std::string state_id () const; Gtk::Menu* build_controls_menu (); - static void setup_slider_pix (); - protected: ArdourButton _button; Gtk::VBox _vbox; @@ -139,8 +140,6 @@ protected: virtual void setup_visuals (); - static Glib::RefPtr _slider_pixbuf; - private: void led_clicked(); void processor_active_changed (); @@ -155,11 +154,10 @@ private: PBD::ScopedConnection active_connection; PBD::ScopedConnection name_connection; - class Control { + class Control : public sigc::trackable { public: - Control (Glib::RefPtr, boost::shared_ptr, std::string const &); + Control (boost::shared_ptr, std::string const &); - void set_pixel_width (int); void set_visible (bool); void add_state (XMLNode *) const; void set_state (XMLNode const *); @@ -181,12 +179,14 @@ private: void button_clicked (); void control_changed (); std::string state_id () const; + void set_tooltip (); boost::weak_ptr _control; /* things for a slider */ Gtk::Adjustment _adjustment; Gtkmm2ext::HSliderController _slider; Gtk::Label _label; + Gtkmm2ext::PersistentTooltip _slider_persistant_tooltip; /* things for a button */ ArdourButton _button; bool _ignore_ui_adjustment; @@ -258,9 +258,17 @@ class ProcessorBox : public Gtk::HBox, public PluginInterestedObject, public ARD void hide_things (); + bool edit_aux_send(boost::shared_ptr); + + /* Everything except a WindowProxy object should use this to get the window */ Gtk::Window* get_processor_ui (boost::shared_ptr) const; - void toggle_edit_processor (boost::shared_ptr); - void toggle_edit_generic_processor (boost::shared_ptr); + + /* a WindowProxy object can use this */ + Gtk::Window* get_editor_window (boost::shared_ptr, bool); + Gtk::Window* get_generic_editor_window (boost::shared_ptr); + + void edit_processor (boost::shared_ptr); + void generic_edit_processor (boost::shared_ptr); void update_gui_object_state (ProcessorEntry *); @@ -301,6 +309,7 @@ class ProcessorBox : public Gtk::HBox, public PluginInterestedObject, public ARD void object_drop (Gtkmm2ext::DnDVBox *, ProcessorEntry *, Glib::RefPtr const &); Width _width; + bool _redisplay_pending; Gtk::Menu *processor_menu; gint processor_menu_map_handler (GdkEventAny *ev); @@ -367,7 +376,6 @@ class ProcessorBox : public Gtk::HBox, public PluginInterestedObject, public ARD gint idle_delete_processor (boost::weak_ptr); void weird_plugin_dialog (ARDOUR::Plugin& p, ARDOUR::Route::ProcessorStreams streams); - void on_size_allocate (Gtk::Allocation &); void setup_entry_positions (); @@ -396,7 +404,9 @@ class ProcessorBox : public Gtk::HBox, public PluginInterestedObject, public ARD void route_property_changed (const PBD::PropertyChange&); std::string generate_processor_title (boost::shared_ptr pi); - std::list _processor_window_proxies; + std::list _processor_window_info; + ProcessorWindowProxy* find_window_proxy (boost::shared_ptr) const; + void set_processor_ui (boost::shared_ptr, Gtk::Window *); void maybe_add_processor_to_ui_list (boost::weak_ptr);