summaryrefslogtreecommitdiff
path: root/src/gui/inttextfield.cpp
diff options
context:
space:
mode:
authorIra Rice <irarice@gmail.com>2009-01-18 19:04:02 -0700
committerIra Rice <irarice@gmail.com>2009-01-18 19:04:02 -0700
commitd2b804c1a817ccdd85b4b1220bf929e9d370d774 (patch)
tree35f82a41b5107802fab3bbca7b2a59f7a3271e18 /src/gui/inttextfield.cpp
parentd975741a095ae0dee82ff1dfdaa8e03439d7cf2b (diff)
downloadmana-client-d2b804c1a817ccdd85b4b1220bf929e9d370d774.tar.gz
mana-client-d2b804c1a817ccdd85b4b1220bf929e9d370d774.tar.bz2
mana-client-d2b804c1a817ccdd85b4b1220bf929e9d370d774.tar.xz
mana-client-d2b804c1a817ccdd85b4b1220bf929e9d370d774.zip
Fixed the NPC Integer input field, as well as cut some bull from the
NPC String class. The Integer input field was rather horribly broken to the point where it could send invalid data, the increment and decrement buttons didn't work, and overall it was tripping over itself. As for the NPC String, "The Mana World" as a string is not needed to set the field to that length, but instead fills the text field with that text for starting. This is completely inappropriate for a text entry field, and a more sensible default would be to leave it empty, so that people can type in what they want without having to delete it. Signed-off-by: Ira Rice <irarice@gmail.com>
Diffstat (limited to 'src/gui/inttextfield.cpp')
-rw-r--r--src/gui/inttextfield.cpp84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/gui/inttextfield.cpp b/src/gui/inttextfield.cpp
new file mode 100644
index 00000000..e8e6e69b
--- /dev/null
+++ b/src/gui/inttextfield.cpp
@@ -0,0 +1,84 @@
+/*
+ * The Mana World
+ * Copyright 2004 The Mana World Development Team
+ *
+ * This file is part of The Mana World.
+ *
+ * The Mana World 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.
+ *
+ * The Mana World 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 The Mana World; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "inttextfield.h"
+#include "sdlinput.h"
+
+#include "../utils/tostring.h"
+
+IntTextField::IntTextField(int def):
+ TextField(toString(def)),
+ mDefault(def),
+ mValue(def)
+{
+}
+
+void IntTextField::keyPressed(gcn::KeyEvent &event)
+{
+ const gcn::Key &key = event.getKey();
+
+ if (key.getValue() == Key::BACKSPACE ||
+ key.getValue() == Key::DELETE)
+ {
+ setText(std::string());
+ event.consume();
+ }
+
+ if (!key.isNumber())
+ return;
+
+ TextField::keyPressed(event);
+
+ std::istringstream s(getText());
+ int i;
+ s >> i;
+ setValue(i);
+}
+
+void IntTextField::setRange(int min, int max)
+{
+ mMin = min;
+ mMax = max;
+}
+
+int IntTextField::getValue()
+{
+ return getText().empty() ? mMin : mValue;
+}
+
+void IntTextField::setValue(int i)
+{
+ if (i >= mMin && i <= mMax)
+ mValue = i;
+ else if (i < mMin)
+ mValue = mMin;
+ else if (i > mMax)
+ mValue = mMax;
+
+ const std::string valStr = toString(mValue);
+ setText(valStr);
+ setCaretPosition(valStr.length() + 1);
+}
+
+void IntTextField::reset()
+{
+ setValue(mDefault);
+}