From 479e8a53ec90c19890dfb4b3746c4453769d806a Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Mon, 19 Sep 2011 19:33:14 +0300
Subject: Add comment field to spells/commands.

---
 src/gui/spellpopup.cpp        | 35 +++++++++++++++++++++++++++++------
 src/gui/spellpopup.h          |  2 ++
 src/gui/textcommandeditor.cpp | 42 ++++++++++++++++++++++++++----------------
 src/gui/textcommandeditor.h   |  4 ++++
 src/spellmanager.cpp          | 43 +++++++++++++++++++++++++++----------------
 src/textcommand.cpp           | 15 +++++++++------
 src/textcommand.h             | 19 ++++++++++++-------
 7 files changed, 109 insertions(+), 51 deletions(-)

(limited to 'src')

diff --git a/src/gui/spellpopup.cpp b/src/gui/spellpopup.cpp
index c7d25e257..66d69b197 100644
--- a/src/gui/spellpopup.cpp
+++ b/src/gui/spellpopup.cpp
@@ -42,14 +42,15 @@
 #include "debug.h"
 
 SpellPopup::SpellPopup():
-    Popup("SpellPopup", "spellpopup.xml")
+    Popup("SpellPopup", "spellpopup.xml"),
+    mItemName(new Label),
+    mItemComment(new Label)
 {
-    // Item Name
-    mItemName = new Label;
     mItemName->setFont(boldFont);
-    mItemName->setPosition(getPadding(), getPadding());
 
     add(mItemName);
+    add(mItemComment);
+
     addMouseListener(this);
 }
 
@@ -60,17 +61,39 @@ SpellPopup::~SpellPopup()
 void SpellPopup::setItem(TextCommand *spell)
 {
     if (spell)
+    {
         mItemName->setCaption(spell->getName());
+        mItemComment->setCaption(spell->getComment());
+    }
     else
+    {
         mItemName->setCaption("?");
+        mItemComment->setCaption("");
+    }
 
     mItemName->adjustSize();
+    mItemComment->adjustSize();
     int minWidth = mItemName->getWidth();
+    if (mItemComment->getWidth() > minWidth)
+        minWidth = mItemComment->getWidth();
 
     minWidth += 8;
-    setWidth(minWidth);
+    setWidth(minWidth + 2 * getPadding());
 
-    setContentSize(minWidth, getPadding() + getFont()->getHeight());
+    mItemName->setPosition(getPadding(), getPadding());
+    mItemComment->setPosition(getPadding(),
+        getPadding() + mItemName->getHeight());
+
+    if (mItemComment->getCaption() != "")
+    {
+        setContentSize(minWidth, getPadding()
+            + 2 * getFont()->getHeight());
+    }
+    else
+    {
+        setContentSize(minWidth, getPadding()
+            + getFont()->getHeight());
+    }
 }
 
 void SpellPopup::view(int x, int y)
diff --git a/src/gui/spellpopup.h b/src/gui/spellpopup.h
index 69c47bf45..883b2bfe0 100644
--- a/src/gui/spellpopup.h
+++ b/src/gui/spellpopup.h
@@ -63,6 +63,8 @@ class SpellPopup : public Popup
 
     private:
         gcn::Label *mItemName;
+
+        gcn::Label *mItemComment;
 };
 
 #endif // SPELLPOPUP_H
