diff options
Diffstat (limited to 'src/gui/setup_chat.cpp')
-rw-r--r-- | src/gui/setup_chat.cpp | 306 |
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); +} |