X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fstereo_panner.h;h=8b62b7d82a412bb41971914215817e52ecdb331b;hb=105caf23daf5aed16c7ee8b904fcca2ddbd4f59f;hp=1ba6aad139fd2a338480c5c3977137f2af94465f;hpb=0218522b7269d150041e0d4fd605a209ec28bb0e;p=ardour.git diff --git a/gtk2_ardour/stereo_panner.h b/gtk2_ardour/stereo_panner.h index 1ba6aad139..8b62b7d82a 100644 --- a/gtk2_ardour/stereo_panner.h +++ b/gtk2_ardour/stereo_panner.h @@ -21,20 +21,31 @@ #define __gtk_ardour_stereo_panner_h__ #include "pbd/signals.h" - -#include -#include +#include "gtkmm2ext/binding_proxy.h" +#include "panner_interface.h" namespace PBD { class Controllable; } -class StereoPanner : public Gtk::DrawingArea +namespace ARDOUR { + class Panner; +} + +class StereoPanner : public PannerInterface { public: - StereoPanner (boost::shared_ptr pos, boost::shared_ptr width); + StereoPanner (boost::shared_ptr); ~StereoPanner (); + boost::shared_ptr get_position_controllable() const { return position_control; } + boost::shared_ptr get_width_controllable() const { return width_control; } + + sigc::signal StartPositionGesture; + sigc::signal StopPositionGesture; + sigc::signal StartWidthGesture; + sigc::signal StopWidthGesture; + protected: bool on_expose_event (GdkEventExpose*); bool on_button_press_event (GdkEventButton*); @@ -42,11 +53,10 @@ class StereoPanner : public Gtk::DrawingArea bool on_motion_notify_event (GdkEventMotion*); bool on_scroll_event (GdkEventScroll*); bool on_key_press_event (GdkEventKey*); - bool on_key_release_event (GdkEventKey*); - bool on_enter_notify_event (GdkEventCrossing* ev); - bool on_leave_notify_event (GdkEventCrossing* ev); private: + PannerEditor* editor (); + boost::shared_ptr position_control; boost::shared_ptr width_control; PBD::ScopedConnectionList connections; @@ -57,32 +67,33 @@ class StereoPanner : public Gtk::DrawingArea int drag_start_x; int last_drag_x; double accumulated_delta; + bool detented; - Gtk::Window* drag_data_window; - Gtk::Label* drag_data_label; + BindingProxy position_binder; + BindingProxy width_binder; - void value_change (); - void set_drag_data (); void set_tooltip (); - void unset_tooltip (); - struct ColorScheme { + struct ColorScheme { uint32_t outline; uint32_t fill; uint32_t text; uint32_t background; + uint32_t rule; }; - enum State { + enum State { Normal, Mono, Inverted }; + bool _dragging; + static ColorScheme colors[3]; static void set_colors (); static bool have_colors; - static PBD::Signal0 color_change; + void color_handler (); }; #endif /* __gtk_ardour_stereo_panner_h__ */