X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fstereo_panner.h;h=294f86babb55cdc35dc8795dd6ba0947977475e1;hb=d08e3b94c5ef75ce5d4d28f3636faa8af4661e17;hp=991ccc88fc4b8bdaf87ac705ada7148ad8bfa565;hpb=bb797943ddaae0a904b140fec58f6367fdf87d07;p=ardour.git diff --git a/gtk2_ardour/stereo_panner.h b/gtk2_ardour/stereo_panner.h index 991ccc88fc..294f86babb 100644 --- a/gtk2_ardour/stereo_panner.h +++ b/gtk2_ardour/stereo_panner.h @@ -25,16 +25,27 @@ #include #include +#include "gtkmm2ext/binding_proxy.h" + namespace PBD { class Controllable; } +namespace ARDOUR { + class Panner; +} + class StereoPanner : public Gtk::DrawingArea { public: - StereoPanner (boost::shared_ptr pos, boost::shared_ptr width); + StereoPanner (boost::shared_ptr); ~StereoPanner (); + sigc::signal StartPositionGesture; + sigc::signal StopPositionGesture; + sigc::signal StartWidthGesture; + sigc::signal StopWidthGesture; + protected: bool on_expose_event (GdkEventExpose*); bool on_button_press_event (GdkEventButton*); @@ -47,22 +58,34 @@ class StereoPanner : public Gtk::DrawingArea bool on_leave_notify_event (GdkEventCrossing* ev); private: + boost::shared_ptr _panner; boost::shared_ptr position_control; boost::shared_ptr width_control; PBD::ScopedConnectionList connections; bool dragging; bool dragging_position; + bool dragging_left; + bool dragging_right; 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_tooltip (); - + void set_drag_data (); + struct ColorScheme { uint32_t outline; uint32_t fill; uint32_t text; uint32_t background; + uint32_t rule; }; enum State { @@ -74,7 +97,7 @@ class StereoPanner : public Gtk::DrawingArea 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__ */