#include "pbd/signals.h"
#include "gtkmm2ext/binding_proxy.h"
+#include "gtkmm2ext/activatable.h"
+#include "gtkmm2ext/cairo_widget.h"
-#include "cairo_widget.h"
-
-class ArdourButton : public CairoWidget
+class ArdourButton : public CairoWidget , public Gtkmm2ext::Activatable
{
public:
enum Element {
enum Tweaks {
ShowClick = 0x1,
- ShowHover = 0x2,
NoModel = 0x4,
};
void set_led_left (bool yn);
void set_distinct_led_click (bool yn);
+ Glib::RefPtr<Pango::Layout> layout() const { return _layout; }
+
sigc::signal<void> signal_led_clicked;
+ sigc::signal<void> signal_clicked;
boost::shared_ptr<PBD::Controllable> get_controllable() { return binding_proxy.get_controllable(); }
void set_controllable (boost::shared_ptr<PBD::Controllable> c);
- void watch ();
+ void watch ();
void set_related_action (Glib::RefPtr<Gtk::Action>);
bool on_enter_notify_event (GdkEventCrossing*);
bool on_leave_notify_event (GdkEventCrossing*);
- void controllable_changed ();
- PBD::ScopedConnection watch_connection;
+ void controllable_changed ();
+ PBD::ScopedConnection watch_connection;
private:
Glib::RefPtr<Pango::Layout> _layout;
std::string _text;
Element _elements;
Tweaks _tweaks;
- BindingProxy binding_proxy;
- bool _act_on_release;
+ BindingProxy binding_proxy;
int _text_width;
int _text_height;
cairo_pattern_t* led_inset_pattern;
cairo_pattern_t* reflection_pattern;
+ cairo_rectangle_t* _led_rect;
+
double text_r;
double text_g;
double text_b;
double led_b;
double led_a;
+ bool _act_on_release;
bool _led_left;
bool _fixed_diameter;
bool _distinct_led_click;
- cairo_rectangle_t* _led_rect;
bool _hovering;
void setup_led_rect ();
void set_colors ();
void color_handler ();
- Glib::RefPtr<Gtk::Action> _action;
- void action_activated ();
void action_toggled ();
+
+ void action_sensitivity_changed ();
+ void action_visibility_changed ();
+ void action_tooltip_changed ();
};
#endif /* __gtk2_ardour_ardour_button_h__ */