ardour
bindings.h
Go to the documentation of this file.
1 #ifndef __libgtkmm2ext_bindings_h__
2 #define __libgtkmm2ext_bindings_h__
3 
4 #include <map>
5 #include <stdint.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>
11 
12 #include "gtkmm2ext/visibility.h"
13 
14 class XMLNode;
15 
16 namespace Gtkmm2ext {
17 
19 {
20  public:
22  _val = GDK_VoidSymbol;
23  }
24 
25  KeyboardKey (uint32_t state, uint32_t keycode);
26 
27  uint32_t state() const { return _val >> 32; }
28  uint32_t key() const { return _val & 0xffff; }
29 
30  bool operator<(const KeyboardKey& other) const {
31  return _val < other._val;
32  }
33 
34  bool operator==(const KeyboardKey& other) const {
35  return _val == other._val;
36  }
37 
38  std::string name() const;
39  static bool make_key (const std::string&, KeyboardKey&);
40 
41  private:
42  uint64_t _val;
43 };
44 
46  public:
48  _val = ~0ULL;
49  }
50 
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; }
54 
55  bool operator<(const MouseButton& other) const {
56  return _val < other._val;
57  }
58 
59  bool operator==(const MouseButton& other) const {
60  return _val == other._val;
61  }
62 
63  std::string name() const;
64  static bool make_button (const std::string&, MouseButton&);
65 
66  private:
67  uint64_t _val;
68 };
69 
71  public:
72  ActionMap() {}
74 
75  Glib::RefPtr<Gtk::Action> register_action (const char* path,
76  const char* name, const char* label, sigc::slot<void> sl);
77  Glib::RefPtr<Gtk::Action> register_radio_action (const char* path, Gtk::RadioAction::Group&,
78  const char* name, const char* label,
79  sigc::slot<void,GtkAction*> sl,
80  int value);
81  Glib::RefPtr<Gtk::Action> register_toggle_action (const char*path,
82  const char* name, const char* label, sigc::slot<void> sl);
83 
84  Glib::RefPtr<Gtk::Action> find_action (const std::string& name);
85 
86  private:
87  typedef std::map<std::string, Glib::RefPtr<Gtk::Action> > _ActionMap;
88  _ActionMap actions;
89 };
90 
92  public:
93  enum Operation {
95  Release
96  };
97 
98  Bindings();
99  ~Bindings ();
100 
101  void add (KeyboardKey, Operation, Glib::RefPtr<Gtk::Action>);
102  void remove (KeyboardKey, Operation);
103  bool activate (KeyboardKey, Operation);
104 
105  void add (MouseButton, Operation, Glib::RefPtr<Gtk::Action>);
106  void remove (MouseButton, Operation);
107  bool activate (MouseButton, Operation);
108 
109  bool load (const std::string& path);
110  void load (const XMLNode& node);
111  bool save (const std::string& path);
112  void save (XMLNode& root);
113 
114  void set_action_map (ActionMap&);
115 
116  static void set_ignored_state (int mask) {
117  _ignored_state = mask;
118  }
119  static uint32_t ignored_state() { return _ignored_state; }
120 
121  private:
122  typedef std::map<KeyboardKey,Glib::RefPtr<Gtk::Action> > KeybindingMap;
123 
124  KeybindingMap press_bindings;
125  KeybindingMap release_bindings;
126 
127  typedef std::map<MouseButton,Glib::RefPtr<Gtk::Action> > MouseButtonBindingMap;
128  MouseButtonBindingMap button_press_bindings;
129  MouseButtonBindingMap button_release_bindings;
130 
132  static uint32_t _ignored_state;
133 };
134 
135 } // namespace
136 
137 #endif /* __libgtkmm2ext_bindings_h__ */
MouseButtonBindingMap button_press_bindings
Definition: bindings.h:128
static uint32_t _ignored_state
Definition: bindings.h:132
std::map< std::string, Glib::RefPtr< Gtk::Action > > _ActionMap
Definition: bindings.h:87
LIBGTKMM2EXT_API
bool operator<(const KeyboardKey &other) const
Definition: bindings.h:30
std::map< KeyboardKey, Glib::RefPtr< Gtk::Action > > KeybindingMap
Definition: bindings.h:122
LIBGTKMM2EXT_API Glib::RefPtr< Gtk::Action > register_radio_action(Glib::RefPtr< Gtk::ActionGroup > group, Gtk::RadioAction::Group &, const char *name, const char *label, sigc::slot< void > sl, guint key, Gdk::ModifierType mods)
bool operator<(const MouseButton &other) const
Definition: bindings.h:55
LIBGTKMM2EXT_API uint64_t Bindings
Definition: debug.cc:24
uint32_t state() const
Definition: bindings.h:27
static void set_ignored_state(int mask)
Definition: bindings.h:116
bool operator==(const KeyboardKey &other) const
Definition: bindings.h:34
static uint32_t ignored_state()
Definition: bindings.h:119
const char * name
KeybindingMap release_bindings
Definition: bindings.h:125
Definition: xml++.h:95
uint32_t key() const
Definition: bindings.h:28
LIBGTKMM2EXT_API Glib::RefPtr< Gtk::Action > register_toggle_action(Glib::RefPtr< Gtk::ActionGroup > group, const char *name, const char *label, sigc::slot< void > sl, guint key, Gdk::ModifierType mods)
std::map< MouseButton, Glib::RefPtr< Gtk::Action > > MouseButtonBindingMap
Definition: bindings.h:127
_ActionMap actions
Definition: bindings.h:88
ActionMap * action_map
Definition: bindings.h:131
uint32_t button() const
Definition: bindings.h:53
bool operator==(const MouseButton &other) const
Definition: bindings.h:59
LIBGTKMM2EXT_API Glib::RefPtr< Gtk::Action > register_action(Glib::RefPtr< Gtk::ActionGroup > group, const char *name, const char *label)
MouseButtonBindingMap button_release_bindings
Definition: bindings.h:129
uint32_t state() const
Definition: bindings.h:52
KeybindingMap press_bindings
Definition: bindings.h:124