summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-07-12 20:11:09 +0300
committerAndrei Karas <akaras@inbox.ru>2013-07-12 20:20:59 +0300
commitaeec9ca9881bbd4fdc332b342b09a795ee3961b4 (patch)
tree3e32a1dd828464a7e6e8c439f658421772a62f40 /src/gui
parent36027fc87b99b8f048265f6ac470227a1c32d481 (diff)
downloadmanaverse-aeec9ca9881bbd4fdc332b342b09a795ee3961b4.tar.gz
manaverse-aeec9ca9881bbd4fdc332b342b09a795ee3961b4.tar.bz2
manaverse-aeec9ca9881bbd4fdc332b342b09a795ee3961b4.tar.xz
manaverse-aeec9ca9881bbd4fdc332b342b09a795ee3961b4.zip
add ability to show assigned keys in browserbox.
Example: This is chat modifier key: ###ChatMod;. If chat mod key is left shift, it will show: "This is chat modifier key: left shift."
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/didyouknowwindow.cpp1
-rw-r--r--src/gui/helpwindow.cpp1
-rw-r--r--src/gui/npcdialog.cpp1
-rw-r--r--src/gui/updaterwindow.cpp1
-rw-r--r--src/gui/widgets/browserbox.cpp22
-rw-r--r--src/gui/widgets/browserbox.h4
6 files changed, 29 insertions, 1 deletions
diff --git a/src/gui/didyouknowwindow.cpp b/src/gui/didyouknowwindow.cpp
index 17b89b9b6..1c08010f2 100644
--- a/src/gui/didyouknowwindow.cpp
+++ b/src/gui/didyouknowwindow.cpp
@@ -81,6 +81,7 @@ DidYouKnowWindow::DidYouKnowWindow() :
mBrowserBox->setFont(gui->getHelpFont());
mBrowserBox->setProcessVersion(true);
mBrowserBox->setEnableImages(true);
+ mBrowserBox->setEnableKeys(true);
place(0, 0, mScrollArea, 5, 3).setPadding(3);
place(0, 3, mOpenAgainCheckBox, 5);
diff --git a/src/gui/helpwindow.cpp b/src/gui/helpwindow.cpp
index 6ad12d6c7..f760a14cb 100644
--- a/src/gui/helpwindow.cpp
+++ b/src/gui/helpwindow.cpp
@@ -73,6 +73,7 @@ HelpWindow::HelpWindow() :
mBrowserBox->setFont(gui->getHelpFont());
mBrowserBox->setProcessVersion(true);
mBrowserBox->setEnableImages(true);
+ mBrowserBox->setEnableKeys(true);
place(4, 3, mDYKButton);
place(0, 0, mScrollArea, 5, 3).setPadding(3);
diff --git a/src/gui/npcdialog.cpp b/src/gui/npcdialog.cpp
index be2404875..03e0006b5 100644
--- a/src/gui/npcdialog.cpp
+++ b/src/gui/npcdialog.cpp
@@ -133,6 +133,7 @@ NpcDialog::NpcDialog(const int npcId) :
mTextBox->setMaxRow(config.getIntValue("ChatLogLength"));
mTextBox->setLinkHandler(mItemLinkHandler);
mTextBox->setFont(gui->getNpcFont());
+ mTextBox->setEnableKeys(true);
mScrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER);
mScrollArea->setVerticalScrollPolicy(gcn::ScrollArea::SHOW_ALWAYS);
diff --git a/src/gui/updaterwindow.cpp b/src/gui/updaterwindow.cpp
index 80ff0c580..55726d7d5 100644
--- a/src/gui/updaterwindow.cpp
+++ b/src/gui/updaterwindow.cpp
@@ -195,6 +195,7 @@ UpdaterWindow::UpdaterWindow(const std::string &updateHost,
mProgressBar->setSmoothProgress(false);
mBrowserBox->setOpaque(false);
mBrowserBox->setLinkHandler(this);
+ mBrowserBox->setEnableKeys(true);
mPlayButton->setEnabled(false);
ContainerPlacer placer;
diff --git a/src/gui/widgets/browserbox.cpp b/src/gui/widgets/browserbox.cpp
index ff269d384..6527019de 100644
--- a/src/gui/widgets/browserbox.cpp
+++ b/src/gui/widgets/browserbox.cpp
@@ -24,6 +24,7 @@
#include "gui/widgets/browserbox.h"
#include "client.h"
+#include "inputmanager.h"
#include "gui/gui.h"
#include "gui/sdlfont.h"
@@ -67,6 +68,7 @@ BrowserBox::BrowserBox(const Widget2 *const widget, const unsigned int mode,
mAlwaysUpdate(true),
mProcessVersion(false),
mEnableImages(false),
+ mEnableKeys(false),
mPadding(0),
mNewLinePadding(15),
mBackgroundColor(getThemeColor(Theme::BACKGROUND)),
@@ -157,8 +159,26 @@ void BrowserBox::addRow(const std::string &row, const bool atTop)
BrowserLink bLink;
// Check for links in format "@@link|Caption@@"
- idx1 = tmp.find("@@");
const int sz = static_cast<int>(mTextRows.size());
+
+ if (mEnableKeys)
+ {
+ idx1 = tmp.find("###");
+ while (idx1 != std::string::npos)
+ {
+ const size_t idx2 = tmp.find(";", idx1);
+ if (idx2 == std::string::npos)
+ break;
+
+ const std::string str = inputManager.getKeyValueByName(
+ "key" + tmp.substr(idx1 + 3, idx2 - idx1 - 3));
+ tmp.replace(idx1, idx2 - idx1 + 1, str);
+
+ idx1 = tmp.find("###");
+ }
+ }
+
+ idx1 = tmp.find("@@");
while (idx1 != std::string::npos)
{
const size_t idx2 = tmp.find("|", idx1);
diff --git a/src/gui/widgets/browserbox.h b/src/gui/widgets/browserbox.h
index 3fa8bf579..c9219f9ba 100644
--- a/src/gui/widgets/browserbox.h
+++ b/src/gui/widgets/browserbox.h
@@ -225,6 +225,9 @@ class BrowserBox final : public gcn::Widget,
void setEnableImages(bool n)
{ mEnableImages = n; }
+ void setEnableKeys(bool n)
+ { mEnableKeys = n; }
+
std::string getTextAtPos(const int x, const int y) const A_WARN_UNUSED;
int getPadding() const A_WARN_UNUSED
@@ -261,6 +264,7 @@ class BrowserBox final : public gcn::Widget,
bool mAlwaysUpdate;
bool mProcessVersion;
bool mEnableImages;
+ bool mEnableKeys;
int mPadding;
int mNewLinePadding;