#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
{
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);
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);
BindingProxy binding_proxy;
bool _hovering;
+ 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__ */