From 011d05e7ff9abfc6052951fee954b1c193ea4fff Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 4 Apr 2016 22:49:50 +0300 Subject: Add into paths.xml option for set string for commands in links. --- src/client.cpp | 3 +++ src/defaults.cpp | 1 + src/gui/widgets/itemlinkhandler.cpp | 16 +++++++++++----- src/gui/widgets/itemlinkhandler.h | 3 ++- src/settings.h | 2 ++ 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/client.cpp b/src/client.cpp index f1c77f728..3259f2265 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -1819,6 +1819,9 @@ void Client::initPaths() { settings.gmCommandSymbol = paths.getStringValue("gmCommandSymbol"); settings.gmCharCommandSymbol = paths.getStringValue("gmCharCommandSymbol"); + settings.linkCommandSymbol = paths.getStringValue("linkCommandSymbol"); + if (settings.linkCommandSymbol.empty()) + settings.linkCommandSymbol = "="; } void Client::initTradeFilter() diff --git a/src/defaults.cpp b/src/defaults.cpp index 4bb76b435..a72008372 100644 --- a/src/defaults.cpp +++ b/src/defaults.cpp @@ -632,6 +632,7 @@ DefaultsData* getPathsDefaults() AddDEF("cutInsDir", "graphics/cutins"); AddDEF("gmCommandSymbol", "@"); AddDEF("gmCharCommandSymbol", "#"); + AddDEF("linkCommandSymbol", "="); AddDEF("palettesDir", ""); AddDEF("defaultPaletteFile", "palette.gpl"); diff --git a/src/gui/widgets/itemlinkhandler.cpp b/src/gui/widgets/itemlinkhandler.cpp index 86d0a5eec..a8e90acd7 100644 --- a/src/gui/widgets/itemlinkhandler.cpp +++ b/src/gui/widgets/itemlinkhandler.cpp @@ -23,6 +23,7 @@ #include "gui/widgets/itemlinkhandler.h" #include "itemcolormanager.h" +#include "settings.h" #include "gui/viewport.h" @@ -59,14 +60,16 @@ ItemLinkHandler::~ItemLinkHandler() { } -void ItemLinkHandler::handleCommandLink(const std::string &link) +void ItemLinkHandler::handleCommandLink(const std::string &link, + const std::string &prefix) { std::string cmd; std::string args; - if (!parse2Str(link.substr(1), cmd, args)) + const std::string cmdStr = link.substr(prefix.size()); + if (!parse2Str(cmdStr, cmd, args)) { - cmd = link.substr(1); + cmd = cmdStr; args.clear(); } inputManager.executeRemoteChatCommand(cmd, args, nullptr); @@ -158,7 +161,6 @@ void ItemLinkHandler::handleSearchLink(const std::string &link) void ItemLinkHandler::handleLink(const std::string &link, MouseEvent *const event) { - logger->log("link: " + link); if (strStartWith(link, "http://") || strStartWith(link, "https://")) { handleHttpLink(link, event); @@ -171,9 +173,13 @@ void ItemLinkHandler::handleLink(const std::string &link, { handleHelpLink(link); } + else if (strStartWith(link, settings.linkCommandSymbol)) + { + handleCommandLink(link, settings.linkCommandSymbol); + } else if (strStartWith(link, "=")) { - handleCommandLink(link); + handleCommandLink(link, "="); } else { diff --git a/src/gui/widgets/itemlinkhandler.h b/src/gui/widgets/itemlinkhandler.h index 25d6dbe41..6350b9fc3 100644 --- a/src/gui/widgets/itemlinkhandler.h +++ b/src/gui/widgets/itemlinkhandler.h @@ -40,7 +40,8 @@ class ItemLinkHandler final : public LinkHandler MouseEvent *event) override final; private: - static void handleCommandLink(const std::string &link); + static void handleCommandLink(const std::string &link, + const std::string &prefix); static void handleHelpLink(const std::string &link); diff --git a/src/settings.h b/src/settings.h index 81e01e2ae..50a8cb51c 100644 --- a/src/settings.h +++ b/src/settings.h @@ -52,6 +52,7 @@ class Settings final windowCaption(), gmCommandSymbol("@"), gmCharCommandSymbol("#"), + linkCommandSymbol("="), updateMirrors(), options(), guiAlpha(1.0F), @@ -102,6 +103,7 @@ class Settings final std::string windowCaption; std::string gmCommandSymbol; std::string gmCharCommandSymbol; + std::string linkCommandSymbol; std::vector updateMirrors; Options options; float guiAlpha; -- cgit v1.2.3-60-g2f50