summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/defaults.cpp1
-rw-r--r--src/gui/widgets/button.cpp16
-rw-r--r--src/gui/widgets/button.h2
-rw-r--r--src/gui/widgets/tabs/setup_misc.cpp5
-rw-r--r--src/gui/windowmenu.cpp83
-rw-r--r--src/gui/windowmenu.h3
-rw-r--r--src/settings.cpp1
-rw-r--r--src/settings.h4
8 files changed, 109 insertions, 6 deletions
diff --git a/src/defaults.cpp b/src/defaults.cpp
index 2132df36b..27954fa9d 100644
--- a/src/defaults.cpp
+++ b/src/defaults.cpp
@@ -421,6 +421,7 @@ void setConfigDefaults(Configuration &cfg)
AddDEF("allowHighDPI", false);
AddDEF("sdlDriver", "");
AddDEF("parallelAudioChannels", 16);
+ AddDEF("showButtonIcons", false);
}
void setConfigDefaults2(Configuration &cfg)
diff --git a/src/gui/widgets/button.cpp b/src/gui/widgets/button.cpp
index 7c4668126..34112e5a5 100644
--- a/src/gui/widgets/button.cpp
+++ b/src/gui/widgets/button.cpp
@@ -375,6 +375,22 @@ void Button::loadImage(const std::string &imageName)
mImages[f] = image;
}
+void Button::setImage(Image *const image)
+{
+ if (image == nullptr)
+ return;
+ if (mImageSet != nullptr)
+ {
+ mImageSet->decRef();
+ mImageSet = nullptr;
+ }
+ mImageWidth = image->getWidth();
+ mImageHeight = image->getHeight();
+ mImages = new Image*[BUTTON_COUNT];
+ for (int f = 0; f < BUTTON_COUNT; f ++)
+ mImages[f] = image;
+}
+
void Button::loadImageSet(const std::string &imageName)
{
if (mImageSet != nullptr)
diff --git a/src/gui/widgets/button.h b/src/gui/widgets/button.h
index a14a1a5a1..5f8c9e2ba 100644
--- a/src/gui/widgets/button.h
+++ b/src/gui/widgets/button.h
@@ -192,6 +192,8 @@ class Button final : public Widget,
void loadImageSet(const std::string &imageName);
+ void setImage(Image *const image);
+
void adjustSize();
void keyPressed(KeyEvent &event) override final;
diff --git a/src/gui/widgets/tabs/setup_misc.cpp b/src/gui/widgets/tabs/setup_misc.cpp
index 27d5d0ba3..408184311 100644
--- a/src/gui/widgets/tabs/setup_misc.cpp
+++ b/src/gui/widgets/tabs/setup_misc.cpp
@@ -426,6 +426,11 @@ Setup_Misc::Setup_Misc(const Widget2 *const widget) :
"autohideButtonsEvent", mShortcutsList, 200,
MainConfig_true);
+ // TRANSLATORS: settings option
+ new SetupItemCheckBox(_("Show icons on shortcut buttons"), "",
+ "showButtonIcons", this, "showButtonIconsEvent",
+ MainConfig_true);
+
// TRANSLATORS: settings group
new SetupItemLabel(_("Proxy server"), "", this,
diff --git a/src/gui/windowmenu.cpp b/src/gui/windowmenu.cpp
index 15bb8df8a..2dd231617 100644
--- a/src/gui/windowmenu.cpp
+++ b/src/gui/windowmenu.cpp
@@ -23,6 +23,7 @@
#include "gui/windowmenu.h"
#include "configuration.h"
+#include "settings.h"
#include "input/inputmanager.h"
@@ -42,6 +43,8 @@
#include "utils/foreach.h"
#include "utils/gettext.h"
+#include "resources/imageset.h"
+
#include "debug.h"
WindowMenu *windowMenu = nullptr;
@@ -54,6 +57,7 @@ WindowMenu::WindowMenu(const Widget2 *const widget) :
MouseListener(),
mSkin(theme != nullptr ? theme->load("windowmenu.xml", "",
true, Theme::getThemePath()) : nullptr),
+ mImageSet(nullptr),
mPadding(mSkin != nullptr ? mSkin->getPadding() : 1),
mSpacing(mSkin != nullptr ? mSkin->getOption("spacing", 3) : 3),
mButtons(),
@@ -67,32 +71,46 @@ WindowMenu::WindowMenu(const Widget2 *const widget) :
int h = 0;
setFocusable(false);
+
+ if (settings.showButtonIcons)
+ {
+ mImageSet = Theme::getImageSetFromTheme("buttonsicons.png",
+ mSkin->getOption("imageWidth", 20),
+ mSkin->getOption("imageHeight", 20));
+ }
+
// TRANSLATORS: short button name for who is online window.
addButton(N_("ONL"),
+ 13,
// TRANSLATORS: long button name for who is online window.
_("Who is online"), x, h, InputAction::WINDOW_ONLINE,
Visible_true);
// TRANSLATORS: short button name for help window.
addButton(N_("HLP"),
+ 0,
// TRANSLATORS: long button name for help window.
_("Help"), x, h, InputAction::WINDOW_HELP,
Visible_true);
// TRANSLATORS: short button name for quests window.
addButton(N_("QE"),
+ 12,
// TRANSLATORS: long button name for quests window.
_("Quests"), x, h, InputAction::WINDOW_QUESTS,
Visible_true);
// TRANSLATORS: short button name for kill stats window.
addButton(N_("KS"),
+ 16,
// TRANSLATORS: long button name for kill stats window.
_("Kill stats"), x, h, InputAction::WINDOW_KILLS,
Visible_true);
addButton(":-)",
+ 6,
// TRANSLATORS: long button name for emotes window.
_("Smilies"), x, h, InputAction::WINDOW_EMOTE_SHORTCUT,
Visible_true);
// TRANSLATORS: short button name for chat window.
addButton(N_("CH"),
+ 20,
// TRANSLATORS: longt button name for chat window.
_("Chat"), x, h, InputAction::WINDOW_CHAT,
#ifdef ANDROID
@@ -103,26 +121,31 @@ WindowMenu::WindowMenu(const Widget2 *const widget) :
// TRANSLATORS: short button name for status window.
addButton(N_("STA"),
+ 17,
// TRANSLATORS: long button name for status window.
_("Status"), x, h, InputAction::WINDOW_STATUS,
Visible_true);
// TRANSLATORS: short button name for equipment window.
addButton(N_("EQU"),
+ 7,
// TRANSLATORS: long button name for equipment window.
_("Equipment"), x, h, InputAction::WINDOW_EQUIPMENT,
Visible_true);
// TRANSLATORS: short button name for inventory window.
addButton(N_("INV"),
+ 9,
// TRANSLATORS: long button name for inventory window.
_("Inventory"), x, h, InputAction::WINDOW_INVENTORY,
Visible_true);
// TRANSLATORS: short button name for cart window.
addButton(N_("CA"),
+ 11,
// TRANSLATORS: long button name for cart window.
_("Cart"), x, h, InputAction::WINDOW_CART,
Visible_true);
// TRANSLATORS: short button name for map window.
addButton(N_("MAP"),
+ 19,
// TRANSLATORS: long button name for map window.
_("Map"), x, h, InputAction::WINDOW_MINIMAP,
Visible_false);
@@ -131,6 +154,7 @@ WindowMenu::WindowMenu(const Widget2 *const widget) :
{
// TRANSLATORS: short button name for skills window.
addButton(N_("SKI"),
+ 5,
// TRANSLATORS: long button name for skills window.
_("Skills"), x, h, InputAction::WINDOW_SKILL,
Visible_true);
@@ -138,66 +162,79 @@ WindowMenu::WindowMenu(const Widget2 *const widget) :
// TRANSLATORS: short button name for social window.
addButton(N_("SOC"),
+ 1,
// TRANSLATORS: long button name for social window.
_("Social"), x, h, InputAction::WINDOW_SOCIAL,
Visible_true);
// TRANSLATORS: short button name for shortcuts window.
addButton(N_("SH"),
+ 14,
// TRANSLATORS: long button name for shortcuts window.
_("Shortcuts"), x, h, InputAction::WINDOW_SHORTCUT,
Visible_true);
// TRANSLATORS: short button name for spells window.
addButton(N_("SP"),
+ 15,
// TRANSLATORS: long button name for spells window.
_("Spells"), x, h, InputAction::WINDOW_SPELLS,
Visible_true);
// TRANSLATORS: short button name for drops window.
addButton(N_("DR"),
+ 26,
// TRANSLATORS: long button name for drops window.
_("Drop"), x, h, InputAction::WINDOW_DROP,
Visible_false);
// TRANSLATORS: short button name for did you know window.
addButton(N_("YK"),
+ 24,
// TRANSLATORS: long button name for did you know window.
_("Did you know"), x, h, InputAction::WINDOW_DIDYOUKNOW,
Visible_false);
// TRANSLATORS: short button name for shop window.
addButton(N_("SHP"),
+ 18,
// TRANSLATORS: long button name for shop window.
_("Shop"), x, h, InputAction::WINDOW_SHOP,
Visible_false);
// TRANSLATORS: short button name for outfits window.
addButton(N_("OU"),
+ 21,
// TRANSLATORS: long button name for outfits window.
_("Outfits"), x, h, InputAction::WINDOW_OUTFIT,
Visible_false);
// TRANSLATORS: short button name for updates window.
addButton(N_("UP"),
+ 25,
// TRANSLATORS: long button name for updates window.
_("Updates"), x, h, InputAction::WINDOW_UPDATER,
Visible_false);
// TRANSLATORS: short button name for bank window.
addButton(N_("BA"),
+ 2,
// TRANSLATORS: long button name for bank window.
_("Bank"), x, h, InputAction::WINDOW_BANK,
Visible_true);
// TRANSLATORS: short button name for mail window.
addButton(N_("MA"),
+ 10,
// TRANSLATORS: long button name for mail window.
_("Mail"), x, h, InputAction::WINDOW_MAIL,
Visible_true);
// TRANSLATORS: short button name for clan window.
addButton(N_("CL"),
+ 4,
// TRANSLATORS: long button name for clan window.
_("Clan"), x, h, InputAction::WINDOW_CLAN,
Visible_true);
// TRANSLATORS: short button name for server info window.
addButton(N_("SI"),
+ 8,
// TRANSLATORS: long button name for server info window.
_("Server info"), x, h, InputAction::WINDOW_SERVER_INFO,
Visible_true);
// TRANSLATORS: short button name for debug window.
addButton(N_("DBG"),
+ 22,
// TRANSLATORS: long button name for debug window.
_("Debug"), x, h, InputAction::WINDOW_DEBUG,
#ifdef ANDROID
@@ -208,11 +245,13 @@ WindowMenu::WindowMenu(const Widget2 *const widget) :
// TRANSLATORS: short button name for windows list menu.
addButton(N_("WIN"),
+ 23,
// TRANSLATORS: long button name for windows list menu.
_("Windows"), x, h, InputAction::SHOW_WINDOWS,
Visible_false);
// TRANSLATORS: short button name for setup window.
addButton(N_("SET"),
+ 3,
// TRANSLATORS: long button name for setup window.
_("Setup"), x, h, InputAction::WINDOW_SETUP,
Visible_true);
@@ -252,6 +291,11 @@ WindowMenu::~WindowMenu()
}
delete_all(mButtonTexts);
mButtonTexts.clear();
+ if (mImageSet != nullptr)
+ {
+ mImageSet->decRef();
+ mImageSet = nullptr;
+ }
if (mSkin != nullptr)
{
if (theme != nullptr)
@@ -276,17 +320,46 @@ void WindowMenu::action(const ActionEvent &event)
}
void WindowMenu::addButton(const char *const text,
+ const int iconNumber,
const std::string &description,
int &restrict x,
int &restrict h,
const InputActionT key,
const Visible visible)
{
- Button *const btn = new Button(this,
- gettext(text),
- text,
- BUTTON_SKIN,
- this);
+ Button *btn = nullptr;
+ if (settings.showButtonIcons &&
+ mImageSet)
+ {
+ Image *const image = mImageSet->get(iconNumber);
+ if (image != nullptr)
+ {
+/*
+ btn = new Button(this,
+ "buttonsicons.png",
+ 20,
+ 20,
+ text,
+ BUTTON_SKIN,
+ this);
+*/
+ btn = new Button(this,
+ std::string(),
+ text,
+ BUTTON_SKIN,
+ this);
+ btn->setImage(image);
+ btn->adjustSize();
+ }
+ }
+ if (btn == nullptr)
+ {
+ btn = new Button(this,
+ gettext(text),
+ text,
+ BUTTON_SKIN,
+ this);
+ }
btn->setPosition(x, mPadding);
btn->setDescription(description);
btn->setTag(CAST_S32(key));
diff --git a/src/gui/windowmenu.h b/src/gui/windowmenu.h
index a3a3a0eed..4fdfaf2b4 100644
--- a/src/gui/windowmenu.h
+++ b/src/gui/windowmenu.h
@@ -34,6 +34,7 @@
#include "localconsts.h"
class Button;
+class ImageSet;
struct ButtonInfo;
struct ButtonText;
@@ -95,6 +96,7 @@ class WindowMenu final : public Container,
private:
inline void addButton(const char *const text,
+ const int iconNumber,
const std::string &description,
int &restrict x, int &restrict h,
const InputActionT key,
@@ -103,6 +105,7 @@ class WindowMenu final : public Container,
void updateButtons();
Skin *mSkin;
+ ImageSet *mImageSet;
int mPadding;
int mSpacing;
STD_VECTOR <Button*> mButtons;
diff --git a/src/settings.cpp b/src/settings.cpp
index 43e5f7fe0..963e4e913 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -33,6 +33,7 @@ Settings settings;
void Settings::init()
{
uselonglivesprites = config.getBoolValue("uselonglivesprites");
+ showButtonIcons = config.getBoolValue("showButtonIcons");
#ifndef DYECMD
UserAgent::update();
#endif // DYECMD
diff --git a/src/settings.h b/src/settings.h
index eadc1d78f..a398e1930 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -94,7 +94,8 @@ class Settings final
enableRemoteCommands(true),
uselonglivesprites(false),
unknownSkillsAutoTab(true),
- enableNewMailSystem(true)
+ enableNewMailSystem(true),
+ showButtonIcons(false)
{ }
A_DELETE_COPY(Settings)
@@ -159,6 +160,7 @@ class Settings final
bool uselonglivesprites;
bool unknownSkillsAutoTab;
bool enableNewMailSystem;
+ bool showButtonIcons;
};
extern Settings settings;