1 #ifndef __libgtkmm2ext_bindings_h__
2 #define __libgtkmm2ext_bindings_h__
6 #include <gdk/gdkkeysyms.h>
7 #include <gtkmm/action.h>
8 #include <gtkmm/action.h>
9 #include <gtkmm/radioaction.h>
10 #include <gtkmm/toggleaction.h>
12 #include "gtkmm2ext/visibility.h"
18 class LIBGTKMM2EXT_API KeyboardKey
22 _val = GDK_VoidSymbol;
25 KeyboardKey (uint32_t state, uint32_t keycode);
27 uint32_t state() const { return _val >> 32; }
28 uint32_t key() const { return _val & 0xffff; }
30 bool operator<(const KeyboardKey& other) const {
31 return _val < other._val;
34 bool operator==(const KeyboardKey& other) const {
35 return _val == other._val;
38 std::string name() const;
39 static bool make_key (const std::string&, KeyboardKey&);
45 class LIBGTKMM2EXT_API MouseButton {
51 MouseButton (uint32_t state, uint32_t button_number);
52 uint32_t state() const { return _val >> 32; }
53 uint32_t button() const { return _val & 0xffff; }
55 bool operator<(const MouseButton& other) const {
56 return _val < other._val;
59 bool operator==(const MouseButton& other) const {
60 return _val == other._val;
63 std::string name() const;
64 static bool make_button (const std::string&, MouseButton&);
65 static void set_ignored_state (int mask) {
66 _ignored_state = mask;
71 static uint32_t _ignored_state;
74 class LIBGTKMM2EXT_API ActionMap {
79 Glib::RefPtr<Gtk::Action> register_action (const char* path,
80 const char* name, const char* label, sigc::slot<void> sl);
81 Glib::RefPtr<Gtk::Action> register_radio_action (const char* path, Gtk::RadioAction::Group&,
82 const char* name, const char* label,
83 sigc::slot<void,GtkAction*> sl,
85 Glib::RefPtr<Gtk::Action> register_toggle_action (const char*path,
86 const char* name, const char* label, sigc::slot<void> sl);
88 Glib::RefPtr<Gtk::Action> find_action (const std::string& name);
91 typedef std::map<std::string, Glib::RefPtr<Gtk::Action> > _ActionMap;
95 class LIBGTKMM2EXT_API Bindings {
105 void add (KeyboardKey, Operation, Glib::RefPtr<Gtk::Action>);
106 void remove (KeyboardKey, Operation);
107 bool activate (KeyboardKey, Operation);
109 void add (MouseButton, Operation, Glib::RefPtr<Gtk::Action>);
110 void remove (MouseButton, Operation);
111 bool activate (MouseButton, Operation);
113 bool load (const std::string& path);
114 void load (const XMLNode& node);
115 bool save (const std::string& path);
116 void save (XMLNode& root);
118 void set_action_map (ActionMap&);
120 static void set_ignored_state (int mask) {
121 _ignored_state = mask;
123 static uint32_t ignored_state() { return _ignored_state; }
126 typedef std::map<KeyboardKey,Glib::RefPtr<Gtk::Action> > KeybindingMap;
128 KeybindingMap press_bindings;
129 KeybindingMap release_bindings;
131 typedef std::map<MouseButton,Glib::RefPtr<Gtk::Action> > MouseButtonBindingMap;
132 MouseButtonBindingMap button_press_bindings;
133 MouseButtonBindingMap button_release_bindings;
135 ActionMap* action_map;
136 static uint32_t _ignored_state;
141 #endif /* __libgtkmm2ext_bindings_h__ */