summaryrefslogtreecommitdiff
path: root/src/gui/setup_chat.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/setup_chat.cpp')
-rw-r--r--src/gui/setup_chat.cpp306
1 files changed, 306 insertions, 0 deletions
diff --git a/src/gui/setup_chat.cpp b/src/gui/setup_chat.cpp
new file mode 100644
index 000000000..1dba2ed85
--- /dev/null
+++ b/src/gui/setup_chat.cpp
@@ -0,0 +1,306 @@
+/*
+ * The Mana World
+ * Copyright (C) 2009 The Mana World Development Team
+ * Copyright (C) 2009-2010 Andrei Karas
+ *
+ * This file is part of The Mana World.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "gui/setup_chat.h"
+#include "gui/editdialog.h"
+#include "gui/chat.h"
+
+#include "gui/widgets/button.h"
+#include "gui/widgets/checkbox.h"
+#include "gui/widgets/label.h"
+#include "gui/widgets/layouthelper.h"
+#include "gui/widgets/inttextfield.h"
+#include "gui/widgets/chattab.h"
+
+#include "configuration.h"
+#include "localplayer.h"
+#include "log.h"
+
+#include "utils/gettext.h"
+
+#define ACTION_REMOVE_COLORS "remove colors"
+#define ACTION_MAGIC_IN_DEBUG "magic in debug"
+#define ACTION_ALLOW_COMMANDS_IN_CHATTABS "allow commands"
+#define ACTION_SERVER_MSG_IN_DEBUG "server in debug"
+#define ACTION_SHOW_CHAT_COLORS "show chat colors"
+#define ACTION_MAX_CHAR_LIMIT "char limit"
+#define ACTION_EDIT_CHAR_LIMIT "edit char limit"
+#define ACTION_EDIT_CHAR_OK "edit char ok"
+#define ACTION_MAX_LINES_LIMIT "lines limit"
+#define ACTION_EDIT_LINES_LIMIT "edit lines limit"
+#define ACTION_EDIT_LINES_OK "edit lines ok"
+#define ACTION_CHAT_LOGGER "chat logger"
+#define ACTION_TRADE_TAB "trade tab"
+#define ACTION_HIDE_SHOP_MESSAGES "hide shop messages"
+#define ACTION_SHOW_CHAT_HISTORY "show chat history"
+#define ACTION_ENABLE_BATTLE_TAB "show battle tab"
+#define ACTION_SHOW_BATTLE_EVENTS "show battle events"
+
+Setup_Chat::Setup_Chat()
+{
+ setName(_("Chat"));
+
+ mRemoveColors = config.getBoolValue("removeColors");
+ mRemoveColorsCheckBox = new CheckBox(
+ _("Remove colors from received chat messages"),
+ mRemoveColors, this, ACTION_REMOVE_COLORS);
+
+ mMagicInDebug = config.getBoolValue("showMagicInDebug");
+ mMagicInDebugCheckBox = new CheckBox(_("Log magic messages in debug tab"),
+ mMagicInDebug, this, ACTION_MAGIC_IN_DEBUG);
+
+ mAllowCommandsInChatTabs = config.getBoolValue(
+ "allowCommandsInChatTabs");
+
+ mAllowCommandsInChatTabsCheckBox = new CheckBox(
+ _("Allow magic and GM commands in all chat tabs"),
+ mAllowCommandsInChatTabs, this, ACTION_ALLOW_COMMANDS_IN_CHATTABS);
+
+ mServerMsgInDebug = config.getBoolValue("serverMsgInDebug");
+ mServerMsgInDebugCheckBox = new CheckBox(
+ _("Show server messages in debug tab"),
+ mServerMsgInDebug, this, ACTION_SERVER_MSG_IN_DEBUG);
+
+ mEnableChatLogger = config.getBoolValue("enableChatLog");
+ mEnableChatLoggerCheckBox = new CheckBox(_("Enable chat Log"),
+ mEnableChatLogger, this, ACTION_CHAT_LOGGER);
+
+ mEnableTradeTab = config.getBoolValue("enableTradeTab");
+ mEnableTradeTabCheckBox = new CheckBox(_("Enable trade tab"),
+ mEnableTradeTab, this, ACTION_TRADE_TAB);
+
+ mHideShopMessages = config.getBoolValue("hideShopMessages");
+ mHideShopMessagesCheckBox = new CheckBox(_("Hide shop messages"),
+ mHideShopMessages, this, ACTION_HIDE_SHOP_MESSAGES);
+
+ mShowChatHistory = config.getBoolValue("showChatHistory");
+ mShowChatHistoryCheckBox = new CheckBox(_("Show chat history"),
+ mShowChatHistory, this, ACTION_SHOW_CHAT_HISTORY);
+
+ mEnableBattleTab = config.getBoolValue("enableBattleTab");
+ mEnableBattleTabCheckBox = new CheckBox(_("Enable battle tab"),
+ mEnableBattleTab, this, ACTION_ENABLE_BATTLE_TAB);
+
+ mShowBattleEvents = config.getBoolValue("showBattleEvents");
+ mShowBattleEventsCheckBox = new CheckBox(_("Show battle events"),
+ mShowBattleEvents, this, ACTION_SHOW_BATTLE_EVENTS);
+
+ mShowChatColors = config.getBoolValue("showChatColorsList");
+ mShowChatColorsCheckBox = new CheckBox(_("Show chat colors list"),
+ mShowChatColors, this, ACTION_SHOW_CHAT_COLORS);
+
+ mMaxCharButton = new Button(_("Edit"), ACTION_EDIT_CHAR_LIMIT, this);
+ int maxCharLimit = config.getIntValue("chatMaxCharLimit");
+ mMaxChar = (maxCharLimit != 0);
+ mMaxCharCheckBox = new CheckBox(_("Limit max chars in chat line"),
+ mMaxChar, this, ACTION_MAX_CHAR_LIMIT);
+
+ mMaxCharField = new IntTextField(maxCharLimit, 0, 500, mMaxChar, 20);
+
+ mMaxLinesButton = new Button(_("Edit"), ACTION_EDIT_LINES_LIMIT, this);
+ int maxLinesLimit = config.getIntValue("chatMaxLinesLimit");
+ mMaxLines = (maxLinesLimit != 0);
+
+ mMaxLinesCheckBox = new CheckBox(_("Limit max lines in chat"),
+ mMaxLines,
+ this, ACTION_MAX_LINES_LIMIT);
+
+ mMaxLinesField = new IntTextField(maxLinesLimit, 0, 500, mMaxLines, 20);
+
+ // Do the layout
+ LayoutHelper h(this);
+ ContainerPlacer place = h.getPlacer(0, 0);
+
+ place(0, 0, mRemoveColorsCheckBox, 10);
+ place(0, 1, mMagicInDebugCheckBox, 10);
+ place(0, 2, mAllowCommandsInChatTabsCheckBox, 10);
+ place(0, 3, mServerMsgInDebugCheckBox, 10);
+ place(0, 4, mShowChatColorsCheckBox, 10);
+ place(0, 5, mMaxCharCheckBox, 6);
+ place(6, 5, mMaxCharField, 2);
+ place(8, 5, mMaxCharButton, 2);
+ place(0, 6, mEnableChatLoggerCheckBox, 10);
+ place(0, 7, mMaxLinesCheckBox, 6);
+ place(6, 7, mMaxLinesField, 2);
+ place(8, 7, mMaxLinesButton, 2);
+ place(0, 8, mEnableTradeTabCheckBox, 10);
+ place(0, 9, mHideShopMessagesCheckBox, 10);
+ place(0, 10, mShowChatHistoryCheckBox, 10);
+ place(0, 11, mEnableBattleTabCheckBox, 10);
+ place(0, 12, mShowBattleEventsCheckBox, 10);
+
+ place.getCell().matchColWidth(0, 0);
+ place = h.getPlacer(0, 1);
+
+ setDimension(gcn::Rectangle(0, 0, 500, 500));
+}
+
+void Setup_Chat::action(const gcn::ActionEvent &event)
+{
+ if (event.getId() == ACTION_REMOVE_COLORS)
+ {
+ mRemoveColors = mRemoveColorsCheckBox->isSelected();
+ }
+ else if (event.getId() == ACTION_MAGIC_IN_DEBUG)
+ {
+ mMagicInDebug = mMagicInDebugCheckBox->isSelected();
+ }
+ else if (event.getId() == ACTION_ALLOW_COMMANDS_IN_CHATTABS)
+ {
+ mAllowCommandsInChatTabs
+ = mAllowCommandsInChatTabsCheckBox->isSelected();
+ }
+ else if (event.getId() == ACTION_SERVER_MSG_IN_DEBUG)
+ {
+ mServerMsgInDebug = mServerMsgInDebugCheckBox->isSelected();
+ }
+ else if (event.getId() == ACTION_SHOW_CHAT_COLORS)
+ {
+ mShowChatColors = mShowChatColorsCheckBox->isSelected();
+ }
+ else if (event.getId() == ACTION_MAX_CHAR_LIMIT)
+ {
+ mMaxChar = mMaxCharCheckBox->isSelected();
+ }
+ else if (event.getId() == ACTION_EDIT_CHAR_LIMIT)
+ {
+ mEditDialog = new EditDialog("Limit max chars in chat line",
+ toString(mMaxCharField->getValue()),
+ ACTION_EDIT_CHAR_OK);
+ mEditDialog->addActionListener(this);
+ }
+ else if (event.getId() == ACTION_EDIT_CHAR_OK)
+ {
+ mMaxCharField->setValue(atoi(mEditDialog->getMsg().c_str()));
+ }
+ else if (event.getId() == ACTION_MAX_LINES_LIMIT)
+ {
+ mMaxLines = mMaxLinesCheckBox->isSelected();
+ }
+ else if (event.getId() == ACTION_EDIT_LINES_LIMIT)
+ {
+ mEditDialog = new EditDialog("Limit max lines in chat",
+ toString(mMaxLinesField->getValue()),
+ ACTION_EDIT_LINES_OK);
+ mEditDialog->addActionListener(this);
+ }
+ else if (event.getId() == ACTION_EDIT_LINES_OK)
+ {
+ mMaxLinesField->setValue(atoi(mEditDialog->getMsg().c_str()));
+ }
+ else if (event.getId() == ACTION_CHAT_LOGGER)
+ {
+ mEnableChatLogger = mEnableChatLoggerCheckBox->isSelected();
+ }
+ else if (event.getId() == ACTION_TRADE_TAB)
+ {
+ mEnableTradeTab = mEnableTradeTabCheckBox->isSelected();
+ }
+ else if (event.getId() == ACTION_HIDE_SHOP_MESSAGES)
+ {
+ mHideShopMessages = mHideShopMessagesCheckBox->isSelected();
+ }
+ else if (event.getId() == ACTION_SHOW_CHAT_HISTORY)
+ {
+ mShowChatHistory = mShowChatHistoryCheckBox->isSelected();
+ }
+ else if (event.getId() == ACTION_ENABLE_BATTLE_TAB)
+ {
+ mEnableBattleTab = mEnableBattleTabCheckBox->isSelected();
+ }
+ else if (event.getId() == ACTION_SHOW_BATTLE_EVENTS)
+ {
+ mShowBattleEvents = mShowBattleEventsCheckBox->isSelected();
+ }
+}
+
+void Setup_Chat::cancel()
+{
+ mRemoveColors = config.getBoolValue("removeColors");
+ mRemoveColorsCheckBox->setSelected(mRemoveColors);
+
+ mMagicInDebug = config.getBoolValue("showMagicInDebug");
+ mMagicInDebugCheckBox->setSelected(mMagicInDebug);
+
+ mAllowCommandsInChatTabs
+ = config.getBoolValue("allowCommandsInChatTabs");
+ mAllowCommandsInChatTabsCheckBox->setSelected(mAllowCommandsInChatTabs);
+
+ mServerMsgInDebug = config.getBoolValue("serverMsgInDebug");
+ mServerMsgInDebugCheckBox->setSelected(mServerMsgInDebug);
+
+ mShowChatColors = config.getBoolValue("showChatColorsList");
+ mShowChatColorsCheckBox->setSelected(mShowChatColors);
+
+ int maxCharLimit = config.getIntValue("chatMaxCharLimit");
+ mMaxChar = (maxCharLimit != 0);
+ mMaxCharCheckBox->setSelected(mMaxChar);
+ mMaxCharField->setValue(maxCharLimit);
+ mMaxCharField->setEnabled(mMaxChar);
+
+ int maxLinesLimit = config.getIntValue("chatMaxLinesLimit");
+ mMaxLines = (maxLinesLimit != 0);
+ mMaxLinesCheckBox->setSelected(mMaxLines);
+ mMaxLinesField->setValue(maxLinesLimit);
+ mMaxLinesField->setEnabled(mMaxLines);
+
+ mEnableChatLogger = config.getBoolValue("enableChatLog");
+ mEnableChatLoggerCheckBox->setSelected(mEnableChatLogger);
+
+ mEnableTradeTab = config.getBoolValue("enableTradeTab");
+ mEnableTradeTabCheckBox->setSelected(mEnableTradeTab);
+
+ mHideShopMessages = config.getBoolValue("hideShopMessages");
+ mHideShopMessagesCheckBox->setSelected(mHideShopMessages);
+
+ mShowChatHistory = config.getBoolValue("showChatHistory");
+ mShowChatHistoryCheckBox->setSelected(mShowChatHistory);
+
+ mEnableBattleTab = config.getBoolValue("enableBattleTab");
+ mEnableBattleTabCheckBox->setSelected(mEnableBattleTab);
+
+ mShowBattleEvents = config.getBoolValue("showBattleEvents");
+ mShowBattleEventsCheckBox->setSelected(mShowBattleEvents);
+}
+
+void Setup_Chat::apply()
+{
+ config.setValue("removeColors", mRemoveColors);
+ config.setValue("showMagicInDebug", mMagicInDebug);
+ config.setValue("allowCommandsInChatTabs", mAllowCommandsInChatTabs);
+ config.setValue("serverMsgInDebug", mServerMsgInDebug);
+ config.setValue("showChatColorsList", mShowChatColors);
+ if (mMaxChar)
+ config.setValue("chatMaxCharLimit", mMaxCharField->getValue());
+ else
+ config.setValue("chatMaxCharLimit", 0);
+ if (mMaxLines)
+ config.setValue("chatMaxLinesLimit", mMaxLinesField->getValue());
+ else
+ config.setValue("chatMaxLinesLimit", 0);
+ config.setValue("enableChatLog", mEnableChatLogger);
+ config.setValue("enableTradeTab", mEnableTradeTab);
+ config.setValue("hideShopMessages", mHideShopMessages);
+ config.setValue("showChatHistory", mShowChatHistory);
+ config.setValue("enableBattleTab", mEnableBattleTab);
+ config.setValue("showBattleEvents", mShowBattleEvents);
+}