summaryrefslogtreecommitdiff
path: root/src/gui/chatwindow.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2011-04-05 04:38:10 +0300
committerAndrei Karas <akaras@inbox.ru>2011-04-05 04:38:10 +0300
commit81fd600ac9a941b1ee06e41d322399d19fc4dcaa (patch)
tree27a2075c419057d5445c7a33b652aa1b4fbde12c /src/gui/chatwindow.cpp
parentc758ce6cde782ff8866b4624c1ba28f1e0db1e35 (diff)
downloadmanaplus-81fd600ac9a941b1ee06e41d322399d19fc4dcaa.tar.gz
manaplus-81fd600ac9a941b1ee06e41d322399d19fc4dcaa.tar.bz2
manaplus-81fd600ac9a941b1ee06e41d322399d19fc4dcaa.tar.xz
manaplus-81fd600ac9a941b1ee06e41d322399d19fc4dcaa.zip
Add custom autocomplate list from file customwords.txt
Diffstat (limited to 'src/gui/chatwindow.cpp')
-rw-r--r--src/gui/chatwindow.cpp36
1 files changed, 32 insertions, 4 deletions
diff --git a/src/gui/chatwindow.cpp b/src/gui/chatwindow.cpp
index 1e530ecba..0b9945370 100644
--- a/src/gui/chatwindow.cpp
+++ b/src/gui/chatwindow.cpp
@@ -190,6 +190,7 @@ ChatWindow::ChatWindow():
fillCommands();
initTradeFilter();
+ loadCustomList();
}
ChatWindow::~ChatWindow()
@@ -1093,12 +1094,14 @@ void ChatWindow::autoComplete()
if (newName == "" && spellManager)
newName = spellManager->autoComplete(name);
if (newName == "")
- newName = autoCompleteCommands(name);
+ newName = autoComplete(name, &mCommands);
if (newName == "" && actorSpriteManager)
{
actorSpriteManager->getMobNames(nameList);
newName = autoComplete(nameList, name);
}
+ if (newName == "")
+ newName = autoComplete(name, &mCustomWords);
if (newName != "")
{
@@ -1149,12 +1152,15 @@ std::string ChatWindow::autoComplete(std::vector<std::string> &names,
return newName;
}
-std::string ChatWindow::autoCompleteCommands(std::string partName)
+std::string ChatWindow::autoComplete(std::string partName, History *words)
{
- Commands::iterator i = mCommands.begin();
+ if (!words)
+ return "";
+
+ Commands::iterator i = words->begin();
std::vector<std::string> nameList;
- while (i != mCommands.end())
+ while (i != words->end())
{
std::string line = *i;
std::string::size_type pos = line.find(partName, 0);
@@ -1414,3 +1420,25 @@ std::string ChatWindow::doReplace(const std::string &msg)
replaceSpecialChars(str);
return str;
}
+
+void ChatWindow::loadCustomList()
+{
+ std::ifstream listFile;
+ struct stat statbuf;
+
+ std::string listName = Client::getServerConfigDirectory()
+ + "/customwords.txt";
+
+ if (!stat(listName.c_str(), &statbuf) && S_ISREG(statbuf.st_mode))
+ {
+ listFile.open(listName.c_str(), std::ios::in);
+ char line[101];
+ while (listFile.getline(line, 100))
+ {
+ std::string str = line;
+ if (!str.empty())
+ mCustomWords.push_back(str);
+ }
+ listFile.close();
+ }
+}