summaryrefslogtreecommitdiff
path: root/src/gui_menu.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui_menu.hh')
-rw-r--r--src/gui_menu.hh31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/gui_menu.hh b/src/gui_menu.hh
index e2af274..a6c6b54 100644
--- a/src/gui_menu.hh
+++ b/src/gui_menu.hh
@@ -17,11 +17,40 @@ public:
Listener() {}
};
+ static const uint32_t CTRL;
+ static const uint32_t ALT;
+ static const uint32_t SHIFT;
+ static const uint32_t META;
+
+ static const char ESC;
+ static const char UP;
+ static const char LEFT;
+ static const char RIGHT;
+ static const char DOWN;
+ static const char RETURN;
+
+ struct Shortcut {
+ uint32_t const mask;
+ char const key;
+ bool const function;
+
+ Shortcut()
+ : mask(0), key(0), function(false) {
+ }
+ Shortcut(uint32_t mask, char key)
+ : mask(mask), key(key), function(false) {
+ }
+ Shortcut(uint32_t mask, int function)
+ : mask(mask), key(function), function(true) {
+ }
+ };
+
virtual ~GuiMenu() {}
static GuiMenu* create();
- virtual void add_item(std::string const& id, std::string const& label) = 0;
+ virtual void add_item(std::string const& id, std::string const& label,
+ Shortcut const& shortcut = Shortcut()) = 0;
// The returned menu lives as long as the root-menu, do not free
// the pointer yourself
virtual GuiMenu* add_menu(std::string const& label) = 0;