ardour
button_joiner.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2012 Paul Davis
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program; if not, write to the Free Software
16  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 
18 */
19 
20 #ifndef __gtk2_ardour_button_joiner_h__
21 #define __gtk2_ardour_button_joiner_h__
22 
23 #include <gtkmm/box.h>
24 #include <gtkmm/alignment.h>
25 #include <gtkmm/action.h>
26 
27 #include "gtkmm2ext/activatable.h"
28 #include "gtkmm2ext/cairo_widget.h"
29 
31  public:
32  ButtonJoiner (const std::string&, Gtk::Widget&, Gtk::Widget&, bool central_link = false);
33  ~ButtonJoiner ();
34 
35  void set_related_action (Glib::RefPtr<Gtk::Action>);
36  void set_active_state (Gtkmm2ext::ActiveState);
37 
38  protected:
39  void render (cairo_t*, cairo_rectangle_t*);
40  bool on_button_release_event (GdkEventButton*);
41  void on_size_request (Gtk::Requisition*);
42  void on_size_allocate (Gtk::Allocation&);
43 
46  void action_tooltip_changed ();
47  void action_toggled ();
48 
49  private:
50  Gtk::Widget& left;
51  Gtk::Widget& right;
52  Gtk::HBox packer;
53  Gtk::Alignment align;
54  std::string name;
55  cairo_pattern_t* active_fill_pattern;
56  cairo_pattern_t* inactive_fill_pattern;
58  double border_r;
59  double border_g;
60  double border_b;
61  void set_colors ();
62 };
63 
64 #endif /* __gtk2_ardour_button_joiner_h__ */
void render(cairo_t *, cairo_rectangle_t *)
cairo_pattern_t * active_fill_pattern
Definition: button_joiner.h:55
bool on_button_release_event(GdkEventButton *)
void on_size_request(Gtk::Requisition *)
Gtk::Alignment align
Definition: button_joiner.h:53
Gtk::HBox packer
Definition: button_joiner.h:52
void action_visibility_changed()
double border_r
Definition: button_joiner.h:58
Gtk::Widget & right
Definition: button_joiner.h:51
void on_size_allocate(Gtk::Allocation &)
void set_related_action(Glib::RefPtr< Gtk::Action >)
void action_tooltip_changed()
ButtonJoiner(const std::string &, Gtk::Widget &, Gtk::Widget &, bool central_link=false)
void set_active_state(Gtkmm2ext::ActiveState)
double border_g
Definition: button_joiner.h:59
std::string name
Definition: button_joiner.h:54
cairo_pattern_t * inactive_fill_pattern
Definition: button_joiner.h:56
void action_toggled()
double border_b
Definition: button_joiner.h:60
Gtk::Widget & left
Definition: button_joiner.h:50
void action_sensitivity_changed()