diff options
author | Andrei Karas <akaras@inbox.ru> | 2012-04-15 18:01:03 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2012-04-15 18:01:03 +0300 |
commit | 4193299e2e05d40477a50e5cb0fcc906227f53a2 (patch) | |
tree | 973b96352f5bfdf0d6765f0e6388ec4fd955011c | |
parent | 9fc07b15f1b051eecd662802162772804dc77b8e (diff) | |
download | mv-4193299e2e05d40477a50e5cb0fcc906227f53a2.tar.gz mv-4193299e2e05d40477a50e5cb0fcc906227f53a2.tar.bz2 mv-4193299e2e05d40477a50e5cb0fcc906227f53a2.tar.xz mv-4193299e2e05d40477a50e5cb0fcc906227f53a2.zip |
Split input settings tab to categories.
-rw-r--r-- | src/gui/inventorywindow.cpp | 2 | ||||
-rw-r--r-- | src/gui/setup_input.cpp | 777 | ||||
-rw-r--r-- | src/gui/setup_input.h | 6 | ||||
-rw-r--r-- | src/gui/setupactiondata.h | 951 | ||||
-rw-r--r-- | src/gui/widgets/tabstrip.cpp | 5 | ||||
-rw-r--r-- | src/gui/widgets/tabstrip.h | 4 |
6 files changed, 1051 insertions, 694 deletions
diff --git a/src/gui/inventorywindow.cpp b/src/gui/inventorywindow.cpp index d6fb95fe7..425130b57 100644 --- a/src/gui/inventorywindow.cpp +++ b/src/gui/inventorywindow.cpp @@ -139,7 +139,7 @@ InventoryWindow::InventoryWindow(Inventory *inventory): mSlotsBar = new ProgressBar(0.0f, 100, 20, Theme::PROG_INVY_SLOTS); int size = config.getIntValue("fontSize"); - mFilter = new TabStrip("filter_" + getWindowName(), size + 8, 0); + mFilter = new TabStrip("filter_" + getWindowName(), size + 8); mFilter->addActionListener(this); mFilter->setActionEventId("tag_"); diff --git a/src/gui/setup_input.cpp b/src/gui/setup_input.cpp index 35badbe9c..a85a35975 100644 --- a/src/gui/setup_input.cpp +++ b/src/gui/setup_input.cpp @@ -23,15 +23,19 @@ #include "gui/setup_input.h" +#include "configuration.h" #include "inputmanager.h" #include "keyboardconfig.h" +#include "logger.h" #include "gui/okdialog.h" +#include "gui/setupactiondata.h" #include "gui/widgets/button.h" #include "gui/widgets/layouthelper.h" #include "gui/widgets/listbox.h" #include "gui/widgets/scrollarea.h" +#include "gui/widgets/tabstrip.h" #include "utils/gettext.h" #include "utils/stringutils.h" @@ -42,677 +46,6 @@ #include "debug.h" -struct SetupActionData -{ - std::string name; - int actionId; -}; - -static SetupActionData const setupActionData[] = -{ - { - N_("Basic Keys"), - Input::KEY_NO_VALUE - }, - { - N_("Move Up"), - Input::KEY_MOVE_UP - }, - { - N_("Move Down"), - Input::KEY_MOVE_DOWN - }, - { - N_("Move Left"), - Input::KEY_MOVE_LEFT - }, - { - N_("Move Right"), - Input::KEY_MOVE_RIGHT - }, - { - N_("Attack"), - Input::KEY_ATTACK - }, - { - N_("Target & Attack"), - Input::KEY_TARGET_ATTACK - }, - { - N_("Move to Target"), - Input::KEY_MOVE_TO_TARGET - }, - { - N_("Change Move to Target type"), - Input::KEY_CHANGE_MOVE_TO_TARGET - }, - { - N_("Move to Home location"), - Input::KEY_MOVE_TO_HOME - }, - { - N_("Set home location"), - Input::KEY_SET_HOME - }, - { - N_("Move to navigation point"), - Input::KEY_MOVE_TO_POINT - }, - { - N_("Talk"), - Input::KEY_TALK - }, - { - N_("Stop Attack"), - Input::KEY_STOP_ATTACK - }, - { - N_("Untarget"), - Input::KEY_UNTARGET - }, - { - N_("Target monster"), - Input::KEY_TARGET_MONSTER - }, - { - N_("Target NPC"), - Input::KEY_TARGET_NPC - }, - { - N_("Target Player"), - Input::KEY_TARGET_PLAYER - }, - { - N_("Pickup"), - Input::KEY_PICKUP - }, - { - N_("Change Pickup Type"), - Input::KEY_CHANGE_PICKUP_TYPE - }, - { - N_("Hide Windows"), - Input::KEY_HIDE_WINDOWS - }, - { - N_("Sit"), - Input::KEY_SIT - }, - { - N_("Screenshot"), - Input::KEY_SCREENSHOT - }, - { - N_("Enable/Disable Trading"), - Input::KEY_TRADE - }, - { - N_("Change Map View Mode"), - Input::KEY_PATHFIND - }, - { - N_("Select OK"), - Input::KEY_OK - }, - { - N_("Quit"), - Input::KEY_QUIT - }, - { - N_("Shortcuts Keys"), - Input::KEY_NO_VALUE - }, - { - N_("Item Shortcuts Key"), - Input::KEY_SHORTCUTS_KEY - }, - { - strprintf(N_("Item Shortcut %d"), 1), - Input::KEY_SHORTCUT_1 - }, - { - strprintf(N_("Item Shortcut %d"), 2), - Input::KEY_SHORTCUT_2 - }, - { - strprintf(N_("Item Shortcut %d"), 3), - Input::KEY_SHORTCUT_3 - }, - { - strprintf(N_("Item Shortcut %d"), 4), - Input::KEY_SHORTCUT_4 - }, - { - strprintf(N_("Item Shortcut %d"), 5), - Input::KEY_SHORTCUT_5 - }, - { - strprintf(N_("Item Shortcut %d"), 6), - Input::KEY_SHORTCUT_6 - }, - { - strprintf(N_("Item Shortcut %d"), 7), - Input::KEY_SHORTCUT_7 - }, - { - strprintf(N_("Item Shortcut %d"), 8), - Input::KEY_SHORTCUT_8 - }, - { - strprintf(N_("Item Shortcut %d"), 9), - Input::KEY_SHORTCUT_9 - }, - { - strprintf(N_("Item Shortcut %d"), 10), - Input::KEY_SHORTCUT_10 - }, - { - strprintf(N_("Item Shortcut %d"), 11), - Input::KEY_SHORTCUT_11 - }, - { - strprintf(N_("Item Shortcut %d"), 12), - Input::KEY_SHORTCUT_12 - }, - { - strprintf(N_("Item Shortcut %d"), 13), - Input::KEY_SHORTCUT_13 - }, - { - strprintf(N_("Item Shortcut %d"), 14), - Input::KEY_SHORTCUT_14 - }, - { - strprintf(N_("Item Shortcut %d"), 15), - Input::KEY_SHORTCUT_15 - }, - { - strprintf(N_("Item Shortcut %d"), 16), - Input::KEY_SHORTCUT_16 - }, - { - strprintf(N_("Item Shortcut %d"), 17), - Input::KEY_SHORTCUT_17 - }, - { - strprintf(N_("Item Shortcut %d"), 18), - Input::KEY_SHORTCUT_18 - }, - { - strprintf(N_("Item Shortcut %d"), 19), - Input::KEY_SHORTCUT_19 - }, - { - strprintf(N_("Item Shortcut %d"), 20), - Input::KEY_SHORTCUT_20 - }, - { - N_("Windows Keys"), - Input::KEY_NO_VALUE - }, - { - N_("Help Window"), - Input::KEY_WINDOW_HELP - }, - { - N_("Status Window"), - Input::KEY_WINDOW_STATUS - }, - { - N_("Inventory Window"), - Input::KEY_WINDOW_INVENTORY - }, - { - N_("Equipment Window"), - Input::KEY_WINDOW_EQUIPMENT - }, - { - N_("Skill Window"), - Input::KEY_WINDOW_SKILL - }, - { - N_("Minimap Window"), - Input::KEY_WINDOW_MINIMAP - }, - { - N_("Chat Window"), - Input::KEY_WINDOW_CHAT - }, - { - N_("Item Shortcut Window"), - Input::KEY_WINDOW_SHORTCUT - }, - { - N_("Setup Window"), - Input::KEY_WINDOW_SETUP - }, - { - N_("Debug Window"), - Input::KEY_WINDOW_DEBUG - }, - { - N_("Social Window"), - Input::KEY_WINDOW_SOCIAL - }, - { - N_("Emote Shortcut Window"), - Input::KEY_WINDOW_EMOTE_SHORTCUT - }, - { - N_("Outfits Window"), - Input::KEY_WINDOW_OUTFIT - }, - { - N_("Shop Window"), - Input::KEY_WINDOW_SHOP - }, - { - N_("Quick drop Window"), - Input::KEY_WINDOW_DROP - }, - { - N_("Kill Stats Window"), - Input::KEY_WINDOW_KILLS - }, - { - N_("Commands Window"), - Input::KEY_WINDOW_SPELLS - }, - { - N_("Bot Checker Window"), - Input::KEY_WINDOW_BOT_CHECKER - }, - { - N_("Who Is Online Window"), - Input::KEY_WINDOW_ONLINE - }, - { - N_("Did you know Window"), - Input::KEY_WINDOW_DIDYOUKNOW - }, - { - N_("Previous Social Tab"), - Input::KEY_PREV_SOCIAL_TAB - }, - { - N_("Next Social Tab"), - Input::KEY_NEXT_SOCIAL_TAB - }, - { - N_("Emotes Keys"), - Input::KEY_NO_VALUE - }, - { - N_("Smilie"), - Input::KEY_EMOTE - }, - { - strprintf(N_("Emote Shortcut %d"), 1), - Input::KEY_EMOTE_1 - }, - { - strprintf(N_("Emote Shortcut %d"), 2), - Input::KEY_EMOTE_2 - }, - { - strprintf(N_("Emote Shortcut %d"), 3), - Input::KEY_EMOTE_3 - }, - { - strprintf(N_("Emote Shortcut %d"), 4), - Input::KEY_EMOTE_4 - }, - { - strprintf(N_("Emote Shortcut %d"), 5), - Input::KEY_EMOTE_5 - }, - { - strprintf(N_("Emote Shortcut %d"), 6), - Input::KEY_EMOTE_6 - }, - { - strprintf(N_("Emote Shortcut %d"), 7), - Input::KEY_EMOTE_7 - }, - { - strprintf(N_("Emote Shortcut %d"), 8), - Input::KEY_EMOTE_8 - }, - { - strprintf(N_("Emote Shortcut %d"), 9), - Input::KEY_EMOTE_9 - }, - { - strprintf(N_("Emote Shortcut %d"), 10), - Input::KEY_EMOTE_10 - }, - { - strprintf(N_("Emote Shortcut %d"), 11), - Input::KEY_EMOTE_11 - }, - { - strprintf(N_("Emote Shortcut %d"), 12), - Input::KEY_EMOTE_12 - }, - { - strprintf(N_("Emote Shortcut %d"), 13), - Input::KEY_EMOTE_13 - }, - { - strprintf(N_("Emote Shortcut %d"), 14), - Input::KEY_EMOTE_14 - }, - { - strprintf(N_("Emote Shortcut %d"), 15), - Input::KEY_EMOTE_15 - }, - { - strprintf(N_("Emote Shortcut %d"), 16), - Input::KEY_EMOTE_16 - }, - { - strprintf(N_("Emote Shortcut %d"), 17), - Input::KEY_EMOTE_17 - }, - { - strprintf(N_("Emote Shortcut %d"), 18), - Input::KEY_EMOTE_18 - }, - { - strprintf(N_("Emote Shortcut %d"), 19), - Input::KEY_EMOTE_19 - }, - { - strprintf(N_("Emote Shortcut %d"), 20), - Input::KEY_EMOTE_20 - }, - { - strprintf(N_("Emote Shortcut %d"), 21), - Input::KEY_EMOTE_21 - }, - { - strprintf(N_("Emote Shortcut %d"), 22), - Input::KEY_EMOTE_22 - }, - { - strprintf(N_("Emote Shortcut %d"), 23), - Input::KEY_EMOTE_23 - }, - { - strprintf(N_("Emote Shortcut %d"), 24), - Input::KEY_EMOTE_24 - }, - { - strprintf(N_("Emote Shortcut %d"), 25), - Input::KEY_EMOTE_25 - }, - { - strprintf(N_("Emote Shortcut %d"), 26), - Input::KEY_EMOTE_26 - }, - { - strprintf(N_("Emote Shortcut %d"), 27), - Input::KEY_EMOTE_27 - }, - { - strprintf(N_("Emote Shortcut %d"), 28), - Input::KEY_EMOTE_28 - }, - { - strprintf(N_("Emote Shortcut %d"), 29), - Input::KEY_EMOTE_29 - }, - { - strprintf(N_("Emote Shortcut %d"), 30), - Input::KEY_EMOTE_30 - }, - { - strprintf(N_("Emote Shortcut %d"), 31), - Input::KEY_EMOTE_31 - }, - { - strprintf(N_("Emote Shortcut %d"), 32), - Input::KEY_EMOTE_32 - }, - { - strprintf(N_("Emote Shortcut %d"), 33), - Input::KEY_EMOTE_33 - }, - { - strprintf(N_("Emote Shortcut %d"), 34), - Input::KEY_EMOTE_34 - }, - { - strprintf(N_("Emote Shortcut %d"), 35), - Input::KEY_EMOTE_35 - }, - { - strprintf(N_("Emote Shortcut %d"), 36), - Input::KEY_EMOTE_36 - }, - { - strprintf(N_("Emote Shortcut %d"), 37), - Input::KEY_EMOTE_37 - }, - { - strprintf(N_("Emote Shortcut %d"), 38), - Input::KEY_EMOTE_38 - }, - { - strprintf(N_("Emote Shortcut %d"), 39), - Input::KEY_EMOTE_39 - }, - { - strprintf(N_("Emote Shortcut %d"), 40), - Input::KEY_EMOTE_40 - }, - { - strprintf(N_("Emote Shortcut %d"), 41), - Input::KEY_EMOTE_41 - }, - { - strprintf(N_("Emote Shortcut %d"), 42), - Input::KEY_EMOTE_42 - }, - { - strprintf(N_("Emote Shortcut %d"), 43), - Input::KEY_EMOTE_43 - }, - { - strprintf(N_("Emote Shortcut %d"), 44), - Input::KEY_EMOTE_44 - }, - { - strprintf(N_("Emote Shortcut %d"), 45), - Input::KEY_EMOTE_45 - }, - { - strprintf(N_("Emote Shortcut %d"), 46), - Input::KEY_EMOTE_46 - }, - { - strprintf(N_("Emote Shortcut %d"), 47), - Input::KEY_EMOTE_47 - }, - { - strprintf(N_("Emote Shortcut %d"), 48), - Input::KEY_EMOTE_48 - }, - { - N_("Outfits Keys"), - Input::KEY_NO_VALUE - }, - { - N_("Wear Outfit"), - Input::KEY_WEAR_OUTFIT - }, - { - N_("Copy Outfit"), - Input::KEY_COPY_OUTFIT - }, - { - N_("Copy equipped to Outfit"), - Input::KEY_COPY_EQUIPED_OUTFIT - }, - { - N_("Chat Keys"), - Input::KEY_NO_VALUE - }, - { - N_("Toggle Chat"), - Input::KEY_TOGGLE_CHAT - }, - { - N_("Scroll Chat Up"), - Input::KEY_SCROLL_CHAT_UP - }, - { - N_("Scroll Chat Down"), - Input::KEY_SCROLL_CHAT_DOWN - }, - { - N_("Previous Chat Tab"), - Input::KEY_PREV_CHAT_TAB - }, - { - N_("Next Chat Tab"), - Input::KEY_NEXT_CHAT_TAB - }, - { - N_("Close current Chat Tab"), - Input::KEY_CLOSE_CHAT_TAB - }, - { - N_("Previous chat line"), - Input::KEY_CHAT_PREV_HISTORY - }, - { - N_("Next chat line"), - Input::KEY_CHAT_NEXT_HISTORY - }, - { - N_("Chat Auto Complete"), - Input::KEY_AUTOCOMPLETE_CHAT - }, - { - N_("Deactivate Chat Input"), - Input::KEY_DEACTIVATE_CHAT - }, - { - N_("Other Keys"), - Input::KEY_NO_VALUE - }, - { - N_("Ignore input 1"), - Input::KEY_IGNORE_INPUT_1 - }, - { - N_("Ignore input 2"), - Input::KEY_IGNORE_INPUT_2 - }, - { - N_("Direct Up"), - Input::KEY_DIRECT_UP - }, - { - N_("Direct Down"), - Input::KEY_DIRECT_DOWN - }, - { - N_("Direct Left"), - Input::KEY_DIRECT_LEFT - }, - { - N_("Direct Right"), - Input::KEY_DIRECT_RIGHT - }, - { - N_("Crazy moves"), - Input::KEY_CRAZY_MOVES - }, - { - N_("Change Crazy Move mode"), - Input::KEY_CHANGE_CRAZY_MOVES_TYPE - }, - { - N_("Quick Drop N Items from 0 slot"), - Input::KEY_QUICK_DROP - }, - { - N_("Quick Drop N Items"), - Input::KEY_QUICK_DROPN - }, - { - N_("Switch Quick Drop Counter"), - Input::KEY_SWITCH_QUICK_DROP - }, - { - N_("Quick heal target or self"), - Input::KEY_MAGIC_INMA1 - }, - { - N_("Use #itenplz spell"), - Input::KEY_MAGIC_ITENPLZ - }, - { - N_("Use magic attack"), - Input::KEY_MAGIC_ATTACK - }, - { - N_("Switch magic attack"), - Input::KEY_SWITCH_MAGIC_ATTACK - }, - { - N_("Switch pvp attack"), - Input::KEY_SWITCH_PVP_ATTACK - }, - { - N_("Change move type"), - Input::KEY_INVERT_DIRECTION - }, - { - N_("Change Attack Weapon Type"), - Input::KEY_CHANGE_ATTACK_WEAPON_TYPE - }, - { - N_("Change Attack Type"), - Input::KEY_CHANGE_ATTACK_TYPE - }, - { - N_("Change Follow mode"), - Input::KEY_CHANGE_FOLLOW_MODE - }, - { - N_("Change Imitation mode"), - Input::KEY_CHANGE_IMITATION_MODE - }, - { - N_("Disable / Enable Game modifier keys"), - Input::KEY_DISABLE_GAME_MODIFIERS - }, - { - N_("On / Off audio"), - Input::KEY_CHANGE_AUDIO - }, - { - N_("Enable / Disable away mode"), - Input::KEY_AWAY - }, - { - N_("Emulate right click from keyboard"), - Input::KEY_RIGHT_CLICK - }, - { - N_("Toggle camera mode"), - Input::KEY_CAMERA - }, - { - N_("Modifier key"), - Input::KEY_MOD - } -}; - -const int keysSize = sizeof(setupActionData) / sizeof(SetupActionData); /** * The list model for key function list. * @@ -721,36 +54,64 @@ const int keysSize = sizeof(setupActionData) / sizeof(SetupActionData); class KeyListModel : public gcn::ListModel { public: + KeyListModel() : + gcn::ListModel(), + mDataNum(0), + mSize(0) + { + } + /** * Returns the number of elements in container. */ int getNumberOfElements() - { return keysSize; } + { return mSize; } /** * Returns element from container. */ std::string getElementAt(int i) - { return mKeyFunctions[i]; } + { return setupActionData[selectedData][i].text; } /** * Sets element from container. */ void setElementAt(int i, const std::string &caption) - { mKeyFunctions[i] = caption; } + { setupActionData[selectedData][i].text = caption; } + + void setSize(int size) + { mSize = size; } + + void setDataNum(int num) + { mDataNum = num; } private: - std::string mKeyFunctions[keysSize]; + int mDataNum; + int mSize; }; Setup_Input::Setup_Input(): mKeyListModel(new KeyListModel), mKeyList(new ListBox(mKeyListModel)), - mKeySetting(false) + mKeySetting(false), + mActionDataSize(nullptr) { inputManager.setSetupInput(this); setName(_("Input")); + selectedData = 0; + mActionDataSize = new int [7]; + + for (int f = 0; f < 7; f ++) + { + int cnt = 0; + while (!setupActionData[f][cnt].name.empty()) + cnt ++; + mActionDataSize[f] = cnt; + } + + mKeyListModel->setSize(mActionDataSize[0]); + refreshKeys(); mKeyList->addActionListener(this); @@ -769,11 +130,22 @@ Setup_Input::Setup_Input(): mMakeDefaultButton = new Button(_("Default"), "makeDefault", this); mMakeDefaultButton->addActionListener(this); + mTabs = new TabStrip(config.getIntValue("fontSize") + 10); + mTabs->addActionListener(this); + mTabs->setActionEventId("tabs_"); + int k = 0; + while (pages[k]) + { + mTabs->addButton(gettext(pages[k]), pages[k]); + k ++; + } + // Do the layout LayoutHelper h(this); ContainerPlacer place = h.getPlacer(0, 0); - place(0, 0, scrollArea, 4, 6).setPadding(2); + place(0, 0, mTabs, 4); + place(0, 1, scrollArea, 4, 5).setPadding(2); place(0, 6, mMakeDefaultButton); place(2, 6, mAssignKeyButton); place(3, 6, mUnassignKeyButton); @@ -809,8 +181,8 @@ void Setup_Input::apply() new OkDialog(_("Key Conflict(s) Detected."), strprintf(_("Conflict \"%s\" and \"%s\" keys. " "Resolve them, or gameplay may result in strange behaviour."), - setupActionData[s1].name.c_str(), - setupActionData[s2].name.c_str()), DIALOG_ERROR); + setupActionData[selectedData][s1].name.c_str(), + setupActionData[selectedData][s2].name.c_str()), DIALOG_ERROR); } keyboard.setEnabled(true); inputManager.store(); @@ -828,14 +200,17 @@ void Setup_Input::cancel() void Setup_Input::action(const gcn::ActionEvent &event) { + logger->log("event: %s", event.getId().c_str()); + const std::string id = event.getId(); + if (event.getSource() == mKeyList) { if (!mKeySetting) { int i(mKeyList->getSelected()); - if (i >= 0 && i < keysSize) + if (i >= 0 && i < mActionDataSize[selectedData]) { - if (setupActionData[i].actionId + if (setupActionData[selectedData][i].actionId == Input::KEY_NO_VALUE) { mAssignKeyButton->setEnabled(false); @@ -849,27 +224,27 @@ void Setup_Input::action(const gcn::ActionEvent &event) } } } - else if (event.getId() == "assign") + else if (id == "assign") { mKeySetting = true; mAssignKeyButton->setEnabled(false); keyboard.setEnabled(false); int i(mKeyList->getSelected()); - if (i >= 0 && i < keysSize) + if (i >= 0 && i < mActionDataSize[selectedData]) { - const SetupActionData &key = setupActionData[i]; + const SetupActionData &key = setupActionData[selectedData][i]; int ik = key.actionId; inputManager.setNewKeyIndex(ik); mKeyListModel->setElementAt(i, std::string( gettext(key.name.c_str())) + ": ?"); } } - else if (event.getId() == "unassign") + else if (id == "unassign") { int i(mKeyList->getSelected()); - if (i >= 0 && i < keysSize) + if (i >= 0 && i < mActionDataSize[selectedData]) { - const SetupActionData &key = setupActionData[i]; + const SetupActionData &key = setupActionData[selectedData][i]; int ik = key.actionId; inputManager.setNewKeyIndex(ik); refreshAssignedKey(mKeyList->getSelected()); @@ -877,16 +252,34 @@ void Setup_Input::action(const gcn::ActionEvent &event) } mAssignKeyButton->setEnabled(true); } - else if (event.getId() == "makeDefault") + else if (id == "makeDefault") { inputManager.makeDefault(); refreshKeys(); } + else if (!id.find("tabs_")) + { + int k = 0; + std::string str = "tabs_"; + while (pages[k]) + { + if (str + pages[k] == id) + break; + k ++; + } + if (pages[k] && str + pages[k] == id) + { + selectedData = k; + mKeyListModel->setSize(mActionDataSize[k]); + refreshKeys(); + mKeyList->setSelected(0); + } + } } void Setup_Input::refreshAssignedKey(int index) { - const SetupActionData &key = setupActionData[index]; + const SetupActionData &key = setupActionData[selectedData][index]; if (key.actionId == Input::KEY_NO_VALUE) { const std::string str = " \342\200\225\342\200\225\342\200\225" @@ -913,9 +306,9 @@ void Setup_Input::newKeyCallback(int index) int Setup_Input::keyToSetupData(int index) { - for (int i = 0; i < keysSize; i++) + for (int i = 0; i < mActionDataSize[selectedData]; i++) { - const SetupActionData &key = setupActionData[i]; + const SetupActionData &key = setupActionData[selectedData][i]; if (key.actionId == index) return i; } @@ -924,7 +317,7 @@ int Setup_Input::keyToSetupData(int index) void Setup_Input::refreshKeys() { - for (int i = 0; i < keysSize; i++) + for (int i = 0; i < mActionDataSize[selectedData]; i++) refreshAssignedKey(i); } diff --git a/src/gui/setup_input.h b/src/gui/setup_input.h index 79c7e73ff..b2e2d64c0 100644 --- a/src/gui/setup_input.h +++ b/src/gui/setup_input.h @@ -33,6 +33,9 @@ #include <string> +class TabStrip; +struct SetupActionData; + class Setup_Input : public SetupTab { public: @@ -81,8 +84,11 @@ class Setup_Input : public SetupTab gcn::Button *mAssignKeyButton; gcn::Button *mUnassignKeyButton; gcn::Button *mMakeDefaultButton; + TabStrip *mTabs; bool mKeySetting; /**< flag to check if key being set. */ + + int *mActionDataSize; }; #endif diff --git a/src/gui/setupactiondata.h b/src/gui/setupactiondata.h new file mode 100644 index 000000000..53699110b --- /dev/null +++ b/src/gui/setupactiondata.h @@ -0,0 +1,951 @@ +/* + * Setup action data configuration + * 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-2012 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_SETUPACTIONDATA_H +#define GUI_SETUPACTIONDATA_H + +#include "utils/gettext.h" + +#include "debug.h" + +int selectedData = 0; + +struct SetupActionData +{ + const std::string name; + const int actionId; + std::string text; +}; + +static SetupActionData setupActionData0[] = +{ + { + N_("Move Keys"), + Input::KEY_NO_VALUE, + "", + }, + { + N_("Move Up"), + Input::KEY_MOVE_UP, + "", + }, + { + N_("Move Down"), + Input::KEY_MOVE_DOWN, + "", + }, + { + N_("Move Left"), + Input::KEY_MOVE_LEFT, + "", + }, + { + N_("Move Right"), + Input::KEY_MOVE_RIGHT, + "", + }, + { + N_("Target and attack keys"), + Input::KEY_NO_VALUE, + "", + }, + { + N_("Attack"), + Input::KEY_ATTACK, + "", + }, + { + N_("Target & Attack"), + Input::KEY_TARGET_ATTACK, + "", + }, + { + N_("Move to Target"), + Input::KEY_MOVE_TO_TARGET, + "", + }, + { + N_("Change Move to Target type"), + Input::KEY_CHANGE_MOVE_TO_TARGET, + "", + }, + { + N_("Move to Home location"), + Input::KEY_MOVE_TO_HOME, + "", + }, + { + N_("Set home location"), + Input::KEY_SET_HOME, + "", + }, + { + N_("Move to navigation point"), + Input::KEY_MOVE_TO_POINT, + "", + }, + { + N_("Talk"), + Input::KEY_TALK, + "", + }, + { + N_("Stop Attack"), + Input::KEY_STOP_ATTACK, + "", + }, + { + N_("Untarget"), + Input::KEY_UNTARGET, + "", + }, + { + N_("Target monster"), + Input::KEY_TARGET_MONSTER, + "", + }, + { + N_("Target NPC"), + Input::KEY_TARGET_NPC, + "", + }, + { + N_("Target Player"), + Input::KEY_TARGET_PLAYER, + "", + }, + { + N_("Other Keys"), + Input::KEY_NO_VALUE, + "", + }, + { + N_("Pickup"), + Input::KEY_PICKUP, + "", + }, + { + N_("Change Pickup Type"), + Input::KEY_CHANGE_PICKUP_TYPE, + "", + }, + { + N_("Sit"), + Input::KEY_SIT, + "", + }, + { + N_("Screenshot"), + Input::KEY_SCREENSHOT, + "", + }, + { + N_("Enable/Disable Trading"), + Input::KEY_TRADE, + "", + }, + { + N_("Change Map View Mode"), + Input::KEY_PATHFIND, + "", + }, + { + N_("Select OK"), + Input::KEY_OK, + "", + }, + { + N_("Quit"), + Input::KEY_QUIT, + "", + }, + { + "", + Input::KEY_NO_VALUE, + "" + } +}; + +static SetupActionData setupActionData1[] = +{ + { + N_("Shortcuts modifiers keys"), + Input::KEY_NO_VALUE, + "" + }, + { + N_("Item Shortcuts Key"), + Input::KEY_SHORTCUTS_KEY, + "", + }, + { + N_("Shortcuts keys"), + Input::KEY_NO_VALUE, + "" + }, + { + strprintf(N_("Item Shortcut %d"), 1), + Input::KEY_SHORTCUT_1, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 2), + Input::KEY_SHORTCUT_2, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 3), + Input::KEY_SHORTCUT_3, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 4), + Input::KEY_SHORTCUT_4, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 5), + Input::KEY_SHORTCUT_5, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 6), + Input::KEY_SHORTCUT_6, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 7), + Input::KEY_SHORTCUT_7, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 8), + Input::KEY_SHORTCUT_8, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 9), + Input::KEY_SHORTCUT_9, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 10), + Input::KEY_SHORTCUT_10, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 11), + Input::KEY_SHORTCUT_11, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 12), + Input::KEY_SHORTCUT_12, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 13), + Input::KEY_SHORTCUT_13, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 14), + Input::KEY_SHORTCUT_14, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 15), + Input::KEY_SHORTCUT_15, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 16), + Input::KEY_SHORTCUT_16, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 17), + Input::KEY_SHORTCUT_17, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 18), + Input::KEY_SHORTCUT_18, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 19), + Input::KEY_SHORTCUT_19, + "", + }, + { + strprintf(N_("Item Shortcut %d"), 20), + Input::KEY_SHORTCUT_20, + "", + }, + { + "", + Input::KEY_NO_VALUE, + "" + } +}; + +static SetupActionData setupActionData2[] = +{ + { + N_("Hide Windows"), + Input::KEY_HIDE_WINDOWS, + "", + }, + { + N_("Help Window"), + Input::KEY_WINDOW_HELP, + "", + }, + { + N_("Status Window"), + Input::KEY_WINDOW_STATUS, + "", + }, + { + N_("Inventory Window"), + Input::KEY_WINDOW_INVENTORY, + "", + }, + { + N_("Equipment Window"), + Input::KEY_WINDOW_EQUIPMENT, + "", + }, + { + N_("Skill Window"), + Input::KEY_WINDOW_SKILL, + "", + }, + { + N_("Minimap Window"), + Input::KEY_WINDOW_MINIMAP, + "", + }, + { + N_("Chat Window"), + Input::KEY_WINDOW_CHAT, + "", + }, + { + N_("Item Shortcut Window"), + Input::KEY_WINDOW_SHORTCUT, + "", + }, + { + N_("Setup Window"), + Input::KEY_WINDOW_SETUP, + "", + }, + { + N_("Debug Window"), + Input::KEY_WINDOW_DEBUG, + "", + }, + { + N_("Social Window"), + Input::KEY_WINDOW_SOCIAL, + "", + }, + { + N_("Emote Shortcut Window"), + Input::KEY_WINDOW_EMOTE_SHORTCUT, + "", + }, + { + N_("Outfits Window"), + Input::KEY_WINDOW_OUTFIT, + "", + }, + { + N_("Shop Window"), + Input::KEY_WINDOW_SHOP, + "", + }, + { + N_("Quick drop Window"), + Input::KEY_WINDOW_DROP, + "", + }, + { + N_("Kill Stats Window"), + Input::KEY_WINDOW_KILLS, + "", + }, + { + N_("Commands Window"), + Input::KEY_WINDOW_SPELLS, + "", + }, + { + N_("Bot Checker Window"), + Input::KEY_WINDOW_BOT_CHECKER, + "", + }, + { + N_("Who Is Online Window"), + Input::KEY_WINDOW_ONLINE, + "", + }, + { + N_("Did you know Window"), + Input::KEY_WINDOW_DIDYOUKNOW, + "", + }, + { + N_("Previous Social Tab"), + Input::KEY_PREV_SOCIAL_TAB, + "", + }, + { + N_("Next Social Tab"), + Input::KEY_NEXT_SOCIAL_TAB, + "", + }, + { + "", + Input::KEY_NO_VALUE, + "" + } +}; + +static SetupActionData setupActionData3[] = +{ + { + N_("Emote modifiers keys"), + Input::KEY_NO_VALUE, + "" + }, + { + N_("Emote modifier key"), + Input::KEY_EMOTE, + "", + }, + { + N_("Emote shortcuts"), + Input::KEY_NO_VALUE, + "" + }, + { + strprintf(N_("Emote Shortcut %d"), 1), + Input::KEY_EMOTE_1, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 2), + Input::KEY_EMOTE_2, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 3), + Input::KEY_EMOTE_3, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 4), + Input::KEY_EMOTE_4, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 5), + Input::KEY_EMOTE_5, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 6), + Input::KEY_EMOTE_6, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 7), + Input::KEY_EMOTE_7, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 8), + Input::KEY_EMOTE_8, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 9), + Input::KEY_EMOTE_9, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 10), + Input::KEY_EMOTE_10, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 11), + Input::KEY_EMOTE_11, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 12), + Input::KEY_EMOTE_12, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 13), + Input::KEY_EMOTE_13, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 14), + Input::KEY_EMOTE_14, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 15), + Input::KEY_EMOTE_15, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 16), + Input::KEY_EMOTE_16, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 17), + Input::KEY_EMOTE_17, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 18), + Input::KEY_EMOTE_18, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 19), + Input::KEY_EMOTE_19, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 20), + Input::KEY_EMOTE_20, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 21), + Input::KEY_EMOTE_21, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 22), + Input::KEY_EMOTE_22, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 23), + Input::KEY_EMOTE_23, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 24), + Input::KEY_EMOTE_24, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 25), + Input::KEY_EMOTE_25, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 26), + Input::KEY_EMOTE_26, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 27), + Input::KEY_EMOTE_27, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 28), + Input::KEY_EMOTE_28, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 29), + Input::KEY_EMOTE_29, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 30), + Input::KEY_EMOTE_30, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 31), + Input::KEY_EMOTE_31, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 32), + Input::KEY_EMOTE_32, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 33), + Input::KEY_EMOTE_33, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 34), + Input::KEY_EMOTE_34, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 35), + Input::KEY_EMOTE_35, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 36), + Input::KEY_EMOTE_36, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 37), + Input::KEY_EMOTE_37, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 38), + Input::KEY_EMOTE_38, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 39), + Input::KEY_EMOTE_39, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 40), + Input::KEY_EMOTE_40, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 41), + Input::KEY_EMOTE_41, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 42), + Input::KEY_EMOTE_42, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 43), + Input::KEY_EMOTE_43, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 44), + Input::KEY_EMOTE_44, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 45), + Input::KEY_EMOTE_45, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 46), + Input::KEY_EMOTE_46, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 47), + Input::KEY_EMOTE_47, + "", + }, + { + strprintf(N_("Emote Shortcut %d"), 48), + Input::KEY_EMOTE_48, + "", + }, + { + "", + Input::KEY_NO_VALUE, + "" + } +}; + +static SetupActionData setupActionData4[] = +{ + { + N_("Wear Outfit"), + Input::KEY_WEAR_OUTFIT, + "", + }, + { + N_("Copy Outfit"), + Input::KEY_COPY_OUTFIT, + "", + }, + { + N_("Copy equipped to Outfit"), + Input::KEY_COPY_EQUIPED_OUTFIT, + "", + }, + { + "", + Input::KEY_NO_VALUE, + "" + } +}; + +static SetupActionData setupActionData5[] = +{ + { + N_("Toggle Chat"), + Input::KEY_TOGGLE_CHAT, + "", + }, + { + N_("Scroll Chat Up"), + Input::KEY_SCROLL_CHAT_UP, + "", + }, + { + N_("Scroll Chat Down"), + Input::KEY_SCROLL_CHAT_DOWN, + "", + }, + { + N_("Previous Chat Tab"), + Input::KEY_PREV_CHAT_TAB, + "", + }, + { + N_("Next Chat Tab"), + Input::KEY_NEXT_CHAT_TAB, + "", + }, + { + N_("Close current Chat Tab"), + Input::KEY_CLOSE_CHAT_TAB, + "", + }, + { + N_("Previous chat line"), + Input::KEY_CHAT_PREV_HISTORY, + "", + }, + { + N_("Next chat line"), + Input::KEY_CHAT_NEXT_HISTORY, + "", + }, + { + N_("Chat Auto Complete"), + Input::KEY_AUTOCOMPLETE_CHAT, + "", + }, + { + N_("Deactivate Chat Input"), + Input::KEY_DEACTIVATE_CHAT, + "", + }, + { + "", + Input::KEY_NO_VALUE, + "" + } +}; + +static SetupActionData setupActionData6[] = +{ + { + N_("Ignore input 1"), + Input::KEY_IGNORE_INPUT_1, + "", + }, + { + N_("Ignore input 2"), + Input::KEY_IGNORE_INPUT_2, + "", + }, + { + N_("Direct Up"), + Input::KEY_DIRECT_UP, + "", + }, + { + N_("Direct Down"), + Input::KEY_DIRECT_DOWN, + "", + }, + { + N_("Direct Left"), + Input::KEY_DIRECT_LEFT, + "", + }, + { + N_("Direct Right"), + Input::KEY_DIRECT_RIGHT, + "", + }, + { + N_("Crazy moves"), + Input::KEY_CRAZY_MOVES, + "", + }, + { + N_("Change Crazy Move mode"), + Input::KEY_CHANGE_CRAZY_MOVES_TYPE, + "", + }, + { + N_("Quick Drop N Items from 0 slot"), + Input::KEY_QUICK_DROP, + "", + }, + { + N_("Quick Drop N Items"), + Input::KEY_QUICK_DROPN, + "", + }, + { + N_("Switch Quick Drop Counter"), + Input::KEY_SWITCH_QUICK_DROP, + "", + }, + { + N_("Quick heal target or self"), + Input::KEY_MAGIC_INMA1, + "", + }, + { + N_("Use #itenplz spell"), + Input::KEY_MAGIC_ITENPLZ, + "", + }, + { + N_("Use magic attack"), + Input::KEY_MAGIC_ATTACK, + "", + }, + { + N_("Switch magic attack"), + Input::KEY_SWITCH_MAGIC_ATTACK, + "", + }, + { + N_("Switch pvp attack"), + Input::KEY_SWITCH_PVP_ATTACK, + "", + }, + { + N_("Change move type"), + Input::KEY_INVERT_DIRECTION, + "", + }, + { + N_("Change Attack Weapon Type"), + Input::KEY_CHANGE_ATTACK_WEAPON_TYPE, + "", + }, + { + N_("Change Attack Type"), + Input::KEY_CHANGE_ATTACK_TYPE, + "", + }, + { + N_("Change Follow mode"), + Input::KEY_CHANGE_FOLLOW_MODE, + "", + }, + { + N_("Change Imitation mode"), + Input::KEY_CHANGE_IMITATION_MODE, + "", + }, + { + N_("Disable / Enable Game modifier keys"), + Input::KEY_DISABLE_GAME_MODIFIERS, + "", + }, + { + N_("On / Off audio"), + Input::KEY_CHANGE_AUDIO, + "", + }, + { + N_("Enable / Disable away mode"), + Input::KEY_AWAY, + "", + }, + { + N_("Emulate right click from keyboard"), + Input::KEY_RIGHT_CLICK, + "", + }, + { + N_("Toggle camera mode"), + Input::KEY_CAMERA, + "", + }, + { + N_("Modifier key"), + Input::KEY_MOD, + "", + }, + { + "", + Input::KEY_NO_VALUE, + "" + } +}; + +static SetupActionData *setupActionData[] = +{ + setupActionData0, + setupActionData1, + setupActionData2, + setupActionData3, + setupActionData4, + setupActionData5, + setupActionData6 +}; + +static const char *pages[] = +{ + N_("Basic"), + N_("Shortcuts"), + N_("Windows"), + N_("Emotes"), + N_("Outfits"), + N_("Chat"), + N_("Other"), + nullptr +}; + +#endif diff --git a/src/gui/widgets/tabstrip.cpp b/src/gui/widgets/tabstrip.cpp index 6dcf02008..6b3f42fe9 100644 --- a/src/gui/widgets/tabstrip.cpp +++ b/src/gui/widgets/tabstrip.cpp @@ -32,6 +32,11 @@ TabStrip::TabStrip(std::string group, int height, int spacing) : { } +TabStrip::TabStrip(int height, int spacing) : + WidgetGroup("", height, spacing) +{ +} + gcn::Widget *TabStrip::createWidget(std::string text) { Button *widget = new Button(); diff --git a/src/gui/widgets/tabstrip.h b/src/gui/widgets/tabstrip.h index 588833606..078845b39 100644 --- a/src/gui/widgets/tabstrip.h +++ b/src/gui/widgets/tabstrip.h @@ -29,7 +29,9 @@ class TabStrip : public WidgetGroup { public: - TabStrip(std::string group, int height, int spacing); + TabStrip(std::string group, int height, int spacing = 0); + + TabStrip(int height, int spacing = 0); gcn::Widget *createWidget(std::string name); |