From be1300b05a4c6e50fe8f13efa8c66dda00a21016 Mon Sep 17 00:00:00 2001 From: Yohann Ferreira Date: Fri, 15 Jul 2011 02:40:07 +0200 Subject: Added a naive way to display the window keyboard shortcut. This is not updated once the keys are reassigned but it will do the trick for now. --- src/gui/windowmenu.cpp | 35 ++++++++++++++++++++++++++--------- src/gui/windowmenu.h | 6 +++++- 2 files changed, 31 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/gui/windowmenu.cpp b/src/gui/windowmenu.cpp index 1c5f2d77..b40a171b 100644 --- a/src/gui/windowmenu.cpp +++ b/src/gui/windowmenu.cpp @@ -51,19 +51,26 @@ WindowMenu::WindowMenu(): int x = 0, h = 0; addButton(":-)", x, h, "button-icon-smilies.png"); - addButton(N_("Status"), x, h, "button-icon-status.png"); - addButton(N_("Equipment"), x, h, "button-icon-equipment.png"); - addButton(N_("Inventory"), x, h, "button-icon-inventory.png"); + addButton(N_("Status"), x, h, "button-icon-status.png", + KeyboardConfig::KEY_WINDOW_STATUS); + addButton(N_("Inventory"), x, h, "button-icon-inventory.png", + KeyboardConfig::KEY_WINDOW_INVENTORY); + addButton(N_("Equipment"), x, h, "button-icon-equipment.png", + KeyboardConfig::KEY_WINDOW_EQUIPMENT); if (skillDialog->hasSkills()) - addButton(N_("Skills"), x, h, "button-icon-skills.png"); + addButton(N_("Skills"), x, h, "button-icon-skills.png", + KeyboardConfig::KEY_WINDOW_SKILL); // if (specialsWindow->hasSpecials()) addButton(N_("Specials"), x, h, "button-icon-specials.png"); - addButton(N_("Social"), x, h, "button-icon-social.png"); - addButton(N_("Shortcut"), x, h, "button-icon-shortcut.png"); - addButton(N_("Setup"), x, h, "button-icon-setup.png"); + addButton(N_("Social"), x, h, "button-icon-social.png", + KeyboardConfig::KEY_WINDOW_SOCIAL); + addButton(N_("Shortcut"), x, h, "button-icon-shortcut.png", + KeyboardConfig::KEY_WINDOW_SHORTCUT); + addButton(N_("Setup"), x, h, "button-icon-setup.png", + KeyboardConfig::KEY_WINDOW_SETUP); setDimension(gcn::Rectangle(graphics->getWidth() - x - 3, 3, x - 3, h)); @@ -157,12 +164,22 @@ void WindowMenu::valueChanged(const gcn::SelectionEvent &event) } void WindowMenu::addButton(const std::string& text, int &x, int &h, - const std::string& iconPath) + const std::string& iconPath, + KeyboardConfig::KeyAction key) { Button *btn = new Button("", text, this); if (!iconPath.empty() && btn->setButtonIcon(iconPath)) { - btn->setButtonPopupText(gettext(text.c_str())); + // When in image button mode, we have room to show + // the keyboard shortcut. + std::string caption = gettext(text.c_str()); + if (key != KeyboardConfig::KEY_NO_VALUE) + { + caption += " ("; + caption += SDL_GetKeyName((SDLKey) keyboard.getKeyValue(key)); + caption += ")"; + } + btn->setButtonPopupText(caption); } else { diff --git a/src/gui/windowmenu.h b/src/gui/windowmenu.h index b4b0446d..09374943 100644 --- a/src/gui/windowmenu.h +++ b/src/gui/windowmenu.h @@ -22,6 +22,8 @@ #ifndef WINDOWMENU_H #define WINDOWMENU_H +#include "keyboardconfig.h" + #include "gui/widgets/container.h" #include @@ -49,7 +51,9 @@ class WindowMenu : public Container, private: inline void addButton(const std::string& text, int &x, int &h, - const std::string& iconPath = std::string()); + const std::string& iconPath = std::string(), + KeyboardConfig::KeyAction key = + KeyboardConfig::KEY_NO_VALUE); EmotePopup *mEmotePopup; }; -- cgit v1.2.3-70-g09d2