summaryrefslogtreecommitdiff
path: root/src/gui/widgets/tabs
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/widgets/tabs')
-rw-r--r--src/gui/widgets/tabs/chat/battletab.cpp44
-rw-r--r--src/gui/widgets/tabs/chat/battletab.h43
-rw-r--r--src/gui/widgets/tabs/chat/channeltab.cpp77
-rw-r--r--src/gui/widgets/tabs/chat/channeltab.h51
-rw-r--r--src/gui/widgets/tabs/chat/chattab.cpp563
-rw-r--r--src/gui/widgets/tabs/chat/chattab.h216
-rw-r--r--src/gui/widgets/tabs/chat/emulateguildtab.cpp108
-rw-r--r--src/gui/widgets/tabs/chat/emulateguildtab.h59
-rw-r--r--src/gui/widgets/tabs/chat/gmtab.cpp57
-rw-r--r--src/gui/widgets/tabs/chat/gmtab.h49
-rw-r--r--src/gui/widgets/tabs/chat/guildtab.cpp125
-rw-r--r--src/gui/widgets/tabs/chat/guildtab.h56
-rw-r--r--src/gui/widgets/tabs/chat/langtab.cpp38
-rw-r--r--src/gui/widgets/tabs/chat/langtab.h39
-rw-r--r--src/gui/widgets/tabs/chat/partytab.cpp151
-rw-r--r--src/gui/widgets/tabs/chat/partytab.h58
-rw-r--r--src/gui/widgets/tabs/chat/tradetab.cpp50
-rw-r--r--src/gui/widgets/tabs/chat/tradetab.h46
-rw-r--r--src/gui/widgets/tabs/chat/whispertab.cpp130
-rw-r--r--src/gui/widgets/tabs/chat/whispertab.h73
-rw-r--r--src/gui/widgets/tabs/debugwindowtabs.cpp492
-rw-r--r--src/gui/widgets/tabs/debugwindowtabs.h129
-rw-r--r--src/gui/widgets/tabs/setup_audio.cpp214
-rw-r--r--src/gui/widgets/tabs/setup_audio.h47
-rw-r--r--src/gui/widgets/tabs/setup_chat.cpp347
-rw-r--r--src/gui/widgets/tabs/setup_chat.h40
-rw-r--r--src/gui/widgets/tabs/setup_colors.cpp491
-rw-r--r--src/gui/widgets/tabs/setup_colors.h91
-rw-r--r--src/gui/widgets/tabs/setup_input.cpp399
-rw-r--r--src/gui/widgets/tabs/setup_input.h105
-rw-r--r--src/gui/widgets/tabs/setup_joystick.cpp184
-rw-r--r--src/gui/widgets/tabs/setup_joystick.h62
-rw-r--r--src/gui/widgets/tabs/setup_misc.cpp518
-rw-r--r--src/gui/widgets/tabs/setup_misc.h52
-rw-r--r--src/gui/widgets/tabs/setup_mods.cpp129
-rw-r--r--src/gui/widgets/tabs/setup_mods.h50
-rw-r--r--src/gui/widgets/tabs/setup_perfomance.cpp209
-rw-r--r--src/gui/widgets/tabs/setup_perfomance.h46
-rw-r--r--src/gui/widgets/tabs/setup_players.cpp211
-rw-r--r--src/gui/widgets/tabs/setup_players.h49
-rw-r--r--src/gui/widgets/tabs/setup_quick.cpp118
-rw-r--r--src/gui/widgets/tabs/setup_quick.h45
-rw-r--r--src/gui/widgets/tabs/setup_relations.cpp266
-rw-r--r--src/gui/widgets/tabs/setup_relations.h79
-rw-r--r--src/gui/widgets/tabs/setup_theme.cpp415
-rw-r--r--src/gui/widgets/tabs/setup_theme.h113
-rw-r--r--src/gui/widgets/tabs/setup_touch.cpp134
-rw-r--r--src/gui/widgets/tabs/setup_touch.h44
-rw-r--r--src/gui/widgets/tabs/setup_video.cpp534
-rw-r--r--src/gui/widgets/tabs/setup_video.h88
-rw-r--r--src/gui/widgets/tabs/setup_visual.cpp252
-rw-r--r--src/gui/widgets/tabs/setup_visual.h51
-rw-r--r--src/gui/widgets/tabs/setuptab.cpp44
-rw-r--r--src/gui/widgets/tabs/setuptab.h74
-rw-r--r--src/gui/widgets/tabs/setuptabscroll.cpp163
-rw-r--r--src/gui/widgets/tabs/setuptabscroll.h81
-rw-r--r--src/gui/widgets/tabs/shortcuttab.h47
-rw-r--r--src/gui/widgets/tabs/skilltab.h88
-rw-r--r--src/gui/widgets/tabs/socialattacktab.h77
-rw-r--r--src/gui/widgets/tabs/socialfriendsfunctor.h59
-rw-r--r--src/gui/widgets/tabs/socialfriendstab.h127
-rw-r--r--src/gui/widgets/tabs/socialguildtab.h179
-rw-r--r--src/gui/widgets/tabs/socialguildtab2.h106
-rw-r--r--src/gui/widgets/tabs/socialnavigationtab.h308
-rw-r--r--src/gui/widgets/tabs/socialpartytab.h171
-rw-r--r--src/gui/widgets/tabs/socialpickuptab.h75
-rw-r--r--src/gui/widgets/tabs/socialplayerstab.h198
-rw-r--r--src/gui/widgets/tabs/socialtab.h143
-rw-r--r--src/gui/widgets/tabs/socialtabbase.h84
-rw-r--r--src/gui/widgets/tabs/tab.cpp488
-rw-r--r--src/gui/widgets/tabs/tab.h245
71 files changed, 0 insertions, 10794 deletions
diff --git a/src/gui/widgets/tabs/chat/battletab.cpp b/src/gui/widgets/tabs/chat/battletab.cpp
deleted file mode 100644
index fc45fd5e1..000000000
--- a/src/gui/widgets/tabs/chat/battletab.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/chat/battletab.h"
-
-#include "configuration.h"
-
-#include "utils/gettext.h"
-
-#include "debug.h"
-
-BattleTab *battleChatTab = nullptr;
-
-BattleTab::BattleTab(const Widget2 *const widget) :
- // TRANSLATORS: battle chat tab name
- ChatTab(widget, _("Battle"), "", "#Battle", ChatTabType::BATTLE)
-{
- setTabColors(ThemeColorId::BATTLE_CHAT_TAB);
- if (config.getBoolValue("showChatHistory"))
- loadFromLogFile("#Battle");
-}
-
-BattleTab::~BattleTab()
-{
-}
diff --git a/src/gui/widgets/tabs/chat/battletab.h b/src/gui/widgets/tabs/chat/battletab.h
deleted file mode 100644
index 24f69c8b9..000000000
--- a/src/gui/widgets/tabs/chat/battletab.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_CHAT_BATTLETAB_H
-#define GUI_WIDGETS_TABS_CHAT_BATTLETAB_H
-
-#include "gui/widgets/tabs/chat/chattab.h"
-
-/**
- * A tab for a party chat channel.
- */
-class BattleTab final : public ChatTab
-{
- public:
- explicit BattleTab(const Widget2 *const widget);
-
- A_DELETE_COPY(BattleTab)
-
- ~BattleTab();
-};
-
-extern BattleTab *battleChatTab;
-
-#endif // GUI_WIDGETS_TABS_CHAT_BATTLETAB_H
diff --git a/src/gui/widgets/tabs/chat/channeltab.cpp b/src/gui/widgets/tabs/chat/channeltab.cpp
deleted file mode 100644
index 37e6237a0..000000000
--- a/src/gui/widgets/tabs/chat/channeltab.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/chat/channeltab.h"
-
-#include "gui/widgets/windowcontainer.h"
-
-#include "gui/windows/chatwindow.h"
-
-#include "net/chathandler.h"
-
-#include "debug.h"
-
-ChannelTab::ChannelTab(const Widget2 *const widget,
- const std::string &channel) :
- ChatTab(widget, channel, channel, channel, ChatTabType::CHANNEL)
-{
- setTabColors(ThemeColorId::CHANNEL_CHAT_TAB);
-}
-
-ChannelTab::~ChannelTab()
-{
- if (chatWindow != nullptr)
- chatWindow->removeChannel(mChannelName);
-}
-
-void ChannelTab::handleInput(const std::string &msg)
-{
- std::string newMsg;
- newMsg = ChatWindow::doReplace(msg);
- chatHandler->channelMessage(mChannelName, newMsg);
-}
-
-bool ChannelTab::handleCommand(const std::string &restrict type,
- const std::string &restrict args A_UNUSED)
-{
- if (type == "close")
- {
- if (windowContainer != nullptr)
- windowContainer->scheduleDelete(this);
- else
- delete this;
- if (chatWindow != nullptr)
- chatWindow->defaultTab();
- }
- else
- {
- return false;
- }
-
- return true;
-}
-
-void ChannelTab::getAutoCompleteCommands(StringVect& commands) const
-{
- commands.push_back("/close");
- commands.push_back(mChannelName);
-}
diff --git a/src/gui/widgets/tabs/chat/channeltab.h b/src/gui/widgets/tabs/chat/channeltab.h
deleted file mode 100644
index 3ac51e59d..000000000
--- a/src/gui/widgets/tabs/chat/channeltab.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_CHAT_CHANNELTAB_H
-#define GUI_WIDGETS_TABS_CHAT_CHANNELTAB_H
-
-#include "gui/widgets/tabs/chat/chattab.h"
-
-/**
- * A tab for a chat channel.
- */
-class ChannelTab final : public ChatTab
-{
- public:
- ChannelTab(const Widget2 *const widget,
- const std::string &channel);
-
- A_DELETE_COPY(ChannelTab)
-
- ~ChannelTab();
-
- protected:
- void handleInput(const std::string &msg) override final;
-
- bool handleCommand(const std::string &restrict type,
- const std::string &restrict args) override final;
-
- void getAutoCompleteCommands(StringVect& commands)
- const override final;
-};
-
-#endif // GUI_WIDGETS_TABS_CHAT_CHANNELTAB_H
diff --git a/src/gui/widgets/tabs/chat/chattab.cpp b/src/gui/widgets/tabs/chat/chattab.cpp
deleted file mode 100644
index e4f6d751a..000000000
--- a/src/gui/widgets/tabs/chat/chattab.cpp
+++ /dev/null
@@ -1,563 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/chat/chattab.h"
-
-#include "chatlogger.h"
-#include "configuration.h"
-#include "settings.h"
-#include "soundmanager.h"
-
-#include "being/localplayer.h"
-
-#include "const/sound.h"
-
-#include "gui/chatlog.h"
-#include "gui/windowmanager.h"
-
-#include "gui/windows/chatwindow.h"
-#include "gui/windows/helpwindow.h"
-
-#include "gui/widgets/scrollarea.h"
-#include "gui/widgets/itemlinkhandler.h"
-#include "gui/widgets/tabbedarea.h"
-
-#include "input/inputmanager.h"
-
-#include "net/chathandler.h"
-#include "net/net.h"
-
-#include "utils/chatutils.h"
-#include "utils/delete2.h"
-#include "utils/gettext.h"
-
-#ifdef WIN32
-#include <sys/time.h>
-#endif // WIN32
-
-#include <sstream>
-
-#include "debug.h"
-
-ChatTab *localChatTab = nullptr;
-ChatTab *debugChatTab = nullptr;
-
-static const unsigned int MAX_WORD_SIZE = 50;
-
-ChatTab::ChatTab(const Widget2 *const widget,
- const std::string &name,
- const std::string &channel,
- const std::string &logName,
- const ChatTabTypeT &type) :
- Tab(widget),
- mTextOutput(new BrowserBox(this, Opaque_true,
- "browserbox.xml")),
- mScrollArea(new ScrollArea(this, mTextOutput, Opaque_false)),
- mChannelName(channel),
- mLogName(logName),
- mType(type),
- mAllowHightlight(true),
- mRemoveNames(false),
- mNoAway(false),
- mShowOnline(false)
-{
- setCaption(name);
-
- mTextOutput->setOpaque(Opaque_false);
- mTextOutput->setMaxRow(config.getIntValue("ChatLogLength"));
- if (chatWindow != nullptr)
- mTextOutput->setLinkHandler(chatWindow->mItemLinkHandler);
- mTextOutput->setAlwaysUpdate(false);
-
- mScrollArea->setScrollPolicy(ScrollArea::SHOW_NEVER,
- ScrollArea::SHOW_ALWAYS);
- mScrollArea->setScrollAmount(0, 1);
-
- if (chatWindow != nullptr)
- chatWindow->addTab(this);
- mTextOutput->updateSize(true);
-}
-
-ChatTab::~ChatTab()
-{
- if (chatWindow != nullptr)
- chatWindow->removeTab(this);
-
- delete2(mTextOutput);
- delete2(mScrollArea);
-}
-
-void ChatTab::chatLog(std::string line,
- ChatMsgTypeT own,
- const IgnoreRecord ignoreRecord,
- const TryRemoveColors tryRemoveColors)
-{
- // Trim whitespace
- trim(line);
-
- if (line.empty())
- return;
-
- if (tryRemoveColors == TryRemoveColors_true &&
- own == ChatMsgType::BY_OTHER &&
- config.getBoolValue("removeColors"))
- {
- line = removeColors(line);
- if (line.empty())
- return;
- }
-
- const unsigned lineLim = config.getIntValue("chatMaxCharLimit");
- if (lineLim > 0 && line.length() > lineLim)
- line = line.substr(0, lineLim);
-
- if (line.empty())
- return;
-
- CHATLOG tmp;
- tmp.own = own;
- tmp.nick.clear();
- tmp.text = line;
-
- const size_t pos = line.find(" : ");
- if (pos != std::string::npos)
- {
- if (line.length() <= pos + 3)
- return;
-
- tmp.nick = line.substr(0, pos);
- tmp.text = line.substr(pos + 3);
- }
- else
- {
- // Fix the owner of welcome message.
- if (line.length() > 7 && line.substr(0, 7) == "Welcome")
- own = ChatMsgType::BY_SERVER;
- }
-
- // *implements actions in a backwards compatible way*
- if ((own == ChatMsgType::BY_PLAYER || own == ChatMsgType::BY_OTHER) &&
- tmp.text.at(0) == '*' &&
- tmp.text.at(tmp.text.length()-1) == '*')
- {
- tmp.text[0] = ' ';
- tmp.text.erase(tmp.text.length() - 1);
- own = ChatMsgType::ACT_IS;
- }
-
- std::string lineColor("##C");
- switch (own)
- {
- case ChatMsgType::BY_GM:
- if (tmp.nick.empty())
- {
- // TRANSLATORS: chat message
- tmp.nick = std::string(_("Global announcement:")).append(" ");
- lineColor = "##G";
- }
- else
- {
- // TRANSLATORS: chat message
- tmp.nick = strprintf(_("Global announcement from %s:"),
- tmp.nick.c_str()).append(" ");
- lineColor = "##g"; // Equiv. to BrowserBox::RED
- }
- break;
- case ChatMsgType::BY_PLAYER:
- tmp.nick.append(": ");
- lineColor = "##Y";
- break;
- case ChatMsgType::BY_OTHER:
- case ChatMsgType::BY_UNKNOWN:
- tmp.nick.append(": ");
- lineColor = "##C";
- break;
- case ChatMsgType::BY_SERVER:
- // TRANSLATORS: chat message
- tmp.nick.clear();
- tmp.text = line;
- lineColor = "##S";
- break;
- case ChatMsgType::BY_CHANNEL:
- tmp.nick.clear();
- lineColor = "##2"; // Equiv. to BrowserBox::GREEN
- break;
- case ChatMsgType::ACT_WHISPER:
- // TRANSLATORS: chat message
- tmp.nick = strprintf(_("%s whispers: %s"), tmp.nick.c_str(), "");
- lineColor = "##W";
- break;
- case ChatMsgType::ACT_IS:
- lineColor = "##I";
- break;
- case ChatMsgType::BY_LOGGER:
- tmp.nick.clear();
- tmp.text = line;
- lineColor = "##L";
- break;
- default:
- break;
- }
-
- if (tmp.nick == ": ")
- {
- tmp.nick.clear();
- lineColor = "##S";
- }
-
- // if configured, move magic messages log to debug chat tab
- if (Net::getNetworkType() == ServerType::TMWATHENA
- && (localChatTab != nullptr) && this == localChatTab
- && ((config.getBoolValue("showMagicInDebug")
- && own == ChatMsgType::BY_PLAYER
- && tmp.text.length() > 1
- && tmp.text.at(0) == '#'
- && tmp.text.at(1) != '#')
- || (config.getBoolValue("serverMsgInDebug")
- && (own == ChatMsgType::BY_SERVER
- || tmp.nick.empty()))))
- {
- if (debugChatTab != nullptr)
- debugChatTab->chatLog(line, own, ignoreRecord, tryRemoveColors);
- return;
- }
-
- // Get the current system time
- time_t t;
- time(&t);
-
- if (config.getBoolValue("useLocalTime"))
- {
- const tm *const timeInfo = localtime(&t);
- if (timeInfo != nullptr)
- {
- line = strprintf("%s[%02d:%02d] %s%s", lineColor.c_str(),
- timeInfo->tm_hour, timeInfo->tm_min, tmp.nick.c_str(),
- tmp.text.c_str());
- }
- else
- {
- line = strprintf("%s %s%s", lineColor.c_str(),
- tmp.nick.c_str(), tmp.text.c_str());
- }
- }
- else
- {
- // Format the time string properly
- std::stringstream timeStr;
- timeStr << "[" << ((((t / 60) / 60) % 24 < 10) ? "0" : "")
- << CAST_S32(((t / 60) / 60) % 24)
- << ":" << (((t / 60) % 60 < 10) ? "0" : "")
- << CAST_S32((t / 60) % 60)
- << "] ";
- line = std::string(lineColor).append(timeStr.str()).append(
- tmp.nick).append(tmp.text);
- }
-
- if (config.getBoolValue("enableChatLog"))
- saveToLogFile(line);
-
- mTextOutput->setMaxRow(config.getIntValue("chatMaxLinesLimit"));
-
- // We look if the Vertical Scroll Bar is set at the max before
- // adding a row, otherwise the max will always be a row higher
- // at comparison.
- if (mScrollArea->getVerticalScrollAmount() + 2 >=
- mScrollArea->getVerticalMaxScroll())
- {
- addRow(line);
- mScrollArea->setVerticalScrollAmount(
- mScrollArea->getVerticalMaxScroll());
- }
- else
- {
- addRow(line);
- }
-
- if ((chatWindow != nullptr) && this == localChatTab)
- chatWindow->addToAwayLog(line);
-
- mScrollArea->logic();
- if (own != ChatMsgType::BY_PLAYER)
- {
- if (own == ChatMsgType::BY_SERVER &&
- (getType() == ChatTabType::PARTY ||
- getType() == ChatTabType::CHANNEL ||
- getType() == ChatTabType::GUILD))
- {
- return;
- }
-
- const TabbedArea *const tabArea = getTabbedArea();
- if (tabArea == nullptr)
- return;
-
- const bool notFocused = WindowManager::getIsMinimized() ||
- (!settings.mouseFocused &&
- settings.inputFocused == KeyboardFocus::Unfocused);
-
- if (this != tabArea->getSelectedTab() || notFocused)
- {
- if (getFlash() == 0)
- {
- if (chatWindow != nullptr &&
- chatWindow->findHighlight(tmp.text))
- {
- setFlash(2);
- soundManager.playGuiSound(SOUND_HIGHLIGHT);
- }
- else
- {
- setFlash(1);
- }
- }
- else if (getFlash() == 2)
- {
- if (chatWindow != nullptr &&
- chatWindow->findHighlight(tmp.text))
- {
- soundManager.playGuiSound(SOUND_HIGHLIGHT);
- }
- }
- }
-
- if ((getAllowHighlight() ||
- own == ChatMsgType::BY_GM) &&
- (this != tabArea->getSelectedTab() ||
- notFocused))
- {
- if (own == ChatMsgType::BY_GM)
- {
- if (chatWindow != nullptr)
- chatWindow->unHideWindow();
- soundManager.playGuiSound(SOUND_GLOBAL);
- }
- else if (own != ChatMsgType::BY_SERVER)
- {
- if (chatWindow != nullptr)
- chatWindow->unHideWindow();
- playNewMessageSound();
- }
- WindowManager::newChatMessage();
- }
- }
-}
-
-void ChatTab::chatLog(const std::string &nick, std::string msg)
-{
- if (localPlayer == nullptr)
- return;
-
- const ChatMsgTypeT byWho = (nick == localPlayer->getName()
- ? ChatMsgType::BY_PLAYER : ChatMsgType::BY_OTHER);
- if (byWho == ChatMsgType::BY_OTHER && config.getBoolValue("removeColors"))
- msg = removeColors(msg);
- chatLog(std::string(nick).append(" : ").append(msg),
- byWho,
- IgnoreRecord_false,
- TryRemoveColors_false);
-}
-
-void ChatTab::chatInput(const std::string &message)
-{
- std::string msg = message;
- trim(msg);
-
- if (msg.empty())
- return;
-
- replaceItemLinks(msg);
- replaceVars(msg);
-
- switch (msg[0])
- {
- case '/':
- handleCommandStr(std::string(msg, 1));
- break;
- case '?':
- if (msg.size() > 1 &&
- msg[1] != '!' &&
- msg[1] != '?' &&
- msg[1] != '.' &&
- msg[1] != ' ' &&
- msg[1] != ',')
- {
- handleHelp(std::string(msg, 1));
- }
- else
- {
- handleInput(msg);
- }
- break;
- default:
- handleInput(msg);
- break;
- }
-}
-
-void ChatTab::scroll(const int amount)
-{
- const int range = mScrollArea->getHeight() / 8 * amount;
- Rect scr;
- scr.y = mScrollArea->getVerticalScrollAmount() + range;
- scr.height = abs(range);
- mTextOutput->showPart(scr);
-}
-
-void ChatTab::clearText()
-{
- mTextOutput->clearRows();
-}
-
-void ChatTab::handleInput(const std::string &msg)
-{
- if (chatHandler)
- {
- chatHandler->talk(ChatWindow::doReplace(msg),
- mChannelName);
- }
-}
-
-void ChatTab::handleCommandStr(const std::string &msg)
-{
- const size_t pos = msg.find(' ');
- const std::string type(msg, 0, pos);
- std::string args(msg, pos == std::string::npos ? msg.size() : pos + 1);
-
- args = trim(args);
- if (!handleCommand(type, args))
- inputManager.executeChatCommand(type, args, this);
-}
-
-void ChatTab::handleHelp(const std::string &msg)
-{
- if (helpWindow != nullptr)
- {
- helpWindow->search(msg);
- helpWindow->requestMoveToTop();
- }
-}
-
-bool ChatTab::handleCommands(const std::string &type, const std::string &args)
-{
- // need split to commands and call each
-
- return handleCommand(type, args);
-}
-
-void ChatTab::saveToLogFile(const std::string &msg) const
-{
- if (chatLogger != nullptr)
- {
- if (getType() == ChatTabType::INPUT)
- {
- chatLogger->log(msg);
- }
- else if (getType() == ChatTabType::DEBUG)
- {
- if (config.getBoolValue("enableDebugLog"))
- chatLogger->log("#Debug", msg);
- }
- else if (!mLogName.empty())
- {
- chatLogger->log(mLogName, msg);
- }
- }
-}
-
-void ChatTab::addRow(std::string &line)
-{
- if (line.find("[@@http") == std::string::npos)
- {
- size_t idx = 0;
- for (size_t f = 0; f < line.length(); f++)
- {
- if (line.at(f) == ' ')
- {
- idx = f;
- }
- else if (f - idx > MAX_WORD_SIZE)
- {
- line.insert(f, " ");
- idx = f;
- }
- }
- }
- mTextOutput->addRow(line);
-}
-
-void ChatTab::loadFromLogFile(const std::string &name)
-{
- if (chatLogger != nullptr)
- {
- std::list<std::string> list;
- chatLogger->loadLast(name, list, 5);
- std::list<std::string>::const_iterator i = list.begin();
- while (i != list.end())
- {
- std::string line("##o" + *i);
- addRow(line);
- ++i;
- }
- }
-}
-
-void ChatTab::addNewRow(std::string &line)
-{
- if (mScrollArea->getVerticalScrollAmount() >=
- mScrollArea->getVerticalMaxScroll())
- {
- addRow(line);
- mScrollArea->setVerticalScrollAmount(
- mScrollArea->getVerticalMaxScroll());
- }
- else
- {
- addRow(line);
- }
- mScrollArea->logic();
-}
-
-void ChatTab::playNewMessageSound() const
-{
- soundManager.playGuiSound(SOUND_WHISPER);
-}
-
-void ChatTab::showOnline(const std::string &nick,
- const Online online)
-{
- if (!mShowOnline)
- return;
-
- if (online == Online_true)
- {
- // TRANSLATORS: chat message
- chatLog(strprintf(_("%s is now Online."), nick.c_str()),
- ChatMsgType::BY_SERVER);
- }
- else
- {
- // TRANSLATORS: chat message
- chatLog(strprintf(_("%s is now Offline."), nick.c_str()),
- ChatMsgType::BY_SERVER);
- }
-}
diff --git a/src/gui/widgets/tabs/chat/chattab.h b/src/gui/widgets/tabs/chat/chattab.h
deleted file mode 100644
index 440501af4..000000000
--- a/src/gui/widgets/tabs/chat/chattab.h
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_CHAT_CHATTAB_H
-#define GUI_WIDGETS_TABS_CHAT_CHATTAB_H
-
-#include "enums/gui/chatmsgtype.h"
-#include "enums/gui/chattabtype.h"
-
-#include "enums/simpletypes/ignorerecord.h"
-#include "enums/simpletypes/online.h"
-#include "enums/simpletypes/tryremovecolors.h"
-
-#include "gui/widgets/browserbox.h"
-
-#include "gui/widgets/tabs/tab.h"
-
-#include "localconsts.h"
-
-class ScrollArea;
-
-#define debugMsg(str) \
- if (debugChatTab) \
- debugChatTab->chatLog(str, ChatMsgType::BY_SERVER);
-
-#define setTabColors(name) \
- setTabColor(&getThemeColor(name), \
- &getThemeColor(name##_OUTLINE)); \
- setHighlightedTabColor(&getThemeColor(name##_HIGHLIGHTED), \
- &getThemeColor(name##_HIGHLIGHTED_OUTLINE)); \
- setSelectedTabColor(&getThemeColor(name##_SELECTED), \
- &getThemeColor(name##_SELECTED_OUTLINE))
-
-/**
- * A tab for the chat window. This is special to ease chat handling.
- */
-class ChatTab notfinal : public Tab
-{
- public:
- /**
- * Constructor.
- */
- ChatTab(const Widget2 *const widget,
- const std::string &name,
- const std::string &channel,
- const std::string &logName,
- const ChatTabTypeT &type);
-
- A_DELETE_COPY(ChatTab)
-
- virtual ~ChatTab();
-
- /**
- * Adds a line of text to our message list. Parameters:
- *
- * @param line Text message.
- * @param own Type of message (usually the owner-type).
- * @param ignoreRecord should this not be recorded?
- * @param tryRemoveColors try remove color if configured
- */
- void chatLog(std::string line,
- ChatMsgTypeT own,
- const IgnoreRecord ignoreRecord = IgnoreRecord_false,
- const TryRemoveColors tryRemoveColors
- = TryRemoveColors_true);
-
- /**
- * Adds the text to the message list
- *
- * @param msg The message text which is to be sent.
- */
- void chatLog(const std::string &nick, std::string msg);
-
- /**
- * Determines whether the message is a command or message, then
- * sends the given message to the game server to be said, or to the
- * command handler
- *
- * @param msg The message text which is to be sent.
- */
- void chatInput(const std::string &msg);
-
- /**
- * Scrolls the chat window
- *
- * @param amount direction and amount to scroll. Negative numbers scroll
- * up, positive numbers scroll down. The absolute amount indicates the
- * amount of 1/8ths of chat window real estate that should be scrolled.
- */
- void scroll(const int amount);
-
- /**
- * Clears the text from the tab
- */
- void clearText();
-
- /**
- * Handle special commands. Allows a tab to handle commands it
- * defines itself.
- *
- * @returns true if the command was handled
- * false if the command was not handled
- */
- virtual bool handleCommand(const std::string &restrict type A_UNUSED,
- const std::string &restrict args A_UNUSED)
- { return false; }
-
- /**
- * Handle special commands. Allows a tab to handle commands it
- * defines itself.
- *
- * @returns true if the command was handled
- * false if the command was not handled
- */
- virtual bool handleCommands(const std::string &type,
- const std::string &args);
-
- /**
- * Returns type of the being.
- */
- ChatTabTypeT getType() const noexcept2 A_WARN_UNUSED
- { return mType; }
-
- void saveToLogFile(const std::string &msg) const;
-
- const std::list<std::string> &getRows() const A_WARN_UNUSED
- { return mTextOutput->getRows(); }
-
- bool hasRows() const A_WARN_UNUSED
- { return mTextOutput->hasRows(); }
-
- void loadFromLogFile(const std::string &name);
-
- bool getAllowHighlight() const noexcept2 A_WARN_UNUSED
- { return mAllowHightlight; }
-
- void setAllowHighlight(const bool n) noexcept2
- { mAllowHightlight = n; }
-
- bool getRemoveNames() const noexcept2 A_WARN_UNUSED
- { return mRemoveNames; }
-
- void setRemoveNames(const bool n) noexcept2
- { mRemoveNames = n; }
-
- bool getNoAway() const noexcept2 A_WARN_UNUSED
- { return mNoAway; }
-
- void setNoAway(const bool n) noexcept2
- { mNoAway = n; }
-
- void addNewRow(std::string &line);
-
- void showOnline(const std::string &nick,
- const Online online);
-
- virtual void playNewMessageSound() const;
-
- const std::string &getChannelName() const
- { return mChannelName; }
-
- protected:
- friend class ChatWindow;
- friend class WhisperWindow;
-
- void setCurrent() override final
- { setFlash(0); }
-
- virtual void handleInput(const std::string &msg);
-
- virtual void handleCommandStr(const std::string &msg);
-
- virtual void handleHelp(const std::string &msg);
-
- virtual void getAutoCompleteList(StringVect &names A_UNUSED) const
- {}
-
- virtual void getAutoCompleteCommands(StringVect &names A_UNUSED) const
- {}
-
- void addRow(std::string &line);
-
- BrowserBox *mTextOutput A_NONNULLPOINTER;
- ScrollArea *mScrollArea;
- std::string mChannelName;
- std::string mLogName;
- ChatTabTypeT mType;
- bool mAllowHightlight;
- bool mRemoveNames;
- bool mNoAway;
- bool mShowOnline;
-};
-
-extern ChatTab *localChatTab;
-extern ChatTab *debugChatTab;
-
-#endif // GUI_WIDGETS_TABS_CHAT_CHATTAB_H
diff --git a/src/gui/widgets/tabs/chat/emulateguildtab.cpp b/src/gui/widgets/tabs/chat/emulateguildtab.cpp
deleted file mode 100644
index 4e94bf11d..000000000
--- a/src/gui/widgets/tabs/chat/emulateguildtab.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef TMWA_SUPPORT
-
-#include "gui/widgets/tabs/chat/emulateguildtab.h"
-
-#include "configuration.h"
-#include "soundmanager.h"
-
-#include "const/sound.h"
-
-#include "gui/windows/chatwindow.h"
-
-#include "utils/gettext.h"
-
-#include "net/tmwa/guildmanager.h"
-
-#include "debug.h"
-
-EmulateGuildTab::EmulateGuildTab(const Widget2 *const widget) :
- // TRANSLATORS: guild chat tab name
- ChatTab(widget, _("Guild"), "", "#Guild", ChatTabType::GUILD),
- ConfigListener()
-{
- setTabColors(ThemeColorId::GUILD_CHAT_TAB);
- mShowOnline = config.getBoolValue("showGuildOnline");
- config.addListener("showGuildOnline", this);
-}
-
-EmulateGuildTab::~EmulateGuildTab()
-{
- config.removeListeners(this);
- CHECKLISTENERS
-}
-
-bool EmulateGuildTab::handleCommand(const std::string &restrict type,
- const std::string &restrict args)
-{
- if (type == "invite")
- GuildManager::invite(args);
- else if (type == "leave")
- GuildManager::leave();
- else if (type == "kick")
- GuildManager::kick(args);
- else if (type == "notice")
- GuildManager::notice(args);
- else
- return false;
-
- return true;
-}
-
-void EmulateGuildTab::handleInput(const std::string &msg)
-{
- if (guildManager == nullptr)
- return;
- guildManager->chat(ChatWindow::doReplace(msg));
-}
-
-void EmulateGuildTab::getAutoCompleteList(StringVect &names) const
-{
- if (guildManager == nullptr)
- return;
-
- guildManager->getNames(names);
-}
-
-void EmulateGuildTab::getAutoCompleteCommands(StringVect &names) const
-{
- names.push_back("/help");
- names.push_back("/invite ");
- names.push_back("/leave");
- names.push_back("/kick ");
- names.push_back("/notice ");
-}
-
-void EmulateGuildTab::playNewMessageSound() const
-{
- soundManager.playGuiSound(SOUND_GUILD);
-}
-
-void EmulateGuildTab::optionChanged(const std::string &value)
-{
- if (value == "showGuildOnline")
- mShowOnline = config.getBoolValue("showGuildOnline");
-}
-
-#endif // TMWA_SUPPORT
diff --git a/src/gui/widgets/tabs/chat/emulateguildtab.h b/src/gui/widgets/tabs/chat/emulateguildtab.h
deleted file mode 100644
index 3cf3a0e59..000000000
--- a/src/gui/widgets/tabs/chat/emulateguildtab.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_CHAT_EMULATEGUILDTAB_H
-#define GUI_WIDGETS_TABS_CHAT_EMULATEGUILDTAB_H
-
-#ifdef TMWA_SUPPORT
-
-#include "gui/widgets/tabs/chat/chattab.h"
-
-/**
- * Emulate guild tab, because server not support normal guilds.
- */
-class EmulateGuildTab final : public ChatTab,
- public ConfigListener
-{
- public:
- explicit EmulateGuildTab(const Widget2 *const widget);
-
- A_DELETE_COPY(EmulateGuildTab)
-
- ~EmulateGuildTab();
-
- bool handleCommand(const std::string &restrict type,
- const std::string &restrict args) override final;
-
- void playNewMessageSound() const override final;
-
- void optionChanged(const std::string &value) override final;
-
- protected:
- void handleInput(const std::string &msg) override final;
-
- void getAutoCompleteList(StringVect &names) const override final;
-
- void getAutoCompleteCommands(StringVect &names) const override final;
-};
-
-#endif // TMWA_SUPPORT
-#endif // GUI_WIDGETS_TABS_CHAT_EMULATEGUILDTAB_H
diff --git a/src/gui/widgets/tabs/chat/gmtab.cpp b/src/gui/widgets/tabs/chat/gmtab.cpp
deleted file mode 100644
index 3a63cbd2d..000000000
--- a/src/gui/widgets/tabs/chat/gmtab.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2013-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/chat/gmtab.h"
-
-#include "const/gui/chat.h"
-
-#include "gui/windows/chatwindow.h"
-
-#include "utils/gettext.h"
-
-#include "net/chathandler.h"
-
-#include "debug.h"
-
-GmTab *gmChatTab = nullptr;
-
-GmTab::GmTab(const Widget2 *const widget) :
- // TRANSLATORS: gb tab name
- ChatTab(widget, _("GM"), GM_CHANNEL, "#GM", ChatTabType::GM)
-{
- setTabColors(ThemeColorId::GM_CHAT_TAB);
-}
-
-GmTab::~GmTab()
-{
-}
-
-void GmTab::handleInput(const std::string &msg)
-{
- chatHandler->channelMessage(mChannelName, ChatWindow::doReplace(msg));
-}
-
-void GmTab::handleCommandStr(const std::string &msg A_UNUSED)
-{
-}
-
-void GmTab::getAutoCompleteList(StringVect &names A_UNUSED) const
-{
-}
diff --git a/src/gui/widgets/tabs/chat/gmtab.h b/src/gui/widgets/tabs/chat/gmtab.h
deleted file mode 100644
index a8dd46fd3..000000000
--- a/src/gui/widgets/tabs/chat/gmtab.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2013-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_CHAT_GMTAB_H
-#define GUI_WIDGETS_TABS_CHAT_GMTAB_H
-
-#include "gui/widgets/tabs/chat/chattab.h"
-
-/**
- * A tab for whispers from a single player.
- */
-class GmTab final : public ChatTab
-{
- public:
- explicit GmTab(const Widget2 *const widget);
-
- A_DELETE_COPY(GmTab)
-
- ~GmTab();
-
- protected:
- void getAutoCompleteList(StringVect &names) const
- override final A_CONST;
-
- void handleInput(const std::string &msg) override final;
-
- void handleCommandStr(const std::string &msg) override final A_CONST;
-};
-
-extern GmTab *gmChatTab;
-
-#endif // GUI_WIDGETS_TABS_CHAT_GMTAB_H
diff --git a/src/gui/widgets/tabs/chat/guildtab.cpp b/src/gui/widgets/tabs/chat/guildtab.cpp
deleted file mode 100644
index 51416b8ef..000000000
--- a/src/gui/widgets/tabs/chat/guildtab.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/chat/guildtab.h"
-
-#include "configuration.h"
-#include "soundmanager.h"
-
-#include "const/sound.h"
-
-#include "gui/windows/chatwindow.h"
-
-#include "input/inputmanager.h"
-
-#include "net/guildhandler.h"
-
-#include "utils/gettext.h"
-
-#include "debug.h"
-
-namespace EAthena
-{
- extern Guild *taGuild;
-} // namespace EAthena
-
-GuildTab::GuildTab(const Widget2 *const widget) :
- // TRANSLATORS: guild chat tab name
- ChatTab(widget, _("Guild"), "", "#Guild", ChatTabType::GUILD)
-{
- setTabColors(ThemeColorId::GUILD_CHAT_TAB);
- mShowOnline = config.getBoolValue("showGuildOnline");
- config.addListener("showGuildOnline", this);
-}
-
-GuildTab::~GuildTab()
-{
- config.removeListeners(this);
- CHECKLISTENERS
-}
-
-bool GuildTab::handleCommand(const std::string &restrict type,
- const std::string &restrict args)
-{
- if (type == "invite" && (EAthena::taGuild != nullptr))
- {
- guildHandler->invite(args);
- }
- else if (type == "leave" && (EAthena::taGuild != nullptr))
- {
- inputManager.executeChatCommand(InputAction::LEAVE_GUILD,
- std::string(),
- this);
- }
- else if (type == "kick" && (EAthena::taGuild != nullptr))
- {
- inputManager.executeChatCommand(InputAction::KICK_GUILD,
- args,
- this);
- }
- else if (type == "notice" && (EAthena::taGuild != nullptr))
- {
- inputManager.executeChatCommand(InputAction::GUILD_NOTICE,
- args,
- this);
- }
- else
- {
- return false;
- }
-
- return true;
-}
-
-void GuildTab::handleInput(const std::string &msg)
-{
- if (EAthena::taGuild == nullptr)
- return;
-
- guildHandler->chat(ChatWindow::doReplace(msg));
-}
-
-void GuildTab::getAutoCompleteList(StringVect &names) const
-{
- if (EAthena::taGuild != nullptr)
- EAthena::taGuild->getNames(names);
-}
-
-void GuildTab::getAutoCompleteCommands(StringVect &names) const
-{
- names.push_back("/help");
- names.push_back("/invite ");
- names.push_back("/kick ");
- names.push_back("/notice ");
- names.push_back("/leave");
-}
-
-void GuildTab::playNewMessageSound() const
-{
- soundManager.playGuiSound(SOUND_GUILD);
-}
-
-void GuildTab::optionChanged(const std::string &value)
-{
- if (value == "showGuildOnline")
- mShowOnline = config.getBoolValue("showGuildOnline");
-}
diff --git a/src/gui/widgets/tabs/chat/guildtab.h b/src/gui/widgets/tabs/chat/guildtab.h
deleted file mode 100644
index 5aa540ecb..000000000
--- a/src/gui/widgets/tabs/chat/guildtab.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_CHAT_GUILDTAB_H
-#define GUI_WIDGETS_TABS_CHAT_GUILDTAB_H
-
-#include "gui/widgets/tabs/chat/chattab.h"
-
-/**
- * A tab for a guild chat channel.
- */
-class GuildTab notfinal : public ChatTab,
- public ConfigListener
-{
- public:
- explicit GuildTab(const Widget2 *const widget);
-
- A_DELETE_COPY(GuildTab)
-
- virtual ~GuildTab();
-
- bool handleCommand(const std::string &restrict type,
- const std::string &restrict args) override final;
-
- void playNewMessageSound() const override final;
-
- void optionChanged(const std::string &value) override final;
-
- protected:
- void handleInput(const std::string &msg) override final;
-
- void getAutoCompleteList(StringVect &names) const override final;
-
- void getAutoCompleteCommands(StringVect &names) const override final;
-};
-
-#endif // GUI_WIDGETS_TABS_CHAT_GUILDTAB_H
diff --git a/src/gui/widgets/tabs/chat/langtab.cpp b/src/gui/widgets/tabs/chat/langtab.cpp
deleted file mode 100644
index ba1e21711..000000000
--- a/src/gui/widgets/tabs/chat/langtab.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/chat/langtab.h"
-
-#include "utils/gettext.h"
-
-#include "debug.h"
-
-LangTab *langChatTab = nullptr;
-
-LangTab::LangTab(const Widget2 *const widget,
- const std::string &lang) :
- // TRANSLATORS: lang chat tab name
- ChatTab(widget, _("Lang"), lang + " ", "#Lang", ChatTabType::LANG)
-{
-}
-
-LangTab::~LangTab()
-{
-}
diff --git a/src/gui/widgets/tabs/chat/langtab.h b/src/gui/widgets/tabs/chat/langtab.h
deleted file mode 100644
index 773431e85..000000000
--- a/src/gui/widgets/tabs/chat/langtab.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_CHAT_LANGTAB_H
-#define GUI_WIDGETS_TABS_CHAT_LANGTAB_H
-
-#include "gui/widgets/tabs/chat/chattab.h"
-
-class LangTab final : public ChatTab
-{
- public:
- LangTab(const Widget2 *const widget,
- const std::string &lang);
-
- A_DELETE_COPY(LangTab)
-
- ~LangTab();
-};
-
-extern LangTab *langChatTab;
-
-#endif // GUI_WIDGETS_TABS_CHAT_LANGTAB_H
diff --git a/src/gui/widgets/tabs/chat/partytab.cpp b/src/gui/widgets/tabs/chat/partytab.cpp
deleted file mode 100644
index befbb0393..000000000
--- a/src/gui/widgets/tabs/chat/partytab.cpp
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/chat/partytab.h"
-
-#include "configuration.h"
-#include "party.h"
-#include "soundmanager.h"
-
-#include "being/localplayer.h"
-
-#include "const/sound.h"
-
-#include "gui/windows/chatwindow.h"
-
-#include "input/inputmanager.h"
-
-#include "net/net.h"
-#include "net/partyhandler.h"
-
-#include "utils/gettext.h"
-
-#include "debug.h"
-
-PartyTab *partyTab = nullptr;
-
-PartyTab::PartyTab(const Widget2 *const widget) :
- // TRANSLATORS: party chat tab name
- ChatTab(widget, _("Party"), "", "#Party", ChatTabType::PARTY)
-{
- setTabColors(ThemeColorId::PARTY_CHAT_TAB);
- mShowOnline = config.getBoolValue("showPartyOnline");
- config.addListener("showPartyOnline", this);
-}
-
-PartyTab::~PartyTab()
-{
- config.removeListeners(this);
- CHECKLISTENERS
-}
-
-void PartyTab::handleInput(const std::string &msg)
-{
- partyHandler->chat(ChatWindow::doReplace(msg));
-}
-
-bool PartyTab::handleCommand(const std::string &restrict type,
- const std::string &restrict args)
-{
- if (type == "invite")
- {
- partyHandler->invite(args);
- }
- else if (type == "leave")
- {
- inputManager.executeChatCommand(InputAction::LEAVE_PARTY,
- args,
- this);
- }
- else if (type == "kick")
- {
- inputManager.executeChatCommand(InputAction::KICK_PARTY,
- args,
- this);
- }
- else if (type == "item")
- {
- inputManager.executeChatCommand(InputAction::PARTY_ITEM_SHARE,
- args,
- this);
- }
- else if (type == "autoitem")
- {
- inputManager.executeChatCommand(InputAction::PARTY_AUTO_ITEM_SHARE,
- args,
- this);
- }
- else if (type == "exp")
- {
- inputManager.executeChatCommand(InputAction::PARTY_EXP_SHARE,
- args,
- this);
- }
- else if (type == "setleader" &&
- Net::getNetworkType() != ServerType::TMWATHENA)
- {
- inputManager.executeChatCommand(
- InputAction::COMMAND_CHANGE_PARTY_LEADER,
- args,
- this);
- }
- else
- {
- return false;
- }
-
- return true;
-}
-
-void PartyTab::getAutoCompleteList(StringVect &names) const
-{
- if (localPlayer == nullptr)
- return;
-
- const Party *const p = localPlayer->getParty();
-
- if (p != nullptr)
- p->getNames(names);
-}
-
-void PartyTab::getAutoCompleteCommands(StringVect &names) const
-{
- names.push_back("/help");
- names.push_back("/invite ");
- names.push_back("/leave");
- names.push_back("/kick ");
- names.push_back("/item");
- names.push_back("/exp");
- if (Net::getNetworkType() != ServerType::TMWATHENA)
- names.push_back("/setleader ");
-}
-
-void PartyTab::playNewMessageSound() const
-{
- soundManager.playGuiSound(SOUND_GUILD);
-}
-
-void PartyTab::optionChanged(const std::string &value)
-{
- if (value == "showPartyOnline")
- mShowOnline = config.getBoolValue("showPartyOnline");
-}
diff --git a/src/gui/widgets/tabs/chat/partytab.h b/src/gui/widgets/tabs/chat/partytab.h
deleted file mode 100644
index a987c9362..000000000
--- a/src/gui/widgets/tabs/chat/partytab.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_CHAT_PARTYTAB_H
-#define GUI_WIDGETS_TABS_CHAT_PARTYTAB_H
-
-#include "gui/widgets/tabs/chat/chattab.h"
-
-/**
- * A tab for a party chat channel.
- */
-class PartyTab notfinal : public ChatTab,
- public ConfigListener
-{
- public:
- explicit PartyTab(const Widget2 *const widget);
-
- A_DELETE_COPY(PartyTab)
-
- virtual ~PartyTab();
-
- bool handleCommand(const std::string &restrict type,
- const std::string &restrict args) override final;
-
- void playNewMessageSound() const override final;
-
- void optionChanged(const std::string &value) override final;
-
- protected:
- void handleInput(const std::string &msg) override final;
-
- void getAutoCompleteList(StringVect &names) const override final;
-
- void getAutoCompleteCommands(StringVect &names) const override final;
-};
-
-extern PartyTab *partyTab;
-
-#endif // GUI_WIDGETS_TABS_CHAT_PARTYTAB_H
diff --git a/src/gui/widgets/tabs/chat/tradetab.cpp b/src/gui/widgets/tabs/chat/tradetab.cpp
deleted file mode 100644
index e16e5c08b..000000000
--- a/src/gui/widgets/tabs/chat/tradetab.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/chat/tradetab.h"
-
-#include "const/gui/chat.h"
-
-#include "gui/windows/chatwindow.h"
-
-#include "net/chathandler.h"
-
-#include "utils/gettext.h"
-
-#include "debug.h"
-
-TradeTab *tradeChatTab = nullptr;
-
-TradeTab::TradeTab(const Widget2 *const widget) :
- // TRANSLATORS: trade chat tab name
- ChatTab(widget, _("Trade"), TRADE_CHANNEL, "#Trade", ChatTabType::TRADE)
-{
-}
-
-TradeTab::~TradeTab()
-{
-}
-
-void TradeTab::handleInput(const std::string &msg)
-{
- chatHandler->channelMessage(mChannelName, ChatWindow::doReplace(msg));
-}
diff --git a/src/gui/widgets/tabs/chat/tradetab.h b/src/gui/widgets/tabs/chat/tradetab.h
deleted file mode 100644
index 26c9bf8f6..000000000
--- a/src/gui/widgets/tabs/chat/tradetab.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_CHAT_TRADETAB_H
-#define GUI_WIDGETS_TABS_CHAT_TRADETAB_H
-
-#include "gui/widgets/tabs/chat/chattab.h"
-
-/**
- * A tab for a party chat channel.
- */
-class TradeTab final : public ChatTab
-{
- public:
- explicit TradeTab(const Widget2 *const widget);
-
- A_DELETE_COPY(TradeTab)
-
- ~TradeTab();
-
- protected:
- void handleInput(const std::string &msg) override final;
-};
-
-extern TradeTab *tradeChatTab;
-
-#endif // GUI_WIDGETS_TABS_CHAT_TRADETAB_H
diff --git a/src/gui/widgets/tabs/chat/whispertab.cpp b/src/gui/widgets/tabs/chat/whispertab.cpp
deleted file mode 100644
index 73b73a17c..000000000
--- a/src/gui/widgets/tabs/chat/whispertab.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/chat/whispertab.h"
-
-#include "being/localplayer.h"
-
-#include "net/chathandler.h"
-
-#include "gui/windows/chatwindow.h"
-
-#include "gui/widgets/windowcontainer.h"
-
-#include "utils/chatutils.h"
-
-#include "debug.h"
-
-WhisperTab::WhisperTab(const Widget2 *const widget,
- const std::string &caption,
- const std::string &nick) :
- ChatTab(widget, caption, nick, nick, ChatTabType::WHISPER),
- mNick(nick)
-{
- setWhisperTabColors();
-}
-
-WhisperTab::~WhisperTab()
-{
- if (chatWindow != nullptr)
- chatWindow->removeWhisper(mNick);
-}
-
-void WhisperTab::handleInput(const std::string &msg)
-{
- std::string newMsg;
- newMsg = ChatWindow::doReplace(msg);
- chatHandler->privateMessage(mNick, newMsg);
-
- if (localPlayer != nullptr)
- chatLog(localPlayer->getName(), newMsg);
- else
- chatLog("?", newMsg);
-}
-
-void WhisperTab::handleCommandStr(const std::string &msg)
-{
- if (msg == "close")
- {
- delete this;
- return;
- }
-
- const size_t pos = msg.find(' ');
- const std::string type(msg, 0, pos);
-
- if (type == "me")
- {
- const std::string args(msg, pos == std::string::npos
- ? msg.size() : pos + 1);
- std::string str = textToMe(args);
- chatHandler->privateMessage(mNick, str);
- if (localPlayer != nullptr)
- chatLog(localPlayer->getName(), str);
- else
- chatLog("?", str);
- }
- else
- {
- ChatTab::handleCommandStr(msg);
- }
-}
-
-bool WhisperTab::handleCommand(const std::string &restrict type,
- const std::string &restrict args A_UNUSED)
-{
- if (type == "close")
- {
- if (windowContainer != nullptr)
- windowContainer->scheduleDelete(this);
- else
- delete this;
- if (chatWindow != nullptr)
- chatWindow->defaultTab();
- }
- else
- {
- return false;
- }
-
- return true;
-}
-
-void WhisperTab::getAutoCompleteList(StringVect &names) const
-{
- names.push_back(mNick);
-}
-
-void WhisperTab::getAutoCompleteCommands(StringVect& commands) const
-{
- commands.push_back("/close");
-}
-
-void WhisperTab::setWhisperTabColors()
-{
- setTabColors(ThemeColorId::WHISPER_TAB);
-}
-
-void WhisperTab::setWhisperTabOfflineColors()
-{
- setTabColors(ThemeColorId::WHISPER_TAB_OFFLINE);
-}
diff --git a/src/gui/widgets/tabs/chat/whispertab.h b/src/gui/widgets/tabs/chat/whispertab.h
deleted file mode 100644
index 1d3c03857..000000000
--- a/src/gui/widgets/tabs/chat/whispertab.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_CHAT_WHISPERTAB_H
-#define GUI_WIDGETS_TABS_CHAT_WHISPERTAB_H
-
-#include "gui/widgets/tabs/chat/chattab.h"
-
-/**
- * A tab for whispers from a single player.
- */
-class WhisperTab final : public ChatTab
-{
- public:
- A_DELETE_COPY(WhisperTab)
-
- const std::string &getNick() const noexcept2 A_WARN_UNUSED
- { return mNick; }
-
- bool handleCommand(const std::string &restrict type,
- const std::string &restrict args) override final;
-
- void setWhisperTabColors();
-
- void setWhisperTabOfflineColors();
-
- protected:
- friend class ChatWindow;
-
- void getAutoCompleteList(StringVect &names) const override final;
-
- void getAutoCompleteCommands(StringVect& commands)
- const override final;
-
- /**
- * Constructor.
- *
- * @param nick the name of the player this tab is whispering to
- */
- WhisperTab(const Widget2 *const widget,
- const std::string &caption,
- const std::string &nick);
-
- ~WhisperTab();
-
- void handleInput(const std::string &msg) override final;
-
- void handleCommandStr(const std::string &msg) override final;
-
- private:
- std::string mNick;
-};
-
-#endif // GUI_WIDGETS_TABS_CHAT_WHISPERTAB_H
diff --git a/src/gui/widgets/tabs/debugwindowtabs.cpp b/src/gui/widgets/tabs/debugwindowtabs.cpp
deleted file mode 100644
index 321c3bcad..000000000
--- a/src/gui/widgets/tabs/debugwindowtabs.cpp
+++ /dev/null
@@ -1,492 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/debugwindowtabs.h"
-
-#include "game.h"
-
-#include "being/localplayer.h"
-
-#include "particle/particleengine.h"
-
-#include "gui/viewport.h"
-
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/label.h"
-#include "gui/widgets/layouthelper.h"
-
-#ifdef USE_OPENGL
-#include "resources/imagehelper.h"
-#endif // USE_OPENGL
-
-#include "resources/map/map.h"
-
-#include "net/packetcounters.h"
-
-#include "utils/gettext.h"
-#include "utils/stringutils.h"
-#include "utils/timer.h"
-
-#include "debug.h"
-
-MapDebugTab::MapDebugTab(const Widget2 *const widget) :
- DebugTab(widget),
- // TRANSLATORS: debug window label
- mMusicFileLabel(new Label(this, _("Music:"))),
- // TRANSLATORS: debug window label
- mMapLabel(new Label(this, _("Map:"))),
- // TRANSLATORS: debug window label
- mMapNameLabel(new Label(this, _("Map name:"))),
- // TRANSLATORS: debug window label
- mMinimapLabel(new Label(this, _("Minimap:"))),
- mTileMouseLabel(new Label(this, strprintf("%s (%d, %d)",
- // TRANSLATORS: debug window label
- _("Cursor:"), 0, 0))),
- mParticleCountLabel(new Label(this, strprintf("%s %d",
- // TRANSLATORS: debug window label
- _("Particle count:"), 88888))),
- mMapActorCountLabel(new Label(this, strprintf("%s %d",
- // TRANSLATORS: debug window label
- _("Map actors count:"), 88888))),
- // TRANSLATORS: debug window label
- mXYLabel(new Label(this, strprintf("%s (?,?)", _("Player Position:")))),
- mTexturesLabel(nullptr),
- mUpdateTime(0),
-#ifdef DEBUG_DRAW_CALLS
- mDrawCallsLabel(new Label(this, strprintf("%s %s",
- // TRANSLATORS: debug window label
- _("Draw calls:"), "?"))),
-#endif // DEBUG_DRAW_CALLS
-#ifdef DEBUG_BIND_TEXTURE
- mBindsLabel(new Label(this, strprintf("%s %s",
- // TRANSLATORS: debug window label
- _("Texture binds:"), "?"))),
-#endif // DEBUG_BIND_TEXTURE
- // TRANSLATORS: debug window label, frames per second
- mFPSLabel(new Label(this, strprintf(_("%d FPS"), 0))),
- // TRANSLATORS: debug window label, logic per second
- mLPSLabel(new Label(this, strprintf(_("%d LPS"), 0))),
- mFPSText()
-{
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
-
-#ifdef USE_OPENGL
- switch (imageHelper->useOpenGL())
- {
- case RENDER_SOFTWARE:
- // TRANSLATORS: debug window label
- mFPSText = _("%d FPS (Software)");
- break;
- case RENDER_NORMAL_OPENGL:
- case RENDER_NULL:
- case RENDER_LAST:
- default:
- // TRANSLATORS: debug window label
- mFPSText = _("%d FPS (normal OpenGL)");
- break;
- case RENDER_SAFE_OPENGL:
- // TRANSLATORS: debug window label
- mFPSText = _("%d FPS (safe OpenGL)");
- break;
- case RENDER_GLES_OPENGL:
- // TRANSLATORS: debug window label
- mFPSText = _("%d FPS (mobile OpenGL ES)");
- break;
- case RENDER_GLES2_OPENGL:
- // TRANSLATORS: debug window label
- mFPSText = _("%d FPS (mobile OpenGL ES 2)");
- break;
- case RENDER_MODERN_OPENGL:
- // TRANSLATORS: debug window label
- mFPSText = _("%d FPS (modern OpenGL)");
- break;
- case RENDER_SDL2_DEFAULT:
- // TRANSLATORS: debug window label
- mFPSText = _("%d FPS (SDL2 default)");
- break;
- };
-#else // USE_OPENGL
-
- // TRANSLATORS: debug window label
- mFPSText = _("%d FPS (Software)");
-#endif // USE_OPENGL
-
- place(0, 0, mFPSLabel, 2);
- place(0, 1, mLPSLabel, 2);
- place(0, 2, mMusicFileLabel, 2);
- place(0, 3, mMapLabel, 2);
- place(0, 4, mMapNameLabel, 2);
- place(0, 5, mMinimapLabel, 2);
- place(0, 6, mXYLabel, 2);
- place(0, 7, mTileMouseLabel, 2);
- place(0, 8, mParticleCountLabel, 2);
- place(0, 9, mMapActorCountLabel, 2);
-#ifdef USE_OPENGL
-#if defined (DEBUG_OPENGL_LEAKS) || defined(DEBUG_DRAW_CALLS) \
- || defined(DEBUG_BIND_TEXTURE)
- int n = 10;
-#endif // defined (DEBUG_OPENGL_LEAKS) || defined(DEBUG_DRAW_CALLS)
- // || defined(DEBUG_BIND_TEXTURE)
-#ifdef DEBUG_OPENGL_LEAKS
- mTexturesLabel = new Label(this, strprintf("%s %s",
- // TRANSLATORS: debug window label
- _("Textures count:"), "?"));
- place(0, n, mTexturesLabel, 2);
- n ++;
-#endif // DEBUG_OPENGL_LEAKS
-#ifdef DEBUG_DRAW_CALLS
- place(0, n, mDrawCallsLabel, 2);
- n ++;
-#endif // DEBUG_DRAW_CALLS
-#ifdef DEBUG_BIND_TEXTURE
- place(0, n, mBindsLabel, 2);
-#endif // DEBUG_BIND_TEXTURE
-#endif // USE_OPENGL
-
- place.getCell().matchColWidth(0, 0);
- place = h.getPlacer(0, 1);
- setDimension(Rect(0, 0, 600, 300));
-}
-
-void MapDebugTab::logic()
-{
- BLOCK_START("MapDebugTab::logic")
- if (localPlayer != nullptr)
- {
- // TRANSLATORS: debug window label
- mXYLabel->setCaption(strprintf("%s (%d, %d)", _("Player Position:"),
- localPlayer->getTileX(), localPlayer->getTileY()));
- }
- else
- {
- // TRANSLATORS: debug window label
- mXYLabel->setCaption(strprintf("%s (?, ?)", _("Player Position:")));
- }
-
- Game *const game = Game::instance();
- const Map *const map = game != nullptr ? game->getCurrentMap() : nullptr;
- if (map != nullptr &&
- viewport != nullptr)
- {
- // Get the current mouse position
- const int mouseTileX = (viewport->mMouseX + viewport->getCameraX())
- / map->getTileWidth();
- const int mouseTileY = (viewport->mMouseY + viewport->getCameraY())
- / map->getTileHeight();
- mTileMouseLabel->setCaption(strprintf("%s (%d, %d)",
- // TRANSLATORS: debug window label
- _("Cursor:"), mouseTileX, mouseTileY));
-
- // TRANSLATORS: debug window label
- mMusicFileLabel->setCaption(strprintf("%s %s", _("Music:"),
- map->getProperty("music").c_str()));
- // TRANSLATORS: debug window label
- mMinimapLabel->setCaption(strprintf("%s %s", _("Minimap:"),
- map->getProperty("minimap").c_str()));
- // TRANSLATORS: debug window label
- mMapLabel->setCaption(strprintf("%s %s", _("Map:"),
- map->getProperty("_realfilename").c_str()));
- // TRANSLATORS: debug window label
- mMapNameLabel->setCaption(strprintf("%s %s", _("Map name:"),
- map->getProperty("name").c_str()));
-
- if (mUpdateTime != cur_time)
- {
- mUpdateTime = cur_time;
- // TRANSLATORS: debug window label
- mParticleCountLabel->setCaption(strprintf(_("Particle count: %d"),
- ParticleEngine::particleCount));
-
- mMapActorCountLabel->setCaption(
- // TRANSLATORS: debug window label
- strprintf("%s %d", _("Map actors count:"),
- map->getActorsCount()));
-#ifdef USE_OPENGL
-#ifdef DEBUG_OPENGL_LEAKS
- mTexturesLabel->setCaption(strprintf("%s %d",
- // TRANSLATORS: debug window label
- _("Textures count:"), textures_count));
-#endif // DEBUG_OPENGL_LEAKS
-#ifdef DEBUG_DRAW_CALLS
- if (mainGraphics)
- {
- mDrawCallsLabel->setCaption(strprintf("%s %d",
- // TRANSLATORS: debug window label
- _("Draw calls:"), mainGraphics->getDrawCalls()));
- }
-#endif // DEBUG_DRAW_CALLS
-#ifdef DEBUG_BIND_TEXTURE
- if (mainGraphics)
- {
- mBindsLabel->setCaption(strprintf("%s %d",
- // TRANSLATORS: debug window label
- _("Texture binds:"), mainGraphics->getBinds()));
- }
-#endif // DEBUG_BIND_TEXTURE
-#endif // USE_OPENGL
- }
- }
- else
- {
- // TRANSLATORS: debug window label
- mTileMouseLabel->setCaption(strprintf("%s (?, ?)", _("Cursor:")));
- // TRANSLATORS: debug window label
- mMusicFileLabel->setCaption(strprintf("%s ?", _("Music:")));
- // TRANSLATORS: debug window label
- mMinimapLabel->setCaption(strprintf("%s ?", _("Minimap:")));
- // TRANSLATORS: debug window label
- mMapLabel->setCaption(strprintf("%s ?", _("Map:")));
- // TRANSLATORS: debug window label
- mMapNameLabel->setCaption(strprintf("%s ?", _("Map name:")));
-
- mMapActorCountLabel->setCaption(
- // TRANSLATORS: debug window label
- strprintf("%s ?", _("Map actors count:")));
- }
-
- mMapActorCountLabel->adjustSize();
- mParticleCountLabel->adjustSize();
-
- mFPSLabel->setCaption(strprintf(mFPSText.c_str(), fps));
- // TRANSLATORS: debug window label, logic per second
- mLPSLabel->setCaption(strprintf(_("%d LPS"), lps));
- BLOCK_END("MapDebugTab::logic")
-}
-
-TargetDebugTab::TargetDebugTab(const Widget2 *const widget) :
- DebugTab(widget),
- // TRANSLATORS: debug window label
- mTargetLabel(new Label(this, strprintf("%s ?", _("Target:")))),
- // TRANSLATORS: debug window label
- mTargetIdLabel(new Label(this, strprintf("%s ? ", _("Target Id:")))),
- mTargetTypeLabel(new Label(this, strprintf(
- // TRANSLATORS: debug window label
- "%s ? ", _("Target type:")))),
- // TRANSLATORS: debug window label
- mTargetLevelLabel(new Label(this, strprintf("%s ?", _("Target level:")))),
- // TRANSLATORS: debug window label
- mTargetRaceLabel(new Label(this, strprintf("%s ?", _("Target race:")))),
- // TRANSLATORS: debug window label
- mTargetPartyLabel(new Label(this, strprintf("%s ?", _("Target party:")))),
- // TRANSLATORS: debug window label
- mTargetGuildLabel(new Label(this, strprintf("%s ?", _("Target guild:")))),
- // TRANSLATORS: debug window label
- mAttackDelayLabel(new Label(this, strprintf("%s ?", _("Attack delay:")))),
- // TRANSLATORS: debug window label
- mMinHitLabel(new Label(this, strprintf("%s ?", _("Minimal hit:")))),
- // TRANSLATORS: debug window label
- mMaxHitLabel(new Label(this, strprintf("%s ?", _("Maximum hit:")))),
- // TRANSLATORS: debug window label
- mCriticalHitLabel(new Label(this, strprintf("%s ?", _("Critical hit:")))),
- // TRANSLATORS: debug window label
- mKarmaLabel(new Label(this, strprintf("%s ?", _("Karma:")))),
- // TRANSLATORS: debug window label
- mMannerLabel(new Label(this, strprintf("%s ?", _("Manner:")))),
- // TRANSLATORS: debug window label
- mEffectsLabel(new Label(this, strprintf("%s ?", _("Effects:"))))
-{
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
-
- place(0, 0, mTargetLabel, 2);
- place(0, 1, mTargetIdLabel, 2);
- place(0, 2, mTargetTypeLabel, 2);
- place(0, 3, mTargetLevelLabel, 2);
- place(0, 4, mTargetRaceLabel, 2);
- place(0, 5, mAttackDelayLabel, 2);
- place(0, 6, mTargetPartyLabel, 2);
- place(0, 7, mTargetGuildLabel, 2);
- place(0, 8, mMinHitLabel, 2);
- place(0, 9, mMaxHitLabel, 2);
- place(0, 10, mCriticalHitLabel, 2);
- place(0, 11, mKarmaLabel, 2);
- place(0, 12, mMannerLabel, 2);
- place(0, 13, mEffectsLabel, 2);
-
- place.getCell().matchColWidth(0, 0);
- place = h.getPlacer(0, 1);
- setDimension(Rect(0, 0, 600, 300));
-}
-
-void TargetDebugTab::logic()
-{
- BLOCK_START("TargetDebugTab::logic")
- if ((localPlayer != nullptr) && (localPlayer->getTarget() != nullptr))
- {
- const Being *const target = localPlayer->getTarget();
-
- // TRANSLATORS: debug window label
- mTargetLabel->setCaption(strprintf("%s %s (%d, %d)", _("Target:"),
- target->getName().c_str(), target->getTileX(),
- target->getTileY()));
-
- mTargetIdLabel->setCaption(strprintf("%s %d",
- // TRANSLATORS: debug window label
- _("Target Id:"), toInt(target->getId(), int)));
- mTargetTypeLabel->setCaption(strprintf("%s %d",
- // TRANSLATORS: debug window label
- _("Target type:"), toInt(target->getSubType(), int)));
- if (target->getLevel() != 0)
- {
- mTargetLevelLabel->setCaption(strprintf("%s %d",
- // TRANSLATORS: debug window label
- _("Target Level:"), target->getLevel()));
- }
- else
- {
- mTargetLevelLabel->setCaption(strprintf("%s ?",
- // TRANSLATORS: debug window label
- _("Target Level:")));
- }
-
- mTargetRaceLabel->setCaption(strprintf("%s %s",
- // TRANSLATORS: debug window label
- _("Target race:"), target->getRaceName().c_str()));
-
- // TRANSLATORS: debug window label
- mTargetPartyLabel->setCaption(strprintf("%s %s", _("Target Party:"),
- target->getPartyName().c_str()));
-
- // TRANSLATORS: debug window label
- mTargetGuildLabel->setCaption(strprintf("%s %s", _("Target Guild:"),
- target->getGuildName().c_str()));
-
- mMinHitLabel->setCaption(strprintf("%s %d",
- // TRANSLATORS: debug window label
- _("Minimal hit:"), target->getMinHit()));
- mMaxHitLabel->setCaption(strprintf("%s %d",
- // TRANSLATORS: debug window label
- _("Maximum hit:"), target->getMaxHit()));
- mCriticalHitLabel->setCaption(strprintf("%s %d",
- // TRANSLATORS: debug window label
- _("Critical hit:"), target->getCriticalHit()));
- mKarmaLabel->setCaption(strprintf("%s %d",
- // TRANSLATORS: debug window label
- _("Karma:"), target->getKarma()));
- mMannerLabel->setCaption(strprintf("%s %d",
- // TRANSLATORS: debug window label
- _("Manner:"), target->getManner()));
- mEffectsLabel->setCaption(strprintf("%s %s",
- // TRANSLATORS: debug window label
- _("Effects:"), target->getStatusEffectsString().c_str()));
-
- const int delay = target->getAttackDelay();
- if (delay != 0)
- {
- mAttackDelayLabel->setCaption(strprintf("%s %d",
- // TRANSLATORS: debug window label
- _("Attack delay:"), delay));
- }
- else
- {
- mAttackDelayLabel->setCaption(strprintf(
- // TRANSLATORS: debug window label
- "%s ?", _("Attack delay:")));
- }
- }
- else
- {
- // TRANSLATORS: debug window label
- mTargetLabel->setCaption(strprintf("%s ?", _("Target:")));
- // TRANSLATORS: debug window label
- mTargetIdLabel->setCaption(strprintf("%s ?", _("Target Id:")));
- // TRANSLATORS: debug window label
- mTargetTypeLabel->setCaption(strprintf("%s ?", _("Target type:")));
- // TRANSLATORS: debug window label
- mTargetLevelLabel->setCaption(strprintf("%s ?", _("Target Level:")));
- // TRANSLATORS: debug window label
- mTargetPartyLabel->setCaption(strprintf("%s ?", _("Target Party:")));
- // TRANSLATORS: debug window label
- mTargetGuildLabel->setCaption(strprintf("%s ?", _("Target Guild:")));
- // TRANSLATORS: debug window label
- mAttackDelayLabel->setCaption(strprintf("%s ?", _("Attack delay:")));
- // TRANSLATORS: debug window label
- mMinHitLabel->setCaption(strprintf("%s ?", _("Minimal hit:")));
- // TRANSLATORS: debug window label
- mMaxHitLabel->setCaption(strprintf("%s ?", _("Maximum hit:")));
- // TRANSLATORS: debug window label
- mCriticalHitLabel->setCaption(strprintf("%s ?", _("Critical hit:")));
- // TRANSLATORS: debug window label
- mKarmaLabel->setCaption(strprintf("%s ?", _("Karma:")));
- // TRANSLATORS: debug window label
- mMannerLabel->setCaption(strprintf("%s ?", _("Manner:")));
- // TRANSLATORS: debug window label
- mEffectsLabel->setCaption(strprintf("%s ?", _("Effects:")));
- }
-
- mTargetLabel->adjustSize();
- mTargetIdLabel->adjustSize();
- mTargetTypeLabel->adjustSize();
- mTargetLevelLabel->adjustSize();
- mTargetPartyLabel->adjustSize();
- mTargetGuildLabel->adjustSize();
- mAttackDelayLabel->adjustSize();
- mMinHitLabel->adjustSize();
- mMaxHitLabel->adjustSize();
- mCriticalHitLabel->adjustSize();
- mKarmaLabel->adjustSize();
- mMannerLabel->adjustSize();
- mEffectsLabel->adjustSize();
- BLOCK_END("TargetDebugTab::logic")
-}
-
-NetDebugTab::NetDebugTab(const Widget2 *const widget) :
- DebugTab(widget),
- mPingLabel(new Label(this, " ")),
- mInPackets1Label(new Label(this, " ")),
- mOutPackets1Label(new Label(this, " "))
-{
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
-
- place(0, 0, mPingLabel, 2);
- place(0, 1, mInPackets1Label, 2);
- place(0, 2, mOutPackets1Label, 2);
-
- place.getCell().matchColWidth(0, 0);
- place = h.getPlacer(0, 1);
- setDimension(Rect(0, 0, 600, 300));
-}
-
-void NetDebugTab::logic()
-{
- BLOCK_START("NetDebugTab::logic")
- if (localPlayer != nullptr)
- {
- // TRANSLATORS: debug window label
- mPingLabel->setCaption(strprintf(_("Ping: %s ms"),
- localPlayer->getPingTime().c_str()));
- }
- else
- {
- // TRANSLATORS: debug window label
- mPingLabel->setCaption(strprintf(_("Ping: %s ms"), "0"));
- }
- // TRANSLATORS: debug window label
- mInPackets1Label->setCaption(strprintf(_("In: %d bytes/s"),
- PacketCounters::getInBytes()));
- // TRANSLATORS: debug window label
- mOutPackets1Label->setCaption(strprintf(_("Out: %d bytes/s"),
- PacketCounters::getOutBytes()));
- BLOCK_END("NetDebugTab::logic")
-}
diff --git a/src/gui/widgets/tabs/debugwindowtabs.h b/src/gui/widgets/tabs/debugwindowtabs.h
deleted file mode 100644
index 566987cd0..000000000
--- a/src/gui/widgets/tabs/debugwindowtabs.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_DEBUGWINDOWTABS_H
-#define GUI_WIDGETS_TABS_DEBUGWINDOWTABS_H
-
-#include "gui/widgets/container.h"
-
-class Label;
-
-class DebugTab notfinal : public Container
-{
- friend class DebugWindow;
-
- public:
- A_DELETE_COPY(DebugTab)
-
- void logic() override
- {
- }
-
- void resize(const int x, const int y)
- { setDimension(Rect(0, 0, x, y)); }
-
- protected:
- explicit DebugTab(const Widget2 *const widget) :
- Container(widget)
- { setSelectable(false); }
-};
-
-class MapDebugTab final : public DebugTab
-{
- friend class DebugWindow;
-
- public:
- explicit MapDebugTab(const Widget2 *const widget);
-
- A_DELETE_COPY(MapDebugTab)
-
- void logic() override final;
-
- private:
- Label *mMusicFileLabel A_NONNULLPOINTER;
- Label *mMapLabel A_NONNULLPOINTER;
- Label *mMapNameLabel A_NONNULLPOINTER;
- Label *mMinimapLabel A_NONNULLPOINTER;
- Label *mTileMouseLabel A_NONNULLPOINTER;
- Label *mParticleCountLabel A_NONNULLPOINTER;
- Label *mMapActorCountLabel A_NONNULLPOINTER;
- Label *mXYLabel A_NONNULLPOINTER;
- Label *mTexturesLabel A_NONNULLPOINTER;
- time_t mUpdateTime;
-#ifdef DEBUG_DRAW_CALLS
- Label *mDrawCallsLabel A_NONNULLPOINTER;
-#endif // DEBUG_DRAW_CALLS
-#ifdef DEBUG_BIND_TEXTURE
- Label *mBindsLabel A_NONNULLPOINTER;
-#endif // DEBUG_BIND_TEXTURE
-
- Label *mFPSLabel A_NONNULLPOINTER;
- Label *mLPSLabel A_NONNULLPOINTER;
- std::string mFPSText;
-};
-
-class TargetDebugTab final : public DebugTab
-{
- friend class DebugWindow;
-
- public:
- explicit TargetDebugTab(const Widget2 *const widget);
-
- A_DELETE_COPY(TargetDebugTab)
-
- void logic() override final;
-
- private:
- Label *mTargetLabel A_NONNULLPOINTER;
- Label *mTargetIdLabel A_NONNULLPOINTER;
- Label *mTargetTypeLabel A_NONNULLPOINTER;
- Label *mTargetLevelLabel A_NONNULLPOINTER;
- Label *mTargetRaceLabel A_NONNULLPOINTER;
- Label *mTargetPartyLabel A_NONNULLPOINTER;
- Label *mTargetGuildLabel A_NONNULLPOINTER;
- Label *mAttackDelayLabel A_NONNULLPOINTER;
- Label *mMinHitLabel A_NONNULLPOINTER;
- Label *mMaxHitLabel A_NONNULLPOINTER;
- Label *mCriticalHitLabel A_NONNULLPOINTER;
- Label *mKarmaLabel A_NONNULLPOINTER;
- Label *mMannerLabel A_NONNULLPOINTER;
- Label *mEffectsLabel A_NONNULLPOINTER;
-};
-
-class NetDebugTab final : public DebugTab
-{
- friend class DebugWindow;
-
- public:
- explicit NetDebugTab(const Widget2 *const widget);
-
- A_DELETE_COPY(NetDebugTab)
-
- void logic() override final;
-
- private:
- Label *mPingLabel A_NONNULLPOINTER;
- Label *mInPackets1Label A_NONNULLPOINTER;
- Label *mOutPackets1Label A_NONNULLPOINTER;
-};
-
-#endif // GUI_WIDGETS_TABS_DEBUGWINDOWTABS_H
diff --git a/src/gui/widgets/tabs/setup_audio.cpp b/src/gui/widgets/tabs/setup_audio.cpp
deleted file mode 100644
index 6275ff59a..000000000
--- a/src/gui/widgets/tabs/setup_audio.cpp
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setup_audio.h"
-
-#include "resources/map/map.h"
-
-#include "configuration.h"
-#include "soundmanager.h"
-
-#include "gui/viewport.h"
-
-#include "gui/models/soundsmodel.h"
-
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/layouthelper.h"
-#include "gui/widgets/scrollarea.h"
-
-#include "utils/delete2.h"
-
-#include "debug.h"
-
-Setup_Audio::Setup_Audio(const Widget2 *const widget) :
- SetupTabScroll(widget),
- mSoundModel(new SoundsModel),
- mChannelsList(new SetupItemNames)
-{
- // TRANSLATORS: audio tab in settings
- setName(_("Audio"));
-
- // Do the layout
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
- place(0, 0, mScroll, 10, 10);
-
- // TRANSLATORS: settings option
- new SetupItemLabel(_("Basic settings"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable Audio"), "", "sound", this, "soundEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable music"), "",
- "playMusic", this, "playMusicEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable game sfx"), "",
- "playBattleSound", this, "playBattleSoundEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable gui sfx"), "",
- "playGuiSound", this, "playGuiSoundEvent");
-
- // TRANSLATORS: settings option
- new SetupItemSlider(_("Sfx volume"), "", "sfxVolume",
- this, "sfxVolumeEvent", 0, SoundManager::getMaxVolume(), 1,
- 150,
- OnTheFly_true,
- MainConfig_true);
-
- // TRANSLATORS: settings option
- new SetupItemSlider(_("Music volume"), "", "musicVolume",
- this, "musicVolumeEvent", 0, SoundManager::getMaxVolume(), 1,
- 150,
- OnTheFly_true,
- MainConfig_true);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable music fade out"), "",
- "fadeoutmusic", this, "fadeoutmusicEvent");
-
- // TRANSLATORS: settings option
- new SetupItemIntTextField(_("Audio frequency"), "",
- "audioFrequency", this, "audioFrequencyEvent", 14000, 192000);
-
- // TRANSLATORS: audio type
- mChannelsList->push_back(_("mono"));
- // TRANSLATORS: audio type
- mChannelsList->push_back(_("stereo"));
- // TRANSLATORS: audio type
- mChannelsList->push_back(_("surround"));
- // TRANSLATORS: audio type
- mChannelsList->push_back(_("surround+center+lfe"));
- // TRANSLATORS: settings option
- new SetupItemSlider2(_("Audio channels"), "", "audioChannels", this,
- "audioChannels", 1, 4, 1, mChannelsList,
- OnTheFly_false,
- MainConfig_true,
- DoNotAlign_false);
-
- // TRANSLATORS: settings option
- new SetupItemIntTextField(_("Parallel number of sounds"), "",
- "parallelAudioChannels", this, "parallelAudioChannelsEvent", 1, 1000);
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Sound effects"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemSound(_("Information dialog sound"), "",
- "soundinfo", this, "soundinfoEvent", mSoundModel);
-
- // TRANSLATORS: settings option
- new SetupItemSound(_("Request dialog sound"), "",
- "soundrequest", this, "soundrequestEvent", mSoundModel);
-
- // TRANSLATORS: settings option
- new SetupItemSound(_("Whisper message sound"), "",
- "soundwhisper", this, "soundwhisperEvent", mSoundModel);
-
- // TRANSLATORS: settings option
- new SetupItemSound(_("Guild / Party message sound"), "",
- "soundguild", this, "soundguildEvent", mSoundModel);
-
- // TRANSLATORS: settings option
- new SetupItemSound(_("Highlight message sound"), "",
- "soundhighlight", this, "soundhighlightEvent", mSoundModel);
-
- // TRANSLATORS: settings option
- new SetupItemSound(_("Global message sound"), "",
- "soundglobal", this, "soundglobalEvent", mSoundModel);
-
- // TRANSLATORS: settings option
- new SetupItemSound(_("Error message sound"), "",
- "sounderror", this, "sounderrorEvent", mSoundModel);
-
- // TRANSLATORS: settings option
- new SetupItemSound(_("Trade request sound"), "",
- "soundtrade", this, "soundtradeEvent", mSoundModel);
-
- // TRANSLATORS: settings option
- new SetupItemSound(_("Show window sound"), "",
- "soundshowwindow", this, "soundshowwindowEvent", mSoundModel);
-
- // TRANSLATORS: settings option
- new SetupItemSound(_("Hide window sound"), "",
- "soundhidewindow", this, "soundhidewindowEvent", mSoundModel);
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Other"), "", this);
-
-#ifdef USE_MUMBLE
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable mumble voice chat"), "",
- "enableMumble", this, "enableMumbleEvent");
-#endif // USE_MUMBLE
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Download music"), "",
- "download-music", this, "download-musicEvent");
-
- setDimension(Rect(0, 0, 550, 350));
-}
-
-Setup_Audio::~Setup_Audio()
-{
- delete2(mSoundModel);
- delete2(mChannelsList);
-}
-
-void Setup_Audio::apply()
-{
- SetupTabScroll::apply();
- if (config.getBoolValue("sound"))
- {
- soundManager.init();
- if (config.getBoolValue("playMusic"))
- {
- if (viewport != nullptr)
- { // in game
- const Map *const map = viewport->getMap();
- if (map != nullptr)
- {
- soundManager.playMusic(map->getMusicFile(),
- SkipError_false);
- }
- }
- else
- { // not in game
- soundManager.playMusic(branding.getValue(
- "loginMusic",
- "keprohm.ogg"),
- SkipError_true);
- }
- }
- else
- {
- soundManager.stopMusic();
- }
- }
- else
- {
- soundManager.close();
- }
-}
diff --git a/src/gui/widgets/tabs/setup_audio.h b/src/gui/widgets/tabs/setup_audio.h
deleted file mode 100644
index d76add16c..000000000
--- a/src/gui/widgets/tabs/setup_audio.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUP_AUDIO_H
-#define GUI_WIDGETS_TABS_SETUP_AUDIO_H
-
-#include "gui/widgets/setupitem.h"
-
-#include "gui/widgets/tabs/setuptabscroll.h"
-
-class Setup_Audio final : public SetupTabScroll
-{
- public:
- explicit Setup_Audio(const Widget2 *const widget);
-
- A_DELETE_COPY(Setup_Audio)
-
- ~Setup_Audio();
-
- void apply() override final;
-
- private:
- ListModel *mSoundModel;
-
- SetupItemNames *mChannelsList;
-};
-
-#endif // GUI_WIDGETS_TABS_SETUP_AUDIO_H
diff --git a/src/gui/widgets/tabs/setup_chat.cpp b/src/gui/widgets/tabs/setup_chat.cpp
deleted file mode 100644
index b27e1ec53..000000000
--- a/src/gui/widgets/tabs/setup_chat.cpp
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setup_chat.h"
-
-#include "gui/windows/chatwindow.h"
-
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/layouthelper.h"
-#include "gui/widgets/scrollarea.h"
-#include "gui/widgets/setupitem.h"
-
-#include "utils/gettext.h"
-
-#include "debug.h"
-
-Setup_Chat::Setup_Chat(const Widget2 *const widget) :
- SetupTabScroll(widget)
-{
- // TRANSLATORS: settings tab name
- setName(_("Chat"));
-
- // Do the layout
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
- place(0, 0, mScroll, 10, 10);
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Window"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Auto hide chat window"),
- // TRANSLATORS: settings description
- _("Chat window will be automatically hidden when not in use.\n\n"
- "Hit Enter or hover mouse to show chat again."),
- "autohideChat", this, "autohideChatEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Protect chat focus"),
- // TRANSLATORS: settings description
- _("Enables aggressive protection of input focus in chat window.\n\n"
- "Note: no other text inputs will be allowed to receive text input "
- "when you typing in chat window."),
- "protectChatFocus", this, "protectChatFocusEvent");
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Colors"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Remove colors from received chat messages"),
- // TRANSLATORS: settings description
- _("Enable this setting to strip colors from incoming chat messages. "
- "All messages will use default chat text color if this enabled."),
- "removeColors", this, "removeColorsEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show chat colors list"),
- // TRANSLATORS: settings description
- _("Enable this setting to show color selection drop-down in chat "
- "window. Chat window will display color selection drop-down.\n\n"
- "It allows one to select default color of outgoing chat messages "
- "easily, but also occupies some space in chat window."),
- "showChatColorsList", this, "showChatColorsListEvent");
-
-
- // TRANSLATORS: settings option
- new SetupItemLabel(_("Commands"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Allow magic and GM commands in all chat tabs"),
- // TRANSLATORS: settings description
- _("Enable this setting to be able to type spells and GM commands in "
- "any tab."),
- "allowCommandsInChatTabs", this, "allowCommandsInChatTabsEvent");
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Limits"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemIntTextField(_("Limit max chars in chat line"),
- // TRANSLATORS: settings description
- _("Limits how many characters will be shown in longest lines "
- "of text displayed in chat.\n\n"
- "Note: long lines can make client slower. Lines longer than this "
- "limit will be truncated."),
- "chatMaxCharLimit", this, "chatMaxCharLimitEvent", 0, 500);
-
- // TRANSLATORS: settings option
- new SetupItemIntTextField(_("Limit max lines in chat"),
- // TRANSLATORS: settings description
- _("Limits how many lines chat will keep in scrollback buffer. Chat "
- "keeps specified number of last lines of text. Oldest lines exceeding "
- "this limit are discarded from scrollback buffer.\n\n"
- "Note: keeping too many lines in scroll buffer can slow client down."),
- "chatMaxLinesLimit", this, "chatMaxLinesLimitEvent", 0, 500);
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Logs"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable chat Log"),
- // TRANSLATORS: settings description
- _("If you enable this setting, chat logs will be written to disk.\n\n"
- "Note: chat logs can take noticeable amount of disk space over time."),
- "enableChatLog", this, "enableChatLogEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable debug chat Log"),
- // TRANSLATORS: settings description
- _("If you enable this, debug chat tab also will be logged to disk."),
- "enableDebugLog", this, "enableDebugLogEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show chat history"),
- // TRANSLATORS: settings description
- _("If this setting enabled, client will load old chat tabs content "
- "from logs on startup instead of starting with empty chat tabs."),
- "showChatHistory", this, "showChatHistoryEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show party online messages"),
- // TRANSLATORS: settings description
- _("If this setting is enabled, online status changes of party members"
- " will be shown in party tab of chat.\n\nThis adds some extra noise "
- "to chat, but allows one to see when your buddies are coming online."),
- "showPartyOnline", this, "showPartyOnlineEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show guild online messages"),
- // TRANSLATORS: settings description
- _("If this setting is enabled, online status changes of guild members"
- " will be shown in guild tab of chat.\n\nThis adds some extra noise "
- "to chat, but allows one to see when your buddies are coming online."),
- "showGuildOnline", this, "showGuildOnlineEvent");
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Messages"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Hide shop messages"),
- // TRANSLATORS: settings description
- _("If this setting enabled, no messages related to built-in ManaPlus "
- "shop will be displayed in chat. Disable this setting if you want "
- "to see shop-related messages.\n\nNote: technically, ManaPlus shop "
- "implemented as usual private messages with special content. If you "
- "disable this setting, you will be able to see these messages and get "
- "idea when other players are looking at your shop."),
- "hideShopMessages", this, "hideShopMessagesEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show MVP messages"),
- // TRANSLATORS: settings description
- _("Enable this setting to see MVP messages from server.\n\n"
- "Note: MVP messages are not used on TMW/Evol/etc servers, so this "
- "feature usually makes little difference."),
- "showMVP", this, "showMVPEvent");
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Tabs"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Put all whispers in tabs"),
- // TRANSLATORS: settings description
- _("If this setting enabled, all whispers (private messages) will "
- "be placed in separate tabs, separate tab for each player. If this "
- "setting disabled, all whispers will appear in General tab.\n\n"
- "Note: putting all whispers to single General tab is known to be "
- "confusing. Think twice before disabling this feature."),
- "whispertab", this, "whispertabEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Log magic messages in debug tab"),
- // TRANSLATORS: settings description
- _("If this setting is enabled, spell invocation will be shown in "
- "Debug tab. If disabled, it will be shown in General tab instead.\n\n"
- "Note: it does not affects server replies related to spells."),
- "showMagicInDebug", this, "showMagicInDebugEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show server messages in debug tab"),
- // TRANSLATORS: settings description
- _("If this setting is enabled, server messages will be shown in "
- "Debug tab of chat. If disabled, server messages will appear in "
- "General chat instead.\n\nNote: according to 4144, disabling this "
- "could also make you to lose some debug messages from client in "
- "Debug tab since these are fake server messages."),
- "serverMsgInDebug", this, "serverMsgInDebugEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable trade tab"),
- // TRANSLATORS: settings description
- _("Enables trade tab. Trade tab is basically some filter. Messages "
- "containing words typical for trades will go to Trade tab. This "
- "will make General tab less noisy. If this setting is disabled, all "
- "trade related players messages will stay in General tab."),
- "enableTradeTab", this, "enableTradeTabEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable gm tab"),
- // TRANSLATORS: settings description
- _("If enabled, GM tab will appear in chat. It displays text related "
- "GM activity.\n\nNote: this setting only makes difference for "
- "GMs (Game Masters) since this tab only appears for GMs."),
- "enableGmTab", this, "enableGmTabEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable language tab"),
- // TRANSLATORS: settings description
- _("If this feature enabled, language tab will appear if server "
- "supports this feature.\n\nNote: only supported by Evol server yet."),
- "enableLangTab", this, "enableLangTabEvent",
- MainConfig_false);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show all languages messages"),
- // TRANSLATORS: settings description
- _("If this setting enabled and server supports different chats "
- "for different languages, you will see messages for all languages, "
- "regardless of your language preferences.\n\nNote: it only works "
- "on servers supporting language tabs feature, like Evol."),
- "showAllLang", this, "showAllLangEvent",
- MainConfig_false);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable battle tab"),
- // TRANSLATORS: settings description
- _("If this setting enabled, Battle tab will appear in chat. This "
- "tab will contain messages related to battles, like damage and "
- "experience gain, if battle messages are enabled.\n\n"
- "Note: client restart required to take effect."),
- "enableBattleTab", this, "enableBattleTabEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show battle events"),
- // TRANSLATORS: settings description
- _("If this setting enabled, messages related to battle like damage "
- "or experience gain will be displayed in Debug or Battle tab. If "
- "disabled, no battle messages will be displayed."),
- "showBattleEvents", this, "showBattleEventsEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Resize chat tabs if need"),
- // TRANSLATORS: settings description
- _("If this feature enabled, text in chat will be automatically "
- "adjusted to adapt to appearance of chat input field when you "
- "typing message and when input field of chat disappears. If disabled, "
- "chat input area will always occupy its place, which could be "
- "otherwise usable for text.\n\n"
- "Note: its mostly about jumpy attitude vs "
- "less usable space for text."),
- "hideChatInput", this, "hideChatInputEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable trade spam filter"),
- "", "enableTradeFilter", this, "enableTradeFilterEvent");
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Time"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Use local time"),
- // TRANSLATORS: settings description
- _("If this feature enabled, timestamps in chat will use local times. "
- "If disabled, server time will be used (often it is GMT+0)."),
- "useLocalTime", this, "useLocalTimeEvent");
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Other"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemTextField(_("Highlight words (separated by comma)"),
- // TRANSLATORS: settings description
- _("Here you can specify some extra words which will also cause "
- "highlighting. Use comma to separate words.\n\nNote: frequent "
- "highlights are annoying - use it with caution."),
- "highlightWords", this, "highlightWordsEvent");
-
- // TRANSLATORS: settings option
- new SetupItemTextField(_("Globals ignore names (separated by comma)"),
- // TRANSLATORS: settings description
- _("This setting allows you to ignore some global messages if "
- "particular sender (NPC, GM) annoys you too much. Global will be "
- "moved to Debug instead.\n\nNote: careless use of this feature can "
- "make you to miss important announces!"),
- "globalsFilter", this, "globalsFilterEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show emotes button in chat"),
- // TRANSLATORS: settings description
- _("If this setting enabled, button will appear near text input "
- "field. This button allows one to invoke composing window, which "
- "allows one to insert smiles and text formatting easily.\n\n"
- "Note: same window can also be invoked by hotkey when typing, usually "
- "F1 by default."),
- "showEmotesButton", this, "showEmotesButtonEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show motd server message on start"),
- // TRANSLATORS: settings description
- _("If this setting enabled, client will display server MOTD (message"
- " of the day) once you connect to server. Disable it to hide MOTD."),
- "showmotd", this, "showmotdEvent");
-
- setDimension(Rect(0, 0, 550, 350));
-}
-
-void Setup_Chat::apply()
-{
- SetupTabScroll::apply();
-
- if (chatWindow != nullptr)
- {
- chatWindow->adjustTabSize();
- chatWindow->parseHighlights();
- }
-}
-
-void Setup_Chat::externalUpdated()
-{
- reread("enableLangTab");
- reread("showAllLang");
-}
diff --git a/src/gui/widgets/tabs/setup_chat.h b/src/gui/widgets/tabs/setup_chat.h
deleted file mode 100644
index 2b18b0489..000000000
--- a/src/gui/widgets/tabs/setup_chat.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUP_CHAT_H
-#define GUI_WIDGETS_TABS_SETUP_CHAT_H
-
-#include "gui/widgets/tabs/setuptabscroll.h"
-
-class Setup_Chat final : public SetupTabScroll
-{
- public:
- explicit Setup_Chat(const Widget2 *const widget);
-
- A_DELETE_COPY(Setup_Chat)
-
- void apply() override final;
-
- void externalUpdated() override final;
-};
-
-#endif // GUI_WIDGETS_TABS_SETUP_CHAT_H
diff --git a/src/gui/widgets/tabs/setup_colors.cpp b/src/gui/widgets/tabs/setup_colors.cpp
deleted file mode 100644
index 4f2b35113..000000000
--- a/src/gui/widgets/tabs/setup_colors.cpp
+++ /dev/null
@@ -1,491 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008 Douglas Boffey <dougaboffey@netscape.net>
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setup_colors.h"
-
-#include "gui/gui.h"
-#include "gui/userpalette.h"
-
-#include "gui/fonts/font.h"
-
-#include "gui/widgets/browserbox.h"
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/createwidget.h"
-#include "gui/widgets/label.h"
-#include "gui/widgets/layouthelper.h"
-#include "gui/widgets/listbox.h"
-#include "gui/widgets/scrollarea.h"
-#include "gui/widgets/slider.h"
-#include "gui/widgets/textfield.h"
-#include "gui/widgets/textpreview.h"
-
-#include "utils/delete2.h"
-#include "utils/gettext.h"
-#include "utils/stringutils.h"
-
-#include <cmath>
-
-#include "debug.h"
-
-const char *const Setup_Colors::rawmsg =
- // TRANSLATORS: color selection preview message
- N_("This is what the color looks like");
-
-Setup_Colors::Setup_Colors(const Widget2 *const widget) :
- SetupTab(widget),
- SelectionListener(),
- mColorBox(CREATEWIDGETR(ListBox, this, userPalette, "")),
- mScroll(new ScrollArea(this, mColorBox,
- Opaque_true, "setup_colors_background.xml")),
- mPreview(new BrowserBox(this, Opaque_true,
- "browserbox.xml")),
- mTextPreview(new TextPreview(this, gettext(rawmsg))),
- mPreviewBox(new ScrollArea(this, mPreview, Opaque_true,
- "setup_colors_preview_background.xml")),
- mSelected(-1),
- // TRANSLATORS: colors tab. label.
- mGradTypeLabel(new Label(this, _("Type:"))),
- mGradTypeSlider(new Slider(this, 0.0, 3.0, 1.0)),
- mGradTypeText(new Label(this)),
- // TRANSLATORS: colors tab. label.
- mGradDelayLabel(new Label(this, _("Delay:"))),
- mGradDelaySlider(new Slider(this, 20.0, 100.0, 1.0)),
- mGradDelayText(new TextField(this)),
- // TRANSLATORS: colors tab. label.
- mRedLabel(new Label(this, _("Red:"))),
- mRedSlider(new Slider(this, 0.0, 255.0, 1.0)),
- mRedText(new TextField(this)),
- // TRANSLATORS: colors tab. label.
- mGreenLabel(new Label(this, _("Green:"))),
- mGreenSlider(new Slider(this, 0.0, 255.0, 1.0)),
- mGreenText(new TextField(this)),
- // TRANSLATORS: colors tab. label.
- mBlueLabel(new Label(this, _("Blue:"))),
- mBlueSlider(new Slider(this, 0.0, 255.0, 1.0)),
- mBlueText(new TextField(this))
-{
- // TRANSLATORS: settings colors tab name
- setName(_("Colors"));
- mColorBox->addSelectionListener(this);
- mScroll->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER);
- mPreview->setOpaque(Opaque_false);
-
- // don't do anything with links
- mPreview->setLinkHandler(nullptr);
-
- mPreviewBox->setHeight(20);
- mPreviewBox->setScrollPolicy(ScrollArea::SHOW_NEVER,
- ScrollArea::SHOW_NEVER);
-
- mGradTypeSlider->setWidth(180);
- mGradTypeSlider->setActionEventId("slider_grad");
- mGradTypeSlider->setValue(0);
- mGradTypeSlider->addActionListener(this);
- mGradTypeSlider->setEnabled(false);
-
- // TRANSLATORS: color type
- std::string longText = _("Static");
-
- const Font *const font = getFont();
- // TRANSLATORS: color type
- if (getFont()->getWidth(_("Pulse")) > font->getWidth(longText))
- {
- // TRANSLATORS: color type
- longText = _("Pulse");
- }
- // TRANSLATORS: color type
- if (getFont()->getWidth(_("Rainbow")) > font->getWidth(longText))
- {
- // TRANSLATORS: color type
- longText = _("Rainbow");
- }
- // TRANSLATORS: color type
- if (getFont()->getWidth(_("Spectrum")) > font->getWidth(longText))
- {
- // TRANSLATORS: color type
- longText = _("Spectrum");
- }
-
- mGradTypeText->setCaption(longText);
-
- mGradDelayText->setWidth(40);
- mGradDelayText->setRange(20, 100);
- mGradDelayText->setNumeric(true);
- mGradDelayText->setEnabled(false);
-
- mGradDelaySlider->setWidth(180);
- mGradDelaySlider->setValue(mGradDelayText->getValue());
- mGradDelaySlider->setActionEventId("slider_graddelay");
- mGradDelaySlider->addActionListener(this);
- mGradDelaySlider->setEnabled(false);
-
- mRedText->setWidth(40);
- mRedText->setRange(0, 255);
- mRedText->setNumeric(true);
- mRedText->setEnabled(false);
-
- mRedSlider->setWidth(180);
- mRedSlider->setValue(mRedText->getValue());
- mRedSlider->setActionEventId("slider_red");
- mRedSlider->addActionListener(this);
- mRedSlider->setEnabled(false);
-
- mGreenText->setWidth(40);
- mGreenText->setRange(0, 255);
- mGreenText->setNumeric(true);
- mGreenText->setEnabled(false);
-
- mGreenSlider->setWidth(180);
- mGreenSlider->setValue(mGreenText->getValue());
- mGreenSlider->setActionEventId("slider_green");
- mGreenSlider->addActionListener(this);
- mGreenSlider->setEnabled(false);
-
- mBlueText->setWidth(40);
- mBlueText->setRange(0, 255);
- mBlueText->setNumeric(true);
- mBlueText->setEnabled(false);
-
- mBlueSlider->setWidth(180);
- mBlueSlider->setValue(mBlueText->getValue());
- mBlueSlider->setActionEventId("slider_blue");
- mBlueSlider->addActionListener(this);
- mBlueSlider->setEnabled(false);
-
- setOpaque(Opaque_false);
-
- // Do the layout
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
-
- place(0, 0, mScroll, 6, 6).setPadding(2);
- place(0, 6, mPreviewBox, 6).setPadding(2);
- place(0, 7, mGradTypeLabel, 3);
- place(3, 7, mGradTypeSlider);
- place(4, 7, mGradTypeText, 2).setPadding(1);
- place(0, 8, mRedLabel, 3);
- place(3, 8, mRedSlider);
- place(5, 8, mRedText).setPadding(1);
- place(0, 9, mGreenLabel, 3);
- place(3, 9, mGreenSlider);
- place(5, 9, mGreenText).setPadding(1);
- place(0, 10, mBlueLabel, 3);
- place(3, 10, mBlueSlider);
- place(5, 10, mBlueText).setPadding(1);
- place(0, 11, mGradDelayLabel, 3);
- place(3, 11, mGradDelaySlider);
- place(5, 11, mGradDelayText).setPadding(1);
-
- mGradTypeText->setCaption("");
-
- setDimension(Rect(0, 0, 365, 350));
-}
-
-Setup_Colors::~Setup_Colors()
-{
- if ((mPreviewBox != nullptr) && mPreviewBox->getContent() == mPreview)
- delete2(mTextPreview)
- else
- delete2(mPreview)
-}
-
-void Setup_Colors::action(const ActionEvent &event)
-{
- const std::string &eventId = event.getId();
- if (eventId == "slider_grad")
- {
- updateGradType();
- updateColor();
- return;
- }
-
- if (eventId == "slider_graddelay")
- {
- mGradDelayText->setText(toString(
- std::floor(mGradDelaySlider->getValue())));
- updateColor();
- return;
- }
- if (eventId == "slider_red")
- {
- mRedText->setText(toString(std::floor(mRedSlider->getValue())));
- updateColor();
- return;
- }
- if (eventId == "slider_green")
- {
- mGreenText->setText(toString(std::floor(mGreenSlider->getValue())));
- updateColor();
- return;
- }
- if (eventId == "slider_blue")
- {
- mBlueText->setText(toString(std::floor(mBlueSlider->getValue())));
- updateColor();
- return;
- }
-}
-
-void Setup_Colors::valueChanged(const SelectionEvent &event A_UNUSED)
-{
- if (userPalette == nullptr)
- return;
-
- mSelected = mColorBox->getSelected();
- const UserColorIdT type = static_cast<UserColorIdT>(
- userPalette->getColorTypeAt(mSelected));
- const Color *col = &userPalette->getColor(type);
- const GradientTypeT grad = userPalette->getGradientType(type);
- const int delay = userPalette->getGradientDelay(type);
- const Visible showControls = fromBool(grad != GradientType::LABEL,
- Visible);
- mPreview->setVisible(showControls);
- mPreviewBox->setVisible(showControls);
- mTextPreview->setVisible(showControls);
- mGradTypeLabel->setVisible(showControls);
- mGradTypeSlider->setVisible(showControls);
- mGradTypeText->setVisible(showControls);
- mGradDelayLabel->setVisible(showControls);
- mGradDelaySlider->setVisible(showControls);
- mGradDelayText->setVisible(showControls);
- mRedLabel->setVisible(showControls);
- mRedSlider->setVisible(showControls);
- mRedText->setVisible(showControls);
- mGreenLabel->setVisible(showControls);
- mGreenSlider->setVisible(showControls);
- mGreenText->setVisible(showControls);
- mBlueLabel->setVisible(showControls);
- mBlueSlider->setVisible(showControls);
- mBlueText->setVisible(showControls);
-
- mPreview->clearRows();
- mPreviewBox->setContent(mTextPreview);
- mTextPreview->setFont(boldFont);
- mTextPreview->setTextColor(col);
- mTextPreview->setTextBGColor(nullptr);
- mTextPreview->setOpaque(Opaque_false);
- mTextPreview->setShadow(true);
- mTextPreview->setOutline(true);
- mTextPreview->useTextAlpha(false);
-
-// probably need combite both switches and add all mssing color ids.
-
- PRAGMA45(GCC diagnostic push)
- PRAGMA45(GCC diagnostic ignored "-Wswitch-enum")
- switch (type)
- {
- case UserColorId::AIR_COLLISION_HIGHLIGHT:
- case UserColorId::WATER_COLLISION_HIGHLIGHT:
- case UserColorId::MONSTER_COLLISION_HIGHLIGHT:
- case UserColorId::GROUNDTOP_COLLISION_HIGHLIGHT:
- case UserColorId::COLLISION_HIGHLIGHT:
- case UserColorId::PORTAL_HIGHLIGHT:
- case UserColorId::HOME_PLACE:
- case UserColorId::ROAD_POINT:
- case UserColorId::NET:
- mTextPreview->setBGColor(col);
- mTextPreview->setOpaque(Opaque_true);
- mTextPreview->setOutline(false);
- mTextPreview->setShadow(false);
- break;
- case UserColorId::ATTACK_RANGE_BORDER:
- case UserColorId::HOME_PLACE_BORDER:
- if (gui != nullptr)
- mTextPreview->setFont(gui->getFont());
- mTextPreview->setTextColor(col);
- mTextPreview->setOutline(false);
- mTextPreview->setShadow(false);
- break;
- case UserColorId::PARTICLE:
- case UserColorId::EXP_INFO:
- case UserColorId::PICKUP_INFO:
- case UserColorId::HIT_PLAYER_MONSTER:
- case UserColorId::HIT_MONSTER_PLAYER:
- case UserColorId::HIT_CRITICAL:
- case UserColorId::MISS:
- case UserColorId::HIT_LOCAL_PLAYER_MONSTER:
- case UserColorId::HIT_LOCAL_PLAYER_CRITICAL:
- case UserColorId::HIT_LOCAL_PLAYER_MISS:
- case UserColorId::ATTACK_RANGE:
- case UserColorId::MONSTER_ATTACK_RANGE:
- case UserColorId::FLOOR_ITEM_TEXT:
- case UserColorId::SKILL_ATTACK_RANGE:
- mTextPreview->setShadow(false);
- break;
- default:
- break;
- }
-
- switch (type)
- {
- case UserColorId::PORTAL_HIGHLIGHT:
- case UserColorId::ATTACK_RANGE:
- case UserColorId::ATTACK_RANGE_BORDER:
- case UserColorId::MONSTER_ATTACK_RANGE:
- case UserColorId::SKILL_ATTACK_RANGE:
- case UserColorId::HOME_PLACE:
- case UserColorId::HOME_PLACE_BORDER:
- case UserColorId::AIR_COLLISION_HIGHLIGHT:
- case UserColorId::WATER_COLLISION_HIGHLIGHT:
- case UserColorId::MONSTER_COLLISION_HIGHLIGHT:
- case UserColorId::GROUNDTOP_COLLISION_HIGHLIGHT:
- case UserColorId::COLLISION_HIGHLIGHT:
- case UserColorId::WALKABLE_HIGHLIGHT:
- case UserColorId::ROAD_POINT:
- case UserColorId::MONSTER_HP:
- case UserColorId::MONSTER_HP2:
- case UserColorId::HOMUN_HP:
- case UserColorId::HOMUN_HP2:
- case UserColorId::MERC_HP:
- case UserColorId::MERC_HP2:
- case UserColorId::ELEMENTAL_HP:
- case UserColorId::ELEMENTAL_HP2:
- case UserColorId::PLAYER_HP:
- case UserColorId::PLAYER_HP2:
- case UserColorId::FLOOR_ITEM_TEXT:
- case UserColorId::NET:
- // TRANSLATORS: colors tab. label.
- mGradDelayLabel->setCaption(_("Alpha:"));
- mGradDelayText->setRange(0, 255);
- mGradDelaySlider->setScale(0, 255);
- break;
- default:
- // TRANSLATORS: colors tab. label.
- mGradDelayLabel->setCaption(_("Delay:"));
- mGradDelayText->setRange(20, 100);
- mGradDelaySlider->setScale(20, 100);
- break;
- }
- PRAGMA45(GCC diagnostic pop)
- if (grad != GradientType::STATIC && grad != GradientType::PULSE)
- { // If nonstatic color, don't display the current, but the committed
- // color at the sliders
- col = &userPalette->getCommittedColor(type);
- }
- else if (grad == GradientType::PULSE)
- {
- col = &userPalette->getTestColor(type);
- }
-
- setEntry(mGradDelaySlider, mGradDelayText, delay);
- setEntry(mRedSlider, mRedText, col->r);
- setEntry(mGreenSlider, mGreenText, col->g);
- setEntry(mBlueSlider, mBlueText, col->b);
-
- mGradTypeSlider->setValue(CAST_S32(grad));
- updateGradType();
- mGradTypeSlider->setEnabled(true);
-}
-
-void Setup_Colors::setEntry(Slider *const s, TextField *const t,
- const int value)
-{
- if (s != nullptr)
- s->setValue(value);
- if (t != nullptr)
- t->setText(toString(value));
-}
-
-void Setup_Colors::apply()
-{
- if (userPalette != nullptr)
- userPalette->commit();
-}
-
-void Setup_Colors::cancel()
-{
- if (userPalette == nullptr)
- return;
-
- userPalette->rollback();
- const UserColorIdT type = static_cast<UserColorIdT>(
- userPalette->getColorTypeAt(mSelected));
- const Color *const col = &userPalette->getColor(type);
- mGradTypeSlider->setValue(CAST_S32(
- userPalette->getGradientType(type)));
- const int delay = userPalette->getGradientDelay(type);
- setEntry(mGradDelaySlider, mGradDelayText, delay);
- setEntry(mRedSlider, mRedText, col->r);
- setEntry(mGreenSlider, mGreenText, col->g);
- setEntry(mBlueSlider, mBlueText, col->b);
-}
-
-void Setup_Colors::updateGradType()
-{
- if (mSelected == -1 || (userPalette == nullptr))
- return;
-
- mSelected = mColorBox->getSelected();
- const UserColorIdT type = static_cast<UserColorIdT>(
- userPalette->getColorTypeAt(mSelected));
- const GradientTypeT grad = userPalette->getGradientType(type);
-
- mGradTypeText->setCaption(
- // TRANSLATORS: color type
- (grad == GradientType::STATIC) ? _("Static") :
- // TRANSLATORS: color type
- (grad == GradientType::PULSE) ? _("Pulse") :
- // TRANSLATORS: color type
- (grad == GradientType::RAINBOW) ? _("Rainbow") : _("Spectrum"));
-
- const bool enable = (grad == GradientType::STATIC ||
- grad == GradientType::PULSE);
- const bool delayEnable = true;
-
- mGradDelayText->setEnabled(delayEnable);
- mGradDelaySlider->setEnabled(delayEnable);
-
- mRedText->setEnabled(enable);
- mRedSlider->setEnabled(enable);
- mGreenText->setEnabled(enable);
- mGreenSlider->setEnabled(enable);
- mBlueText->setEnabled(enable);
- mBlueSlider->setEnabled(enable);
-}
-
-void Setup_Colors::updateColor() const
-{
- if (mSelected == -1 || (userPalette == nullptr))
- return;
-
- const UserColorIdT type = static_cast<UserColorIdT>(
- userPalette->getColorTypeAt(mSelected));
- const GradientTypeT grad = static_cast<GradientTypeT>(
- CAST_S32(mGradTypeSlider->getValue()));
- const int delay = CAST_S32(mGradDelaySlider->getValue());
- userPalette->setGradient(type, grad);
- userPalette->setGradientDelay(type, delay);
-
- if (grad == GradientType::STATIC)
- {
- userPalette->setColor(type,
- CAST_S32(mRedSlider->getValue()),
- CAST_S32(mGreenSlider->getValue()),
- CAST_S32(mBlueSlider->getValue()));
- }
- else if (grad == GradientType::PULSE)
- {
- userPalette->setTestColor(type, Color(
- CAST_S32(mRedSlider->getValue()),
- CAST_S32(mGreenSlider->getValue()),
- CAST_S32(mBlueSlider->getValue())));
- }
-}
diff --git a/src/gui/widgets/tabs/setup_colors.h b/src/gui/widgets/tabs/setup_colors.h
deleted file mode 100644
index 1ba74f340..000000000
--- a/src/gui/widgets/tabs/setup_colors.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008 Douglas Boffey <dougaboffey@netscape.net>
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUP_COLORS_H
-#define GUI_WIDGETS_TABS_SETUP_COLORS_H
-
-#include "gui/widgets/tabs/setuptab.h"
-
-#include "listeners/selectionlistener.h"
-
-class BrowserBox;
-class Label;
-class ListBox;
-class ScrollArea;
-class Slider;
-class TextField;
-class TextPreview;
-
-class Setup_Colors final : public SetupTab,
- public SelectionListener
-{
- public:
- explicit Setup_Colors(const Widget2 *const widget);
-
- A_DELETE_COPY(Setup_Colors)
-
- ~Setup_Colors();
-
- void apply() override final;
-
- void cancel() override final;
-
- void action(const ActionEvent &event) override final;
-
- void valueChanged(const SelectionEvent &event) override final;
-
- private:
- static const char *const rawmsg;
-
- ListBox *mColorBox A_NONNULLPOINTER;
- ScrollArea *mScroll A_NONNULLPOINTER;
- BrowserBox *mPreview A_NONNULLPOINTER;
- TextPreview *mTextPreview A_NONNULLPOINTER;
- ScrollArea *mPreviewBox A_NONNULLPOINTER;
- int mSelected;
-
- Label *mGradTypeLabel A_NONNULLPOINTER;
- Slider *mGradTypeSlider A_NONNULLPOINTER;
- Label *mGradTypeText A_NONNULLPOINTER;
-
- Label *mGradDelayLabel A_NONNULLPOINTER;
- Slider *mGradDelaySlider A_NONNULLPOINTER;
- TextField *mGradDelayText A_NONNULLPOINTER;
-
- Label *mRedLabel A_NONNULLPOINTER;
- Slider *mRedSlider A_NONNULLPOINTER;
- TextField *mRedText A_NONNULLPOINTER;
-
- Label *mGreenLabel A_NONNULLPOINTER;
- Slider *mGreenSlider A_NONNULLPOINTER;
- TextField *mGreenText A_NONNULLPOINTER;
-
- Label *mBlueLabel A_NONNULLPOINTER;
- Slider *mBlueSlider A_NONNULLPOINTER;
- TextField *mBlueText A_NONNULLPOINTER;
-
- static void setEntry(Slider *const s, TextField *const t,
- const int value);
- void updateColor() const;
- void updateGradType();
-};
-
-#endif // GUI_WIDGETS_TABS_SETUP_COLORS_H
diff --git a/src/gui/widgets/tabs/setup_input.cpp b/src/gui/widgets/tabs/setup_input.cpp
deleted file mode 100644
index dc1e531f8..000000000
--- a/src/gui/widgets/tabs/setup_input.cpp
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au>
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setup_input.h"
-
-#include "configuration.h"
-
-#include "const/gui/pages.h"
-
-#include "input/inputactionoperators.h"
-#include "input/inputmanager.h"
-#include "input/keyboardconfig.h"
-
-#include "input/pages/craft.h"
-#include "input/pages/emotes.h"
-#include "input/pages/move.h"
-#include "input/pages/outfits.h"
-#include "input/pages/shortcuts.h"
-
-#include "gui/gui.h"
-#include "gui/setupinputpages.h"
-
-#include "gui/windows/okdialog.h"
-
-#include "gui/widgets/button.h"
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/createwidget.h"
-#include "gui/widgets/layouthelper.h"
-#include "gui/widgets/listbox.h"
-#include "gui/widgets/scrollarea.h"
-#include "gui/widgets/tabstrip.h"
-
-#include "gui/models/keylistmodel.h"
-
-#include "utils/delete2.h"
-#include "utils/gettext.h"
-
-#include "debug.h"
-
-Setup_Input::Setup_Input(const Widget2 *const widget) :
- SetupTab(widget),
- mKeyListModel(new KeyListModel),
- mKeyList(CREATEWIDGETR(ListBox, this, mKeyListModel, "")),
- // TRANSLATORS: button in input settings tab
- mAssignKeyButton(new Button(this, _("Assign"), "assign", this)),
- // TRANSLATORS: button in input settings tab
- mUnassignKeyButton(new Button(this, _("Unassign"), "unassign", this)),
- // TRANSLATORS: button in input settings tab
- mDefaultButton(new Button(this, _("Default"), "default", this)),
- // TRANSLATORS: button in input settings tab
- mResetKeysButton(new Button(this, _("Reset all keys"), "resetkeys", this)),
- mTabs(new TabStrip(this, config.getIntValue("fontSize") + 10)),
- mScrollArea(new ScrollArea(this, mKeyList,
- Opaque_true, "setup_input_background.xml")),
- mKeySetting(false),
- mActionDataSize(new int [SETUP_PAGES])
-{
- inputManager.setSetupInput(this);
- // TRANSLATORS: setting tab name
- setName(_("Input"));
-
- mKeyListModel->setSelectedData(0);
-
- for (int f = 0; f < SETUP_PAGES; f ++)
- {
- int cnt = 0;
- while (!setupActionData[f][cnt].name.empty())
- cnt ++;
- mActionDataSize[f] = cnt;
- }
-
- mKeyListModel->setSize(mActionDataSize[0]);
- refreshKeys();
- if (gui != nullptr)
- mKeyList->setFont(gui->getHelpFont());
- mKeyList->addActionListener(this);
-
- mScrollArea->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER);
- mAssignKeyButton->addActionListener(this);
- mAssignKeyButton->setEnabled(false);
- mUnassignKeyButton->addActionListener(this);
- mUnassignKeyButton->setEnabled(false);
- mResetKeysButton->addActionListener(this);
- mDefaultButton->addActionListener(this);
-
- mTabs->addActionListener(this);
- mTabs->setActionEventId("tabs_");
- int k = 0;
- while (pages[k] != nullptr)
- {
- mTabs->addButton(gettext(pages[k]), pages[k], false);
- k ++;
- }
-
- fixTranslations();
-
- // Do the layout
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
-
- place(0, 0, mTabs, 5);
- place(0, 1, mScrollArea, 5, 5).setPadding(2);
- place(0, 6, mResetKeysButton);
- place(2, 6, mAssignKeyButton);
- place(3, 6, mUnassignKeyButton);
- place(4, 6, mDefaultButton);
-
- int width = 600;
- if (config.getIntValue("screenwidth") >= 730)
- width += 100;
-
- setDimension(Rect(0, 0, width, 350));
-}
-
-Setup_Input::~Setup_Input()
-{
- delete2(mKeyList);
- delete2(mKeyListModel);
- delete2(mAssignKeyButton);
- delete2(mUnassignKeyButton);
- delete2(mResetKeysButton);
- delete [] mActionDataSize;
- mActionDataSize = nullptr;
- delete2(mScrollArea);
-}
-
-void Setup_Input::apply()
-{
- keyUnresolved();
- InputActionT key1, key2;
-
- if (inputManager.hasConflicts(key1, key2))
- {
- const std::string str1 = keyToString(key1);
- const std::string str2 = keyToString(key2);
-
- CREATEWIDGET(OkDialog,
- // TRANSLATORS: input settings error header
- _("Key Conflict(s) Detected."),
- // TRANSLATORS: input settings error
- strprintf(_("Conflict \"%s\" and \"%s\" keys. "
- "Resolve them, or gameplay may result in strange behaviour."),
- gettext(str1.c_str()), gettext(str2.c_str())),
- // TRANSLATORS: ok dialog button
- _("OK"),
- DialogType::ERROR,
- Modal_true,
- ShowCenter_true,
- nullptr,
- 260);
- }
- keyboard.setEnabled(true);
- inputManager.store();
-}
-
-void Setup_Input::cancel()
-{
- keyUnresolved();
- inputManager.retrieve();
- keyboard.setEnabled(true);
- refreshKeys();
-}
-
-void Setup_Input::action(const ActionEvent &event)
-{
- const std::string &id = event.getId();
- const int selectedData = mKeyListModel->getSelectedData();
-
- if (event.getSource() == mKeyList)
- {
- if (!mKeySetting)
- {
- const int i(mKeyList->getSelected());
- if (i >= 0 && i < mActionDataSize[selectedData])
- {
- if (setupActionData[selectedData][i].actionId
- == InputAction::NO_VALUE)
- {
- mAssignKeyButton->setEnabled(false);
- mUnassignKeyButton->setEnabled(false);
- }
- else
- {
- mAssignKeyButton->setEnabled(true);
- mUnassignKeyButton->setEnabled(true);
- }
- }
- }
- }
- else if (id == "assign")
- {
- mKeySetting = true;
- mAssignKeyButton->setEnabled(false);
- keyboard.setEnabled(false);
- const int i(mKeyList->getSelected());
- if (i >= 0 && i < mActionDataSize[selectedData])
- {
- const SetupActionData &key = setupActionData[selectedData][i];
- const InputActionT ik = key.actionId;
- inputManager.setNewKeyIndex(ik);
- mKeyListModel->setElementAt(i, std::string(
- gettext(key.name.c_str())).append(": ?"));
- }
- }
- else if (id == "unassign")
- {
- const int i(mKeyList->getSelected());
- if (i >= 0 && i < mActionDataSize[selectedData])
- {
- const SetupActionData &key = setupActionData[selectedData][i];
- const InputActionT ik = key.actionId;
- inputManager.setNewKeyIndex(ik);
- refreshAssignedKey(mKeyList->getSelected());
- inputManager.unassignKey();
- inputManager.setNewKeyIndex(InputAction::NO_VALUE);
- }
- mAssignKeyButton->setEnabled(true);
- }
- else if (id == "resetkeys")
- {
- inputManager.resetKeys();
- InputManager::update();
- refreshKeys();
- }
- else if (id == "default")
- {
- const int i(mKeyList->getSelected());
- if (i >= 0 && i < mActionDataSize[selectedData])
- {
- const SetupActionData &key = setupActionData[selectedData][i];
- const InputActionT ik = key.actionId;
- inputManager.makeDefault(ik);
- refreshKeys();
- }
- }
- else if (strStartWith(id, "tabs_"))
- {
- int k = 0;
- std::string str("tabs_");
- while (pages[k] != nullptr)
- {
- if (str + pages[k] == id)
- break;
- k ++;
- }
- if ((pages[k] != nullptr) && str + pages[k] == id)
- {
- mKeyListModel->setSelectedData(k);
- mKeyListModel->setSize(mActionDataSize[k]);
- refreshKeys();
- mKeyList->setSelected(0);
- }
- }
-}
-
-void Setup_Input::refreshAssignedKey(const int index)
-{
- const int selectedData = mKeyListModel->getSelectedData();
- const SetupActionData &key = setupActionData[selectedData][index];
- if (key.actionId == InputAction::NO_VALUE)
- {
- const std::string str(" \342\200\225\342\200\225\342\200\225"
- "\342\200\225\342\200\225 ");
- mKeyListModel->setElementAt(index,
- str + gettext(key.name.c_str()) + str);
- }
- else
- {
- std::string str = gettext(key.name.c_str());
- unsigned int sz = 20;
- if (mainGraphics->mWidth > 800)
- sz = 30;
- while (str.size() < sz)
- str.append(" ");
- mKeyListModel->setElementAt(index, strprintf("%s: %s", str.c_str(),
- inputManager.getKeyStringLong(key.actionId).c_str()));
- }
-}
-
-void Setup_Input::newKeyCallback(const InputActionT index)
-{
- mKeySetting = false;
- const int i = keyToSetupData(index);
- if (i >= 0)
- refreshAssignedKey(i);
- mAssignKeyButton->setEnabled(true);
-}
-
-int Setup_Input::keyToSetupData(const InputActionT index) const
-{
- const int selectedData = mKeyListModel->getSelectedData();
- for (int i = 0; i < mActionDataSize[selectedData]; i++)
- {
- const SetupActionData &key = setupActionData[selectedData][i];
- if (key.actionId == index)
- return i;
- }
- return -1;
-}
-
-std::string Setup_Input::keyToString(const InputActionT index) const
-{
- for (int f = 0; f < SETUP_PAGES; f ++)
- {
- for (int i = 0; i < mActionDataSize[f]; i++)
- {
- const SetupActionData &key = setupActionData[f][i];
- if (key.actionId == index)
- return key.name;
- }
- }
- // TRANSLATORS: unknown key name
- return _("unknown");
-}
-
-void Setup_Input::refreshKeys()
-{
- const int selectedData = mKeyListModel->getSelectedData();
- for (int i = 0; i < mActionDataSize[selectedData]; i++)
- refreshAssignedKey(i);
-}
-
-void Setup_Input::keyUnresolved()
-{
- if (mKeySetting)
- {
- newKeyCallback(inputManager.getNewKeyIndex());
- inputManager.setNewKeyIndex(InputAction::NO_VALUE);
- }
-}
-
-void Setup_Input::fixTranslation(SetupActionData *const actionDatas,
- const InputActionT actionStart,
- const InputActionT actionEnd,
- const std::string &text)
-{
- int k = 0;
-
- while (!actionDatas[k].name.empty())
- {
- SetupActionData &data = actionDatas[k];
-
- const InputActionT actionId = data.actionId;
- if (actionId >= actionStart && actionId <= actionEnd)
- {
- data.name = strprintf(gettext(text.c_str()),
- actionId - actionStart + 1);
- }
- k ++;
- }
-}
-
-void Setup_Input::fixTranslations()
-{
- fixTranslation(setupActionDataShortcuts,
- InputAction::SHORTCUT_1,
- InputAction::SHORTCUT_20,
- "Item Shortcut %d");
-
- fixTranslation(setupActionDataEmotes,
- InputAction::EMOTE_1,
- InputAction::EMOTE_48,
- "Emote Shortcut %d");
-
- fixTranslation(setupActionDataCraft,
- InputAction::CRAFT_1,
- InputAction::CRAFT_9,
- "Craft shortcut %d");
-
- fixTranslation(setupActionDataOutfits,
- InputAction::OUTFIT_1,
- InputAction::OUTFIT_48,
- "Outfit Shortcut %d");
-
- fixTranslation(setupActionDataMove,
- InputAction::MOVE_TO_POINT_1,
- InputAction::MOVE_TO_POINT_48,
- "Move to point Shortcut %d");
-}
diff --git a/src/gui/widgets/tabs/setup_input.h b/src/gui/widgets/tabs/setup_input.h
deleted file mode 100644
index 2da411b2c..000000000
--- a/src/gui/widgets/tabs/setup_input.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au>
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUP_INPUT_H
-#define GUI_WIDGETS_TABS_SETUP_INPUT_H
-
-#include "enums/input/inputaction.h"
-
-#include "gui/widgets/tabs/setuptab.h"
-
-class Button;
-class ListBox;
-class KeyListModel;
-class ScrollArea;
-class TabStrip;
-
-struct SetupActionData;
-
-class Setup_Input final : public SetupTab
-{
- public:
- /**
- * Constructor
- */
- explicit Setup_Input(const Widget2 *const widget);
-
- A_DELETE_COPY(Setup_Input)
-
- /**
- * Destructor
- */
- ~Setup_Input();
-
- void apply() override final;
-
- void cancel() override final;
-
- void action(const ActionEvent &event) override final;
-
- /**
- * Get an update on the assigned key.
- */
- void refreshAssignedKey(const int index);
-
- /**
- * The callback function when a new key has been pressed.
- */
- void newKeyCallback(const InputActionT index);
-
- /**
- * Shorthand method to update all the keys.
- */
- void refreshKeys();
-
- /**
- * If a key function is unresolved, then this reverts it.
- */
- void keyUnresolved();
-
- int keyToSetupData(const InputActionT index) const A_WARN_UNUSED;
-
- std::string keyToString(const InputActionT index) const A_WARN_UNUSED;
-
- private:
- static void fixTranslations();
-
- static void fixTranslation(SetupActionData *const actionDatas,
- const InputActionT actionStart,
- const InputActionT actionEnd,
- const std::string &text) A_NONNULL(1);
-
- KeyListModel *mKeyListModel;
- ListBox *mKeyList;
-
- Button *mAssignKeyButton;
- Button *mUnassignKeyButton;
- Button *mDefaultButton;
- Button *mResetKeysButton;
- TabStrip *mTabs;
- ScrollArea *mScrollArea;
- bool mKeySetting; /**< flag to check if key being set. */
- int *mActionDataSize;
-};
-
-#endif // GUI_WIDGETS_TABS_SETUP_INPUT_H
diff --git a/src/gui/widgets/tabs/setup_joystick.cpp b/src/gui/widgets/tabs/setup_joystick.cpp
deleted file mode 100644
index 84cd60521..000000000
--- a/src/gui/widgets/tabs/setup_joystick.cpp
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setup_joystick.h"
-
-#include "configuration.h"
-
-#include "input/joystick.h"
-
-#include "gui/models/namesmodel.h"
-
-#include "gui/widgets/button.h"
-#include "gui/widgets/checkbox.h"
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/dropdown.h"
-#include "gui/widgets/label.h"
-#include "gui/widgets/layouthelper.h"
-
-#include "utils/delete2.h"
-#include "utils/gettext.h"
-
-#include "debug.h"
-
-Setup_Joystick::Setup_Joystick(const Widget2 *const widget) :
- SetupTab(widget),
- mCalibrateLabel(new Label(this,
- // TRANSLATORS: joystick settings tab label
- _("Press the button to start calibration"))),
- // TRANSLATORS: joystick settings tab button
- mCalibrateButton(new Button(this, _("Calibrate"), "calibrate", this)),
- // TRANSLATORS: joystick settings tab button
- mDetectButton(new Button(this, _("Detect joysticks"), "detect", this)),
- // TRANSLATORS: joystick settings tab checkbox
- mJoystickEnabled(new CheckBox(this, _("Enable joystick"))),
- mNamesModel(new NamesModel),
- mNamesDropDown(new DropDown(this, mNamesModel)),
- // TRANSLATORS: joystick settings tab checkbox
- mUseInactiveCheckBox(new CheckBox(this, _("Use joystick if client "
- "window inactive"), config.getBoolValue("useInactiveJoystick"))),
- mOriginalJoystickEnabled(config.getBoolValue("joystickEnabled"))
-{
- // TRANSLATORS: joystick settings tab name
- setName(_("Joystick"));
-
- Joystick::getNames(mNamesModel->getNames());
-
- mJoystickEnabled->setSelected(mOriginalJoystickEnabled);
- mJoystickEnabled->setActionEventId("joystick");
- mJoystickEnabled->addActionListener(this);
- mCalibrateButton->setEnabled(mOriginalJoystickEnabled);
-
- mNamesDropDown->setActionEventId("name");
- mNamesDropDown->addActionListener(this);
-
- if (joystick != nullptr)
- {
- mNamesDropDown->setSelected(joystick->getNumber());
- }
- else
- {
- unsigned int sel = config.getIntValue("selectedJoystick");
- if (sel >= CAST_U32(mNamesModel->size()))
- sel = 0;
- mNamesDropDown->setSelected(sel);
- }
-
- // Do the layout
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
-
- place(0, 0, mJoystickEnabled);
- place(0, 1, mNamesDropDown);
- place(0, 2, mUseInactiveCheckBox);
- place(0, 3, mDetectButton);
- place(0, 4, mCalibrateLabel);
- place(0, 5, mCalibrateButton);
-
- setDimension(Rect(0, 0, 365, 75));
-}
-
-Setup_Joystick::~Setup_Joystick()
-{
- delete2(mNamesModel);
-}
-
-void Setup_Joystick::action(const ActionEvent &event)
-{
- const Widget *const source = event.getSource();
- if (source == mJoystickEnabled)
- {
- setTempEnabled(mJoystickEnabled->isSelected());
- }
- else if (source == mNamesDropDown)
- {
- if (joystick != nullptr)
- joystick->setNumber(mNamesDropDown->getSelected());
- }
- else if (source == mDetectButton)
- {
- if (joystick != nullptr)
- {
- joystick->reload();
- Joystick::getNames(mNamesModel->getNames());
- mNamesDropDown->setSelected(joystick->getNumber());
- }
- }
- else
- {
- if (joystick == nullptr)
- return;
-
- if (joystick->isCalibrating())
- {
- // TRANSLATORS: joystick settings tab button
- mCalibrateButton->setCaption(_("Calibrate"));
- mCalibrateLabel->setCaption
- // TRANSLATORS: joystick settings tab label
- (_("Press the button to start calibration"));
- joystick->finishCalibration();
- }
- else
- {
- // TRANSLATORS: joystick settings tab button
- mCalibrateButton->setCaption(_("Stop"));
- mCalibrateLabel->setCaption(
- // TRANSLATORS: joystick settings tab label
- _("Rotate the stick and don't press buttons"));
- joystick->startCalibration();
- }
- }
-}
-
-void Setup_Joystick::setTempEnabled(const bool sel)
-{
- Joystick::setEnabled(sel);
- mCalibrateButton->setEnabled(sel);
- if (joystick != nullptr)
- {
- if (sel)
- joystick->open();
- else
- joystick->close();
- }
-}
-
-void Setup_Joystick::cancel()
-{
- Joystick::setEnabled(mOriginalJoystickEnabled);
-
- if (mOriginalJoystickEnabled != mJoystickEnabled->isSelected())
- setTempEnabled(mOriginalJoystickEnabled);
-
- mJoystickEnabled->setSelected(mOriginalJoystickEnabled);
-}
-
-void Setup_Joystick::apply()
-{
- if (joystick == nullptr)
- return;
-
- config.setValue("joystickEnabled", Joystick::isEnabled());
-
- config.setValue("useInactiveJoystick", mUseInactiveCheckBox->isSelected());
- joystick->setUseInactive(mUseInactiveCheckBox->isSelected());
-}
diff --git a/src/gui/widgets/tabs/setup_joystick.h b/src/gui/widgets/tabs/setup_joystick.h
deleted file mode 100644
index c66ab8687..000000000
--- a/src/gui/widgets/tabs/setup_joystick.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUP_JOYSTICK_H
-#define GUI_WIDGETS_TABS_SETUP_JOYSTICK_H
-
-#include "gui/widgets/tabs/setuptab.h"
-
-class Button;
-class CheckBox;
-class DropDown;
-class Label;
-class NamesModel;
-
-class Setup_Joystick final : public SetupTab
-{
- public:
- explicit Setup_Joystick(const Widget2 *const widget);
-
- A_DELETE_COPY(Setup_Joystick)
-
- ~Setup_Joystick();
-
- void apply() override final;
-
- void cancel() override final;
-
- void action(const ActionEvent &event) override final;
-
- void setTempEnabled(const bool sel);
-
- private:
- Label *mCalibrateLabel A_NONNULLPOINTER;
- Button *mCalibrateButton A_NONNULLPOINTER;
- Button *mDetectButton A_NONNULLPOINTER;
- CheckBox *mJoystickEnabled A_NONNULLPOINTER;
- NamesModel *mNamesModel A_NONNULLPOINTER;
- DropDown *mNamesDropDown A_NONNULLPOINTER;
- CheckBox *mUseInactiveCheckBox A_NONNULLPOINTER;
- bool mOriginalJoystickEnabled A_NONNULLPOINTER;
-};
-
-#endif // GUI_WIDGETS_TABS_SETUP_JOYSTICK_H
diff --git a/src/gui/widgets/tabs/setup_misc.cpp b/src/gui/widgets/tabs/setup_misc.cpp
deleted file mode 100644
index 07b4c5193..000000000
--- a/src/gui/widgets/tabs/setup_misc.cpp
+++ /dev/null
@@ -1,518 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setup_misc.h"
-
-#include "configuration.h"
-
-#include "const/resources/map/map.h"
-
-#include "gui/models/namesmodel.h"
-
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/layouthelper.h"
-#include "gui/widgets/setupbuttonitem.h"
-#include "gui/widgets/scrollarea.h"
-
-#include "listeners/uploadlistener.h"
-
-#include "net/net.h"
-
-#include "utils/delete2.h"
-#include "utils/gettext.h"
-
-#include "debug.h"
-
-static const int shortcutsListSize = 3;
-
-static const char *const shortcutsList[] =
-{
- // TRANSLATORS: show buttons at top right corner type
- N_("Always show"),
- // TRANSLATORS: show buttons at top right corner type
- N_("Auto hide in small resolution"),
- // TRANSLATORS: show buttons at top right corner type
- N_("Always auto hide")
-};
-
-static const int proxyTypeListSize = 8;
-
-static const char *const proxyTypeList[] =
-{
- // TRANSLATORS: Proxy type selection
- N_("System proxy"),
- // TRANSLATORS: Proxy type selection
- N_("Direct connection"),
- "HTTP",
- "HTTP 1.0",
- "SOCKS4",
- "SOCKS4A",
- "SOCKS5",
- // TRANSLATORS: Proxy type selection
- N_("SOCKS5 hostname")
-};
-
-static const int densityListSize = 7;
-
-static const char *const densityList[] =
-{
- // TRANSLATORS: screen density type
- N_("default"),
- // TRANSLATORS: screen density type
- N_("low"),
- // TRANSLATORS: screen density type
- N_("medium"),
- // TRANSLATORS: screen density type
- N_("tv"),
- // TRANSLATORS: screen density type
- N_("high"),
- // TRANSLATORS: screen density type
- N_("xhigh"),
- // TRANSLATORS: screen density type
- N_("xxhigh")
-};
-
-#ifdef USE_SDL2
-static const int sdlLogListSize = 7;
-
-static const char *const sdlLogList[] =
-{
- // TRANSLATORS: sdl2 log level
- N_("default"),
- // TRANSLATORS: sdl2 log level
- N_("verbose"),
- // TRANSLATORS: sdl2 log level
- N_("debug"),
- // TRANSLATORS: sdl2 log level
- N_("info"),
- // TRANSLATORS: sdl2 log level
- N_("warn"),
- // TRANSLATORS: sdl2 log level
- N_("error"),
- // TRANSLATORS: sdl2 log level
- N_("critical")
-};
-#endif // USE_SDL2
-
-Setup_Misc::Setup_Misc(const Widget2 *const widget) :
- SetupTabScroll(widget),
- mProxyTypeList(new NamesModel),
- mShortcutsList(new NamesModel),
-#ifdef USE_SDL2
- mSdlLogList(new NamesModel),
-#endif // USE_SDL2
- mDensityList(new NamesModel)
-{
- // TRANSLATORS: misc tab in settings
- setName(_("Misc"));
-
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
- place(0, 0, mScroll, 10, 10);
-
- // TRANSLATORS: settings option
- new SetupItemLabel(_("Monsters"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show damage inflicted to monsters"), "",
- "showMonstersTakedDamage", this, "showMonstersTakedDamageEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Auto target only reachable monsters"), "",
- "targetOnlyReachable", this, "targetOnlyReachableEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Select auto target for attack skills"), "",
- "skillAutotarget", this, "skillAutotargetEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Highlight monster attack range"), "",
- "highlightMonsterAttackRange", this,
- "highlightMonsterAttackRangeEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show monster hp bar"), "",
- "showMobHP", this, "showMobHPEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Cycle monster targets"), "",
- "cycleMonsters", this, "cycleMonstersEvent");
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Map"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show warps particles"), "",
- "warpParticle", this, "warpParticleEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Highlight map portals"), "",
- "highlightMapPortals", this, "highlightMapPortalsEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Highlight floor items"), "",
- "floorItemsHighlight", this, "floorItemsHighlightEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Highlight player attack range"), "",
- "highlightAttackRange", this, "highlightAttackRangeEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show extended minimaps"), "",
- "showExtMinimaps", this, "showExtMinimapsEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Draw path"), "", "drawPath",
- this, "drawPathEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Draw hotkeys on map"), "", "drawHotKeys",
- this, "drawHotKeysEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable lazy scrolling"), "",
- "enableLazyScrolling", this, "enableLazyScrollingEvent");
-
- // TRANSLATORS: settings option
- new SetupItemIntTextField(_("Scroll laziness"), "", "ScrollLaziness",
- this, "ScrollLazinessEvent", 1, 160);
-
- // TRANSLATORS: settings option
- new SetupItemIntTextField(_("Scroll radius"), "", "ScrollRadius",
- this, "ScrollRadiusEvent", 0, mapTileSize);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Auto resize minimaps"), "", "autoresizeminimaps",
- this, "autoresizeminimapsEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Play map animations"), "", "playMapAnimations",
- this, "playMapAnimationsEvent");
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Moving"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Auto fix position"), "",
- "autofixPos", this, "autofixPosEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show server side position"), "",
- "showserverpos", this, "showserverposEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Attack while moving"), "",
- "attackMoving", this, "attackMovingEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Attack next target"), "",
- "attackNext", this, "attackNextEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Sync player move"), "", "syncPlayerMove",
- this, "syncPlayerMoveEvent");
-
- // TRANSLATORS: settings option
- new SetupItemIntTextField(_("Sync player move distance"), "",
- "syncPlayerMoveDistance",
- this, "syncPlayerMoveDistanceEvent", 1, 30);
-
- // TRANSLATORS: settings option
- new SetupItemTextField(_("Crazy move A program"), "",
- "crazyMoveProgram", this, "crazyMoveProgramEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Mouse relative moves "
- "(good for touch interfaces)"), "", "mouseDirectionMove",
- this, "mouseDirectionMoveEvent");
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Player"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show own hp bar"), "",
- "showOwnHP", this, "showOwnHPEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable quick stats"), "",
- "quickStats", this, "quickStatsEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Cycle player targets"), "",
- "cyclePlayers", this, "cyclePlayersEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show job exp messages"), "",
- "showJobExp", this, "showJobExpEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show players popups"), "",
- "showBeingPopup", this, "showBeingPopupEvent");
-
- // TRANSLATORS: settings option
- new SetupItemTextField(_("Afk message"), "",
- "afkMessage", this, "afkMessageEvent",
- MainConfig_false);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show job"), "", "showJob",
- this, "showJobEvent",
- MainConfig_false);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable attack filter"), "",
- "enableAttackFilter", this, "enableAttackFilterEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable pickup filter"), "",
- "enablePickupFilter", this, "enablePickupFilterEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable advert protocol"), "",
- "enableAdvert", this, "enableAdvertEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enabled pets support"),
- "", "usepets", this, "usepetsEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable weight notifications"), "",
- "weightMsg", this, "weightMsgEvent");
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Shop"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Accept sell/buy requests"), "",
- "autoShop", this, "autoShopEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable shop mode"), "",
- "tradebot", this, "tradebotEvent");
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("NPC"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Cycle npc targets"), "",
- "cycleNPC", this, "cycleNPCEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Log NPC dialogue"), "", "logNpcInGui",
- this, "logNpcInGuiEvent");
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Bots support"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable guild bot support and disable native "
- "guild support"), "", "enableGuildBot", this,
- "enableGuildBotEvent",
- "0",
- MainConfig_false);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable manamarket bot support"),
- "", "enableManaMarketBot", this,
- "enableManaMarketBotEvent",
- "0",
- MainConfig_false);
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Keyboard"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemIntTextField(_("Repeat delay"), "",
- "repeateDelay", this, "repeateDelayEvent", 0, 10000);
-
- // TRANSLATORS: settings option
- new SetupItemIntTextField(_("Repeat interval"), "",
- "repeateInterval", this, "repeateIntervalEvent", 0, 10000);
-
- // TRANSLATORS: settings option
- new SetupItemIntTextField(_("Custom repeat interval"), "",
- "repeateInterval2", this, "repeateInterval2Event", 0, 10000);
-
-#ifdef USE_SDL2
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable alt-tab workaround"), "",
- "blockAltTab", this, "blockAltTabEvent");
-#endif // USE_SDL2
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Windows"), "", this);
-
- mShortcutsList->fillFromArray(&shortcutsList[0], shortcutsListSize);
- // TRANSLATORS: settings option
- new SetupItemDropDown(_("Shortcut buttons"), "", "autohideButtons", this,
- "autohideButtonsEvent", mShortcutsList, 200);
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Proxy server"), "", this);
-
- mProxyTypeList->fillFromArray(&proxyTypeList[0], proxyTypeListSize);
- // TRANSLATORS: settings option
- new SetupItemDropDown(_("Proxy type"), "", "downloadProxyType", this,
- "downloadProxyTypeEvent", mProxyTypeList, 200);
-
- // TRANSLATORS: settings option
- new SetupItemTextField(_("Proxy address:port"), "",
- "downloadProxy", this, "downloadProxyEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Tunnel through HTTP proxy"), "",
- "downloadProxyTunnel", this, "downloadProxyTunnelEvent");
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Logging"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable OpenGL version check "
- "(do not disable)"), "", "checkOpenGLVersion", this,
- "checkOpenGLVersionEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable debug log"), "",
- "debugLog", this, "debugLogEvent");
-
- // TRANSLATORS: settings option
- new SetupItemTextField(_("Ignore logging packets"), "",
- "ignorelogpackets", this, "ignorelogpacketsEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Log unimplemented packets"), "",
- "unimplimentedLog", this, "unimplimentedLogEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable OpenGL log"), "",
- "debugOpenGL", this, "debugOpenGLEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable input log"), "",
- "logInput", this, "logInputEvent");
-
-#ifdef USE_SDL2
- mSdlLogList->fillFromArray(&sdlLogList[0], sdlLogListSize);
- // TRANSLATORS: settings option
- new SetupItemDropDown(_("SDL logging level"), "",
- "sdlLogLevel", this, "sdlLogLevelEvent", mSdlLogList, 100);
-#endif // USE_SDL2
-
- // TRANSLATORS: settings option
- new SetupButtonItem(_("Upload log file"), "", "upload",
- this, "uploadLog", &uploadListener);
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Other"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable server side attack"), "",
- "serverAttack", this, "serverAttackEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Hide support page link on error"), "",
- "hidesupport", this, "hidesupportEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable double clicks"), "",
- "doubleClick", this, "doubleClickEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable bot checker"), "",
- "enableBotCheker", this, "enableBotChekerEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable buggy servers protection "
- "(do not disable)"), "", "enableBuggyServers", this,
- "enableBuggyServersEvent",
- MainConfig_false);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Low traffic mode"), "", "lowTraffic",
- this, "lowTrafficEvent");
-
-#ifndef ANDROID
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Use FBO for screenshots (only for opengl)"),
- "", "usefbo", this, "usefboEvent");
-#endif // ANDROID
-
-#ifndef WIN32
- // TRANSLATORS: settings option
- new SetupItemTextField(_("Screenshot directory"), "",
- "screenshotDirectory3", this, "screenshotDirectory3Event",
- MainConfig_true,
- UseBase64_true);
-#endif // WIN32
-
- // TRANSLATORS: settings option
- new SetupItemIntTextField(_("Network delay between sub servers"),
- "", "networksleep", this, "networksleepEvent", 0, 10000);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show background"), "", "showBackground",
- this, "showBackgroundEvent");
-
- mDensityList->fillFromArray(&densityList[0], densityListSize);
- // TRANSLATORS: settings option
- new SetupItemDropDown(_("Screen density override"), "",
- "screenDensity", this, "screenDensityEvent", mDensityList, 100);
-
- setDimension(Rect(0, 0, 550, 350));
-}
-
-Setup_Misc::~Setup_Misc()
-{
- delete2(mProxyTypeList);
- delete2(mShortcutsList);
- delete2(mDensityList);
-#ifdef USE_SDL2
- delete2(mSdlLogList);
-#endif // USE_SDL2
-}
-
-void Setup_Misc::apply()
-{
- SetupTabScroll::apply();
-
- logger->setDebugLog(config.getBoolValue("debugLog"));
- logger->setReportUnimplemented(config.getBoolValue("unimplimentedLog"));
- Net::loadIgnorePackets();
-}
-
-void Setup_Misc::externalUpdated()
-{
- reread("showJob");
- reread("enableGuildBot");
- reread("enableManaMarketBot");
- reread("enableBuggyServers");
- reread("afkMessage");
-}
diff --git a/src/gui/widgets/tabs/setup_misc.h b/src/gui/widgets/tabs/setup_misc.h
deleted file mode 100644
index 787f4c181..000000000
--- a/src/gui/widgets/tabs/setup_misc.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUP_MISC_H
-#define GUI_WIDGETS_TABS_SETUP_MISC_H
-
-#include "gui/widgets/tabs/setuptabscroll.h"
-
-class NamesModel;
-
-class Setup_Misc final : public SetupTabScroll
-{
- public:
- explicit Setup_Misc(const Widget2 *const widget);
-
- A_DELETE_COPY(Setup_Misc)
-
- ~Setup_Misc();
-
- void apply() override final;
-
- void externalUpdated() override final;
-
- protected:
- NamesModel *mProxyTypeList;
- NamesModel *mShortcutsList;
-#ifdef USE_SDL2
- NamesModel *mSdlLogList;
-#endif // USE_SDL2
- NamesModel *mDensityList;
-};
-
-#endif // GUI_WIDGETS_TABS_SETUP_MISC_H
diff --git a/src/gui/widgets/tabs/setup_mods.cpp b/src/gui/widgets/tabs/setup_mods.cpp
deleted file mode 100644
index c3ca23245..000000000
--- a/src/gui/widgets/tabs/setup_mods.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setup_mods.h"
-
-#include "configuration.h"
-
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/layouthelper.h"
-#include "gui/widgets/setupitem.h"
-#include "gui/widgets/scrollarea.h"
-
-#include "resources/db/moddb.h"
-
-#include "utils/foreach.h"
-#include "utils/gettext.h"
-
-#include "debug.h"
-
-Setup_Mods::Setup_Mods(const Widget2 *const widget) :
- SetupTabScroll(widget)
-{
- // TRANSLATORS: mods tab in settings
- setName(_("Mods"));
-
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
- place(0, 0, mScroll, 10, 10);
-
- setDimension(Rect(0, 0, 550, 350));
-}
-
-Setup_Mods::~Setup_Mods()
-{
-}
-
-void Setup_Mods::apply()
-{
- SetupTabScroll::apply();
- saveMods();
-}
-
-void Setup_Mods::externalUpdated()
-{
- clear();
- loadMods();
-}
-
-void Setup_Mods::loadMods()
-{
- std::string modsString = serverConfig.getValue("mods", "");
- std::set<std::string> modsList;
- splitToStringSet(modsList, modsString, '|');
-
- const ModInfos &mods = ModDB::getAll();
- if (mods.empty())
- {
- // TRANSLATORS: settings label
- new SetupItemLabel(_("No mods present"), "", this,
- Separator_false);
- return;
- }
-
- FOR_EACH (ModInfoCIterator, it, mods)
- {
- const ModInfo *const info = (*it).second;
- if (info == nullptr)
- continue;
-
- std::string name = info->getName();
- replaceAll(name, "|", "");
- SetupItem *const item = new SetupItemCheckBox(
- info->getDescription(), "", "", this, name);
- if (modsList.find(name) != modsList.end())
- item->setValue("1");
- else
- item->setValue("0");
- item->toWidget();
- }
-}
-
-void Setup_Mods::saveMods() const
-{
- const ModInfos &mods = ModDB::getAll();
- if (mods.empty())
- return;
-
- std::string modsString;
- const std::set<SetupItem*> &modsList = getAllItems();
- FOR_EACH (std::set<SetupItem*>::const_iterator, it, modsList)
- {
- const SetupItem *const item = *it;
- if (item == nullptr)
- continue;
- const std::string val = item->getValue();
- if (val == "1")
- {
- const std::string key = item->getEventName();
- if (!modsString.empty())
- modsString.append("|");
- modsString.append(key);
- }
- }
- serverConfig.setValue("mods", modsString);
-}
-
-void Setup_Mods::externalUnloaded()
-{
- clear();
-}
diff --git a/src/gui/widgets/tabs/setup_mods.h b/src/gui/widgets/tabs/setup_mods.h
deleted file mode 100644
index 488915d31..000000000
--- a/src/gui/widgets/tabs/setup_mods.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUP_MODS_H
-#define GUI_WIDGETS_TABS_SETUP_MODS_H
-
-#include "gui/widgets/tabs/setuptabscroll.h"
-
-class Setup_Mods final : public SetupTabScroll
-{
- public:
- explicit Setup_Mods(const Widget2 *const widget);
-
- A_DELETE_COPY(Setup_Mods)
-
- ~Setup_Mods();
-
- void apply() override final;
-
- void externalUpdated() override final;
-
- void externalUnloaded() override final;
-
- void loadMods();
-
- void saveMods() const;
-
- protected:
-};
-
-#endif // GUI_WIDGETS_TABS_SETUP_MODS_H
diff --git a/src/gui/widgets/tabs/setup_perfomance.cpp b/src/gui/widgets/tabs/setup_perfomance.cpp
deleted file mode 100644
index e12bd2872..000000000
--- a/src/gui/widgets/tabs/setup_perfomance.cpp
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setup_perfomance.h"
-
-#include "gui/models/namesmodel.h"
-
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/layouthelper.h"
-#include "gui/widgets/scrollarea.h"
-#include "gui/widgets/setupitem.h"
-
-#include "utils/delete2.h"
-#include "utils/gettext.h"
-#ifdef USE_SDL2
-#include "configuration.h"
-#include "utils/sdlhelper.h"
-#endif // USE_SDL2
-
-#include "debug.h"
-
-static const int texturesListSize = 5;
-
-static const char *const texturesList[] =
-{
- // TRANSLATORS: texture compression type
- N_("No"),
- "s3tc",
- "fxt1",
- "ARB",
- "bptc"
-};
-
-Setup_Perfomance::Setup_Perfomance(const Widget2 *const widget) :
- SetupTabScroll(widget),
-#ifdef USE_SDL2
- mSdlDriversList(new NamesModel),
-#endif // USE_SDL2
- mTexturesList(new NamesModel)
-{
- // TRANSLATORS: settings tab name
- setName(_("Performance"));
-
- // Do the layout
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
- place(0, 0, mScroll, 10, 10);
-
-#ifdef USE_SDL2
- StringVect sdlDriversList;
- SDL::getRenderers(sdlDriversList,
- config.getStringValue("sdlDriver"));
- sdlDriversList.insert(sdlDriversList.begin(),
- // TRANSLATORS: sdl driver name
- N_("default"));
-#endif // USE_SDL2
-
- // TRANSLATORS: settings option
- new SetupItemLabel(_("Better performance (enable for better performance)"),
- "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Auto adjust performance"), "",
- "adjustPerfomance", this, "adjustPerfomanceEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Hw acceleration"), "",
- "hwaccel", this, "hwaccelEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable opacity cache (Software, can "
- "use much memory)"), "", "alphaCache", this, "alphaCacheEvent");
-
-#ifndef USE_SDL2
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable map reduce (Software)"), "",
- "enableMapReduce", this, "enableMapReduceEvent");
-#endif // USE_SDL2
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable compound sprite delay (Software)"), "",
- "enableCompoundSpriteDelay", this, "enableCompoundSpriteDelayEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable delayed images load (OpenGL)"), "",
- "enableDelayedAnimations", this, "enableDelayedAnimationsEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable texture sampler (OpenGL)"), "",
- "useTextureSampler", this, "useTextureSamplerEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable OpenGL context creation"),
- "", "openglContext", this, "openglContextEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable OpenGL direct state access"),
- "", "enableDSA", this, "enableDSAEvent");
-
-
- // TRANSLATORS: settings option
- new SetupItemLabel(_("Better quality (disable for better performance)"),
- "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable alpha channel fix (Software, can "
- "be very slow)"), "Can slow down drawing", "enableAlphaFix",
- this, "enableAlphaFixEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show beings transparency"), "",
- "beingopacity", this, "beingopacityEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable reorder sprites (need for mods support)."),
- "", "enableReorderSprites", this, "enableReorderSpritesEvent");
-
-
-#ifndef USE_SDL2
- // TRANSLATORS: settings option
- new SetupItemLabel(_("Small memory (enable for lower memory usage)"),
- "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Disable advanced beings caching (Software)"), "",
- "disableAdvBeingCaching", this, "disableAdvBeingCachingEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Disable beings caching (Software)"), "",
- "disableBeingCaching", this, "disableBeingCachingEvent");
-#endif // USE_SDL2
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Different options (enable or disable can "
- "improve performance)"), "", this);
-
-#ifdef USE_SDL2
- mSdlDriversList->fillFromVector(sdlDriversList);
- new SetupItemDropDownStr(
- // TRANSLATORS: settings option
- _("Try first sdl driver (only for SDL2 default mode)"),
- "", "sdlDriver", this, "sdlDriverEvent", mSdlDriversList, 100);
-#endif // USE_SDL2
-
- mTexturesList->fillFromArray(&texturesList[0], texturesListSize);
- // TRANSLATORS: settings option
- new SetupItemDropDown(_("Enable texture compression (OpenGL)"), "",
- "compresstextures", this, "compresstexturesEvent", mTexturesList, 100);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable rectangular texture extension (OpenGL)"),
- "", "rectangulartextures", this, "rectangulartexturesEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Use new texture internal format (OpenGL)"),
- "", "newtextures", this, "newtexturesEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable texture atlases (OpenGL)"), "",
- "useAtlases", this, "useAtlasesEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Cache all sprites per map (can use "
- "additional memory)"), "", "uselonglivesprites", this,
- "uselonglivespritesEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Cache all sounds (can use additional memory)"),
- "", "uselonglivesounds", this,
- "uselonglivesoundsEvent");
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Critical options (DO NOT change if you don't "
- "know what you're doing)"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Disable logging in game (do not enable)"),
- "", "disableLoggingInGame", this, "disableLoggingInGameEvent");
-
- setDimension(Rect(0, 0, 550, 350));
-}
-
-Setup_Perfomance::~Setup_Perfomance()
-{
- delete2(mTexturesList);
-#ifdef USE_SDL2
- delete2(mSdlDriversList);
-#endif // USE_SDL2
-}
diff --git a/src/gui/widgets/tabs/setup_perfomance.h b/src/gui/widgets/tabs/setup_perfomance.h
deleted file mode 100644
index 95030a8e5..000000000
--- a/src/gui/widgets/tabs/setup_perfomance.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUP_PERFOMANCE_H
-#define GUI_WIDGETS_TABS_SETUP_PERFOMANCE_H
-
-#include "gui/widgets/tabs/setuptabscroll.h"
-
-class NamesModel;
-
-class Setup_Perfomance final : public SetupTabScroll
-{
- public:
- explicit Setup_Perfomance(const Widget2 *const widget);
-
- A_DELETE_COPY(Setup_Perfomance)
-
- ~Setup_Perfomance();
-
- private:
-#ifdef USE_SDL2
- NamesModel *mSdlDriversList;
-#endif // USE_SDL2
- NamesModel *mTexturesList;
-};
-
-#endif // GUI_WIDGETS_TABS_SETUP_PERFOMANCE_H
diff --git a/src/gui/widgets/tabs/setup_players.cpp b/src/gui/widgets/tabs/setup_players.cpp
deleted file mode 100644
index 6d964799d..000000000
--- a/src/gui/widgets/tabs/setup_players.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setup_players.h"
-
-#include "configuration.h"
-#include "settings.h"
-
-#include "gui/models/namesmodel.h"
-
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/layouthelper.h"
-#include "gui/widgets/scrollarea.h"
-#include "gui/widgets/setupitem.h"
-
-#include "utils/delete2.h"
-#include "utils/gettext.h"
-
-#include "debug.h"
-
-static const int badgesListSize = 4;
-
-static const char *const badgesList[] =
-{
- // TRANSLATORS: screen badges type
- N_("hide"),
- // TRANSLATORS: screen badges type
- N_("show at top"),
- // TRANSLATORS: screen badges type
- N_("show at right"),
- // TRANSLATORS: screen badges type
- N_("show at bottom"),
-};
-
-static const int visibleNamesListSize = 3;
-
-static const char *const visibleNamesList[] =
-{
- // TRANSLATORS: visible name type
- N_("hide"),
- // TRANSLATORS: visible name type
- N_("show"),
- // TRANSLATORS: visible name type
- N_("show on selection")
-};
-
-static const int topDownListSize = 2;
-
-static const char *const topDownList[] =
-{
- // TRANSLATORS: show on top or down
- N_("top"),
- // TRANSLATORS: show on top or down
- N_("bottom")
-};
-
-Setup_Players::Setup_Players(const Widget2 *const widget) :
- SetupTabScroll(widget),
- mBadgesList(new NamesModel),
- mVisibleNamesList(new NamesModel),
- mVisibleNamesPosList(new NamesModel)
-{
- // TRANSLATORS: settings tab name
- setName(_("Players"));
-
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
- place(0, 0, mScroll, 10, 10);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show gender"), "",
- "showgender", this, "showgenderEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show level"), "",
- "showlevel", this, "showlevelEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show own name"), "",
- "showownname", this, "showownnameEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable extended mouse targeting"), "",
- "extMouseTargeting", this, "extMouseTargetingEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Target dead players"), "",
- "targetDeadPlayers", this, "targetDeadPlayersEvent");
-
- mVisibleNamesList->fillFromArray(&visibleNamesList[0],
- visibleNamesListSize);
- // TRANSLATORS: settings option
- new SetupItemDropDown(_("Show player names"), "",
- "visiblenames", this, "visiblenamesEvent",
- mVisibleNamesList, 150);
-
- mVisibleNamesPosList->fillFromArray(&topDownList[0],
- topDownListSize);
- // TRANSLATORS: settings option
- new SetupItemDropDown(_("Show player names at"), "",
- "visiblenamespos", this, "visiblenamesposEvent",
- mVisibleNamesPosList, 150);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Auto move names"), "",
- "moveNames", this, "moveNamesEvent");
-
- mBadgesList->fillFromArray(&badgesList[0], badgesListSize);
- // TRANSLATORS: settings option
- new SetupItemDropDown(_("Badges"), "",
- "showBadges", this, "showBadgesEvent", mBadgesList, 150);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Secure trades"), "",
- "securetrades", this, "securetradesEvent");
-
- // TRANSLATORS: settings option
- new SetupItemTextField(_("Unsecure chars in names"), "",
- "unsecureChars", this, "unsecureCharsEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show statuses"), "",
- "showPlayersStatus", this, "showPlayersStatusEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show ip addresses on screenshots"), "",
- "showip", this, "showipEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Allow self heal with mouse click"), "",
- "selfMouseHeal", this, "selfMouseHealEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Group friends in who is online window"), "",
- "groupFriends", this, "groupFriendsEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Hide erased players nicks"), "",
- "hideErased", this, "hideErasedEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Collect players id and seen log"),
- "", "enableIdCollecting", this, "enableIdCollectingEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Use special diagonal speed in players moving"),
- "", "useDiagonalSpeed", this, "useDiagonalSpeedEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Log players actions (for GM)"),
- "", "logPlayerActions", this, "logPlayerActionsEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Create screenshots for each complete trades"),
- "", "tradescreenshot", this, "tradescreenshotEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Emulate right mouse button by long mouse click"
- " (useful for touch interfaces)"),
- "", "longmouseclick", this, "longmouseclickEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable remote commands"),
- "", "enableRemoteCommands", this, "enableRemoteCommandsEvent",
- "1",
- MainConfig_false);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Allow move character by mouse"),
- "", "allowMoveByMouse", this, "allowMoveByMouseEvent");
-
- setDimension(Rect(0, 0, 550, 350));
-}
-
-Setup_Players::~Setup_Players()
-{
- delete2(mBadgesList);
- delete2(mVisibleNamesList);
- delete2(mVisibleNamesPosList);
-}
-
-void Setup_Players::externalUpdated()
-{
- reread("enableRemoteCommands");
-}
-
-void Setup_Players::apply()
-{
- SetupTabScroll::apply();
- settings.enableRemoteCommands = (serverConfig.getValue(
- "enableRemoteCommands", 1) != 0);
-}
diff --git a/src/gui/widgets/tabs/setup_players.h b/src/gui/widgets/tabs/setup_players.h
deleted file mode 100644
index d29d41781..000000000
--- a/src/gui/widgets/tabs/setup_players.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUP_PLAYERS_H
-#define GUI_WIDGETS_TABS_SETUP_PLAYERS_H
-
-#include "gui/widgets/tabs/setuptabscroll.h"
-
-class NamesModel;
-
-class Setup_Players final : public SetupTabScroll
-{
- public:
- explicit Setup_Players(const Widget2 *const widget);
-
- ~Setup_Players();
-
- A_DELETE_COPY(Setup_Players)
-
- void apply() override final;
-
- void externalUpdated() override final;
-
- private:
- NamesModel *mBadgesList;
- NamesModel *mVisibleNamesList;
- NamesModel *mVisibleNamesPosList;
-};
-
-#endif // GUI_WIDGETS_TABS_SETUP_PLAYERS_H
diff --git a/src/gui/widgets/tabs/setup_quick.cpp b/src/gui/widgets/tabs/setup_quick.cpp
deleted file mode 100644
index f86707fe1..000000000
--- a/src/gui/widgets/tabs/setup_quick.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setup_quick.h"
-
-#include "gamemodifiers.h"
-
-#include "gui/models/namesmodel.h"
-
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/layouthelper.h"
-#include "gui/widgets/setupquickitem.h"
-#include "gui/widgets/scrollarea.h"
-
-#include "utils/delete2.h"
-#include "utils/gettext.h"
-
-#include "debug.h"
-
-Setup_Quick::Setup_Quick(const Widget2 *const widget) :
- SetupTabScroll(widget),
- mMoveTypeList(new NamesModel),
- mCrazyMoveTypeList(new NamesModel)
-{
- // TRANSLATORS: quick tab in settings
- setName(_("Quick"));
-
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
- place(0, 0, mScroll, 10, 10);
-
- new SetupQuickItem("", this, "moveTypeEvent",
- &GameModifiers::getMoveTypeString,
- &GameModifiers::changeMoveType);
-
- new SetupQuickItem("", this, "crazyMoveTypeEvent",
- &GameModifiers::getCrazyMoveTypeString,
- &GameModifiers::changeCrazyMoveType);
-
- new SetupQuickItem("", this, "moveToTargetTypeEvent",
- &GameModifiers::getMoveToTargetTypeString,
- &GameModifiers::changeMoveToTargetType);
-
- new SetupQuickItem("", this, "followModeEvent",
- &GameModifiers::getFollowModeString,
- &GameModifiers::changeFollowMode);
-
- new SetupQuickItem("", this, "attackWeaponTypeEvent",
- &GameModifiers::getAttackWeaponTypeString,
- &GameModifiers::changeAttackWeaponType);
-
- new SetupQuickItem("", this, "attackTypeEvent",
- &GameModifiers::getAttackTypeString,
- &GameModifiers::changeAttackType);
-
- new SetupQuickItem("", this, "magicAttackTypeEvent",
- &GameModifiers::getMagicAttackTypeString,
- &GameModifiers::changeMagicAttackType);
-
- new SetupQuickItem("", this, "pvpAttackTypeEvent",
- &GameModifiers::getPvpAttackTypeString,
- &GameModifiers::changePvpAttackType);
-
- new SetupQuickItem("", this, "quickDropCounterEvent",
- &GameModifiers::getQuickDropCounterString,
- &GameModifiers::changeQuickDropCounter);
-
- new SetupQuickItem("", this, "pickUpTypeEvent",
- &GameModifiers::getPickUpTypeString,
- &GameModifiers::changePickUpType);
-
- new SetupQuickItem("", this, "mapDrawTypeEvent",
- &GameModifiers::getMapDrawTypeString,
- &GameModifiers::changeMapDrawType);
-
- new SetupQuickItem("", this, "imitationModeEvent",
- &GameModifiers::getImitationModeString,
- &GameModifiers::changeImitationMode);
-
- new SetupQuickItem("", this, "CameraModeEvent",
- &GameModifiers::getCameraModeString,
- &GameModifiers::changeCameraMode);
-
- new SetupQuickItem("", this, "awayModeEvent",
- &GameModifiers::getAwayModeString,
- &GameModifiers::changeAwayMode);
-
- new SetupQuickItem("", this, "targetingTypeEvent",
- &GameModifiers::getTargetingTypeString,
- &GameModifiers::changeTargetingType);
-
- setDimension(Rect(0, 0, 550, 350));
-}
-
-Setup_Quick::~Setup_Quick()
-{
- delete2(mMoveTypeList);
- delete2(mCrazyMoveTypeList);
-}
diff --git a/src/gui/widgets/tabs/setup_quick.h b/src/gui/widgets/tabs/setup_quick.h
deleted file mode 100644
index f174153ee..000000000
--- a/src/gui/widgets/tabs/setup_quick.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUP_QUICK_H
-#define GUI_WIDGETS_TABS_SETUP_QUICK_H
-
-#include "gui/widgets/tabs/setuptabscroll.h"
-
-class NamesModel;
-
-class Setup_Quick final : public SetupTabScroll
-{
- public:
- explicit Setup_Quick(const Widget2 *const widget);
-
- A_DELETE_COPY(Setup_Quick)
-
- ~Setup_Quick();
-
- protected:
- NamesModel *mMoveTypeList;
-
- NamesModel *mCrazyMoveTypeList;
-};
-
-#endif // GUI_WIDGETS_TABS_SETUP_QUICK_H
diff --git a/src/gui/widgets/tabs/setup_relations.cpp b/src/gui/widgets/tabs/setup_relations.cpp
deleted file mode 100644
index 4cc81a300..000000000
--- a/src/gui/widgets/tabs/setup_relations.cpp
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setup_relations.h"
-
-#include "actormanager.h"
-
-#include "being/localplayer.h"
-
-#include "gui/models/ignorechoiceslistmodel.h"
-#include "gui/models/playertablemodel.h"
-
-#include "gui/widgets/button.h"
-#include "gui/widgets/checkbox.h"
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/dropdown.h"
-#include "gui/widgets/label.h"
-#include "gui/widgets/layouthelper.h"
-#include "gui/widgets/scrollarea.h"
-#include "gui/widgets/guitable.h"
-
-#include "utils/delete2.h"
-
-#include "debug.h"
-
-static const int COLUMNS_NR = 2; // name plus listbox
-static const int NAME_COLUMN = 0;
-static const unsigned int NAME_COLUMN_WIDTH = 230;
-static const unsigned int RELATION_CHOICE_COLUMN = 1;
-static const unsigned int RELATION_CHOICE_COLUMN_WIDTH = 80;
-
-static const std::string ACTION_DELETE("delete");
-static const std::string ACTION_TABLE("table");
-static const std::string ACTION_STRATEGY("strategy");
-
-static const char *const table_titles[COLUMNS_NR] =
-{
- // TRANSLATORS: relations table header
- N_("Name"),
- // TRANSLATORS: relations table header
- N_("Relation")
-};
-
-Setup_Relations::Setup_Relations(const Widget2 *const widget) :
- SetupTab(widget),
- PlayerRelationsListener(),
- mPlayerTableTitleModel(new StaticTableModel(1, COLUMNS_NR)),
- mPlayerTableModel(new PlayerTableModel(this)),
- mPlayerTable(new GuiTable(this, mPlayerTableModel)),
- mPlayerTitleTable(new GuiTable(this, mPlayerTableTitleModel)),
- mPlayerScrollArea(new ScrollArea(this, mPlayerTable)),
- // TRANSLATORS: relation dialog button
- mDefaultTrading(new CheckBox(this, _("Allow trading"),
- (playerRelations.getDefault() & PlayerRelation::TRADE) != 0u)),
- // TRANSLATORS: relation dialog button
- mDefaultWhisper(new CheckBox(this, _("Allow whispers"),
- (playerRelations.getDefault() & PlayerRelation::WHISPER) != 0u)),
- // TRANSLATORS: relation dialog button
- mDeleteButton(new Button(this, _("Delete"), ACTION_DELETE, this)),
- mIgnoreActionChoicesModel(new IgnoreChoicesListModel),
- mIgnoreActionChoicesBox(new DropDown(widget, mIgnoreActionChoicesModel))
-{
- // TRANSLATORS: relation dialog name
- setName(_("Relations"));
-
- mPlayerTable->setOpaque(Opaque_false);
-
- mPlayerTableTitleModel->fixColumnWidth(NAME_COLUMN, NAME_COLUMN_WIDTH);
- mPlayerTableTitleModel->fixColumnWidth(RELATION_CHOICE_COLUMN,
- RELATION_CHOICE_COLUMN_WIDTH);
- mPlayerTitleTable->setBackgroundColor(getThemeColor(
- ThemeColorId::TABLE_BACKGROUND));
- mPlayerTitleTable->setSelectableGui(false);
-
- for (int i = 0; i < COLUMNS_NR; i++)
- {
- mPlayerTableTitleModel->set(0, i, new Label(
- this, gettext(table_titles[i])));
- }
-
- mPlayerTitleTable->setLinewiseSelection(true);
-
- mPlayerScrollArea->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER);
- mPlayerTable->setActionEventId(ACTION_TABLE);
- mPlayerTable->setLinewiseSelection(true);
- mPlayerTable->addActionListener(this);
-
- // TRANSLATORS: relation dialog label
- Label *const ignore_action_label = new Label(this, _("When ignoring:"));
-
- mIgnoreActionChoicesBox->setActionEventId(ACTION_STRATEGY);
- mIgnoreActionChoicesBox->addActionListener(this);
-
- int ignore_strategy_index = 0; // safe default
-
- if (playerRelations.getPlayerIgnoreStrategy() != nullptr)
- {
- ignore_strategy_index = playerRelations.getPlayerIgnoreStrategyIndex(
- playerRelations.getPlayerIgnoreStrategy()->mShortName);
- if (ignore_strategy_index < 0)
- ignore_strategy_index = 0;
- }
- mIgnoreActionChoicesBox->setSelected(ignore_strategy_index);
- mIgnoreActionChoicesBox->adjustHeight();
-
- reset();
-
- // Do the layout
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
-
- place(0, 0, mPlayerTitleTable, 6);
- place(0, 1, mPlayerScrollArea, 6, 4).setPadding(2);
- place(0, 5, mDeleteButton);
- place(3, 5, ignore_action_label, 1);
- place(4, 5, mIgnoreActionChoicesBox, 2).setPadding(2);
- place(3, 6, mDefaultTrading, 3);
- place(3, 7, mDefaultWhisper, 3);
-
- playerRelations.addListener(this);
-
- setDimension(Rect(0, 0, 500, 350));
-}
-
-Setup_Relations::~Setup_Relations()
-{
- playerRelations.removeListener(this);
- delete2(mIgnoreActionChoicesModel);
-}
-
-
-void Setup_Relations::reset()
-{
- // We now have to search through the list of ignore choices to find the
- // current selection. We could use an index into the table of config
- // options in playerRelations instead of strategies to sidestep this.
- int selection = 0;
- for (size_t i = 0, sz = playerRelations.getPlayerIgnoreStrategies()
- ->size(); i < sz; ++ i)
- {
- if ((*playerRelations.getPlayerIgnoreStrategies())[i] ==
- playerRelations.getPlayerIgnoreStrategy())
- {
- selection = CAST_S32(i);
- break;
- }
- }
- mIgnoreActionChoicesBox->setSelected(selection);
-}
-
-void Setup_Relations::apply()
-{
- playerRelations.store();
-
- const unsigned int old_default_relations = playerRelations.getDefault() &
- ~(PlayerRelation::TRADE | PlayerRelation::WHISPER);
- playerRelations.setDefault(old_default_relations
- | (mDefaultTrading->isSelected() ? PlayerRelation::TRADE : 0)
- | (mDefaultWhisper->isSelected() ? PlayerRelation::WHISPER : 0));
-
- if (actorManager != nullptr)
- actorManager->updatePlayerNames();
-
- if (localPlayer != nullptr)
- localPlayer->setCheckNameSetting(true);
-}
-
-void Setup_Relations::cancel()
-{
-}
-
-void Setup_Relations::action(const ActionEvent &event)
-{
- const std::string &eventId = event.getId();
- if (eventId == ACTION_TABLE)
- {
- // temporarily eliminate ourselves: we are fully aware of this change,
- // so there is no need for asynchronous updates. (In fact, thouse
- // might destroy the widet that triggered them, which would be rather
- // embarrassing.)
- playerRelations.removeListener(this);
-
- const int row = mPlayerTable->getSelectedRow();
- if (row >= 0)
- mPlayerTableModel->updateModelInRow(row);
-
- playerRelations.addListener(this);
- }
- else if (eventId == ACTION_DELETE)
- {
- const int player_index = mPlayerTable->getSelectedRow();
-
- if (player_index < 0)
- return;
-
- playerRelations.removePlayer(mPlayerTableModel->getPlayerAt(
- player_index));
- }
- else if (eventId == ACTION_STRATEGY)
- {
- const int sel = mIgnoreActionChoicesBox->getSelected();
- if (sel < 0)
- return;
- PlayerIgnoreStrategy *const s =
- (*playerRelations.getPlayerIgnoreStrategies())[sel];
-
- playerRelations.setPlayerIgnoreStrategy(s);
- }
-}
-
-void Setup_Relations::updatedPlayer(const std::string &name A_UNUSED)
-{
- mPlayerTableModel->playerRelationsUpdated();
- mDefaultTrading->setSelected(
- (playerRelations.getDefault() & PlayerRelation::TRADE) != 0u);
- mDefaultWhisper->setSelected(
- (playerRelations.getDefault() & PlayerRelation::WHISPER) != 0u);
- if (localPlayer != nullptr)
- localPlayer->updateName();
-}
-
-void Setup_Relations::updateAll()
-{
- PlayerTableModel *const model = new PlayerTableModel(this);
- mPlayerTable->setModel(model);
- delete mPlayerTableModel;
- mPlayerTableModel = model;
- int ignore_strategy_index = 0; // safe default
-
- if (playerRelations.getPlayerIgnoreStrategy() != nullptr)
- {
- ignore_strategy_index = playerRelations.getPlayerIgnoreStrategyIndex(
- playerRelations.getPlayerIgnoreStrategy()->mShortName);
- if (ignore_strategy_index < 0)
- ignore_strategy_index = 0;
- }
- mIgnoreActionChoicesBox->setSelected(ignore_strategy_index);
- mIgnoreActionChoicesBox->adjustHeight();
- reset();
-}
-void Setup_Relations::externalUpdated()
-{
- mDefaultTrading->setSelected(
- (playerRelations.getDefault() & PlayerRelation::TRADE) != 0u);
- mDefaultWhisper->setSelected(
- (playerRelations.getDefault() & PlayerRelation::WHISPER) != 0u);
-}
diff --git a/src/gui/widgets/tabs/setup_relations.h b/src/gui/widgets/tabs/setup_relations.h
deleted file mode 100644
index 879450891..000000000
--- a/src/gui/widgets/tabs/setup_relations.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUP_RELATIONS_H
-#define GUI_WIDGETS_TABS_SETUP_RELATIONS_H
-
-#include "gui/widgets/tabs/setuptab.h"
-
-#include "listeners/playerrelationslistener.h"
-
-class Button;
-class CheckBox;
-class DropDown;
-class GuiTable;
-class ListModel;
-class PlayerTableModel;
-class ScrollArea;
-class StaticTableModel;
-
-class Setup_Relations final : public SetupTab,
- public PlayerRelationsListener
-{
- public:
- explicit Setup_Relations(const Widget2 *const widget);
-
- A_DELETE_COPY(Setup_Relations)
-
- ~Setup_Relations();
-
- void apply() override final;
-
- void cancel() override final A_CONST;
-
- void reset();
-
- void action(const ActionEvent &event) override final;
-
- void updatedPlayer(const std::string &name) override final;
-
- void updateAll() override final;
-
- void externalUpdated() override final;
-
- private:
- StaticTableModel *mPlayerTableTitleModel;
- PlayerTableModel *mPlayerTableModel;
- GuiTable *mPlayerTable;
- GuiTable *mPlayerTitleTable;
- ScrollArea *mPlayerScrollArea;
-
- CheckBox *mDefaultTrading;
- CheckBox *mDefaultWhisper;
-
- Button *mDeleteButton;
-
- ListModel *mIgnoreActionChoicesModel;
- DropDown *mIgnoreActionChoicesBox;
-};
-
-#endif // GUI_WIDGETS_TABS_SETUP_RELATIONS_H
diff --git a/src/gui/widgets/tabs/setup_theme.cpp b/src/gui/widgets/tabs/setup_theme.cpp
deleted file mode 100644
index 47cbb2b92..000000000
--- a/src/gui/widgets/tabs/setup_theme.cpp
+++ /dev/null
@@ -1,415 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setup_theme.h"
-
-#include "gui/gui.h"
-#include "gui/themeinfo.h"
-
-#include "gui/windows/okdialog.h"
-
-#include "gui/models/fontsizechoicelistmodel.h"
-#include "gui/models/fontsmodel.h"
-#include "gui/models/langlistmodel.h"
-#include "gui/models/themesmodel.h"
-
-#include "gui/widgets/button.h"
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/createwidget.h"
-#include "gui/widgets/dropdown.h"
-#include "gui/widgets/label.h"
-#include "gui/widgets/layouthelper.h"
-
-#include "configuration.h"
-
-#include "utils/delete2.h"
-
-#include "debug.h"
-
-const char* ACTION_THEME = "theme";
-const char* ACTION_FONT = "font";
-const char* ACTION_LANG = "lang";
-const char* ACTION_BOLD_FONT = "bold font";
-const char* ACTION_PARTICLE_FONT = "particle font";
-const char* ACTION_HELP_FONT = "help font";
-const char* ACTION_SECURE_FONT = "secure font";
-const char* ACTION_NPC_FONT = "npc font";
-const char* ACTION_JAPAN_FONT = "japanese font";
-const char* ACTION_CHINA_FONT = "chinese font";
-const char* ACTION_INFO = "info";
-
-Setup_Theme::Setup_Theme(const Widget2 *const widget) :
- SetupTab(widget),
- // TRANSLATORS: theme settings label
- mThemeLabel(new Label(this, _("Gui theme"))),
- mThemesModel(new ThemesModel),
- mThemeDropDown(new DropDown(this, mThemesModel)),
- mTheme(config.getStringValue("theme")),
- mInfo(Theme::loadInfo(mTheme)),
- mFontsModel(new FontsModel),
- // TRANSLATORS: theme settings label
- mFontLabel(new Label(this, _("Main Font"))),
- mFontDropDown(new DropDown(this, mFontsModel)),
- mFont(config.getStringValue("font")),
- mLangListModel(new LangListModel),
- // TRANSLATORS: theme settings label
- mLangLabel(new Label(this, _("Language"))),
- mLangDropDown(new DropDown(this, mLangListModel, true)),
- mLang(config.getStringValue("lang")),
- // TRANSLATORS: theme settings label
- mBoldFontLabel(new Label(this, _("Bold font"))),
- mBoldFontDropDown(new DropDown(this, mFontsModel)),
- mBoldFont(config.getStringValue("boldFont")),
- // TRANSLATORS: theme settings label
- mParticleFontLabel(new Label(this, _("Particle font"))),
- mParticleFontDropDown(new DropDown(this, mFontsModel)),
- mParticleFont(config.getStringValue("particleFont")),
- // TRANSLATORS: theme settings label
- mHelpFontLabel(new Label(this, _("Help font"))),
- mHelpFontDropDown(new DropDown(this, mFontsModel)),
- mHelpFont(config.getStringValue("helpFont")),
- // TRANSLATORS: theme settings label
- mSecureFontLabel(new Label(this, _("Secure font"))),
- mSecureFontDropDown(new DropDown(this, mFontsModel)),
- mSecureFont(config.getStringValue("secureFont")),
- // TRANSLATORS: theme settings label
- mNpcFontLabel(new Label(this, _("Npc font"))),
- mNpcFontDropDown(new DropDown(this, mFontsModel)),
- mNpcFont(config.getStringValue("npcFont")),
- // TRANSLATORS: theme settings label
- mJapanFontLabel(new Label(this, _("Japanese font"))),
- mJapanFontDropDown(new DropDown(this, mFontsModel)),
- mJapanFont(config.getStringValue("japanFont")),
- // TRANSLATORS: theme settings label
- mChinaFontLabel(new Label(this, _("Chinese font"))),
- mChinaFontDropDown(new DropDown(this, mFontsModel)),
- mChinaFont(config.getStringValue("chinaFont")),
- mFontSizeListModel(new FontSizeChoiceListModel),
- // TRANSLATORS: theme settings label
- mFontSizeLabel(new Label(this, _("Font size"))),
- mFontSize(config.getIntValue("fontSize")),
- mFontSizeDropDown(new DropDown(this, mFontSizeListModel)),
- mNpcFontSizeListModel(new FontSizeChoiceListModel),
- // TRANSLATORS: theme settings label
- mNpcFontSizeLabel(new Label(this, _("Npc font size"))),
- mNpcFontSize(config.getIntValue("npcfontSize")),
- mNpcFontSizeDropDown(new DropDown(this, mNpcFontSizeListModel)),
- // TRANSLATORS: button name with information about selected theme
- mInfoButton(new Button(this, _("i"), ACTION_INFO, this)),
- mThemeInfo()
-{
- // TRANSLATORS: theme settings tab name
- setName(_("Theme"));
-
- mThemeDropDown->setActionEventId(ACTION_THEME);
- mThemeDropDown->addActionListener(this);
- mFontDropDown->setActionEventId(ACTION_FONT);
- mFontDropDown->addActionListener(this);
- mLangDropDown->setActionEventId(ACTION_LANG);
- mLangDropDown->addActionListener(this);
- mBoldFontDropDown->setActionEventId(ACTION_BOLD_FONT);
- mBoldFontDropDown->addActionListener(this);
- mParticleFontDropDown->setActionEventId(ACTION_PARTICLE_FONT);
- mParticleFontDropDown->addActionListener(this);
- mHelpFontDropDown->setActionEventId(ACTION_HELP_FONT);
- mHelpFontDropDown->addActionListener(this);
- mSecureFontDropDown->setActionEventId(ACTION_SECURE_FONT);
- mSecureFontDropDown->addActionListener(this);
- mNpcFontDropDown->setActionEventId(ACTION_NPC_FONT);
- mNpcFontDropDown->addActionListener(this);
- mJapanFontDropDown->setActionEventId(ACTION_JAPAN_FONT);
- mJapanFontDropDown->addActionListener(this);
- mChinaFontDropDown->setActionEventId(ACTION_CHINA_FONT);
- mChinaFontDropDown->addActionListener(this);
- mFontSizeDropDown->setSelected(mFontSize - 9);
- mFontSizeDropDown->adjustHeight();
- mNpcFontSizeDropDown->setSelected(mNpcFontSize - 9);
- mNpcFontSizeDropDown->adjustHeight();
-
- const std::string skin = Theme::getThemeName();
- if (!skin.empty())
- mThemeDropDown->setSelectedString(skin);
- else
- mThemeDropDown->setSelected(0);
-
- const std::string str = config.getStringValue("lang");
- for (int f = 0; f < langs_count; f ++)
- {
- if (LANG_NAME[f].value == str)
- {
- mLangDropDown->setSelected(f);
- break;
- }
- }
-
- mFontDropDown->setSelectedString(getFileName(
- config.getStringValue("font")));
- mBoldFontDropDown->setSelectedString(getFileName(
- config.getStringValue("boldFont")));
- mParticleFontDropDown->setSelectedString(getFileName(
- config.getStringValue("particleFont")));
- mHelpFontDropDown->setSelectedString(getFileName(
- config.getStringValue("helpFont")));
- mSecureFontDropDown->setSelectedString(getFileName(
- config.getStringValue("secureFont")));
- mNpcFontDropDown->setSelectedString(getFileName(
- config.getStringValue("npcFont")));
- mJapanFontDropDown->setSelectedString(getFileName(
- config.getStringValue("japanFont")));
- mChinaFontDropDown->setSelectedString(getFileName(
- config.getStringValue("chinaFont")));
-
- updateInfo();
-
- // Do the layout
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
-
- place(0, 0, mThemeLabel, 5);
- place(0, 1, mLangLabel, 5);
- place(0, 2, mFontSizeLabel, 5);
- place(0, 3, mNpcFontSizeLabel, 5);
- place(0, 4, mFontLabel, 5);
- place(0, 5, mBoldFontLabel, 5);
- place(0, 6, mParticleFontLabel, 5);
- place(0, 7, mHelpFontLabel, 5);
- place(0, 8, mSecureFontLabel, 5);
- place(0, 9, mNpcFontLabel, 5);
- place(0, 10, mJapanFontLabel, 5);
- place(0, 11, mChinaFontLabel, 5);
-
- place(6, 0, mThemeDropDown, 10);
- place(6, 1, mLangDropDown, 10);
- place(6, 2, mFontSizeDropDown, 10);
- place(6, 3, mNpcFontSizeDropDown, 10);
- place(6, 4, mFontDropDown, 10);
- place(6, 5, mBoldFontDropDown, 10);
- place(6, 6, mParticleFontDropDown, 10);
- place(6, 7, mHelpFontDropDown, 10);
- place(6, 8, mSecureFontDropDown, 10);
- place(6, 9, mNpcFontDropDown, 10);
- place(6, 10, mJapanFontDropDown, 10);
- place(6, 11, mChinaFontDropDown, 10);
-
- place(17, 0, mInfoButton, 1);
-
- int size = mainGraphics->mWidth - 10;
- const int maxWidth = mFontSize * 30 + 290;
- if (size < 465)
- size = 465;
- else if (size > maxWidth)
- size = maxWidth;
-
- setDimension(Rect(0, 0, size, 500));
-}
-
-Setup_Theme::~Setup_Theme()
-{
- delete2(mInfo);
- delete2(mThemesModel);
- delete2(mFontsModel);
- delete2(mFontSizeListModel);
- delete2(mNpcFontSizeListModel);
- delete2(mLangListModel);
- delete2(mInfo);
-}
-
-void Setup_Theme::updateInfo()
-{
- delete mInfo;
- mInfo = Theme::loadInfo(mTheme);
- if (mInfo != nullptr)
- {
- // TRANSLATORS: theme name
- mThemeInfo = std::string(_("Name: ")).append(mInfo->name)
- // TRANSLATORS: theme copyright
- .append("\n").append(_("Copyright:")).append("\n")
- .append(mInfo->copyright);
- }
- else
- {
- mThemeInfo.clear();
- }
- replaceAll(mThemeInfo, "\\n", "\n");
- mInfoButton->setEnabled(!mThemeInfo.empty());
-}
-
-void Setup_Theme::action(const ActionEvent &event)
-{
- const std::string &eventId = event.getId();
- if (eventId == ACTION_THEME)
- {
- if (mThemeDropDown->getSelected() == 0)
- mTheme.clear();
- else
- mTheme = mThemeDropDown->getSelectedString();
- updateInfo();
- }
- else if (eventId == ACTION_FONT)
- {
- mFont = mFontDropDown->getSelectedString();
- }
- else if (eventId == ACTION_LANG)
- {
- const int id = mLangDropDown->getSelected();
- if (id < 0 || id >= langs_count)
- mLang.clear();
- else
- mLang = LANG_NAME[id].value;
- }
- else if (eventId == ACTION_BOLD_FONT)
- {
- mBoldFont = mBoldFontDropDown->getSelectedString();
- }
- else if (eventId == ACTION_PARTICLE_FONT)
- {
- mParticleFont = mParticleFontDropDown->getSelectedString();
- }
- else if (eventId == ACTION_HELP_FONT)
- {
- mHelpFont = mHelpFontDropDown->getSelectedString();
- }
- else if (eventId == ACTION_SECURE_FONT)
- {
- mSecureFont = mSecureFontDropDown->getSelectedString();
- }
- else if (eventId == ACTION_NPC_FONT)
- {
- mNpcFont = mNpcFontDropDown->getSelectedString();
- }
- else if (eventId == ACTION_JAPAN_FONT)
- {
- mJapanFont = mJapanFontDropDown->getSelectedString();
- }
- else if (eventId == ACTION_CHINA_FONT)
- {
- mChinaFont = mChinaFontDropDown->getSelectedString();
- }
- else if (eventId == ACTION_INFO)
- {
- CREATEWIDGET(OkDialog,
- // TRANSLATORS: theme info dialog header
- _("Theme info"),
- mThemeInfo,
- // TRANSLATORS: ok dialog button
- _("OK"),
- DialogType::OK,
- Modal_true,
- ShowCenter_true,
- nullptr,
- 600);
- }
-}
-
-void Setup_Theme::cancel()
-{
- mTheme = config.getStringValue("theme");
- mLang = config.getStringValue("lang");
- mFont = getFileName(config.getStringValue("font"));
- mBoldFont = getFileName(config.getStringValue("boldFont"));
- mParticleFont = getFileName(config.getStringValue("particleFont"));
- mHelpFont = getFileName(config.getStringValue("helpFont"));
- mSecureFont = getFileName(config.getStringValue("secureFont"));
- mNpcFont = getFileName(config.getStringValue("npcFont"));
- mJapanFont = getFileName(config.getStringValue("japanFont"));
- mChinaFont = getFileName(config.getStringValue("chinaFont"));
-}
-
-#define updateField(name1, name2) if (!mInfo->name1.empty()) \
- name2 = mInfo->name1;
-
-void Setup_Theme::apply()
-{
- if (config.getStringValue("theme") != mTheme)
- {
- CREATEWIDGET(OkDialog,
- // TRANSLATORS: theme message dialog
- _("Theme Changed"),
- // TRANSLATORS: ok dialog message
- _("Restart your client for the change to take effect."),
- // TRANSLATORS: ok dialog button
- _("OK"),
- DialogType::OK,
- Modal_true,
- ShowCenter_true,
- nullptr,
- 260);
- }
-
- config.setValue("selectedSkin", "");
- if (config.getStringValue("theme") != mTheme && (mInfo != nullptr))
- {
- updateField(font, mFont);
- updateField(boldFont, mBoldFont);
- updateField(particleFont, mParticleFont);
- updateField(helpFont, mHelpFont);
- updateField(secureFont, mSecureFont);
- updateField(npcFont, mNpcFont);
- updateField(japanFont, mJapanFont);
- updateField(chinaFont, mChinaFont);
- if (mInfo->fontSize != 0)
- {
- const int size = mInfo->fontSize - 9;
- if (size >= 0)
- mFontSizeDropDown->setSelected(size);
- }
- if (mInfo->npcfontSize != 0)
- {
- const int size = mInfo->npcfontSize - 9;
- if (size >= 0)
- mNpcFontSizeDropDown->setSelected(size);
- }
- if (mInfo->guiAlpha > 0.01F)
- config.setValue("guialpha", mInfo->guiAlpha);
- }
- config.setValue("theme", mTheme);
- config.setValue("lang", mLang);
- if (config.getValue("font", "dejavusans.ttf") != mFont
- || config.getValue("boldFont", "dejavusans-bold.ttf") != mBoldFont
- || config.getValue("particleFont", "dejavusans.ttf") != mParticleFont
- || config.getValue("helpFont", "dejavusansmono.ttf") != mHelpFont
- || config.getValue("secureFont", "dejavusansmono.ttf") != mSecureFont
- || config.getValue("npcFont", "dejavusans.ttf") != mNpcFont
- || config.getValue("japanFont", "mplus-1p-regular.ttf") != mJapanFont
- || config.getValue("chinaFont", "fonts/wqy-microhei.ttf")
- != mChinaFont
- || config.getIntValue("fontSize")
- != CAST_S32(mFontSizeDropDown->getSelected()) + 9
- || config.getIntValue("npcfontSize")
- != CAST_S32(mNpcFontSizeDropDown->getSelected()) + 9)
- {
- config.setValue("font", "fonts/" + getFileName(mFont));
- config.setValue("boldFont", "fonts/" + getFileName(mBoldFont));
- config.setValue("particleFont", "fonts/" + getFileName(mParticleFont));
- config.setValue("helpFont", "fonts/" + getFileName(mHelpFont));
- config.setValue("secureFont", "fonts/" + getFileName(mSecureFont));
- config.setValue("npcFont", "fonts/" + getFileName(mNpcFont));
- config.setValue("japanFont", "fonts/" + getFileName(mJapanFont));
- config.setValue("chinaFont", "fonts/" + getFileName(mChinaFont));
- config.setValue("fontSize", mFontSizeDropDown->getSelected() + 9);
- config.setValue("npcfontSize",
- mNpcFontSizeDropDown->getSelected() + 9);
- gui->updateFonts();
- }
-}
-
-#undef updateField
diff --git a/src/gui/widgets/tabs/setup_theme.h b/src/gui/widgets/tabs/setup_theme.h
deleted file mode 100644
index 57798f243..000000000
--- a/src/gui/widgets/tabs/setup_theme.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUP_THEME_H
-#define GUI_WIDGETS_TABS_SETUP_THEME_H
-
-#include "gui/widgets/tabs/setuptab.h"
-
-class Button;
-class DropDown;
-class FontsModel;
-class FontSizeChoiceListModel;
-class Label;
-class LangListModel;
-class ThemesModel;
-
-class Setup_Theme final : public SetupTab
-{
- public:
- explicit Setup_Theme(const Widget2 *const widget);
-
- A_DELETE_COPY(Setup_Theme)
-
- ~Setup_Theme();
-
- void apply() override final;
-
- void cancel() override final;
-
- void action(const ActionEvent &event) override final;
-
- void updateInfo();
-
- private:
- Label *mThemeLabel;
- ThemesModel *mThemesModel A_NONNULLPOINTER;
- DropDown *mThemeDropDown;
- std::string mTheme;
- ThemeInfo *mInfo;
-
- FontsModel *mFontsModel A_NONNULLPOINTER;
- Label *mFontLabel A_NONNULLPOINTER;
- DropDown *mFontDropDown A_NONNULLPOINTER;
- std::string mFont;
-
- LangListModel *mLangListModel A_NONNULLPOINTER;
-
- Label *mLangLabel A_NONNULLPOINTER;
- DropDown *mLangDropDown A_NONNULLPOINTER;
- std::string mLang;
-
- Label *mBoldFontLabel A_NONNULLPOINTER;
- DropDown *mBoldFontDropDown A_NONNULLPOINTER;
- std::string mBoldFont;
-
- Label *mParticleFontLabel A_NONNULLPOINTER;
- DropDown *mParticleFontDropDown A_NONNULLPOINTER;
- std::string mParticleFont;
-
- Label *mHelpFontLabel A_NONNULLPOINTER;
- DropDown *mHelpFontDropDown A_NONNULLPOINTER;
- std::string mHelpFont;
-
- Label *mSecureFontLabel A_NONNULLPOINTER;
- DropDown *mSecureFontDropDown A_NONNULLPOINTER;
- std::string mSecureFont;
-
- Label *mNpcFontLabel A_NONNULLPOINTER;
- DropDown *mNpcFontDropDown A_NONNULLPOINTER;
- std::string mNpcFont;
-
- Label *mJapanFontLabel A_NONNULLPOINTER;
- DropDown *mJapanFontDropDown A_NONNULLPOINTER;
- std::string mJapanFont;
-
- Label *mChinaFontLabel A_NONNULLPOINTER;
- DropDown *mChinaFontDropDown A_NONNULLPOINTER;
- std::string mChinaFont;
-
- FontSizeChoiceListModel *mFontSizeListModel A_NONNULLPOINTER;
- Label *mFontSizeLabel;
- int mFontSize;
- DropDown *mFontSizeDropDown;
-
- FontSizeChoiceListModel *mNpcFontSizeListModel A_NONNULLPOINTER;
- Label *mNpcFontSizeLabel;
- int mNpcFontSize;
- DropDown *mNpcFontSizeDropDown A_NONNULLPOINTER;
-
- Button *mInfoButton A_NONNULLPOINTER;
- std::string mThemeInfo;
-};
-
-#endif // GUI_WIDGETS_TABS_SETUP_THEME_H
diff --git a/src/gui/widgets/tabs/setup_touch.cpp b/src/gui/widgets/tabs/setup_touch.cpp
deleted file mode 100644
index c8558fef9..000000000
--- a/src/gui/widgets/tabs/setup_touch.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2012-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setup_touch.h"
-
-#include "gui/models/touchactionmodel.h"
-
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/layouthelper.h"
-#include "gui/widgets/setuptouchitem.h"
-#include "gui/widgets/scrollarea.h"
-
-#include "utils/delete2.h"
-#include "utils/gettext.h"
-#include "utils/stringutils.h"
-
-#include "debug.h"
-
-static const int sizeListSize = 4;
-
-static const char *const sizeList[] =
-{
- // TRANSLATORS: onscreen button size
- N_("Small"),
- // TRANSLATORS: onscreen button size
- N_("Normal"),
- // TRANSLATORS: onscreen button size
- N_("Medium"),
- // TRANSLATORS: onscreen button size
- N_("Large")
-};
-
-static const int formatListSize = 6;
-
-static const char *const formatList[] =
-{
- "2x1",
- "2x2",
- "3x3",
- "4x2",
- "4x3",
- "3x2"
-};
-
-Setup_Touch::Setup_Touch(const Widget2 *const widget) :
- SetupTabScroll(widget),
- mSizeList(new NamesModel),
- mFormatList(new NamesModel),
- mActionsList(new TouchActionsModel)
-{
- // TRANSLATORS: touch settings tab
- setName(_("Touch"));
-
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
- place(0, 0, mScroll, 10, 10);
- mSizeList->fillFromArray(&sizeList[0], sizeListSize);
- mFormatList->fillFromArray(&formatList[0], formatListSize);
-
- // TRANSLATORS: settings option
- new SetupItemLabel(_("Onscreen keyboard"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show onscreen keyboard icon"), "",
- "showScreenKeyboard", this, "showScreenKeyboardEvent");
-
- // TRANSLATORS: settings option
- new SetupActionDropDown(_("Keyboard icon action"), "",
- "screenActionKeyboard", this, "screenActionKeyboardEvent",
- mActionsList, 250);
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Onscreen joystick"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show onscreen joystick"), "",
- "showScreenJoystick", this, "showScreenJoystickEvent");
-
- // TRANSLATORS: settings option
- new SetupItemDropDown(_("Joystick size"), "", "screenJoystickSize", this,
- "screenJoystickEvent", mSizeList, 100);
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Onscreen buttons"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show onscreen buttons"), "",
- "showScreenButtons", this, "showScreenButtonsEvent");
-
- // TRANSLATORS: settings option
- new SetupItemDropDown(_("Buttons format"), "", "screenButtonsFormat", this,
- "screenButtonsFormatEvent", mFormatList, 100);
-
- // TRANSLATORS: settings option
- new SetupItemDropDown(_("Buttons size"), "", "screenButtonsSize", this,
- "screenButtonsSizeEvent", mSizeList, 100);
-
- for (unsigned int f = 0; f < 12; f ++)
- {
- std::string key = strprintf("screenActionButton%u", f);
- std::string event = strprintf("screenActionButton%uEvent", f);
- // TRANSLATORS: settings option
- new SetupActionDropDown(strprintf(_("Button %u action"), f + 1), "",
- key, this, event, mActionsList, 250);
- }
-
- setDimension(Rect(0, 0, 550, 350));
-}
-
-Setup_Touch::~Setup_Touch()
-{
- delete2(mSizeList);
- delete2(mFormatList);
- delete2(mActionsList);
-}
diff --git a/src/gui/widgets/tabs/setup_touch.h b/src/gui/widgets/tabs/setup_touch.h
deleted file mode 100644
index a87a46c77..000000000
--- a/src/gui/widgets/tabs/setup_touch.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2012-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUP_TOUCH_H
-#define GUI_WIDGETS_TABS_SETUP_TOUCH_H
-
-#include "gui/widgets/tabs/setuptabscroll.h"
-
-class NamesModel;
-class TouchActionsModel;
-
-class Setup_Touch final : public SetupTabScroll
-{
- public:
- explicit Setup_Touch(const Widget2 *const widget);
-
- A_DELETE_COPY(Setup_Touch)
-
- ~Setup_Touch();
-
- protected:
- NamesModel *mSizeList;
- NamesModel *mFormatList;
- TouchActionsModel *mActionsList;
-};
-
-#endif // GUI_WIDGETS_TABS_SETUP_TOUCH_H
diff --git a/src/gui/widgets/tabs/setup_video.cpp b/src/gui/widgets/tabs/setup_video.cpp
deleted file mode 100644
index b5b74e2b9..000000000
--- a/src/gui/widgets/tabs/setup_video.cpp
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setup_video.h"
-
-#include "gui/windowmanager.h"
-
-#include "gui/windows/okdialog.h"
-#include "gui/windows/textdialog.h"
-
-#include "gui/widgets/button.h"
-#include "gui/widgets/checkbox.h"
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/createwidget.h"
-#include "gui/widgets/label.h"
-#include "gui/widgets/layouthelper.h"
-#include "gui/widgets/listbox.h"
-#include "gui/widgets/scrollarea.h"
-#include "gui/widgets/slider.h"
-#include "gui/widgets/dropdown.h"
-
-#include "utils/delete2.h"
-
-#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__APPLE__)
-#include "graphicsmanager.h"
-
-#include "test/testmain.h"
-#endif // defined(USE_OPENGL) && !defined(ANDROID) && !defined(__APPLE__)
-
-#if defined(ANDROID) || defined(__APPLE__) || !defined(USE_OPENGL)
-#include "configuration.h"
-#endif // defined(ANDROID) || defined(__APPLE__) || !defined(USE_OPENGL)
-
-#if defined(ANDROID) || defined(__APPLE__)
-#include "utils/stringutils.h"
-#endif // defined(ANDROID) || defined(__APPLE__)
-
-#include "gui/models/modelistmodel.h"
-#include "gui/models/opengllistmodel.h"
-
-#include <sstream>
-
-#include "debug.h"
-
-Setup_Video::Setup_Video(const Widget2 *const widget) :
- SetupTab(widget),
- KeyListener(),
- mFullScreenEnabled(config.getBoolValue("screen")),
- mOpenGLEnabled(intToRenderType(config.getIntValue("opengl"))),
- mFps(config.getIntValue("fpslimit")),
- mAltFps(config.getIntValue("altfpslimit")),
- mModeListModel(new ModeListModel),
- mOpenGLListModel(new OpenGLListModel),
- mModeList(CREATEWIDGETR(ListBox, widget, mModeListModel, "")),
- // TRANSLATORS: video settings checkbox
- mFsCheckBox(new CheckBox(this, _("Full screen"), mFullScreenEnabled)),
- mOpenGLDropDown(new DropDown(widget, mOpenGLListModel)),
- // TRANSLATORS: video settings checkbox
- mFpsCheckBox(new CheckBox(this, _("FPS limit:"))),
- mFpsSlider(new Slider(this, 2.0, 160.0, 1.0)),
- mFpsLabel(new Label(this)),
- mAltFpsSlider(new Slider(this, 2.0, 160.0, 1.0)),
- // TRANSLATORS: video settings label
- mAltFpsLabel(new Label(this, _("Alt FPS limit: "))),
-#if !defined(ANDROID) && !defined(__APPLE__) && !defined(__native_client__)
- // TRANSLATORS: video settings button
- mDetectButton(new Button(this, _("Detect best mode"), "detect", this)),
-#endif // !defined(ANDROID) && !defined(__APPLE__) &&
- // !defined(__native_client__)
- mDialog(nullptr),
- mCustomCursorEnabled(config.getBoolValue("customcursor")),
- mEnableResize(config.getBoolValue("enableresize")),
- mNoFrame(config.getBoolValue("noframe")),
-#ifdef USE_SDL2
- mAllowHighDPI(config.getBoolValue("allowHighDPI")),
- // TRANSLATORS: video settings checkbox
- mAllowHighDPICheckBox(new CheckBox(this, _("High DPI"), mAllowHighDPI)),
-#endif // USE_SDL2
- mCustomCursorCheckBox(new CheckBox(this,
-#ifdef ANDROID
- // TRANSLATORS: video settings checkbox
- _("Show cursor"),
-#else // ANDROID
- // TRANSLATORS: video settings checkbox
- _("Custom cursor"),
-#endif // ANDROID
- mCustomCursorEnabled)),
- // TRANSLATORS: video settings checkbox
- mEnableResizeCheckBox(new CheckBox(this, _("Enable resize"),
- mEnableResize)),
- // TRANSLATORS: video settings checkbox
- mNoFrameCheckBox(new CheckBox(this, _("No frame"), mNoFrame))
-{
- // TRANSLATORS: video settings tab name
- setName(_("Video"));
-
- ScrollArea *const scrollArea = new ScrollArea(this, mModeList,
- Opaque_true, "setup_video_background.xml");
- scrollArea->setWidth(150);
- scrollArea->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER);
-
- mOpenGLDropDown->setSelected(renderToIndex[mOpenGLEnabled]);
-
- mModeList->setEnabled(true);
-
- // TRANSLATORS: video settings label
- mFpsLabel->setCaption(mFps > 0 ? toString(mFps) : _("None"));
- mFpsLabel->setWidth(60);
- // TRANSLATORS: video settings label
- mAltFpsLabel->setCaption(_("Alt FPS limit: ") + (mAltFps > 0 ?
- // TRANSLATORS: video settings label value
- toString(mAltFps) : _("None")));
- mAltFpsLabel->setWidth(150);
- mFpsSlider->setEnabled(mFps > 0);
- mFpsSlider->setValue(mFps);
- mAltFpsSlider->setEnabled(mAltFps > 0);
- mAltFpsSlider->setValue(mAltFps);
- mFpsCheckBox->setSelected(mFps > 0);
-
- // Pre-select the current video mode.
- const std::string videoMode = toString(
- mainGraphics->mActualWidth).append("x").append(
- toString(mainGraphics->mActualHeight));
- mModeList->setSelected(mModeListModel->getIndexOf(videoMode));
-
- mModeList->setActionEventId("videomode");
- mCustomCursorCheckBox->setActionEventId("customcursor");
- mFpsCheckBox->setActionEventId("fpslimitcheckbox");
- mFpsSlider->setActionEventId("fpslimitslider");
- mAltFpsSlider->setActionEventId("altfpslimitslider");
- mOpenGLDropDown->setActionEventId("opengl");
- mEnableResizeCheckBox->setActionEventId("enableresize");
- mNoFrameCheckBox->setActionEventId("noframe");
-#ifdef USE_SDL2
- mAllowHighDPICheckBox->setActionEventId("allowHighDPI");
- mAllowHighDPICheckBox->addActionListener(this);
-#endif // USE_SDL2
-
- mModeList->addActionListener(this);
- mCustomCursorCheckBox->addActionListener(this);
- mFpsCheckBox->addActionListener(this);
- mFpsSlider->addActionListener(this);
- mAltFpsSlider->addActionListener(this);
- mOpenGLDropDown->addActionListener(this);
- mEnableResizeCheckBox->addActionListener(this);
- mNoFrameCheckBox->addActionListener(this);
-
- // Do the layout
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
-
- place(0, 0, scrollArea, 1, 5).setPadding(2);
- place(0, 5, mOpenGLDropDown, 1);
-
- place(1, 0, mFsCheckBox, 2);
-
- place(1, 1, mCustomCursorCheckBox, 3);
-
- place(1, 2, mEnableResizeCheckBox, 2);
- place(1, 3, mNoFrameCheckBox, 2);
-#ifdef USE_SDL2
- place(1, 4, mAllowHighDPICheckBox, 2);
-#endif // USE_SDL2
-
- place(0, 6, mFpsSlider);
- place(1, 6, mFpsCheckBox).setPadding(3);
- place(2, 6, mFpsLabel).setPadding(1);
-
- place(0, 7, mAltFpsSlider);
- place(1, 7, mAltFpsLabel).setPadding(3);
-
-#if !defined(ANDROID) && !defined(__APPLE__) && !defined(__native_client__)
- place(0, 8, mDetectButton);
-#else // !defined(ANDROID) && !defined(__APPLE__) &&
- // !defined(__native_client__)
- mNoFrameCheckBox->setEnabled(false);
- mEnableResizeCheckBox->setEnabled(false);
-#ifndef __native_client__
- mFsCheckBox->setEnabled(false);
-#endif // __native_client__
-#endif // !defined(ANDROID) && !defined(__APPLE__) &&
- // !defined(__native_client__)
-
- int width = 600;
-
- if (config.getIntValue("screenwidth") >= 730)
- width += 100;
-
- setDimension(Rect(0, 0, width, 300));
-}
-
-Setup_Video::~Setup_Video()
-{
- delete2(mModeListModel);
- delete2(mModeList);
- delete2(mOpenGLListModel);
- delete2(mDialog);
-}
-
-void Setup_Video::apply()
-{
- // Full screen changes
- bool fullscreen = mFsCheckBox->isSelected();
- if (fullscreen != config.getBoolValue("screen"))
- {
- /* The OpenGL test is only necessary on Windows, since switching
- * to/from full screen works fine on Linux. On Windows we'd have to
- * reinitialize the OpenGL state and reload all textures.
- *
- * See http://libsdl.org/cgi/docwiki.cgi/SDL_SetVideoMode
- */
-
-#if defined(WIN32) || defined(__APPLE__) || defined(ANDROID)
- // checks for opengl usage
- if (intToRenderType(config.getIntValue("opengl")) == RENDER_SOFTWARE)
- {
-#endif // defined(WIN32) || defined(__APPLE__) || defined(ANDROID)
- if (!WindowManager::setFullScreen(fullscreen))
- {
- fullscreen = !fullscreen;
- if (!WindowManager::setFullScreen(fullscreen))
- {
- std::stringstream errorMsg;
- if (fullscreen)
- {
- // TRANSLATORS: video error message
- errorMsg << _("Failed to switch to windowed mode "
- "and restoration of old mode also "
- "failed!") << std::endl;
- }
- else
- {
- // TRANSLATORS: video error message
- errorMsg << _("Failed to switch to fullscreen mode"
- " and restoration of old mode also "
- "failed!") << std::endl;
- }
- logger->safeError(errorMsg.str());
- }
- }
-#if defined(WIN32) || defined(__APPLE__) || defined(ANDROID)
- }
- else
- {
- CREATEWIDGET(OkDialog,
- // TRANSLATORS: video settings warning
- _("Switching to Full Screen"),
- // TRANSLATORS: video settings warning
- _("Restart needed for changes to take effect."),
- // TRANSLATORS: ok dialog button
- _("OK"),
- DialogType::OK,
- Modal_true,
- ShowCenter_true,
- nullptr,
- 260);
- }
-#endif // defined(WIN32) || defined(__APPLE__) || defined(ANDROID)
-
- config.setValue("screen", fullscreen);
- }
-
- const int sel = mOpenGLDropDown->getSelected();
- RenderType mode = RENDER_SOFTWARE;
- if (sel >= 0 && CAST_U32(sel) < sizeof(indexToRender))
- mode = indexToRender[mOpenGLDropDown->getSelected()];
-
- // OpenGL change
- if (mode != mOpenGLEnabled)
- {
- config.setValue("opengl", CAST_S32(mode));
-
- // OpenGL can currently only be changed by restarting, notify user.
- CREATEWIDGET(OkDialog,
- // TRANSLATORS: video settings warning
- _("Changing to OpenGL"),
- // TRANSLATORS: video settings warning
- _("Applying change to OpenGL requires restart."),
- // TRANSLATORS: ok dialog button
- _("OK"),
- DialogType::OK,
- Modal_true,
- ShowCenter_true,
- nullptr,
- 260);
- }
-
- mFps = mFpsCheckBox->isSelected() ?
- CAST_S32(mFpsSlider->getValue()) : 0;
-
- mAltFps = CAST_S32(mAltFpsSlider->getValue());
-
- mFpsSlider->setEnabled(mFps > 0);
-
- mAltFpsSlider->setEnabled(mAltFps > 0);
-
- // FPS change
- config.setValue("fpslimit", mFps);
- config.setValue("altfpslimit", mAltFps);
-
- // We sync old and new values at apply time
- mFullScreenEnabled = config.getBoolValue("screen");
- mCustomCursorEnabled = config.getBoolValue("customcursor");
-
- mOpenGLEnabled = intToRenderType(config.getIntValue("opengl"));
- mEnableResize = config.getBoolValue("enableresize");
- mNoFrame = config.getBoolValue("noframe");
-#ifdef USE_SDL2
- mAllowHighDPI = config.getBoolValue("allowHighDPI");
-#endif // USE_SDL2
-}
-
-void Setup_Video::cancel()
-{
- mFpsCheckBox->setSelected(mFps > 0);
- mFsCheckBox->setSelected(mFullScreenEnabled);
- mOpenGLDropDown->setSelected(renderToIndex[mOpenGLEnabled]);
- mCustomCursorCheckBox->setSelected(mCustomCursorEnabled);
- mFpsSlider->setEnabled(mFps > 0);
- mFpsSlider->setValue(mFps);
- mAltFpsSlider->setEnabled(mAltFps > 0);
- mAltFpsSlider->setValue(mAltFps);
- mFpsLabel->setCaption(mFpsCheckBox->isSelected()
- // TRANSLATORS: video settings label
- ? toString(mFps) : _("None"));
- // TRANSLATORS: video settings label
- mAltFpsLabel->setCaption(_("Alt FPS limit: ") + toString(mAltFps));
- mEnableResizeCheckBox->setSelected(mEnableResize);
- mNoFrameCheckBox->setSelected(mNoFrame);
-#ifdef USE_SDL2
- mAllowHighDPICheckBox->setSelected(mAllowHighDPI);
-#endif // USE_SDL2
-
- config.setValue("screen", mFullScreenEnabled);
-
- // Set back to the current video mode.
- std::string videoMode = toString(mainGraphics->mActualWidth).append("x")
- .append(toString(mainGraphics->mActualHeight));
- mModeList->setSelected(mModeListModel->getIndexOf(videoMode));
- config.setValue("screenwidth", mainGraphics->mActualWidth);
- config.setValue("screenheight", mainGraphics->mActualHeight);
-
- config.setValue("customcursor", mCustomCursorEnabled);
- config.setValue("opengl", CAST_S32(mOpenGLEnabled));
- config.setValue("enableresize", mEnableResize);
-#ifdef USE_SDL2
- config.setValue("allowHighDPI", mAllowHighDPI);
-#endif // USE_SDL2
-}
-
-void Setup_Video::action(const ActionEvent &event)
-{
- const std::string &id = event.getId();
-
- if (id == "videomode")
- {
- std::string mode = mModeListModel->getElementAt(
- mModeList->getSelected());
-
- if (mode == "custom")
- {
- if (mDialog != nullptr)
- {
- mode = mDialog->getText();
- mDialog = nullptr;
- }
- else
- {
- CREATEWIDGETV(mDialog, TextDialog,
- // TRANSLATORS: resolution question dialog
- _("Custom resolution (example: 1024x768)"),
- // TRANSLATORS: resolution question dialog
- _("Enter new resolution: "));
- mDialog->setActionEventId("videomode");
- mDialog->addActionListener(this);
- return;
- }
- }
- const int width = atoi(mode.substr(0, mode.find('x')).c_str());
- const int height = atoi(mode.substr(mode.find('x') + 1).c_str());
- if ((width == 0) || (height == 0))
- return;
-
- if (width != mainGraphics->mActualWidth
- || height != mainGraphics->mActualHeight)
- {
-#if defined(WIN32) || defined(__APPLE__) || defined(ANDROID)
- if (intToRenderType(config.getIntValue("opengl"))
- == RENDER_SOFTWARE)
- {
- WindowManager::doResizeVideo(width, height, false);
- }
- else
- {
- if (width < mainGraphics->mActualWidth
- || height < mainGraphics->mActualHeight)
- {
- CREATEWIDGET(OkDialog,
- // TRANSLATORS: video settings warning
- _("Screen Resolution Changed"),
- // TRANSLATORS: video settings warning
- _("Restart your client for the change to take effect.")
- // TRANSLATORS: video settings warning
- + std::string("\n") + _("Some windows may be moved to "
- "fit the lowered resolution."),
- // TRANSLATORS: ok dialog button
- _("OK"),
- DialogType::OK,
- Modal_true,
- ShowCenter_true,
- nullptr,
- 260);
- }
- else
- {
- CREATEWIDGET(OkDialog,
- // TRANSLATORS: video settings warning
- _("Screen Resolution Changed"),
- // TRANSLATORS: video settings warning
- _("Restart your client for the change"
- " to take effect."),
- // TRANSLATORS: ok dialog button
- _("OK"),
- DialogType::OK,
- Modal_true,
- ShowCenter_true,
- nullptr,
- 260);
- }
- }
-#else // defined(WIN32) || defined(__APPLE__) || defined(ANDROID)
-
- mainGraphics->setWindowSize(width, height);
- WindowManager::doResizeVideo(width, height, false);
-#endif // defined(WIN32) || defined(__APPLE__) || defined(ANDROID)
- }
-
- config.setValue("oldscreen", config.getBoolValue("screen"));
- config.setValue("oldscreenwidth", mainGraphics->mActualWidth);
- config.setValue("oldscreenheight", mainGraphics->mActualHeight);
- config.setValue("screenwidth", width);
- config.setValue("screenheight", height);
- }
- if (id == "~videomode")
- {
- mDialog = nullptr;
- }
- else if (id == "customcursor")
- {
- config.setValue("customcursor", mCustomCursorCheckBox->isSelected());
- }
- else if (id == "fpslimitcheckbox" || id == "fpslimitslider")
- {
- int tempFps = CAST_S32(mFpsSlider->getValue());
- if (id == "fpslimitcheckbox" && !mFpsSlider->isEnabled())
- tempFps = 60;
- else
- tempFps = tempFps > 0 ? tempFps : 60;
- mFps = mFpsCheckBox->isSelected() ? tempFps : 0;
- // TRANSLATORS: video settings label
- const std::string text = mFps > 0 ? toString(mFps) : _("None");
-
- mFpsLabel->setCaption(text);
- mFpsSlider->setEnabled(mFps > 0);
- mFpsSlider->setValue(mFps);
- }
- else if (id == "altfpslimitslider")
- {
- int tempFps = CAST_S32(mAltFpsSlider->getValue());
- tempFps = tempFps > 0 ? tempFps : CAST_S32(
- mAltFpsSlider->getScaleStart());
- mAltFps = tempFps;
- // TRANSLATORS: video settings label
- const std::string text = mAltFps > 0 ? toString(mAltFps) : _("None");
-
- // TRANSLATORS: video settings label
- mAltFpsLabel->setCaption(_("Alt FPS limit: ") + text);
- mAltFpsSlider->setEnabled(mAltFps > 0);
- mAltFpsSlider->setValue(mAltFps);
- }
- else if (id == "enableresize")
- {
- config.setValue("enableresize", mEnableResizeCheckBox->isSelected());
- }
- else if (id == "noframe")
- {
- config.setValue("noframe", mNoFrameCheckBox->isSelected());
- }
-#ifdef USE_SDL2
- else if (id == "allowHighDPI")
- {
- config.setValue("allowHighDPI", mAllowHighDPICheckBox->isSelected());
- }
-#endif // USE_SDL2
-#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__APPLE__)
- else if (id == "detect")
- {
- TestMain *test = graphicsManager.startDetection();
- if (test != nullptr)
- {
- Configuration &conf = test->getConfig();
- const int val = conf.getValueInt("opengl", -1);
- if (val >= 0 && CAST_U32(val)
- < sizeof(renderToIndex) / sizeof(int))
- {
- mOpenGLDropDown->setSelected(renderToIndex[val]);
- }
- config.setValue("textureSize",
- conf.getValue("textureSize", "1024,1024,1024,1024,1024,1024"));
- config.setValue("testInfo", conf.getValue("testInfo", ""));
- delete test;
- }
- }
-#endif // defined(USE_OPENGL) && !defined(ANDROID) && !defined(__APPLE__)
-}
diff --git a/src/gui/widgets/tabs/setup_video.h b/src/gui/widgets/tabs/setup_video.h
deleted file mode 100644
index e327a29d8..000000000
--- a/src/gui/widgets/tabs/setup_video.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUP_VIDEO_H
-#define GUI_WIDGETS_TABS_SETUP_VIDEO_H
-
-#include "gui/widgets/tabs/setuptab.h"
-
-#include "listeners/keylistener.h"
-
-class Button;
-class CheckBox;
-class DropDown;
-class Label;
-class ListBox;
-class ModeListModel;
-class OpenGLListModel;
-class Slider;
-class TextDialog;
-
-class Setup_Video final : public SetupTab,
- public KeyListener
-{
- public:
- explicit Setup_Video(const Widget2 *const widget);
-
- A_DELETE_COPY(Setup_Video)
-
- ~Setup_Video();
-
- void apply() override final;
-
- void cancel() override final;
-
- void action(const ActionEvent &event) override final;
-
- private:
- bool mFullScreenEnabled;
- RenderType mOpenGLEnabled;
- int mFps;
- int mAltFps;
- ModeListModel *mModeListModel;
- OpenGLListModel *mOpenGLListModel;
- ListBox *mModeList;
- CheckBox *mFsCheckBox;
- DropDown *mOpenGLDropDown;
- CheckBox *mFpsCheckBox;
- Slider *mFpsSlider;
- Label *mFpsLabel;
- Slider *mAltFpsSlider;
- Label *mAltFpsLabel;
-#if !defined(ANDROID) && !defined(__APPLE__) && !defined(__native_client__)
- Button *mDetectButton;
-#endif // !defined(ANDROID) && !defined(__APPLE__) &&
- // !defined(__native_client__)
- TextDialog *mDialog;
- bool mCustomCursorEnabled;
- bool mEnableResize;
- bool mNoFrame;
-#ifdef USE_SDL2
- bool mAllowHighDPI;
- CheckBox *mAllowHighDPICheckBox;
-#endif // USE_SDL2
- CheckBox *mCustomCursorCheckBox;
- CheckBox *mEnableResizeCheckBox;
- CheckBox *mNoFrameCheckBox;
-};
-
-#endif // GUI_WIDGETS_TABS_SETUP_VIDEO_H
diff --git a/src/gui/widgets/tabs/setup_visual.cpp b/src/gui/widgets/tabs/setup_visual.cpp
deleted file mode 100644
index de5cc8b3b..000000000
--- a/src/gui/widgets/tabs/setup_visual.cpp
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setup_visual.h"
-
-#include "gui/windowmanager.h"
-
-#include "gui/models/namesmodel.h"
-
-#include "gui/widgets/containerplacer.h"
-#include "gui/widgets/layouthelper.h"
-#include "gui/widgets/scrollarea.h"
-
-#include "utils/delete2.h"
-#include "utils/gettext.h"
-#include "utils/stringutils.h"
-
-#include "debug.h"
-
-static const int speachListSize = 4;
-
-static const char *const speachList[] =
-{
- // TRANSLATORS: speach type
- N_("No text"),
- // TRANSLATORS: speach type
- N_("Text"),
- // TRANSLATORS: speach type
- N_("Bubbles, no names"),
- // TRANSLATORS: speach type
- N_("Bubbles with names")
-};
-
-static const int ambientFxListSize = 3;
-
-static const char *const ambientFxList[] =
-{
- // TRANSLATORS: ambient effect type
- N_("off"),
- // TRANSLATORS: ambient effect type
- N_("low"),
- // TRANSLATORS: ambient effect type
- N_("high")
-};
-
-static const int particleTypeListSize = 3;
-
-static const char *const particleTypeList[] =
-{
- // TRANSLATORS: patricle effects type
- N_("best quality"),
- // TRANSLATORS: patricle effects type
- N_("normal"),
- // TRANSLATORS: patricle effects type
- N_("best performance")
-};
-
-static const int vSyncListSize = 3;
-
-static const char *const vSyncList[] =
-{
- // TRANSLATORS: vsync type
- N_("default"),
- // TRANSLATORS: vsync type
- N_("off"),
- // TRANSLATORS: vsync type
- N_("on")
-};
-
-Setup_Visual::Setup_Visual(const Widget2 *const widget) :
- SetupTabScroll(widget),
- mSpeachList(new NamesModel),
- mAmbientFxList(new NamesModel),
- mParticleList(new SetupItemNames),
- mParticleTypeList(new NamesModel),
- mVSyncList(new NamesModel),
- mScaleList(new NamesModel)
-{
- // TRANSLATORS: settings tab name
- setName(_("Visual"));
- // Do the layout
- LayoutHelper h(this);
- ContainerPlacer place = h.getPlacer(0, 0);
- place(0, 0, mScroll, 10, 10);
-
- mPreferredFirstItemSize = 150;
-
- // TRANSLATORS: settings option
- new SetupItemLabel(_("Scale"), "", this);
-
- for (int f = 1; f <= 7; f ++)
- {
- // TRANSLATORS: particle details
- mScaleList->add(toString(f) + "x");
- }
- // TRANSLATORS: settings option
- new SetupItemSliderInt(_("Scale"), "",
- "scale", this, "scaleEvent", mScaleList, 1);
-
- // TRANSLATORS: settings option
- new SetupItemLabel(_("Notifications"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show pickup notifications in chat"), "",
- "showpickupchat", this, "showpickupchatEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show pickup notifications as particle effects"),
- "", "showpickupparticle", this, "showpickupparticleEvent");
-
- // TRANSLATORS: settings option
- new SetupItemLabel(_("Effects"), "", this);
-
-#ifndef ANDROID
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Grab mouse and keyboard input"),
- "", "grabinput", this, "grabinputEvent");
-#endif // ANDROID
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Blurring textures (OpenGL)"),
- "", "blur", this, "blurEvent");
-
- // TRANSLATORS: settings option
- new SetupItemSlider(_("Gui opacity"), "", "guialpha",
- this, "guialphaEvent", 0.1, 1.01, 0.1, 150,
- OnTheFly_true,
- MainConfig_true);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable gui opacity"),
- "", "enableGuiOpacity", this, "enableGuiOpacityEvent");
-
- mSpeachList->fillFromArray(&speachList[0], speachListSize);
- // TRANSLATORS: settings option
- new SetupItemDropDown(_("Overhead text"), "", "speech", this,
- "speechEvent", mSpeachList, 200);
-
- mAmbientFxList->fillFromArray(&ambientFxList[0], ambientFxListSize);
- // TRANSLATORS: settings option
- new SetupItemDropDown(_("Ambient FX"), "", "OverlayDetail", this,
- "OverlayDetailEvent", mAmbientFxList, 100);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show particle effects"), "",
- "particleeffects", this, "particleeffectsEvent");
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Show particle effects from maps"), "",
- "mapparticleeffects", this, "mapparticleeffectsEvent");
-
- // TRANSLATORS: particle details
- mParticleList->push_back(_("low"));
- // TRANSLATORS: particle details
- mParticleList->push_back(_("medium"));
- // TRANSLATORS: particle details
- mParticleList->push_back(_("high"));
- // TRANSLATORS: particle details
- mParticleList->push_back(_("max"));
- // TRANSLATORS: settings option
- (new SetupItemSlider2(_("Particle detail"), "", "particleEmitterSkip",
- this, "particleEmitterSkipEvent", 0, 3, 1, mParticleList,
- OnTheFly_true,
- MainConfig_true,
- DoNotAlign_false))->setInvertValue(3);
-
- mParticleTypeList->fillFromArray(&particleTypeList[0],
- particleTypeListSize);
- // TRANSLATORS: settings option
- new SetupItemDropDown(_("Particle physics"), "", "particleFastPhysics",
- this, "particleFastPhysicsEvent", mParticleTypeList, 200);
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Gamma"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Enable gamma control"),
- "", "enableGamma", this, "enableGammaEvent");
-
- // TRANSLATORS: settings option
- new SetupItemSlider(_("Gamma"), "", "gamma",
- this, "gammeEvent", 1, 20, 1, 350,
- OnTheFly_true,
- MainConfig_true);
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Other"), "", this);
-
- mVSyncList->fillFromArray(&vSyncList[0], vSyncListSize);
- // TRANSLATORS: settings option
- new SetupItemDropDown(_("Vsync"), "", "vsync", this,
- "vsyncEvent", mVSyncList, 100);
-
-#if defined(WIN32) || defined(__APPLE__)
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Center game window"),
- "", "centerwindow", this, "centerwindowEvent");
-#endif // defined(WIN32) || defined(__APPLE__)
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Allow screensaver to run"),
- "", "allowscreensaver", this, "allowscreensaverEvent");
-
-
- // TRANSLATORS: settings group
- new SetupItemLabel(_("Screenshots"), "", this);
-
- // TRANSLATORS: settings option
- new SetupItemCheckBox(_("Add water mark into screenshots"),
- "", "addwatermark", this, "addwatermarkEvent");
-
- setDimension(Rect(0, 0, 550, 350));
-}
-
-Setup_Visual::~Setup_Visual()
-{
- delete2(mSpeachList);
- delete2(mAmbientFxList);
- delete2(mParticleList);
- delete2(mParticleTypeList);
- delete2(mVSyncList);
- delete2(mScaleList);
-}
-
-void Setup_Visual::apply()
-{
- SetupTabScroll::apply();
- WindowManager::applyGrabMode();
-#ifndef WIN32
- WindowManager::applyScale();
-#endif // WIN32
-}
diff --git a/src/gui/widgets/tabs/setup_visual.h b/src/gui/widgets/tabs/setup_visual.h
deleted file mode 100644
index 08d1c7848..000000000
--- a/src/gui/widgets/tabs/setup_visual.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009-2010 Andrei Karas
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUP_VISUAL_H
-#define GUI_WIDGETS_TABS_SETUP_VISUAL_H
-
-#include "gui/widgets/setupitem.h"
-
-#include "gui/widgets/tabs/setuptabscroll.h"
-
-class NamesModel;
-
-class Setup_Visual final : public SetupTabScroll
-{
- public:
- explicit Setup_Visual(const Widget2 *const widget);
-
- A_DELETE_COPY(Setup_Visual)
-
- ~Setup_Visual();
-
- void apply() override final;
-
- private:
- NamesModel *mSpeachList;
- NamesModel *mAmbientFxList;
- SetupItemNames *mParticleList;
- NamesModel *mParticleTypeList;
- NamesModel *mVSyncList;
- NamesModel *mScaleList;
-};
-
-#endif // GUI_WIDGETS_TABS_SETUP_VISUAL_H
diff --git a/src/gui/widgets/tabs/setuptab.cpp b/src/gui/widgets/tabs/setuptab.cpp
deleted file mode 100644
index d5f43b4b8..000000000
--- a/src/gui/widgets/tabs/setuptab.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setuptab.h"
-
-#include "debug.h"
-
-SetupTab::SetupTab(const Widget2 *const widget) :
- Container(widget),
- ActionListener(),
- WidgetListener(),
- mName()
-{
- setOpaque(Opaque_false);
- addWidgetListener(this);
- setSelectable(false);
-}
-
-void SetupTab::externalUpdated()
-{
-}
-
-void SetupTab::externalUnloaded()
-{
-}
diff --git a/src/gui/widgets/tabs/setuptab.h b/src/gui/widgets/tabs/setuptab.h
deleted file mode 100644
index 6b1082088..000000000
--- a/src/gui/widgets/tabs/setuptab.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUPTAB_H
-#define GUI_WIDGETS_TABS_SETUPTAB_H
-
-#include "gui/widgets/container.h"
-
-#include "listeners/actionlistener.h"
-#include "listeners/widgetlistener.h"
-
-#include "localconsts.h"
-
-/**
- * A container for the contents of a tab in the setup window.
- */
-class SetupTab notfinal : public Container,
- public ActionListener,
- public WidgetListener
-{
- public:
- A_DELETE_COPY(SetupTab)
-
- const std::string &getName() const noexcept2 A_WARN_UNUSED
- { return mName; }
-
- /**
- * Called when the Apply button is pressed in the setup window.
- */
- virtual void apply() = 0;
-
- /**
- * Called when the Cancel button is pressed in the setup window.
- */
- virtual void cancel() = 0;
-
- virtual void externalUpdated() A_CONST;
-
- virtual void externalUnloaded() A_CONST;
-
- protected:
- explicit SetupTab(const Widget2 *const widget);
-
- /**
- * Sets the name displayed on the tab. Should be set in the
- * constructor of a subclass.
- */
- void setName(const std::string &name) noexcept2
- { mName = name; }
-
- private:
- std::string mName;
-};
-
-#endif // GUI_WIDGETS_TABS_SETUPTAB_H
diff --git a/src/gui/widgets/tabs/setuptabscroll.cpp b/src/gui/widgets/tabs/setuptabscroll.cpp
deleted file mode 100644
index 0cb623687..000000000
--- a/src/gui/widgets/tabs/setuptabscroll.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tabs/setuptabscroll.h"
-
-#include "gui/widgets/scrollarea.h"
-#include "gui/widgets/setupitem.h"
-#include "gui/widgets/vertcontainer.h"
-
-#include "utils/delete2.h"
-
-#include "debug.h"
-
-SetupTabScroll::SetupTabScroll(const Widget2 *const widget) :
- SetupTab(widget),
- mContainer(new VertContainer(this, 25, false, 8)),
- mScroll(new ScrollArea(this, mContainer, Opaque_false)),
- mItems(),
- mAllItems(),
- mPreferredFirstItemSize(200)
-{
- mScroll->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER);
- mScroll->setVerticalScrollPolicy(ScrollArea::SHOW_AUTO);
- mScroll->setSelectable(false);
- mContainer->setSelectable(false);
-}
-
-SetupTabScroll::~SetupTabScroll()
-{
- mScroll = nullptr;
- delete2(mContainer);
- removeItems();
-}
-
-void SetupTabScroll::removeItems()
-{
- std::set<SetupItem*>::iterator it = mAllItems.begin();
- const std::set<SetupItem*>::iterator it_end = mAllItems.end();
- while (it != it_end)
- {
- delete *it;
- ++ it;
- }
- mAllItems.clear();
-
- mItems.clear();
-}
-
-void SetupTabScroll::clear()
-{
- removeItems();
- mContainer->removeControls();
- mContainer->clear();
-}
-
-void SetupTabScroll::addControl(SetupItem *const widget)
-{
- if (widget == nullptr)
- return;
- const std::string actionId = widget->getActionEventId();
- if (!actionId.empty())
- {
- const std::map<std::string, SetupItem*>::iterator iter
- = mItems.find(actionId);
- if (iter != mItems.end())
- {
- delete (*iter).second;
- mItems.erase(iter);
- }
- mItems[actionId] = widget;
- }
- mAllItems.insert(widget);
-}
-
-void SetupTabScroll::addControl(SetupItem *const widget,
- const std::string &event)
-{
- const std::map<std::string, SetupItem*>::iterator iter
- = mItems.find(event);
- if (iter != mItems.end())
- {
- delete (*iter).second;
- mItems.erase(iter);
- }
- mItems[event] = widget;
- mAllItems.insert(widget);
-}
-
-void SetupTabScroll::apply()
-{
- for (std::map<std::string, SetupItem*>::const_iterator
- iter = mItems.begin(), iter_end = mItems.end();
- iter != iter_end; ++ iter)
- {
- if ((*iter).second != nullptr)
- (*iter).second->apply((*iter).first);
- }
-}
-
-void SetupTabScroll::cancel()
-{
- for (std::map<std::string, SetupItem*>::const_iterator
- iter = mItems.begin(), iter_end = mItems.end();
- iter != iter_end; ++ iter)
- {
- if ((*iter).second != nullptr)
- (*iter).second->cancel((*iter).first);
- }
-}
-
-void SetupTabScroll::externalUpdated()
-{
- for (std::map<std::string, SetupItem*>::const_iterator
- iter = mItems.begin(), iter_end = mItems.end();
- iter != iter_end; ++ iter)
- {
- SetupItem *const widget = (*iter).second;
- if ((widget != nullptr) && widget->isMainConfig() == MainConfig_false)
- widget->externalUpdated((*iter).first);
- }
-}
-
-void SetupTabScroll::externalUnloaded()
-{
- for (std::map<std::string, SetupItem*>::const_iterator
- iter = mItems.begin(), iter_end = mItems.end();
- iter != iter_end; ++ iter)
- {
- SetupItem *const widget = (*iter).second;
- if ((widget != nullptr) && widget->isMainConfig() == MainConfig_false)
- widget->externalUnloaded((*iter).first);
- }
-}
-
-void SetupTabScroll::widgetResized(const Event &event A_UNUSED)
-{
- mScroll->setWidth(getWidth() - 12);
- mScroll->setHeight(getHeight() - 12 - 12);
-}
-
-void SetupTabScroll::reread(const std::string &name)
-{
- SetupItem *const item = mItems[name + "Event"];
- if (item != nullptr)
- item->rereadValue();
-}
diff --git a/src/gui/widgets/tabs/setuptabscroll.h b/src/gui/widgets/tabs/setuptabscroll.h
deleted file mode 100644
index 655b98c85..000000000
--- a/src/gui/widgets/tabs/setuptabscroll.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SETUPTABSCROLL_H
-#define GUI_WIDGETS_TABS_SETUPTABSCROLL_H
-
-#include "gui/widgets/tabs/setuptab.h"
-
-#include "localconsts.h"
-
-class SetupItem;
-class ScrollArea;
-class VertContainer;
-
-class SetupTabScroll notfinal : public SetupTab
-{
- public:
- explicit SetupTabScroll(const Widget2 *const widget);
-
- A_DELETE_COPY(SetupTabScroll)
-
- virtual ~SetupTabScroll();
-
- void addControl(SetupItem *const widget);
-
- void addControl(SetupItem *const widget, const std::string &event);
-
- VertContainer *getContainer() const noexcept2 A_WARN_UNUSED
- { return mContainer; }
-
- void apply() override;
-
- void cancel() override final;
-
- void externalUpdated() override;
-
- void externalUnloaded() override;
-
- void action(const ActionEvent &event A_UNUSED) override final
- { }
-
- int getPreferredFirstItemSize() const noexcept2 A_WARN_UNUSED
- { return mPreferredFirstItemSize; }
-
- void widgetResized(const Event &event) override final;
-
- void reread(const std::string &name);
-
- void clear() override final;
-
- const std::set<SetupItem*> &getAllItems() const noexcept2
- { return mAllItems; }
-
- protected:
- void removeItems();
-
- VertContainer *mContainer;
- ScrollArea *mScroll;
- std::map<std::string, SetupItem*> mItems;
- std::set<SetupItem*> mAllItems;
- int mPreferredFirstItemSize;
-};
-
-#endif // GUI_WIDGETS_TABS_SETUPTABSCROLL_H
diff --git a/src/gui/widgets/tabs/shortcuttab.h b/src/gui/widgets/tabs/shortcuttab.h
deleted file mode 100644
index 61652777f..000000000
--- a/src/gui/widgets/tabs/shortcuttab.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SHORTCUTTAB_H
-#define GUI_WIDGETS_TABS_SHORTCUTTAB_H
-
-#include "gui/widgets/tabs/tab.h"
-
-#include "localconsts.h"
-
-class ShortcutContainer;
-
-class ShortcutTab final : public Tab
-{
- public:
- ShortcutTab(const Widget2 *const widget,
- const std::string &name,
- ShortcutContainer *const content) :
- Tab(widget),
- mContent(content)
- {
- setCaption(name);
- }
-
- A_DELETE_COPY(ShortcutTab)
-
- ShortcutContainer* mContent;
-};
-
-#endif // GUI_WIDGETS_TABS_SHORTCUTTAB_H
diff --git a/src/gui/widgets/tabs/skilltab.h b/src/gui/widgets/tabs/skilltab.h
deleted file mode 100644
index 9086a4d0c..000000000
--- a/src/gui/widgets/tabs/skilltab.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SKILLTAB_H
-#define GUI_WIDGETS_TABS_SKILLTAB_H
-
-#include "gui/windows/skilldialog.h"
-
-#include "gui/widgets/skilllistbox.h"
-#include "gui/widgets/skillrectanglelistbox.h"
-
-#include "gui/widgets/tabs/tab.h"
-
-#include "localconsts.h"
-
-class SkillTab final : public Tab
-{
- public:
- SkillTab(const Widget2 *const widget,
- const std::string &name,
- SkillListBox *const listBox) :
- Tab(widget),
- mListBox(listBox),
- mRectangleListBox(nullptr)
- {
- setCaption(name);
- }
-
- SkillTab(const Widget2 *const widget,
- const std::string &name,
- SkillRectangleListBox *const listBox) :
- Tab(widget),
- mListBox(nullptr),
- mRectangleListBox(listBox)
- {
- setCaption(name);
- }
-
- A_DELETE_COPY(SkillTab)
-
- ~SkillTab()
- {
- delete2(mListBox)
- delete2(mRectangleListBox)
- }
-
- SkillInfo *getSelectedInfo() const
- {
- if (mListBox != nullptr)
- return mListBox->getSelectedInfo();
- else if (mRectangleListBox != nullptr)
- return mRectangleListBox->getSelectedInfo();
- else
- return nullptr;
- }
-
- protected:
- void setCurrent() override
- {
- if (skillDialog != nullptr)
- skillDialog->updateTabSelection();
- }
-
- private:
- SkillListBox *mListBox;
- SkillRectangleListBox *mRectangleListBox;
-};
-
-#endif // GUI_WIDGETS_TABS_SKILLTAB_H
diff --git a/src/gui/widgets/tabs/socialattacktab.h b/src/gui/widgets/tabs/socialattacktab.h
deleted file mode 100644
index e876a60ae..000000000
--- a/src/gui/widgets/tabs/socialattacktab.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SOCIALATTACKTAB_H
-#define GUI_WIDGETS_TABS_SOCIALATTACKTAB_H
-
-#include "gui/widgets/tabs/socialtab.h"
-
-#include "being/localplayer.h"
-
-#include "gui/models/beingslistmodel.h"
-
-#include "gui/widgets/tabs/socialtabbase.h"
-
-#include "utils/delete2.h"
-#include "utils/gettext.h"
-
-#include "localconsts.h"
-
-class SocialAttackTab final : public SocialTab
-{
- public:
- SocialAttackTab(const Widget2 *const widget,
- const Opaque showBackground) :
- SocialTab(widget),
- mBeings(new BeingsListModel)
- {
- createControls(mBeings, showBackground);
-
- // TRANSLATORS: Attack filter tab name in social window.
- // TRANSLATORS: Should be small
- setCaption(_("Atk"));
- mMenuAction = "attack";
- }
-
- A_DELETE_COPY(SocialAttackTab)
-
- ~SocialAttackTab()
- {
- delete2(mList)
- delete2(mScroll)
- delete2(mBeings)
- }
-
- void updateList() override final
- {
- updateAtkListStart();
- // TRANSLATORS: mobs group name in social window
- addAvatars(PriorityAttackMob, _("Priority mobs"), PRIORITY);
- // TRANSLATORS: mobs group name in social window
- addAvatars(AttackMob, _("Attack mobs"), ATTACK);
- // TRANSLATORS: mobs group name in social window
- addAvatars(IgnoreAttackMob, _("Ignore mobs"), IGNORE_);
- }
-
- private:
- BeingsListModel *mBeings;
-};
-
-#endif // GUI_WIDGETS_TABS_SOCIALATTACKTAB_H
diff --git a/src/gui/widgets/tabs/socialfriendsfunctor.h b/src/gui/widgets/tabs/socialfriendsfunctor.h
deleted file mode 100644
index e68647a77..000000000
--- a/src/gui/widgets/tabs/socialfriendsfunctor.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SOCIALFRIENDSFUNCTOR_H
-#define GUI_WIDGETS_TABS_SOCIALFRIENDSFUNCTOR_H
-
-#include "avatar.h"
-
-#include "utils/stringutils.h"
-
-#include "localconsts.h"
-
-class SortFriendsFunctor final
-{
- public:
- A_DEFAULT_COPY(SortFriendsFunctor)
-
- bool operator() (const Avatar *const m1,
- const Avatar *const m2) const
- {
- if ((m1 == nullptr) || (m2 == nullptr))
- return false;
-
- if (m1->getOnline() != m2->getOnline())
- {
- return static_cast<int>(m1->getOnline()) >
- static_cast<int>(m2->getOnline());
- }
-
- if (m1->getName() != m2->getName())
- {
- std::string s1 = m1->getName();
- std::string s2 = m2->getName();
- toLower(s1);
- toLower(s2);
- return s1 < s2;
- }
- return false;
- }
-};
-
-#endif // GUI_WIDGETS_TABS_SOCIALFRIENDSFUNCTOR_H
diff --git a/src/gui/widgets/tabs/socialfriendstab.h b/src/gui/widgets/tabs/socialfriendstab.h
deleted file mode 100644
index d1cd942cd..000000000
--- a/src/gui/widgets/tabs/socialfriendstab.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SOCIALFRIENDSTAB_H
-#define GUI_WIDGETS_TABS_SOCIALFRIENDSTAB_H
-
-#include "gui/widgets/tabs/socialtab.h"
-
-#include "actormanager.h"
-
-#include "being/playerrelations.h"
-
-#include "gui/models/beingslistmodel.h"
-
-#include "gui/windows/whoisonline.h"
-
-#include "gui/widgets/tabs/socialfriendsfunctor.h"
-
-#include "utils/delete2.h"
-#include "utils/foreach.h"
-#include "utils/gettext.h"
-
-#include "localconsts.h"
-
-class SocialFriendsTab final : public SocialTab
-{
- public:
- SocialFriendsTab(const Widget2 *const widget,
- const std::string &name,
- const Opaque showBackground) :
- SocialTab(widget),
- mBeings(new BeingsListModel),
- mFriendSorter()
- {
- createControls(mBeings, showBackground);
-
- getPlayersAvatars();
- setCaption(name);
- mMenuAction = "friends";
- }
-
- A_DELETE_COPY(SocialFriendsTab)
-
- ~SocialFriendsTab()
- {
- delete2(mList)
- delete2(mScroll)
- delete2(mBeings)
- }
-
- void updateList() override final
- {
- getPlayersAvatars();
- }
-
- void getPlayersAvatars()
- {
- if (actorManager == nullptr)
- return;
-
- STD_VECTOR<Avatar*> *const avatars = mBeings->getMembers();
-
- STD_VECTOR<Avatar*>::iterator ia = avatars->begin();
- while (ia != avatars->end())
- {
- delete *ia;
- ++ ia;
- }
- avatars->clear();
-
- const StringVect *const players
- = playerRelations.getPlayersByRelation(Relation::FRIEND);
-
- const std::set<std::string> &players2
- = whoIsOnline->getOnlineNicks();
-
- if (players == nullptr)
- return;
-
- int online = 0;
- int total = 0;
-
- FOR_EACHP (StringVectCIter, it, players)
- {
- Avatar *const ava = new Avatar(*it);
- if (actorManager->findBeingByName(*it, ActorType::Player) !=
- nullptr || players2.find(*it) != players2.end())
- {
- ava->setOnline(true);
- online ++;
- }
- total ++;
- avatars->push_back(ava);
- }
- std::sort(avatars->begin(), avatars->end(), mFriendSorter);
- delete players;
-
- // TRANSLATORS: social window label
- mCounterString = strprintf(_("Friends: %u/%u"),
- CAST_U32(online),
- CAST_U32(total));
- updateCounter();
- }
-
- private:
- BeingsListModel *mBeings;
- SortFriendsFunctor mFriendSorter;
-};
-
-#endif // GUI_WIDGETS_TABS_SOCIALFRIENDSTAB_H
diff --git a/src/gui/widgets/tabs/socialguildtab.h b/src/gui/widgets/tabs/socialguildtab.h
deleted file mode 100644
index 8652a54fe..000000000
--- a/src/gui/widgets/tabs/socialguildtab.h
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SOCIALGUILDTAB_H
-#define GUI_WIDGETS_TABS_SOCIALGUILDTAB_H
-
-#include "gui/widgets/tabs/socialtab.h"
-
-#include "being/localplayer.h"
-
-#include "utils/delete2.h"
-#include "utils/foreach.h"
-#include "utils/gettext.h"
-#include "utils/stringutils.h"
-
-#include "net/guildhandler.h"
-
-#include "localconsts.h"
-
-class SocialGuildTab final : public SocialTab,
- public ActionListener
-{
- public:
- SocialGuildTab(const Widget2 *const widget,
- Guild *const guild,
- const Opaque showBackground) :
- SocialTab(widget),
- ActionListener(),
- mGuild(guild)
- {
- // TRANSLATORS: tab in social window
- setCaption(_("Guild"));
-
- setTabColor(&getThemeColor(ThemeColorId::GUILD_SOCIAL_TAB),
- &getThemeColor(ThemeColorId::GUILD_SOCIAL_TAB_OUTLINE));
- setHighlightedTabColor(&getThemeColor(
- ThemeColorId::GUILD_SOCIAL_TAB_HIGHLIGHTED), &getThemeColor(
- ThemeColorId::GUILD_SOCIAL_TAB_HIGHLIGHTED_OUTLINE));
- setSelectedTabColor(&getThemeColor(
- ThemeColorId::GUILD_SOCIAL_TAB_SELECTED),
- &getThemeColor(
- ThemeColorId::GUILD_SOCIAL_TAB_SELECTED_OUTLINE));
-
- createControls(guild, showBackground);
- mMenuAction = "guild";
- }
-
- A_DELETE_COPY(SocialGuildTab)
-
- ~SocialGuildTab()
- {
- delete2(mList)
- delete2(mScroll)
- }
-
- void action(const ActionEvent &event) override final
- {
- const std::string &eventId = event.getId();
- if (eventId == "do invite")
- {
- const std::string name = mInviteDialog->getText();
- guildHandler->invite(name);
-
- if (localChatTab != nullptr)
- {
- localChatTab->chatLog(strprintf(
- // TRANSLATORS: chat message
- _("Invited user %s to guild %s."),
- name.c_str(),
- mGuild->getName().c_str()),
- ChatMsgType::BY_SERVER);
- }
- mInviteDialog = nullptr;
- }
- else if (eventId == "~do invite")
- {
- mInviteDialog = nullptr;
- }
- else if (eventId == "yes")
- {
- guildHandler->leave(mGuild->getId());
- if (localChatTab != nullptr)
- {
- localChatTab->chatLog(strprintf(
- // TRANSLATORS: chat message
- _("Guild %s quit requested."),
- mGuild->getName().c_str()),
- ChatMsgType::BY_SERVER);
- }
- mConfirmDialog = nullptr;
- }
- else if (eventId == "~yes")
- {
- mConfirmDialog = nullptr;
- }
- }
-
- void invite() override final
- {
- CREATEWIDGETV(mInviteDialog, TextDialog,
- // TRANSLATORS: guild invite message
- _("Member Invite to Guild"),
- // TRANSLATORS: guild invite message
- strprintf(_("Who would you like to invite to guild %s?"),
- mGuild->getName().c_str()), socialWindow);
- mInviteDialog->setActionEventId("do invite");
- mInviteDialog->addActionListener(this);
- }
-
- void leave() override final
- {
- CREATEWIDGETV(mConfirmDialog, ConfirmDialog,
- // TRANSLATORS: guild leave message
- _("Leave Guild?"),
- // TRANSLATORS: guild leave message
- strprintf(_("Are you sure you want to leave guild %s?"),
- mGuild->getName().c_str()), SOUND_REQUEST, socialWindow);
- mConfirmDialog->addActionListener(this);
- }
-
- void buildCounter(const int online0, const int total0) override final
- {
- if ((online0 != 0) || (total0 != 0))
- {
- // TRANSLATORS: social window label
- mCounterString = strprintf(_("Members: %u/%u"),
- CAST_U32(online0),
- CAST_U32(total0));
- }
- else
- {
- if (localPlayer == nullptr)
- return;
-
- const Guild *const guild = localPlayer->getGuild();
- if (guild == nullptr)
- return;
-
- const Guild::MemberList *const members = guild->getMembers();
- int online = 0;
- int total = 0;
- FOR_EACHP (Guild::MemberList::const_iterator, it, members)
- {
- if ((*it)->getOnline())
- online ++;
- total ++;
- }
-
- // TRANSLATORS: social window label
- mCounterString = strprintf(_("Players: %u/%u"),
- CAST_U32(online),
- CAST_U32(total));
- }
- updateCounter();
- }
-
- private:
- Guild *mGuild;
-};
-
-#endif // GUI_WIDGETS_TABS_SOCIALGUILDTAB_H
diff --git a/src/gui/widgets/tabs/socialguildtab2.h b/src/gui/widgets/tabs/socialguildtab2.h
deleted file mode 100644
index ff8544232..000000000
--- a/src/gui/widgets/tabs/socialguildtab2.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SOCIALGUILDTAB2_H
-#define GUI_WIDGETS_TABS_SOCIALGUILDTAB2_H
-
-#include "gui/widgets/tabs/socialtab.h"
-
-#include "guild.h"
-
-#include "being/localplayer.h"
-
-#include "utils/delete2.h"
-#include "utils/foreach.h"
-#include "utils/gettext.h"
-#include "utils/stringutils.h"
-
-#include "localconsts.h"
-
-class SocialGuildTab2 final : public SocialTab,
- public ActionListener
-{
- public:
- SocialGuildTab2(const Widget2 *const widget,
- Guild *const guild,
- const Opaque showBackground) :
- SocialTab(widget),
- ActionListener()
- {
- // TRANSLATORS: tab in social window
- setCaption(_("Guild"));
-
- setTabColor(&getThemeColor(ThemeColorId::GUILD_SOCIAL_TAB),
- &getThemeColor(ThemeColorId::GUILD_SOCIAL_TAB_OUTLINE));
- setHighlightedTabColor(&getThemeColor(
- ThemeColorId::GUILD_SOCIAL_TAB_HIGHLIGHTED),
- &getThemeColor(
- ThemeColorId::GUILD_SOCIAL_TAB_HIGHLIGHTED_OUTLINE));
- setSelectedTabColor(&getThemeColor(
- ThemeColorId::GUILD_SOCIAL_TAB_SELECTED),
- &getThemeColor(
- ThemeColorId::GUILD_SOCIAL_TAB_SELECTED_OUTLINE));
-
- createControls(guild, showBackground);
- mMenuAction = "guild";
- }
-
- A_DELETE_COPY(SocialGuildTab2)
-
- ~SocialGuildTab2()
- {
- delete2(mList)
- delete2(mScroll)
- }
-
- void action(const ActionEvent &event A_UNUSED) override final
- {
- }
-
- void buildCounter(const int online0 A_UNUSED,
- const int total0 A_UNUSED) override final
- {
- if (localPlayer == nullptr)
- return;
-
- const Guild *const guild = localPlayer->getGuild();
- if (guild == nullptr)
- return;
-
- const Guild::MemberList *const members = guild->getMembers();
- int online = 0;
- int total = 0;
- FOR_EACHP (Guild::MemberList::const_iterator, it, members)
- {
- if ((*it)->getOnline())
- online ++;
- total ++;
- }
-
- // TRANSLATORS: social window label
- mCounterString = strprintf(_("Players: %u/%u"),
- CAST_U32(online),
- CAST_U32(total));
- updateCounter();
- }
-};
-
-#endif // GUI_WIDGETS_TABS_SOCIALGUILDTAB2_H
diff --git a/src/gui/widgets/tabs/socialnavigationtab.h b/src/gui/widgets/tabs/socialnavigationtab.h
deleted file mode 100644
index 1b049f055..000000000
--- a/src/gui/widgets/tabs/socialnavigationtab.h
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SOCIALNAVIGATIONTAB_H
-#define GUI_WIDGETS_TABS_SOCIALNAVIGATIONTAB_H
-
-#include "gui/widgets/tabs/socialtab.h"
-
-#include "actormanager.h"
-#include "configuration.h"
-
-#include "gui/models/beingslistmodel.h"
-
-#include "gui/windows/outfitwindow.h"
-
-#include "being/localplayer.h"
-
-#include "input/keyboardconfig.h"
-
-#include "utils/delete2.h"
-#include "utils/gettext.h"
-
-#include "resources/map/map.h"
-#include "resources/map/mapitem.h"
-#include "resources/map/speciallayer.h"
-
-#include "localconsts.h"
-
-class Avatar;
-
-class SocialNavigationTab final : public SocialTab
-{
- public:
- SocialNavigationTab(const Widget2 *const widget,
- const Opaque showBackground) :
- SocialTab(widget),
- mBeings(new BeingsListModel)
- {
- createControls(mBeings, showBackground);
-
- // TRANSLATORS: Navigation tab name in social window.
- // TRANSLATORS: Should be small
- setCaption(_("Nav"));
- mMenuAction = "navigation";
- }
-
- A_DELETE_COPY(SocialNavigationTab)
-
- ~SocialNavigationTab()
- {
- delete2(mList)
- delete2(mScroll)
- delete2(mBeings)
- }
-
- void updateList() override final
- {
- if ((socialWindow == nullptr) || (localPlayer == nullptr))
- return;
-
- const Map *const map = socialWindow->getMap();
- if ((map == nullptr) || map->empty())
- return;
-
- if (socialWindow->getProcessedPortals())
- return;
-
- STD_VECTOR<Avatar*> *const avatars = mBeings->getMembers();
- STD_VECTOR<MapItem*> portals = map->getPortals();
-
- STD_VECTOR<MapItem*>::const_iterator i = portals.begin();
- const SpecialLayer *const specialLayer = map->getSpecialLayer();
-
- STD_VECTOR<Avatar*>::iterator ia = avatars->begin();
-
- while (ia != avatars->end())
- {
- delete *ia;
- ++ ia;
- }
-
- avatars->clear();
-
- int online = 0;
- int total = 0;
-
- int idx = 0;
- while (i != portals.end())
- {
- MapItem *portal = *i;
- if (portal == nullptr)
- continue;
-
- const int x = portal->getX();
- const int y = portal->getY();
-
- const std::string name = strprintf("%s [%d %d]",
- portal->getComment().c_str(), x, y);
-
- Avatar *const ava = new Avatar(name);
- if (localPlayer != nullptr)
- ava->setOnline(localPlayer->isReachable(x, y, true));
- else
- ava->setOnline(false);
- ava->setLevel(-1);
- ava->setType(portal->getType());
- ava->setX(x);
- ava->setY(y);
- avatars->push_back(ava);
-
- if (ava->getOnline())
- online ++;
- total ++;
-
- if (config.getBoolValue("drawHotKeys")
- && idx < 80 && (outfitWindow != nullptr))
- {
- Being *const being = actorManager
- ->findPortalByTile(x, y);
- if (being != nullptr)
- {
- being->setName(KeyboardConfig::getKeyShortString(
- OutfitWindow::keyName(idx)));
- }
-
- if (specialLayer != nullptr)
- {
- portal = specialLayer->getTile(
- ava->getX(), ava->getY());
- if (portal != nullptr)
- {
- portal->setName(KeyboardConfig::getKeyShortString(
- OutfitWindow::keyName(idx)));
- }
- }
- }
-
- ++i;
- idx ++;
- }
- if (socialWindow != nullptr)
- socialWindow->setProcessedPortals(true);
-
- // TRANSLATORS: social window label
- mCounterString = strprintf(_("Portals: %u/%u"),
- CAST_U32(online),
- CAST_U32(total));
- updateCounter();
- }
-
- void selectIndex(const unsigned num) override final
- {
- if (localPlayer == nullptr)
- return;
-
- STD_VECTOR<Avatar*> *const avatars = mBeings->getMembers();
- if (avatars->size() <= CAST_SIZE(num))
- return;
-
- const Avatar *const ava = avatars->at(num);
- if ((ava != nullptr) && (localPlayer != nullptr))
- localPlayer->navigateTo(ava->getX(), ava->getY());
- }
-
- void updateNames()
- {
- if (socialWindow == nullptr)
- return;
-
- STD_VECTOR<Avatar*> *const avatars = mBeings->getMembers();
-
- const Map *const map = socialWindow->getMap();
- if (map == nullptr)
- return;
-
- STD_VECTOR<Avatar*>::const_iterator i = avatars->begin();
- const STD_VECTOR<Avatar*>::const_iterator i_end = avatars->end();
- while (i != i_end)
- {
- Avatar *const ava = *i;
- if (ava == nullptr)
- break;
-
- const MapItem *const item = map->findPortalXY(
- ava->getX(), ava->getY());
- if (item != nullptr)
- {
- const std::string name = strprintf("%s [%d %d]",
- item->getComment().c_str(),
- item->getX(), item->getY());
- ava->setName(name);
- ava->setOriginalName(name);
- }
-
- ++i;
- }
- }
-
- int getPortalIndex(const int x, const int y)
- {
- if (socialWindow == nullptr)
- return -1;
-
- STD_VECTOR<Avatar*> *const avatars = mBeings->getMembers();
- const Map *const map = socialWindow->getMap();
- if (map == nullptr)
- return -1;
-
- STD_VECTOR<Avatar*>::const_iterator i = avatars->begin();
- const STD_VECTOR<Avatar*>::const_iterator i_end = avatars->end();
- unsigned num = 0;
- while (i != i_end)
- {
- const Avatar *const ava = *i;
- if (ava == nullptr)
- break;
-
- if (ava->getX() == x && ava->getY() == y)
- return num;
-
- ++i;
- num ++;
- }
- return -1;
- }
-
- void addPortal(const int x, const int y)
- {
- if ((socialWindow == nullptr) || (localPlayer == nullptr))
- return;
-
- const Map *const map = socialWindow->getMap();
- if (map == nullptr)
- return;
-
- STD_VECTOR<Avatar*> *const avatars = mBeings->getMembers();
- const MapItem *const portal = map->findPortalXY(x, y);
- if (portal == nullptr)
- return;
-
- const std::string name = strprintf("%s [%d %d]",
- portal->getComment().c_str(), x, y);
-
- Avatar *const ava = new Avatar(name);
- if (localPlayer != nullptr)
- ava->setOnline(localPlayer->isReachable(x, y, true));
- else
- ava->setOnline(false);
- ava->setLevel(-1);
- ava->setType(portal->getType());
- ava->setX(x);
- ava->setY(y);
- avatars->push_back(ava);
- }
-
- void removePortal(const int x, const int y)
- {
- if ((socialWindow == nullptr) || (localPlayer == nullptr))
- return;
-
- const Map *const map = socialWindow->getMap();
- if (map == nullptr)
- return;
-
- STD_VECTOR<Avatar*> *const avatars = mBeings->getMembers();
- STD_VECTOR<Avatar*>::iterator i = avatars->begin();
- const STD_VECTOR<Avatar*>::iterator i_end = avatars->end();
-
- while (i != i_end)
- {
- Avatar *ava = (*i);
-
- if (ava == nullptr)
- break;
-
- if (ava->getX() == x && ava->getY() == y)
- {
- delete ava;
- avatars->erase(i);
- return;
- }
-
- ++ i;
- }
- }
-
- private:
- BeingsListModel *mBeings;
-};
-
-#endif // GUI_WIDGETS_TABS_SOCIALNAVIGATIONTAB_H
diff --git a/src/gui/widgets/tabs/socialpartytab.h b/src/gui/widgets/tabs/socialpartytab.h
deleted file mode 100644
index d7f22c1f7..000000000
--- a/src/gui/widgets/tabs/socialpartytab.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SOCIALPARTYTAB_H
-#define GUI_WIDGETS_TABS_SOCIALPARTYTAB_H
-
-#include "gui/widgets/tabs/socialtab.h"
-
-#include "party.h"
-
-#include "being/localplayer.h"
-
-#include "net/partyhandler.h"
-
-#include "utils/delete2.h"
-#include "utils/foreach.h"
-#include "utils/gettext.h"
-#include "utils/stringutils.h"
-
-#include "localconsts.h"
-
-class SocialPartyTab final : public SocialTab,
- public ActionListener
-{
- public:
- SocialPartyTab(const Widget2 *const widget,
- Party *const party,
- const Opaque showBackground) :
- SocialTab(widget),
- ActionListener(),
- mParty(party)
- {
- // TRANSLATORS: tab in social window
- setCaption(_("Party"));
-
- setTabColor(&getThemeColor(ThemeColorId::PARTY_SOCIAL_TAB),
- &getThemeColor(ThemeColorId::PARTY_SOCIAL_TAB_OUTLINE));
- setHighlightedTabColor(&getThemeColor(
- ThemeColorId::PARTY_SOCIAL_TAB_HIGHLIGHTED), &getThemeColor(
- ThemeColorId::PARTY_SOCIAL_TAB_HIGHLIGHTED_OUTLINE));
- setSelectedTabColor(&getThemeColor(
- ThemeColorId::PARTY_SOCIAL_TAB_SELECTED),
- &getThemeColor(
- ThemeColorId::PARTY_SOCIAL_TAB_SELECTED_OUTLINE));
-
- createControls(party, showBackground);
- mMenuAction = "party";
- }
-
- A_DELETE_COPY(SocialPartyTab)
-
- ~SocialPartyTab()
- {
- delete2(mList)
- delete2(mScroll)
- }
-
- void action(const ActionEvent &event) override final
- {
- const std::string &eventId = event.getId();
- if (eventId == "do invite")
- {
- const std::string name = mInviteDialog->getText();
- partyHandler->invite(name);
-
- if (localChatTab != nullptr)
- {
- localChatTab->chatLog(strprintf(
- // TRANSLATORS: chat message
- _("Invited user %s to party."),
- name.c_str()),
- ChatMsgType::BY_SERVER);
- }
- mInviteDialog = nullptr;
- }
- else if (eventId == "~do invite")
- {
- mInviteDialog = nullptr;
- }
- else if (eventId == "yes")
- {
- partyHandler->leave();
- if (localChatTab != nullptr)
- {
- localChatTab->chatLog(strprintf(
- // TRANSLATORS: tab in social window
- _("Party %s quit requested."),
- mParty->getName().c_str()),
- ChatMsgType::BY_SERVER);
- }
- mConfirmDialog = nullptr;
- }
- else if (eventId == "~yes")
- {
- mConfirmDialog = nullptr;
- }
- }
-
- void invite() override final
- {
- CREATEWIDGETV(mInviteDialog, TextDialog,
- // TRANSLATORS: party invite message
- _("Member Invite to Party"),
- // TRANSLATORS: party invite message
- strprintf(_("Who would you like to invite to party %s?"),
- mParty->getName().c_str()), socialWindow);
- mInviteDialog->setActionEventId("do invite");
- mInviteDialog->addActionListener(this);
- }
-
- void leave() override final
- {
- CREATEWIDGETV(mConfirmDialog, ConfirmDialog,
- // TRANSLATORS: party leave message
- _("Leave Party?"),
- // TRANSLATORS: party leave message
- strprintf(_("Are you sure you want to leave party %s?"),
- mParty->getName().c_str()), SOUND_REQUEST, socialWindow);
- mConfirmDialog->addActionListener(this);
- }
-
- void buildCounter(const int online0 A_UNUSED,
- const int total0 A_UNUSED) override final
- {
- if (localPlayer == nullptr)
- return;
-
- const Party *const party = localPlayer->getParty();
- if (party == nullptr)
- return;
-
- const Party::MemberList *const members = party->getMembers();
- int online = 0;
- int total = 0;
- FOR_EACHP (Party::MemberList::const_iterator, it, members)
- {
- if ((*it)->getOnline())
- online ++;
- total ++;
- }
-
- // TRANSLATORS: social window label
- mCounterString = strprintf(_("Players: %u/%u"),
- CAST_U32(online),
- CAST_U32(total));
- updateCounter();
- }
-
- private:
- Party *mParty;
-};
-
-#endif // GUI_WIDGETS_TABS_SOCIALPARTYTAB_H
diff --git a/src/gui/widgets/tabs/socialpickuptab.h b/src/gui/widgets/tabs/socialpickuptab.h
deleted file mode 100644
index 93d00e81a..000000000
--- a/src/gui/widgets/tabs/socialpickuptab.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SOCIALPICKUPTAB_H
-#define GUI_WIDGETS_TABS_SOCIALPICKUPTAB_H
-
-#include "gui/widgets/tabs/socialtab.h"
-
-#include "being/localplayer.h"
-
-#include "gui/models/beingslistmodel.h"
-
-#include "gui/widgets/tabs/socialtabbase.h"
-
-#include "utils/delete2.h"
-#include "utils/gettext.h"
-
-#include "localconsts.h"
-
-class SocialPickupTab final : public SocialTab
-{
- public:
- SocialPickupTab(const Widget2 *const widget,
- const Opaque showBackground) :
- SocialTab(widget),
- mBeings(new BeingsListModel)
- {
- createControls(mBeings, showBackground);
-
- // TRANSLATORS: Pickup filter tab name in social window.
- // TRANSLATORS: Should be small
- setCaption(_("Pik"));
- mMenuAction = "pickup";
- }
-
- A_DELETE_COPY(SocialPickupTab)
-
- ~SocialPickupTab()
- {
- delete2(mList)
- delete2(mScroll)
- delete2(mBeings)
- }
-
- void updateList() override final
- {
- updateAtkListStart();
- // TRANSLATORS: items group name in social window
- addAvatars(PickupItem, _("Pickup items"), PICKUP);
- // TRANSLATORS: items group name in social window
- addAvatars(IgnorePickupItem, _("Ignore items"), NOPICKUP);
- }
-
- private:
- BeingsListModel *mBeings;
-};
-
-#endif // GUI_WIDGETS_TABS_SOCIALPICKUPTAB_H
diff --git a/src/gui/widgets/tabs/socialplayerstab.h b/src/gui/widgets/tabs/socialplayerstab.h
deleted file mode 100644
index c43093fca..000000000
--- a/src/gui/widgets/tabs/socialplayerstab.h
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SOCIALPLAYERSTAB_H
-#define GUI_WIDGETS_TABS_SOCIALPLAYERSTAB_H
-
-#include "gui/widgets/tabs/socialtab.h"
-
-#include "actormanager.h"
-#include "party.h"
-
-#include "being/being.h"
-
-#include "gui/models/beingslistmodel.h"
-
-#include "utils/gettext.h"
-#include "utils/delete2.h"
-#include "utils/stringutils.h"
-
-#include "localconsts.h"
-
-class Avatar;
-class Being;
-
-class SocialPlayersTab final : public SocialTab
-{
- public:
- SocialPlayersTab(const Widget2 *const widget,
- const std::string &name,
- const Opaque showBackground) :
- SocialTab(widget),
- mBeings(new BeingsListModel)
- {
- createControls(mBeings, showBackground);
-
- getPlayersAvatars();
- setCaption(name);
- mMenuAction = "players";
- }
-
- A_DELETE_COPY(SocialPlayersTab)
-
- ~SocialPlayersTab()
- {
- delete2(mList)
- delete2(mScroll)
- delete2(mBeings)
- }
-
- void updateList() override final
- {
- getPlayersAvatars();
- }
-
- void updateAvatar(const std::string &name) override final
- {
- if (actorManager == nullptr)
- return;
-
- BLOCK_START("SocialPlayersTab::updateAvatar")
- Avatar *const avatar = findAvatarbyName(name);
- if (avatar == nullptr)
- return;
- if (Party::getParty(1) != nullptr)
- {
- const PartyMember *const
- pm = Party::getParty(1)->getMember(name);
- if ((pm != nullptr) && pm->getMaxHp() > 0)
- {
- avatar->setMaxHp(pm->getMaxHp());
- avatar->setHp(pm->getHp());
- }
- }
- const Being *const being = actorManager->findBeingByName(
- name, ActorType::Player);
- if (being != nullptr)
- {
- avatar->setDamageHp(being->getDamageTaken());
- avatar->setLevel(being->getLevel());
- avatar->setGender(being->getGender());
- avatar->setIp(being->getIp());
- avatar->setPoison(being->getPoison());
- }
- BLOCK_END("SocialPlayersTab::updateAvatar")
- }
-
- void resetDamage(const std::string &name) override final
- {
- if (actorManager == nullptr)
- return;
-
- Avatar *const avatar = findAvatarbyName(name);
- if (avatar == nullptr)
- return;
- avatar->setDamageHp(0);
- Being *const being = actorManager->findBeingByName(
- name, ActorType::Player);
-
- if (being != nullptr)
- being->setDamageTaken(0);
- }
-
- Avatar* findAvatarbyName(const std::string &name)
- {
- STD_VECTOR<Avatar*> *const avatars = mBeings->getMembers();
- Avatar *ava = nullptr;
- STD_VECTOR<Avatar*>::const_iterator i = avatars->begin();
- const STD_VECTOR<Avatar*>::const_iterator i_end = avatars->end();
- while (i != i_end)
- {
- ava = (*i);
- if ((ava != nullptr) && ava->getName() == name)
- return ava;
- ++i;
- }
- ava = new Avatar(name);
- ava->setOnline(true);
- avatars->push_back(ava);
- return ava;
- }
-
- void getPlayersAvatars()
- {
- STD_VECTOR<Avatar*> *const avatars = mBeings->getMembers();
- if (actorManager != nullptr)
- {
- StringVect names;
- actorManager->getPlayerNames(names, NpcNames_false);
-
- STD_VECTOR<Avatar*>::iterator ai = avatars->begin();
- while (ai != avatars->end())
- {
- bool finded = false;
- const Avatar *const ava = (*ai);
- if (ava == nullptr)
- break;
-
- StringVectCIter i = names.begin();
- const StringVectCIter i_end = names.end();
- while (i != i_end)
- {
- if (ava->getName() == (*i) && !(*i).empty())
- {
- finded = true;
- break;
- }
- ++i;
- }
-
- if (!finded)
- {
- delete *ai;
- ai = avatars->erase(ai);
- }
- else
- {
- ++ai;
- }
- }
-
- StringVectCIter i = names.begin();
- const StringVectCIter i_end = names.end();
-
- while (i != i_end)
- {
- if (!(*i).empty())
- updateAvatar(*i);
- ++i;
- }
- }
- // TRANSLATORS: social window label
- mCounterString = strprintf(_("Visible players: %d"),
- CAST_S32(avatars->size()));
- updateCounter();
- }
-
- private:
- BeingsListModel *mBeings;
-};
-
-#endif // GUI_WIDGETS_TABS_SOCIALPLAYERSTAB_H
diff --git a/src/gui/widgets/tabs/socialtab.h b/src/gui/widgets/tabs/socialtab.h
deleted file mode 100644
index 1c94aaede..000000000
--- a/src/gui/widgets/tabs/socialtab.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SOCIALTAB_H
-#define GUI_WIDGETS_TABS_SOCIALTAB_H
-
-#include "gui/windows/socialwindow.h"
-
-#include "gui/windows/confirmdialog.h"
-#include "gui/windows/textdialog.h"
-
-#include "gui/widgets/avatarlistbox.h"
-#include "gui/widgets/createwidget.h"
-#include "gui/widgets/scrollarea.h"
-
-#include "gui/widgets/tabs/tab.h"
-
-#include "localconsts.h"
-
-class AvatarListModel;
-
-class SocialTab notfinal : public Tab
-{
- public:
- A_DELETE_COPY(SocialTab)
-
- virtual void invite()
- {
- }
-
- virtual void leave()
- {
- }
-
- virtual void updateList()
- {
- }
-
- virtual void updateAvatar(const std::string &name A_UNUSED)
- {
- }
-
- virtual void resetDamage(const std::string &name A_UNUSED)
- {
- }
-
- virtual void selectIndex(const unsigned num A_UNUSED)
- {
- }
-
- virtual void buildCounter(const int online A_UNUSED,
- const int total A_UNUSED)
- {
- }
-
- protected:
- friend class SocialWindow;
-
- explicit SocialTab(const Widget2 *const widget) :
- Tab(widget),
- mInviteDialog(nullptr),
- mConfirmDialog(nullptr),
- mScroll(nullptr),
- mList(nullptr),
- mCounterString(),
- mMenuAction("menu")
- {
- }
-
- virtual ~SocialTab()
- {
- // Cleanup dialogs
- if (mInviteDialog != nullptr)
- {
- mInviteDialog->close();
- mInviteDialog->scheduleDelete();
- mInviteDialog = nullptr;
- }
-
- if (mConfirmDialog != nullptr)
- {
- mConfirmDialog->close();
- mConfirmDialog->scheduleDelete();
- mConfirmDialog = nullptr;
- }
- }
-
- void createControls(AvatarListModel *const listModel,
- const Opaque showBackground)
- {
- CREATEWIDGETV(mList, AvatarListBox, this, listModel);
- mScroll = new ScrollArea(this, mList, showBackground,
- "social_background.xml");
-
- mScroll->setHorizontalScrollPolicy(ScrollArea::SHOW_AUTO);
- mScroll->setVerticalScrollPolicy(ScrollArea::SHOW_ALWAYS);
- }
-
- void setCurrent() override final
- {
- updateCounter();
- updateMenu();
- }
-
- void updateCounter() const
- {
- if (socialWindow != nullptr)
- socialWindow->updateCounter(this, mCounterString);
- }
-
- void updateMenu() const
- {
- if (socialWindow != nullptr)
- socialWindow->updateMenu(this, mMenuAction);
- }
-
- TextDialog *mInviteDialog;
- ConfirmDialog *mConfirmDialog;
- ScrollArea *mScroll;
- AvatarListBox *mList;
- std::string mCounterString;
- std::string mMenuAction;
-};
-
-#endif // GUI_WIDGETS_TABS_SOCIALTAB_H
diff --git a/src/gui/widgets/tabs/socialtabbase.h b/src/gui/widgets/tabs/socialtabbase.h
deleted file mode 100644
index 03a02bb1f..000000000
--- a/src/gui/widgets/tabs/socialtabbase.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_WIDGETS_TABS_SOCIALTABBASE_H
-#define GUI_WIDGETS_TABS_SOCIALTABBASE_H
-
-#include "actormanager.h"
-
-ACTORMANAGER_H
-
-#include "enums/resources/map/mapitemtype.h"
-
-ENUMS_RESOURCES_MAP_MAPITEMTYPE_H
-
-#define addAvatars(mob, str, type) \
-{\
- ava = new Avatar(str);\
- ava->setOnline(false);\
- ava->setLevel(-1);\
- ava->setType(MapItemType::SEPARATOR);\
- ava->setX(0);\
- ava->setY(0);\
- avatars->push_back(ava);\
- mobs = actorManager->get##mob##s();\
- i = mobs.begin();\
- i_end = mobs.end();\
- while (i != i_end)\
- {\
- std::string name;\
- int level = -1;\
- if ((*i).empty())\
- {\
- name = _("(default)");\
- level = 0;\
- }\
- else\
- {\
- name = *i;\
- }\
- ava = new Avatar(name);\
- ava->setOnline(true);\
- ava->setLevel(level);\
- ava->setType(MapItemType::type);\
- ava->setX(0);\
- ava->setY(0);\
- avatars->push_back(ava);\
- ++ i;\
- }\
-}
-
-#define updateAtkListStart() \
- if (!socialWindow || !localPlayer || !actorManager)\
- return;\
- STD_VECTOR<Avatar*> *const avatars = mBeings->getMembers();\
- STD_VECTOR<Avatar*>::iterator ia = avatars->begin();\
- while (ia != avatars->end())\
- {\
- delete *ia;\
- ++ ia;\
- }\
- avatars->clear();\
- Avatar *ava = nullptr;\
- std::list<std::string> mobs;\
- std::list<std::string>::const_iterator i;\
- std::list<std::string>::const_iterator i_end;
-
-#endif // GUI_WIDGETS_TABS_SOCIALTABBASE_H
diff --git a/src/gui/widgets/tabs/tab.cpp b/src/gui/widgets/tabs/tab.cpp
deleted file mode 100644
index 36c2a3f40..000000000
--- a/src/gui/widgets/tabs/tab.cpp
+++ /dev/null
@@ -1,488 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-/* _______ __ __ __ ______ __ __ _______ __ __
- * / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___ /\ / |\/ /\
- * / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / /
- * / / /__ / / // / // / // / / / ___ / // ___ / // /| ' / /
- * / /_// /\ / /_// / // / // /_/_ / / // / // /\_/ / // / | / /
- * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ /
- * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/
- *
- * Copyright (c) 2004 - 2008 Olof Naessén and Per Larsson
- *
- *
- * Per Larsson a.k.a finalman
- * Olof Naessén a.k.a jansem/yakslem
- *
- * Visit: http://guichan.sourceforge.net
- *
- * License: (BSD)
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name of Guichan nor the names of its contributors may
- * be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "gui/widgets/tabs/tab.h"
-
-#include "settings.h"
-
-#include "gui/gui.h"
-#include "gui/skin.h"
-
-#include "gui/widgets/label.h"
-#include "gui/widgets/tabbedarea.h"
-
-#include "render/vertexes/imagecollection.h"
-
-#include "resources/imagerect.h"
-
-#include "resources/image/image.h"
-
-#include "utils/delete2.h"
-
-#include "debug.h"
-
-int Tab::mInstances = 0;
-float Tab::mAlpha = 1.0;
-
-namespace
-{
- std::string const data[Tab::TAB_COUNT] =
- {
- "tab.xml",
- "tab_highlighted.xml",
- "tab_selected.xml",
- "tab_unused.xml"
- };
-} // namespace
-
-Skin *Tab::tabImg[Tab::TAB_COUNT];
-
-Tab::Tab(const Widget2 *const widget) :
- BasicContainer(widget),
- MouseListener(),
- WidgetListener(),
- mLabel(new Label(this)),
- mTabbedArea(nullptr),
- mTabColor(&getThemeColor(ThemeColorId::TAB)),
- mTabOutlineColor(&getThemeColor(ThemeColorId::TAB_OUTLINE)),
- mTabHighlightedColor(&getThemeColor(ThemeColorId::TAB_HIGHLIGHTED)),
- mTabHighlightedOutlineColor(&getThemeColor(
- ThemeColorId::TAB_HIGHLIGHTED_OUTLINE)),
- mTabSelectedColor(&getThemeColor(ThemeColorId::TAB_SELECTED)),
- mTabSelectedOutlineColor(&getThemeColor(
- ThemeColorId::TAB_SELECTED_OUTLINE)),
- mFlashColor(&getThemeColor(ThemeColorId::TAB_FLASH)),
- mFlashOutlineColor(&getThemeColor(ThemeColorId::TAB_FLASH_OUTLINE)),
- mPlayerFlashColor(&getThemeColor(ThemeColorId::TAB_PLAYER_FLASH)),
- mPlayerFlashOutlineColor(&getThemeColor(
- ThemeColorId::TAB_PLAYER_FLASH_OUTLINE)),
- mFlash(0),
- mVertexes(new ImageCollection),
- mImage(nullptr),
- mMode(0),
- mLabelMode(-1),
- mHasMouse(false)
-{
- init();
-}
-
-Tab::~Tab()
-{
- if (gui != nullptr)
- gui->removeDragged(this);
-
- mInstances--;
- if (mInstances == 0 && (theme != nullptr))
- {
- for (int mode = 0; mode < TAB_COUNT; mode ++)
- theme->unload(tabImg[mode]);
- }
-
- delete2(mLabel);
-
- if (mImage != nullptr)
- {
- mImage->decRef();
- mImage = nullptr;
- }
- delete2(mVertexes);
-}
-
-void Tab::init()
-{
- addMouseListener(this);
- setFocusable(false);
- setFrameSize(0);
- mFlash = 0;
-
- addWidgetListener(this);
-
- if (mInstances == 0)
- {
- // Load the skin
- if (theme != nullptr)
- {
- for (int mode = 0; mode < TAB_COUNT; mode ++)
- tabImg[mode] = theme->load(data[mode], "tab.xml");
- }
- updateAlpha();
- }
- mInstances++;
-
- add(mLabel);
-
- const Skin *const skin = tabImg[TAB_STANDARD];
- if (skin == nullptr)
- return;
- const int padding = skin->getPadding();
-
- mLabel->setPosition(padding, padding);
-}
-
-void Tab::updateAlpha()
-{
- const float alpha = std::max(settings.guiAlpha,
- theme->getMinimumOpacity());
-
- if (alpha != mAlpha)
- {
- mAlpha = alpha;
- for (int a = 0; a < 9; a++)
- {
- for (int t = 0; t < TAB_COUNT; t++)
- {
- Skin *const skin = tabImg[t];
- if (skin != nullptr)
- {
- const ImageRect &rect = skin->getBorder();
- Image *const image = rect.grid[a];
- if (image != nullptr)
- image->setAlpha(mAlpha);
- }
- }
- }
- }
-}
-
-void Tab::draw(Graphics *const graphics)
-{
- BLOCK_START("Tab::draw")
- int mode = TAB_STANDARD;
-
- // check which type of tab to draw
- if (mTabbedArea != nullptr)
- {
- int labelMode = mFlash;
-
- if (mTabbedArea->isTabSelected(this))
- {
- labelMode = 3;
- mode = TAB_SELECTED;
- // if tab is selected, it doesnt need to highlight activity
- mFlash = 0;
- }
- else if (labelMode == 0)
- {
- if (mHasMouse)
- {
- labelMode = 4;
- mode = TAB_HIGHLIGHTED;
- }
- }
- else if (mHasMouse)
- {
- mode = TAB_HIGHLIGHTED;
- }
-
- // mRedraw need here because no other way to say label to change color
- // +++ text from label must be moved to tab itself
- if (labelMode != mLabelMode || mRedraw)
- {
- mLabelMode = labelMode;
- switch (labelMode)
- {
- case 0: // default state
- default:
- mLabel->setForegroundColorAll(*mTabColor,
- *mTabOutlineColor);
- break;
- case 1: // mFlash == 1
- mLabel->setForegroundColorAll(*mFlashColor,
- *mFlashOutlineColor);
- break;
- case 2: // mFlash == 2
- mLabel->setForegroundColorAll(*mPlayerFlashColor,
- *mPlayerFlashOutlineColor);
- break;
- case 3: // mTabbedArea->isTabSelected(this)
- mLabel->setForegroundColorAll(*mTabSelectedColor,
- *mTabSelectedOutlineColor);
- break;
- case 4: // mHasMouse
- mLabel->setForegroundColorAll(*mTabHighlightedColor,
- *mTabHighlightedOutlineColor);
- break;
- }
- }
- }
-
- const Skin *const skin = tabImg[mode];
- if (skin == nullptr)
- {
- BLOCK_END("Tab::draw")
- return;
- }
-
- updateAlpha();
-
- const ImageRect &rect = skin->getBorder();
- if (mRedraw || mode != mMode || graphics->getRedraw())
- {
- mMode = mode;
- mRedraw = false;
- mVertexes->clear();
- graphics->calcWindow(mVertexes,
- 0, 0,
- mDimension.width, mDimension.height,
- rect);
-
- if (mImage != nullptr)
- {
- const Skin *const skin1 = tabImg[TAB_STANDARD];
- if (skin1 != nullptr)
- {
- const int padding = skin1->getPadding();
- graphics->calcTileCollection(mVertexes,
- mImage,
- padding,
- padding);
- }
- }
- graphics->finalize(mVertexes);
- }
-
- graphics->drawTileCollection(mVertexes);
-
- drawChildren(graphics);
- BLOCK_END("Tab::draw")
-}
-
-void Tab::safeDraw(Graphics *const graphics)
-{
- BLOCK_START("Tab::draw")
- int mode = TAB_STANDARD;
-
- // check which type of tab to draw
- if (mTabbedArea != nullptr)
- {
- int labelMode = mFlash;
-
- if (mTabbedArea->isTabSelected(this))
- {
- labelMode = 3;
- mode = TAB_SELECTED;
- // if tab is selected, it doesnt need to highlight activity
- mFlash = 0;
- }
- else if (labelMode == 0)
- {
- if (mHasMouse)
- {
- labelMode = 4;
- mode = TAB_HIGHLIGHTED;
- }
- }
- else if (mHasMouse)
- {
- mode = TAB_HIGHLIGHTED;
- }
-
- if (labelMode != mLabelMode)
- {
- mLabelMode = labelMode;
- switch (labelMode)
- {
- case 0: // default state
- default:
- mLabel->setForegroundColorAll(*mTabColor,
- *mTabOutlineColor);
- break;
- case 1: // mFlash == 1
- mLabel->setForegroundColorAll(*mFlashColor,
- *mFlashOutlineColor);
- break;
- case 2: // mFlash == 2
- mLabel->setForegroundColorAll(*mPlayerFlashColor,
- *mPlayerFlashOutlineColor);
- break;
- case 3: // mTabbedArea->isTabSelected(this)
- mLabel->setForegroundColorAll(*mTabSelectedColor,
- *mTabSelectedOutlineColor);
- break;
- case 4: // mHasMouse
- mLabel->setForegroundColorAll(*mTabHighlightedColor,
- *mTabHighlightedOutlineColor);
- break;
- }
- }
- }
-
- const Skin *const skin = tabImg[mode];
- if (skin == nullptr)
- {
- BLOCK_END("Tab::draw")
- return;
- }
-
- updateAlpha();
-
- graphics->drawImageRect(0, 0,
- mDimension.width, mDimension.height,
- skin->getBorder());
- if (mImage != nullptr)
- {
- const Skin *const skin1 = tabImg[TAB_STANDARD];
- if (skin1 != nullptr)
- {
- const int padding = skin1->getPadding();
- graphics->drawImage(mImage, padding, padding);
- }
- }
-
- safeDrawChildren(graphics);
- BLOCK_END("Tab::draw")
-}
-
-void Tab::widgetResized(const Event &event A_UNUSED)
-{
- mRedraw = true;
-}
-
-void Tab::widgetMoved(const Event &event A_UNUSED)
-{
- mRedraw = true;
-}
-
-void Tab::setLabelFont(Font *const font)
-{
- if (mLabel == nullptr)
- return;
-
- mLabel->setFont(font);
- mLabel->adjustSize();
- adjustSize();
- mRedraw = true;
-}
-
-
-void Tab::adjustSize()
-{
- const Skin *const skin = tabImg[TAB_STANDARD];
- if (skin == nullptr)
- return;
- const int pad2 = skin->getPadding() * 2;
-
- if (mImage != nullptr)
- {
- const SDL_Rect &rect = mImage->mBounds;
- setSize(rect.w + pad2, rect.h + pad2);
- }
- else
- {
- setSize(mLabel->getWidth() + pad2,
- mLabel->getHeight() + pad2);
- }
-
- if (mTabbedArea != nullptr)
- mTabbedArea->adjustTabPositions();
-}
-
-void Tab::setTabbedArea(TabbedArea* tabbedArea)
-{
- mTabbedArea = tabbedArea;
-}
-
-TabbedArea* Tab::getTabbedArea() const
-{
- return mTabbedArea;
-}
-
-void Tab::setCaption(const std::string &caption)
-{
- mLabel->setCaption(caption);
- mLabel->adjustSize();
- adjustSize();
-}
-
-void Tab::setImage(Image *const image)
-{
- if (mImage != nullptr)
- mImage->decRef();
- mImage = image;
- adjustSize();
-}
-
-const std::string &Tab::getCaption() const
-{
- return mLabel->getCaption();
-}
-
-void Tab::mouseEntered(MouseEvent& event A_UNUSED)
-{
- mHasMouse = true;
-}
-
-void Tab::mouseExited(MouseEvent& event A_UNUSED)
-{
- mHasMouse = false;
-}
-
-void Tab::finalCleanup()
-{
- for (int f = 0; f < TAB_COUNT; f ++)
- {
- tabImg[f] = nullptr;
- }
-}
diff --git a/src/gui/widgets/tabs/tab.h b/src/gui/widgets/tabs/tab.h
deleted file mode 100644
index e6a816072..000000000
--- a/src/gui/widgets/tabs/tab.h
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-/* _______ __ __ __ ______ __ __ _______ __ __
- * / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___ /\ / |\/ /\
- * / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / /
- * / / /__ / / // / // / // / / / ___ / // ___ / // /| ' / /
- * / /_// /\ / /_// / // / // /_/_ / / // / // /\_/ / // / | / /
- * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ /
- * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/
- *
- * Copyright (c) 2004 - 2008 Olof Naessén and Per Larsson
- *
- *
- * Per Larsson a.k.a finalman
- * Olof Naessén a.k.a jansem/yakslem
- *
- * Visit: http://guichan.sourceforge.net
- *
- * License: (BSD)
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name of Guichan nor the names of its contributors may
- * be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef GUI_WIDGETS_TABS_TAB_H
-#define GUI_WIDGETS_TABS_TAB_H
-
-#include "gui/widgets/basiccontainer.h"
-
-#include "listeners/mouselistener.h"
-#include "listeners/widgetlistener.h"
-
-#include "localconsts.h"
-
-class ImageCollection;
-class Label;
-class Skin;
-class TabbedArea;
-
-/**
- * A tab, the same as the Guichan tab in 0.8, but extended
- */
-class Tab notfinal : public BasicContainer,
- public MouseListener,
- public WidgetListener
-{
- public:
- explicit Tab(const Widget2 *const widget);
-
- A_DELETE_COPY(Tab)
-
- virtual ~Tab();
-
- enum
- {
- TAB_STANDARD = 0,
- TAB_HIGHLIGHTED = 1,
- TAB_SELECTED = 2,
- TAB_UNUSED = 3,
- TAB_COUNT = 4 // Must be last
- };
-
- /**
- * Update the alpha value to the graphic components.
- */
- void updateAlpha();
-
- /**
- * Draw the tabbed area.
- */
- void draw(Graphics *const graphics) override final A_NONNULL(2);
-
- void safeDraw(Graphics *const graphics) override final A_NONNULL(2);
-
- /**
- * Set the normal color for the tab's text.
- */
- void setTabColor(const Color *const color1,
- const Color *const color2)
- {
- mTabColor = color1;
- mTabOutlineColor = color2;
- mRedraw = true;
- }
-
- /**
- * Set the highlighted color for the tab's text.
- */
- void setHighlightedTabColor(const Color *const color1,
- const Color *const color2)
- {
- mTabHighlightedColor = color1;
- mTabHighlightedOutlineColor = color2;
- mRedraw = true;
- }
-
- /**
- * Set the selected color for the tab's text.
- */
- void setSelectedTabColor(const Color *const color1,
- const Color *const color2)
- {
- mTabSelectedColor = color1;
- mTabSelectedOutlineColor = color2;
- mRedraw = true;
- }
-
- /**
- * Set the flash color for the tab's text.
- */
- void setFlashTabColor(const Color *const color1,
- const Color *const color2)
- {
- mFlashColor = color1;
- mFlashOutlineColor = color2;
- mRedraw = true;
- }
-
- /**
- * Set the player flash color for the tab's text.
- */
- void setPlayerFlashTabColor(const Color *const color1,
- const Color *const color2)
- {
- mPlayerFlashColor = color1;
- mPlayerFlashOutlineColor = color2;
- mRedraw = true;
- }
-
- /**
- * Set tab flashing state
- */
- void setFlash(const int flash)
- { mFlash = flash; mRedraw = true; }
-
- int getFlash() const noexcept2 A_WARN_UNUSED
- { return mFlash; }
-
- void widgetResized(const Event &event) override final;
-
- void widgetMoved(const Event &event) override final;
-
- void setLabelFont(Font *const font);
-
- Label *getLabel() const noexcept2 A_WARN_UNUSED
- { return mLabel; }
-
- void adjustSize();
-
- void setTabbedArea(TabbedArea* tabbedArea);
-
- TabbedArea* getTabbedArea() const A_WARN_UNUSED;
-
- void setCaption(const std::string& caption);
-
- const std::string &getCaption() const A_WARN_UNUSED;
-
- void mouseEntered(MouseEvent &event) override final;
-
- void mouseExited(MouseEvent &event) override final;
-
- void setImage(Image *const image);
-
- static void finalCleanup();
-
- protected:
- friend class TabbedArea;
-
- virtual void setCurrent()
- { }
-
- Label* mLabel A_NONNULLPOINTER;
-
- TabbedArea* mTabbedArea;
-
- private:
- /** Load images if no other instances exist yet */
- void init();
-
- static Skin *tabImg[TAB_COUNT]; /**< Tab state graphics */
- static int mInstances; /**< Number of tab instances */
- static float mAlpha;
-
- const Color *mTabColor;
- const Color *mTabOutlineColor;
- const Color *mTabHighlightedColor;
- const Color *mTabHighlightedOutlineColor;
- const Color *mTabSelectedColor;
- const Color *mTabSelectedOutlineColor;
- const Color *mFlashColor;
- const Color *mFlashOutlineColor;
- const Color *mPlayerFlashColor;
- const Color *mPlayerFlashOutlineColor;
- int mFlash;
- ImageCollection *mVertexes A_NONNULLPOINTER;
- Image *mImage;
- int mMode;
- int mLabelMode;
-
- protected:
- bool mHasMouse;
-};
-
-#endif // GUI_WIDGETS_TABS_TAB_H