diff --git a/src/gui/textcommandeditor.cpp b/src/gui/textcommandeditor.cpp
index 282f23ee1..0bd25fcb5 100644
--- a/src/gui/textcommandeditor.cpp
+++ b/src/gui/textcommandeditor.cpp
@@ -168,7 +168,7 @@ TextCommandEditor::TextCommandEditor(TextCommand *command):
     Window(_("Command Editor"), false, 0, "commandeditor.xml")
 {
     int w = 350;
-    int h = 350;
+    int h = 370;
 
     mEnabledKeyboard = keyboard.isEnabled();
     keyboard.setEnabled(false);
@@ -197,6 +197,9 @@ TextCommandEditor::TextCommandEditor(TextCommand *command):
     mCommandLabel = new Label(_("Command:"));
     mCommandTextField = new TextField();
 
+    mCommentLabel = new Label(_("Comment:"));
+    mCommentTextField = new TextField();
+
     mManaLabel = new Label(_("Mana:"));
     mManaField = new IntTextField(0);
     mManaField->setRange(0, 500);
@@ -248,6 +251,7 @@ TextCommandEditor::TextCommandEditor(TextCommand *command):
 
     mSymbolTextField->setText(command->getSymbol());
     mCommandTextField->setText(command->getCommand());
+    mCommentTextField->setText(command->getComment());
     mManaField->setValue(command->getMana());
     mTypeDropDown->setSelected(command->getTargetType());
     mMagicLvlField->setValue(command->getBaseLvl());
@@ -263,25 +267,29 @@ TextCommandEditor::TextCommandEditor(TextCommand *command):
     placer(2, 1, mSymbolTextField, 3).setPadding(3);
     placer(0, 2, mCommandLabel, 2).setPadding(3);
     placer(2, 2, mCommandTextField, 4).setPadding(3);
-    placer(0, 3, mTypeLabel, 2).setPadding(3);
-    placer(2, 3, mTypeDropDown, 3).setPadding(3);
 
-    placer(0, 4, mIconLabel, 2).setPadding(3);
-    placer(2, 4, mIconDropDown, 3).setPadding(3);
+    placer(0, 3, mCommentLabel, 2).setPadding(3);
+    placer(2, 3, mCommentTextField, 4).setPadding(3);
+
+    placer(0, 4, mTypeLabel, 2).setPadding(3);
+    placer(2, 4, mTypeDropDown, 3).setPadding(3);
+
+    placer(0, 5, mIconLabel, 2).setPadding(3);
+    placer(2, 5, mIconDropDown, 3).setPadding(3);
 
-    placer(0, 5, mManaLabel, 2).setPadding(3);
-    placer(2, 5, mManaField, 3).setPadding(3);
-    placer(0, 6, mMagicLvlLabel, 2).setPadding(3);
-    placer(2, 6, mMagicLvlField, 3).setPadding(3);
+    placer(0, 6, mManaLabel, 2).setPadding(3);
+    placer(2, 6, mManaField, 3).setPadding(3);
+    placer(0, 7, mMagicLvlLabel, 2).setPadding(3);
+    placer(2, 7, mMagicLvlField, 3).setPadding(3);
 
-    placer(0, 7, mSchoolLabel, 2).setPadding(3);
-    placer(2, 7, mSchoolDropDown, 3).setPadding(3);
-    placer(0, 8, mSchoolLvlLabel, 2).setPadding(3);
-    placer(2, 8, mSchoolLvlField, 3).setPadding(3);
+    placer(0, 8, mSchoolLabel, 2).setPadding(3);
+    placer(2, 8, mSchoolDropDown, 3).setPadding(3);
+    placer(0, 9, mSchoolLvlLabel, 2).setPadding(3);
+    placer(2, 9, mSchoolLvlField, 3).setPadding(3);
 
-    placer(0, 9, mSaveButton, 2).setPadding(3);
-    placer(2, 9, mCancelButton, 2).setPadding(3);
-    placer(4, 9, mDeleteButton, 2).setPadding(3);
+    placer(0, 10, mSaveButton, 2).setPadding(3);
+    placer(2, 10, mCancelButton, 2).setPadding(3);
+    placer(4, 10, mDeleteButton, 2).setPadding(3);
 
     setWidth(w);
     setHeight(h);
@@ -375,6 +383,7 @@ void TextCommandEditor::save()
 
     mCommand->setSymbol(mSymbolTextField->getText());
     mCommand->setCommand(mCommandTextField->getText());
+    mCommand->setComment(mCommentTextField->getText());
     mCommand->setMana(mManaField->getValue());
     mCommand->setTargetType(
             static_cast<SpellTarget>(mTypeDropDown->getSelected()));
@@ -392,6 +401,7 @@ void TextCommandEditor::deleteCommand()
     mCommand->setCommandType(TEXT_COMMAND_TEXT);
     mCommand->setSymbol("");
     mCommand->setCommand("");
+    mCommand->setComment("");
     mCommand->setMana(0);
     mCommand->setTargetType(NOTARGET);
     mCommand->setIcon("");
diff --git a/src/gui/textcommandeditor.h b/src/gui/textcommandeditor.h
index 236c42320..9239481b7 100644
--- a/src/gui/textcommandeditor.h
+++ b/src/gui/textcommandeditor.h
@@ -84,6 +84,10 @@ class TextCommandEditor : public Window, public gcn::ActionListener
         TextField *mSymbolTextField;
         Label *mCommandLabel;
         TextField *mCommandTextField;
+
+        Label *mCommentLabel;
+        TextField *mCommentTextField;
+
         Label *mTypeLabel;
         DropDown *mTypeDropDown;
         Label *mIconLabel;
diff --git a/src/spellmanager.cpp b/src/spellmanager.cpp
index 895ac94f2..4f7d038f2 100644
--- a/src/spellmanager.cpp
+++ b/src/spellmanager.cpp
@@ -68,31 +68,31 @@ void SpellManager::fillSpells()
 {
 //id, std::string name, std::string symbol, ST type, int basicLvl, MagicSchool school, int schoolLvl, int mana)
 
-    addSpell(new TextCommand(0, "lum", "#lum", ALLOWTARGET,
+    addSpell(new TextCommand(0, "lum", "#lum", "heal with lifestones", ALLOWTARGET,
              "", 1, SKILL_MAGIC_LIFE, 0, 6));
-    addSpell(new TextCommand(1, "inm", "#inma", NEEDTARGET,
+    addSpell(new TextCommand(1, "inm", "#inma", "heal", NEEDTARGET,
              "", 2, SKILL_MAGIC_LIFE, 2, 10));
-    addSpell(new TextCommand(2, "fla", "#flar", NOTARGET,
+    addSpell(new TextCommand(2, "fla", "#flar", "", NOTARGET,
              "", 1, SKILL_MAGIC_WAR, 0, 10));
-    addSpell(new TextCommand(3, "chi", "#chiza", NOTARGET,
+    addSpell(new TextCommand(3, "chi", "#chiza", "", NOTARGET,
              "", 1, SKILL_MAGIC_WAR, 0, 9));
-    addSpell(new TextCommand(4, "ing", "#ingrav", NOTARGET,
+    addSpell(new TextCommand(4, "ing", "#ingrav", "", NOTARGET,
              "", 2, SKILL_MAGIC_WAR, 2, 20));
-    addSpell(new TextCommand(5, "fri", "#frillyar", NOTARGET,
+    addSpell(new TextCommand(5, "fri", "#frillyar", "", NOTARGET,
              "", 2, SKILL_MAGIC_WAR, 2, 25));
-    addSpell(new TextCommand(6, "upm", "#upmarmu", NOTARGET,
+    addSpell(new TextCommand(6, "upm", "#upmarmu", "", NOTARGET,
              "", 2, SKILL_MAGIC_WAR, 2, 20));
-    addSpell(new TextCommand(7, "ite", "#itenplz", NOTARGET,
+    addSpell(new TextCommand(7, "ite", "#itenplz", "", NOTARGET,
              "", 1, SKILL_MAGIC_NATURE, 0, 3));
-    addSpell(new TextCommand(8, "bet", "#betsanc", ALLOWTARGET,
+    addSpell(new TextCommand(8, "bet", "#betsanc", "", ALLOWTARGET,
              "", 2, SKILL_MAGIC_NATURE, 2, 14));
-    addSpell(new TextCommand(9, "abi", "#abizit", NOTARGET,
+    addSpell(new TextCommand(9, "abi", "#abizit", "", NOTARGET,
              "", 1, SKILL_MAGIC, 0, 1));
-    addSpell(new TextCommand(10, "inw", "#inwilt", NOTARGET,
+    addSpell(new TextCommand(10, "inw", "#inwilt", "", NOTARGET,
              "", 2, SKILL_MAGIC, 2, 7));
-    addSpell(new TextCommand(11, "hi", "hi", NOTARGET, ""));
-    addSpell(new TextCommand(12, "hea", "heal", NOTARGET, ""));
-    addSpell(new TextCommand(13, "@sp", "@spawn maggot 10", NOTARGET, ""));
+    addSpell(new TextCommand(11, "hi", "hi", "", NOTARGET, ""));
+    addSpell(new TextCommand(12, "hea", "heal", "", NOTARGET, ""));
+    addSpell(new TextCommand(13, "@sp", "@spawn maggot 10", "", NOTARGET, ""));
     for (int f = 12; f < SPELL_SHORTCUT_ITEMS * SPELL_SHORTCUT_TABS; f++)
         addSpell(new TextCommand(f));
 }
@@ -269,6 +269,8 @@ void SpellManager::load(bool oldConfig)
 
         std::string cmd = cfg->getValue("commandShortcutCmd"
                                         + toString(i), "");
+        std::string comment = cfg->getValue("commandShortcutComment"
+                                        + toString(i), "");
         std::string symbol = cfg->getValue("commandShortcutSymbol"
                                            + toString(i), "");
         std::string icon = cfg->getValue("commandShortcutIcon"
@@ -276,13 +278,13 @@ void SpellManager::load(bool oldConfig)
 
         if (static_cast<TextCommandType>(commandType) == TEXT_COMMAND_MAGIC)
         {
-            addSpell(new TextCommand(i, symbol, cmd,
+            addSpell(new TextCommand(i, symbol, cmd, comment,
                 static_cast<SpellTarget>(targetType), icon, basicLvl,
                 static_cast<MagicSchool>(school), schoolLvl, mana));
         }
         else
         {
-            addSpell(new TextCommand(i, symbol, cmd,
+            addSpell(new TextCommand(i, symbol, cmd, comment,
                 static_cast<SpellTarget>(targetType), icon));
         }
     }
@@ -304,6 +306,15 @@ void SpellManager::save()
             {
                 serverConfig.deleteKey("commandShortcutCmd" + toString(i));
             }
+            if (spell->getComment() != "")
+            {
+                serverConfig.setValue("commandShortcutComment" + toString(i),
+                                      spell->getComment());
+            }
+            else
+            {
+                serverConfig.deleteKey("commandShortcutComment" + toString(i));
+            }
             if (spell->getSymbol() != "")
             {
                 serverConfig.setValue("commandShortcutSymbol" + toString(i),
diff --git a/src/textcommand.cpp b/src/textcommand.cpp
index 1402576d1..30d8c2a4c 100644
--- a/src/textcommand.cpp
+++ b/src/textcommand.cpp
@@ -31,11 +31,12 @@
 #include "debug.h"
 
 TextCommand::TextCommand(unsigned int id, std::string symbol,
-                         std::string command, SpellTarget type,
-                         std::string icon, unsigned int basicLvl,
-                         MagicSchool school, unsigned int schoolLvl,
-                         int mana) :
+                         std::string command,  std::string comment,
+                         SpellTarget type, std::string icon,
+                         unsigned int basicLvl, MagicSchool school,
+                         unsigned int schoolLvl, int mana) :
     mCommand(command),
+    mComment(comment),
     mSymbol(symbol),
     mTargetType(type),
     mIcon(icon),
@@ -52,9 +53,10 @@ TextCommand::TextCommand(unsigned int id, std::string symbol,
 
 
 TextCommand::TextCommand(unsigned int id, std::string symbol,
-                         std::string command, SpellTarget type,
-                         std::string icon) :
+                         std::string command, std::string comment,
+                         SpellTarget type, std::string icon) :
     mCommand(command),
+    mComment(comment),
     mSymbol(symbol),
     mTargetType(type),
     mIcon(icon),
@@ -71,6 +73,7 @@ TextCommand::TextCommand(unsigned int id, std::string symbol,
 
 TextCommand::TextCommand(unsigned int id) :
     mCommand(""),
+    mComment(""),
     mSymbol(""),
     mTargetType(NOTARGET),
     mIcon(""),
diff --git a/src/textcommand.h b/src/textcommand.h
index 5ddbe824d..b1af7667d 100644
--- a/src/textcommand.h
+++ b/src/textcommand.h
@@ -62,18 +62,16 @@ class TextCommand
         /**
          * Constructor.
          */
-        TextCommand(unsigned int id, std::string symbol,
-                    std::string command, SpellTarget type,
-                    std::string icon, unsigned int basicLvl,
-                    MagicSchool school = SKILL_MAGIC,
+        TextCommand(unsigned int id, std::string symbol, std::string command,
+                    std::string comment, SpellTarget type, std::string icon,
+                    unsigned int basicLvl, MagicSchool school = SKILL_MAGIC,
                     unsigned int schoolLvl = 0, int mana = 0);
 
         /**
          * Constructor.
          */
-        TextCommand(unsigned int id, std::string symbol,
-                    std::string command, SpellTarget type,
-                    std::string icon);
+        TextCommand(unsigned int id, std::string symbol, std::string command,
+                    std::string comment, SpellTarget type, std::string icon);
 
         /**
          * Constructor.
@@ -91,6 +89,9 @@ class TextCommand
         std::string getCommand() const
         { return mCommand; }
 
+        std::string getComment() const
+        { return mComment; }
+
         std::string getSymbol() const
         { return mSymbol; }
 
@@ -121,6 +122,9 @@ class TextCommand
         void setCommand(std::string command)
         { mCommand = command; }
 
+        void setComment(std::string comment)
+        { mComment = comment; }
+
         void setSymbol(std::string symbol)
         { mSymbol = symbol; }
 
@@ -159,6 +163,7 @@ class TextCommand
 
     protected:
         std::string mCommand;
+        std::string mComment;
         std::string mSymbol;
         SpellTarget mTargetType;
         std::string mIcon;
-- 
cgit v1.2.3-70-g09d2