separate header dependencies on button joiner, and make each button joiner look up...
[ardour.git] / gtk2_ardour / button_joiner.h
1 #ifndef __gtk2_ardour_button_joiner_h__
2 #define __gtk2_ardour_button_joiner_h__
3
4 #include <gtkmm/box.h>
5 #include <gtkmm/alignment.h>
6 #include <gtkmm/action.h>
7
8 #include "gtkmm2ext/activatable.h"
9 #include "gtkmm2ext/cairo_widget.h"
10
11 class ButtonJoiner : public CairoWidget, public Gtkmm2ext::Activatable {
12   public:
13         ButtonJoiner (const std::string&, Gtk::Widget&, Gtk::Widget&);
14         ~ButtonJoiner ();
15
16         void set_related_action (Glib::RefPtr<Gtk::Action>);    
17         void set_active_state (Gtkmm2ext::ActiveState);
18
19   protected:
20         void render (cairo_t*);
21         bool on_button_release_event (GdkEventButton*);
22         void on_size_request (Gtk::Requisition*);
23         void on_size_allocate (Gtk::Allocation&);
24
25         void action_sensitivity_changed ();
26         void action_visibility_changed ();
27         void action_tooltip_changed ();
28         void action_toggled ();
29
30   private:
31         Gtk::Widget&   left;
32         Gtk::Widget&   right;
33         Gtk::HBox      packer;
34         Gtk::Alignment align;
35         std::string    name;
36         cairo_pattern_t* active_fill_pattern;
37         cairo_pattern_t* inactive_fill_pattern;
38
39         void set_colors ();
40 };
41
42 #endif /* __gtk2_ardour_button_joiner_h__ */