Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/frontend/StarKeybindingsMenu.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/frontend/StarKeybindingsMenu.hpp')
-rw-r--r--source/frontend/StarKeybindingsMenu.hpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/source/frontend/StarKeybindingsMenu.hpp b/source/frontend/StarKeybindingsMenu.hpp
new file mode 100644
index 0000000..3393b35
--- /dev/null
+++ b/source/frontend/StarKeybindingsMenu.hpp
@@ -0,0 +1,49 @@
+#ifndef STAR_KEYBINDINGS_MENU_HPP
+#define STAR_KEYBINDINGS_MENU_HPP
+
+#include "StarPane.hpp"
+
+namespace Star {
+
+STAR_CLASS(TabSetWidget);
+STAR_CLASS(ListWidget);
+STAR_CLASS(KeybindingsMenu);
+
+class KeybindingsMenu : public Pane {
+public:
+ KeybindingsMenu();
+
+ // We need to handle our own Esc dismissal
+ KeyboardCaptureMode keyboardCaptured() const override;
+ bool sendEvent(InputEvent const& event) override;
+
+ void show() override;
+ void dismissed() override;
+
+private:
+ void buildListsFromConfig();
+ bool activateBinding(Widget* widget);
+ void setKeybinding(KeyChord desc);
+ void clearActive();
+ void exitActiveMode();
+ void apply();
+ void revert();
+ void resetDefaults();
+
+ Widget* m_activeKeybinding;
+
+ Map<Widget*, InterfaceAction> m_childToAction;
+ TabSetWidgetPtr m_tabSet;
+ ListWidgetPtr m_playerList;
+ ListWidgetPtr m_toolBarList;
+ ListWidgetPtr m_gameList;
+
+ Json m_origConfiguration;
+
+ size_t m_maxBindings;
+ KeyMod m_currentMods;
+};
+
+}
+
+#endif