X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_knob.h;h=29cfb5e4f4cd2c5e8049ef73d0ae65e88494e83f;hb=c4696fe2d568bce461aa9f8b4fbc6be19b6113ae;hp=1a318a21dcb1dd1edd309250b87c6fa0512db495;hpb=b2b736d596123de52dac700db769ac4eb576da5c;p=ardour.git diff --git a/gtk2_ardour/ardour_knob.h b/gtk2_ardour/ardour_knob.h index 1a318a21dc..29cfb5e4f4 100644 --- a/gtk2_ardour/ardour_knob.h +++ b/gtk2_ardour/ardour_knob.h @@ -28,6 +28,21 @@ #include "gtkmm2ext/binding_proxy.h" #include "gtkmm2ext/activatable.h" #include "gtkmm2ext/cairo_widget.h" +#include "gtkmm2ext/persistent_tooltip.h" + +class KnobPersistentTooltip : public Gtkmm2ext::PersistentTooltip +{ +public: + KnobPersistentTooltip (Gtk::Widget* w); + + void start_drag (); + void stop_drag (); + bool dragging () const; + +private: + bool _dragging; +}; + class ArdourKnob : public CairoWidget , public Gtkmm2ext::Activatable { @@ -42,7 +57,13 @@ public: unused5 = 0x20, }; - ArdourKnob (Element e = default_elements); + enum Flags { + NoFlags = 0, + Detent = 0x1, + ArcToZero = 0x2, + }; + + ArdourKnob (Element e = default_elements, Flags flags = NoFlags); virtual ~ArdourKnob (); void set_active_state (Gtkmm2ext::ActiveState); @@ -53,6 +74,8 @@ public: void add_elements (Element); static Element default_elements; + void set_tooltip_prefix (std::string pfx) { _tooltip_prefix = pfx; } + boost::shared_ptr get_controllable() { return binding_proxy.get_controllable(); } void set_controllable (boost::shared_ptr c); @@ -84,14 +107,21 @@ public: BindingProxy binding_proxy; bool _hovering; - bool _grabbed; + float _grabbed_x; float _grabbed_y; - float _val; //percent of knob travel + float _val; // current value [0..1] + float _normal; // default value, arc + float _dead_zone_delta; + + Flags _flags; void action_sensitivity_changed (); void action_visibility_changed (); void action_tooltip_changed (); + + std::string _tooltip_prefix; + KnobPersistentTooltip _tooltip; }; #endif /* __gtk2_ardour_ardour_knob_h__ */