From ad1a4d6121fb3f260d737a8357725c23fd5310b3 Mon Sep 17 00:00:00 2001 From: elexis Date: Fri, 23 Sep 2016 21:16:12 +0000 Subject: [PATCH] Autocomplete hotkey tooltips for the gamesetup-, session- and lobby chat and replay playerlist filter. Delete hotkey tooltips for replay menu and save and load dialogs. Reviewed by bb, fixes #4145. This was SVN commit r18751. --- binaries/data/mods/public/gui/common/color.js | 14 ++++++++++++++ .../gui/common/functions_utility_loadsave.js | 14 ++++++++++++++ .../mods/public/gui/gamesetup/gamesetup.js | 2 ++ binaries/data/mods/public/gui/lobby/lobby.js | 2 ++ .../mods/public/gui/replaymenu/replay_menu.js | 10 ++++++++++ .../public/gui/replaymenu/replay_menu.xml | 2 +- .../data/mods/public/gui/savedgames/load.js | 2 ++ .../data/mods/public/gui/savedgames/save.js | 2 ++ .../data/mods/public/gui/savedgames/save.xml | 1 + .../mods/public/gui/session/chat_window.xml | 1 - .../data/mods/public/gui/session/session.js | 19 +++++++++++++++---- 11 files changed, 63 insertions(+), 6 deletions(-) diff --git a/binaries/data/mods/public/gui/common/color.js b/binaries/data/mods/public/gui/common/color.js index aa9473a4f1..a6e8ef79bb 100644 --- a/binaries/data/mods/public/gui/common/color.js +++ b/binaries/data/mods/public/gui/common/color.js @@ -144,3 +144,17 @@ function colorizeHotkey(text, hotkey) "[/color]" }); } + +/** + * The autocomplete hotkey is hardcoded in SDLK_TAB of CInput.cpp, + * as we don't want hotkeys interfering with typing text. + */ +function colorizeAutocompleteHotkey() +{ + return sprintf(translate("Press %(hotkey)s to autocomplete playernames."), { + "hotkey": + "[color=\"" + g_HotkeyColor + "\"]" + + "\\[" + translateWithContext("hotkey", "Tab") + "]" + + "[/color]" + }); +} diff --git a/binaries/data/mods/public/gui/common/functions_utility_loadsave.js b/binaries/data/mods/public/gui/common/functions_utility_loadsave.js index 67d548a007..cad6e099d6 100644 --- a/binaries/data/mods/public/gui/common/functions_utility_loadsave.js +++ b/binaries/data/mods/public/gui/common/functions_utility_loadsave.js @@ -75,3 +75,17 @@ function reallyDeleteGame(gameID) // Run init again to refresh saved game list init(); } + +function deleteTooltip() +{ + let deleteTooltip = colorizeHotkey( + translate("Delete the selected entry using %(hotkey)s."), + "session.savedgames.delete"); + + if (deleteTooltip) + deleteTooltip += colorizeHotkey( + "\n" + translate("Hold %(hotkey)s to delete without confirmation."), + "session.savedgames.noconfirmation"); + + return deleteTooltip; +} diff --git a/binaries/data/mods/public/gui/gamesetup/gamesetup.js b/binaries/data/mods/public/gui/gamesetup/gamesetup.js index fce3cd886a..3f103da510 100644 --- a/binaries/data/mods/public/gui/gamesetup/gamesetup.js +++ b/binaries/data/mods/public/gui/gamesetup/gamesetup.js @@ -294,6 +294,8 @@ function initGUIObjects() resizeMoreOptionsWindow(); + Engine.GetGUIObjectByName("chatInput").tooltip = colorizeAutocompleteHotkey(); + if (g_IsNetworked) Engine.GetGUIObjectByName("chatInput").focus(); diff --git a/binaries/data/mods/public/gui/lobby/lobby.js b/binaries/data/mods/public/gui/lobby/lobby.js index d61dc50781..ef3fe3b02f 100644 --- a/binaries/data/mods/public/gui/lobby/lobby.js +++ b/binaries/data/mods/public/gui/lobby/lobby.js @@ -224,6 +224,8 @@ function init(attribs) Engine.LobbyClearPresenceUpdates(); updatePlayerList(); updateSubject(Engine.LobbyGetRoomSubject()); + + Engine.GetGUIObjectByName("chatInput").tooltip = colorizeAutocompleteHotkey(); } function returnToMainMenu() diff --git a/binaries/data/mods/public/gui/replaymenu/replay_menu.js b/binaries/data/mods/public/gui/replaymenu/replay_menu.js index a41f80192a..5a46e33c04 100644 --- a/binaries/data/mods/public/gui/replaymenu/replay_menu.js +++ b/binaries/data/mods/public/gui/replaymenu/replay_menu.js @@ -67,6 +67,7 @@ function init(data) return; } + initHotkeyTooltips(); displayReplayList(); } @@ -185,6 +186,15 @@ function sanitizeGameAttributes(attribs) }); } +function initHotkeyTooltips() +{ + Engine.GetGUIObjectByName("playersFilter").tooltip = + translate("Filter replays by typing one or more, partial or complete playernames.") + + " " + colorizeAutocompleteHotkey(); + + Engine.GetGUIObjectByName("deleteReplayButton").tooltip = deleteTooltip(); +} + /** * Filter g_Replays, fill the GUI list with that data and show the description of the current replay. */ diff --git a/binaries/data/mods/public/gui/replaymenu/replay_menu.xml b/binaries/data/mods/public/gui/replaymenu/replay_menu.xml index 95c9ad63e4..9b2366e350 100644 --- a/binaries/data/mods/public/gui/replaymenu/replay_menu.xml +++ b/binaries/data/mods/public/gui/replaymenu/replay_menu.xml @@ -12,7 +12,7 @@