From adfacb195ba653b63fec08200d0535604d45e20e Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Sat, 26 Mar 2011 20:04:40 +0200
Subject: Add option to chat context menu to remove nicks.

Usefull for example for tmw guild bot.
---
 src/gui/chat.cpp            | 23 ++++++++++++++++++++++-
 src/gui/popupmenu.cpp       | 21 +++++++++++++++++++--
 src/gui/widgets/chattab.cpp |  3 ++-
 src/gui/widgets/chattab.h   |  7 +++++++
 4 files changed, 50 insertions(+), 4 deletions(-)

(limited to 'src/gui')

diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp
index 8923b40f4..a72d562c2 100644
--- a/src/gui/chat.cpp
+++ b/src/gui/chat.cpp
@@ -904,7 +904,28 @@ void ChatWindow::whisper(const std::string &nick,
         }
         else
         {
-            tab->chatLog(nick, mes);
+            if (tab->getRemoveNames())
+            {
+                std::string msg = mes;
+                std::string nick2;
+                int idx = mes.find(":");
+                if (idx > 0)
+                {
+                    nick2 = msg.substr(0, idx);
+                    msg = msg.substr(idx + 1);
+                    trim(nick2);
+                    trim(msg);
+                    tab->chatLog(nick2, msg);
+                }
+                else
+                {
+                    tab->chatLog(nick, mes);
+                }
+            }
+            else
+            {
+                tab->chatLog(nick, mes);
+            }
             player_node->afkRespond(tab, nick);
         }
     }
diff --git a/src/gui/popupmenu.cpp b/src/gui/popupmenu.cpp
index 1850fbb68..1cca9daa6 100644
--- a/src/gui/popupmenu.cpp
+++ b/src/gui/popupmenu.cpp
@@ -476,14 +476,23 @@ void PopupMenu::showChatPopup(int x, int y, ChatTab *tab)
     {
         mBrowserBox->addRow(strprintf("@@disable highlight|%s@@",
                             _("Disable highlight")));
-        mBrowserBox->addRow("##3---");
     }
     else
     {
         mBrowserBox->addRow(strprintf("@@enable highlight|%s@@",
                             _("Enable highlight")));
-        mBrowserBox->addRow("##3---");
     }
+    if (tab->getRemoveNames())
+    {
+        mBrowserBox->addRow(strprintf("@@dont remove name|%s@@",
+                            _("Dont remove name")));
+    }
+    else
+    {
+        mBrowserBox->addRow(strprintf("@@remove name|%s@@",
+                            _("Remove name")));
+    }
+    mBrowserBox->addRow("##3---");
 
     if (tab->getType() == ChatTab::TAB_PARTY)
     {
@@ -1084,6 +1093,14 @@ void PopupMenu::handleLink(const std::string &link,
     {
         mTab->setAllowHighlight(false);
     }
+    else if (link == "dont remove name" && mTab)
+    {
+        mTab->setRemoveNames(false);
+    }
+    else if (link == "remove name" && mTab)
+    {
+        mTab->setRemoveNames(true);
+    }
     else if (link == "guild-pos" && !mNick.empty())
     {
         showChangePos(getX(), getY());
diff --git a/src/gui/widgets/chattab.cpp b/src/gui/widgets/chattab.cpp
index 9675eb621..40bde104e 100644
--- a/src/gui/widgets/chattab.cpp
+++ b/src/gui/widgets/chattab.cpp
@@ -50,7 +50,8 @@
 
 ChatTab::ChatTab(const std::string &name) :
     Tab(),
-    mAllowHightlight(true)
+    mAllowHightlight(true),
+    mRemoveNames(false)
 {
     setCaption(name);
 
diff --git a/src/gui/widgets/chattab.h b/src/gui/widgets/chattab.h
index 52c122e65..998ad2e3d 100644
--- a/src/gui/widgets/chattab.h
+++ b/src/gui/widgets/chattab.h
@@ -147,6 +147,12 @@ class ChatTab : public Tab
         void setAllowHighlight(bool n)
         { mAllowHightlight = n; }
 
+        bool getRemoveNames()
+        { return mRemoveNames; }
+
+        void setRemoveNames(bool n)
+        { mRemoveNames = n; }
+
     protected:
         friend class ChatWindow;
         friend class WhisperWindow;
@@ -166,6 +172,7 @@ class ChatTab : public Tab
         ScrollArea *mScrollArea;
         BrowserBox *mTextOutput;
         bool mAllowHightlight;
+        bool mRemoveNames;
 };
 
 extern ChatTab *localChatTab;
-- 
cgit v1.2.3-70-g09d2