From f192d4a2fabbca61d431afddda60ac42d31b5bdb Mon Sep 17 00:00:00 2001 From: elexis Date: Thu, 5 Sep 2019 10:42:16 +0000 Subject: [PATCH] Support assigning functions to hotkeys from the JS GUI without involving a GUI object. Allows developers and modders to register and unregister hotkeys without having to specify, change or overwrite XML files. Also allows implementing the main menu GUI page with only GUI objects for one submenu, refs #5387 / D2240. Differential Revision: https://code.wildfiregames.com/D2260 Idea by nani in D2257. This was SVN commit r22851. --- .../mods/public/gui/gamesetup/gamesetup.js | 19 ++++++++++ .../mods/public/gui/gamesetup/gamesetup.xml | 12 ------ source/gui/CGUI.cpp | 38 +++++++++++++++++++ source/gui/CGUI.h | 12 ++++++ .../gui/scripting/JSInterface_GUIManager.cpp | 14 +++++++ source/gui/scripting/JSInterface_GUIManager.h | 4 +- 6 files changed, 86 insertions(+), 13 deletions(-) diff --git a/binaries/data/mods/public/gui/gamesetup/gamesetup.js b/binaries/data/mods/public/gui/gamesetup/gamesetup.js index 53842e0f84..3ebdf85abf 100644 --- a/binaries/data/mods/public/gui/gamesetup/gamesetup.js +++ b/binaries/data/mods/public/gui/gamesetup/gamesetup.js @@ -1188,6 +1188,18 @@ var g_PlayerMiscElements = { }, }; +var g_Hotkeys = { + "civinfo": () => { + Engine.PushGuiPage("page_civinfo.xml", { "civ": g_CivInfo.code }, storeCivInfoPage); + }, + "structree": () => { + Engine.PushGuiPage("page_structree.xml", { "civ": g_CivInfo.civ }, storeCivInfoPage); + }, + "cancel": () => { + selectPanel(undefined); + } +}; + /** * Initializes some globals without touching the GUI. * @@ -1273,6 +1285,7 @@ function initGUIObjects() { initSettingObjects(); initSettingsTabButtons(); + initHotkeys(); initSPTips(); loadPersistMatchSettings(); @@ -1472,6 +1485,12 @@ function initCheckbox(name) }; } +function initHotkeys() +{ + for (let hotkeyName in g_Hotkeys) + Engine.SetGlobalHotkey(hotkeyName, g_Hotkeys[hotkeyName]); +} + function initSettingsTabButtons() { for (let tab in g_SettingsTabsGUI) diff --git a/binaries/data/mods/public/gui/gamesetup/gamesetup.xml b/binaries/data/mods/public/gui/gamesetup/gamesetup.xml index 88b1620837..e420bdebeb 100644 --- a/binaries/data/mods/public/gui/gamesetup/gamesetup.xml +++ b/binaries/data/mods/public/gui/gamesetup/gamesetup.xml @@ -5,18 +5,6 @@