update lua scripts
[ardour.git] / gtk2_ardour / ardour_knob.h
index 1a318a21dcb1dd1edd309250b87c6fa0512db495..d9a9c9420926a2fc1e7f181bce233ed5142a7d67 100644 (file)
 #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<PBD::Controllable> get_controllable() { return binding_proxy.get_controllable(); }
        void set_controllable (boost::shared_ptr<PBD::Controllable> 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__ */