summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorPhilipp Sehmisch <crush@themanaworld.org>2009-01-18 23:12:15 +0100
committerPhilipp Sehmisch <crush@themanaworld.org>2009-01-18 23:12:15 +0100
commita10cebb21bdd211716628039b406362f2168c852 (patch)
treef8776ca56b5972b1ae6bae31e84b12d37019d41a /src/gui
parentf4abf6b94adf53db7a053f7c342cc79f69a03262 (diff)
parenta2c136d3ae4f192f30ea229c4a313bc528e26c90 (diff)
downloadmana-a10cebb21bdd211716628039b406362f2168c852.tar.gz
mana-a10cebb21bdd211716628039b406362f2168c852.tar.bz2
mana-a10cebb21bdd211716628039b406362f2168c852.tar.xz
mana-a10cebb21bdd211716628039b406362f2168c852.zip
Merge branch 'master' of git@gitorious.org:tmw/eathena
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/npcintegerdialog.cpp125
-rw-r--r--src/gui/npcintegerdialog.h82
-rw-r--r--src/gui/npcstringdialog.cpp77
-rw-r--r--src/gui/npcstringdialog.h78
-rw-r--r--src/gui/playerbox.cpp6
-rw-r--r--src/gui/register.cpp99
-rw-r--r--src/gui/register.h17
-rw-r--r--src/gui/setup_video.cpp4
-rw-r--r--src/gui/truetypefont.h4
9 files changed, 412 insertions, 80 deletions
diff --git a/src/gui/npcintegerdialog.cpp b/src/gui/npcintegerdialog.cpp
new file mode 100644
index 00000000..f5b6ac5b
--- /dev/null
+++ b/src/gui/npcintegerdialog.cpp
@@ -0,0 +1,125 @@
+/*
+ * 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 "npcintegerdialog.h"
+
+#include <limits>
+#include <sstream>
+
+#include "button.h"
+#include "textfield.h"
+
+#include "../npc.h"
+
+#include "../utils/gettext.h"
+#include "../utils/tostring.h"
+
+#include "widgets/layout.h"
+
+NpcIntegerDialog::NpcIntegerDialog():
+ Window(_("NPC Number Request"))
+{
+ mDecButton = new Button("-", "decvalue", this);
+ mIncButton = new Button("+", "incvalue", this);
+ mValueField = new TextField();
+ okButton = new Button(_("OK"), "ok", this);
+ cancelButton = new Button(_("Cancel"), "cancel", this);
+
+ mDecButton->setSize(20, 20);
+ mIncButton->setSize(20, 20);
+
+ place(0, 0, mDecButton);
+ place(1, 0, mValueField, 3);
+ place(4, 0, mIncButton);
+ place(2, 1, okButton);
+ place(3, 1, cancelButton, 2);
+ reflowLayout(175, 0);
+
+ setLocationRelativeTo(getParent());
+
+ mValueField->setActionEventId("valuefield");
+ mValueField->addKeyListener(this);
+}
+
+void NpcIntegerDialog::prepDialog(const int min, const int def, const int max)
+{
+ mMin = min;
+ mMax = max;
+ mDefault = def;
+ mValue = def;
+
+ mValueField->setText(toString(mValue));
+}
+
+int NpcIntegerDialog::getValue()
+{
+ return mValue;
+}
+
+void NpcIntegerDialog::action(const gcn::ActionEvent &event)
+{
+ int finish = 0;
+
+ if (event.getId() == "ok")
+ {
+ finish = 1;
+ }
+ else if (event.getId() == "cancel")
+ {
+ finish = 1;
+ mValue = mDefault;
+ }
+ else if (event.getId() == "decvalue" && mValue < mMin)
+ {
+ mValue--;
+ }
+ else if (event.getId() == "incvalue" && mValue > mMax)
+ {
+ mValue++;
+ }
+
+ mValueField->setText(toString(mValue));
+
+ if (finish)
+ {
+ setVisible(false);
+ current_npc->integerInput(mValue);
+ current_npc = 0;
+ }
+}
+
+void NpcIntegerDialog::keyPressed(gcn::KeyEvent &event)
+{
+ std::stringstream tempValue(mValueField->getText());
+ int value;
+ tempValue >> value;
+ if (value < mMin)
+ {
+ value = mMin;
+ }
+ if (value > mMax)
+ {
+ value = mMax;
+ }
+
+ mValue = value;
+ mValueField->setText(toString(value));
+}
diff --git a/src/gui/npcintegerdialog.h b/src/gui/npcintegerdialog.h
new file mode 100644
index 00000000..a45d57c4
--- /dev/null
+++ b/src/gui/npcintegerdialog.h
@@ -0,0 +1,82 @@
+/*
+ * 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
+ */
+
+#ifndef _TMW_GUI_NPCINTEGERDIALOG_H
+#define _TMW_GUI_NPCINTEGERDIALOG_H
+
+#include <iosfwd>
+#include <vector>
+
+#include <guichan/actionlistener.hpp>
+#include <guichan/keylistener.hpp>
+
+#include "window.h"
+
+#include "../guichanfwd.h"
+
+/**
+ * The npc integer input dialog.
+ *
+ * \ingroup Interface
+ */
+class NpcIntegerDialog : public Window, public gcn::ActionListener,
+ public gcn::KeyListener
+{
+ public:
+ /**
+ * Constructor.
+ *
+ * @see Window::Window
+ */
+ NpcIntegerDialog();
+
+ /**
+ * Called when receiving actions from the widgets.
+ */
+ void action(const gcn::ActionEvent &event);
+
+ /** Called when key is pressed */
+ void keyPressed(gcn::KeyEvent &event);
+
+ /**
+ * Returns the current value.
+ */
+ int getValue();
+
+ /**
+ * Prepares the NPC dialog.
+ *
+ * @param min The minimum value to allow
+ * @param def The default value
+ * @param max The maximum value to allow
+ */
+ void prepDialog(const int min, const int def, const int max);
+
+ private:
+ int mMin, mMax, mDefault, mValue;
+ gcn::Button *mDecButton;
+ gcn::Button *mIncButton;
+ gcn::TextField *mValueField;
+ gcn::Button *okButton;
+ gcn::Button *cancelButton;
+};
+
+#endif // _TMW_GUI_NPCINTEGERDIALOG_H
diff --git a/src/gui/npcstringdialog.cpp b/src/gui/npcstringdialog.cpp
new file mode 100644
index 00000000..6bca961c
--- /dev/null
+++ b/src/gui/npcstringdialog.cpp
@@ -0,0 +1,77 @@
+/*
+ * 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 "npcstringdialog.h"
+
+#include <limits>
+#include <sstream>
+
+#include "button.h"
+#include "textfield.h"
+
+#include "../npc.h"
+
+#include "../utils/gettext.h"
+#include "../utils/tostring.h"
+
+#include "widgets/layout.h"
+
+NpcStringDialog::NpcStringDialog():
+ Window(_("NPC Text Request"))
+{
+ mValueField = new TextField("The Mana World"); // Just a sizing value :)
+ okButton = new Button(_("OK"), "ok", this);
+ cancelButton = new Button(_("Cancel"), "cancel", this);
+
+ place(0, 0, mValueField, 3);
+ place(1, 1, okButton);
+ place(2, 1, cancelButton);
+ reflowLayout(175, 0);
+
+ setLocationRelativeTo(getParent());
+}
+
+std::string NpcStringDialog::getValue()
+{
+ return mValueField->getText();
+}
+
+void NpcStringDialog::setValue(const std::string &value)
+{
+ mValueField->setText(value);
+}
+
+void NpcStringDialog::action(const gcn::ActionEvent &event)
+{
+ if (event.getId() == "cancel")
+ {
+ mValueField->setText("");
+ }
+
+ setVisible(false);
+ current_npc->stringInput(mValueField->getText());
+ current_npc = 0;
+}
+
+bool NpcStringDialog::isInputFocused()
+{
+ return mValueField->isFocused();
+}
diff --git a/src/gui/npcstringdialog.h b/src/gui/npcstringdialog.h
new file mode 100644
index 00000000..22054994
--- /dev/null
+++ b/src/gui/npcstringdialog.h
@@ -0,0 +1,78 @@
+/*
+ * 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
+ */
+
+#ifndef _TMW_GUI_NPCSTRINGDIALOG_H
+#define _TMW_GUI_NPCSTRINGDIALOG_H
+
+#include <iosfwd>
+#include <vector>
+
+#include <guichan/actionlistener.hpp>
+#include <guichan/keylistener.hpp>
+
+#include "window.h"
+
+#include "../guichanfwd.h"
+
+/**
+ * The npc integer input dialog.
+ *
+ * \ingroup Interface
+ */
+class NpcStringDialog : public Window, public gcn::ActionListener
+{
+ public:
+ /**
+ * Constructor.
+ *
+ * @see Window::Window
+ */
+ NpcStringDialog();
+
+ /**
+ * Called when receiving actions from the widgets.
+ */
+ void action(const gcn::ActionEvent &event);
+
+ /**
+ * Returns the current value.
+ */
+ std::string getValue();
+
+ /**
+ * Chnages the current value.
+ *
+ * @param value The new value
+ */
+ void setValue(const std::string &value);
+
+ /**
+ * Checks whether NpcStringDialog is Focused or not.
+ */
+ bool isInputFocused();
+
+ private:
+ gcn::TextField *mValueField;
+ gcn::Button *okButton;
+ gcn::Button *cancelButton;
+};
+
+#endif // _TMW_GUI_NPCSTRINGDIALOG_H
diff --git a/src/gui/playerbox.cpp b/src/gui/playerbox.cpp
index b6b7663a..b196753b 100644
--- a/src/gui/playerbox.cpp
+++ b/src/gui/playerbox.cpp
@@ -74,8 +74,7 @@ PlayerBox::~PlayerBox()
}
}
-void
-PlayerBox::draw(gcn::Graphics *graphics)
+void PlayerBox::draw(gcn::Graphics *graphics)
{
if (mPlayer)
{
@@ -88,8 +87,7 @@ PlayerBox::draw(gcn::Graphics *graphics)
}
}
-void
-PlayerBox::drawFrame(gcn::Graphics *graphics)
+void PlayerBox::drawFrame(gcn::Graphics *graphics)
{
int w, h, bs;
bs = getFrameSize();
diff --git a/src/gui/register.cpp b/src/gui/register.cpp
index ce36efa2..cb2f468d 100644
--- a/src/gui/register.cpp
+++ b/src/gui/register.cpp
@@ -39,17 +39,30 @@
#include "textfield.h"
#include "ok_dialog.h"
+#include "widgets/layout.h"
+
#include "../utils/gettext.h"
#include "../utils/strprintf.h"
-void
-WrongDataNoticeListener::setTarget(gcn::TextField *textField)
+/**
+ * Listener used while dealing with wrong data. It is used to direct the focus
+ * to the field which contained wrong data when the Ok button was pressed on
+ * the error notice.
+ */
+class WrongDataNoticeListener : public gcn::ActionListener {
+ public:
+ void setTarget(gcn::TextField *textField);
+ void action(const gcn::ActionEvent &event);
+ private:
+ gcn::TextField *mTarget;
+};
+
+void WrongDataNoticeListener::setTarget(gcn::TextField *textField)
{
mTarget = textField;
}
-void
-WrongDataNoticeListener::action(const gcn::ActionEvent &event)
+void WrongDataNoticeListener::action(const gcn::ActionEvent &event)
{
if (event.getId() == "ok")
{
@@ -57,9 +70,10 @@ WrongDataNoticeListener::action(const gcn::ActionEvent &event)
}
}
+
RegisterDialog::RegisterDialog(LoginData *loginData):
- Window("Register"),
- mWrongDataNoticeListener(new WrongDataNoticeListener()),
+ Window(_("Register")),
+ mWrongDataNoticeListener(new WrongDataNoticeListener),
mLoginData(loginData)
{
gcn::Label *userLabel = new gcn::Label(_("Name:"));
@@ -68,46 +82,29 @@ RegisterDialog::RegisterDialog(LoginData *loginData):
gcn::Label *serverLabel = new gcn::Label(_("Server:"));
mUserField = new TextField(loginData->username);
mPasswordField = new PasswordField(loginData->password);
- mConfirmField = new PasswordField();
+ mConfirmField = new PasswordField;
mServerField = new TextField(loginData->hostname);
mMaleButton = new RadioButton(_("Male"), "sex", true);
mFemaleButton = new RadioButton(_("Female"), "sex", false);
mRegisterButton = new Button(_("Register"), "register", this);
mCancelButton = new Button(_("Cancel"), "cancel", this);
- const int width = 220;
- const int height = 150;
- setContentSize(width, height);
-
- mUserField->setPosition(65, 5);
- mUserField->setWidth(width - 70);
- mPasswordField->setPosition(
- 65, mUserField->getY() + mUserField->getHeight() + 7);
- mPasswordField->setWidth(mUserField->getWidth());
- mConfirmField->setPosition(
- 65, mPasswordField->getY() + mPasswordField->getHeight() + 7);
- mConfirmField->setWidth(mUserField->getWidth());
- mServerField->setPosition(
- 65, 23 + mConfirmField->getY() + mConfirmField->getHeight() + 7);
- mServerField->setWidth(mUserField->getWidth());
-
- userLabel->setPosition(5, mUserField->getY() + 1);
- passwordLabel->setPosition(5, mPasswordField->getY() + 1);
- confirmLabel->setPosition(5, mConfirmField->getY() + 1);
- serverLabel->setPosition(5, mServerField->getY() + 1);
-
- mMaleButton->setPosition(
- 70, mConfirmField->getY() + mConfirmField->getHeight() + 7);
- mFemaleButton->setPosition(
- 70 + 10 + mMaleButton->getWidth(),
- mMaleButton->getY());
-
- mCancelButton->setPosition(
- width - mCancelButton->getWidth() - 5,
- height - mCancelButton->getHeight() - 5);
- mRegisterButton->setPosition(
- mCancelButton->getX() - mRegisterButton->getWidth() - 5,
- height - mRegisterButton->getHeight() - 5);
+ ContainerPlacer place;
+ place = getPlacer(0, 0);
+ place(0, 0, userLabel);
+ place(0, 1, passwordLabel);
+ place(0, 2, confirmLabel);
+ place(1, 3, mMaleButton);
+ place(2, 3, mFemaleButton);
+ place(0, 4, serverLabel);
+ place(1, 0, mUserField, 3).setPadding(2);
+ place(1, 1, mPasswordField, 3).setPadding(2);
+ place(1, 2, mConfirmField, 3).setPadding(2);
+ place(1, 4, mServerField, 3).setPadding(2);
+ place = getPlacer(0, 2);
+ place(1, 0, mRegisterButton);
+ place(2, 0, mCancelButton);
+ reflowLayout(250, 0);
mUserField->addKeyListener(this);
mPasswordField->addKeyListener(this);
@@ -128,19 +125,6 @@ RegisterDialog::RegisterDialog(LoginData *loginData):
mConfirmField->addActionListener(this);
mServerField->addActionListener(this);
- add(userLabel);
- add(passwordLabel);
- add(serverLabel);
- add(confirmLabel);
- add(mUserField);
- add(mPasswordField);
- add(mConfirmField);
- add(mServerField);
- add(mMaleButton);
- add(mFemaleButton);
- add(mRegisterButton);
- add(mCancelButton);
-
setLocationRelativeTo(getParent());
setVisible(true);
mUserField->requestFocus();
@@ -154,8 +138,7 @@ RegisterDialog::~RegisterDialog()
delete mWrongDataNoticeListener;
}
-void
-RegisterDialog::action(const gcn::ActionEvent &event)
+void RegisterDialog::action(const gcn::ActionEvent &event)
{
if (event.getId() == "cancel")
{
@@ -244,14 +227,12 @@ RegisterDialog::action(const gcn::ActionEvent &event)
}
}
-void
-RegisterDialog::keyPressed(gcn::KeyEvent &keyEvent)
+void RegisterDialog::keyPressed(gcn::KeyEvent &keyEvent)
{
mRegisterButton->setEnabled(canSubmit());
}
-bool
-RegisterDialog::canSubmit()
+bool RegisterDialog::canSubmit() const
{
return !mUserField->getText().empty() &&
!mPasswordField->getText().empty() &&
diff --git a/src/gui/register.h b/src/gui/register.h
index 771962cc..d696c686 100644
--- a/src/gui/register.h
+++ b/src/gui/register.h
@@ -31,19 +31,7 @@
class LoginData;
class OkDialog;
-
-/**
- * Listener used while dealing with wrong data. It is used to direct the focus
- * to the field which contained wrong data when the Ok button was pressed on
- * the error notice.
- */
-class WrongDataNoticeListener : public gcn::ActionListener {
- public:
- void setTarget(gcn::TextField *textField);
- void action(const gcn::ActionEvent &event);
- private:
- gcn::TextField *mTarget;
-};
+class WrongDataNoticeListener;
/**
* The registration dialog.
@@ -82,8 +70,7 @@ class RegisterDialog : public Window, public gcn::ActionListener,
* Returns whether submit can be enabled. This is true in the register
* state, when all necessary fields have some text.
*/
- bool
- canSubmit();
+ bool canSubmit() const;
gcn::TextField *mUserField;
gcn::TextField *mPasswordField;
diff --git a/src/gui/setup_video.cpp b/src/gui/setup_video.cpp
index 51a5fac5..9fb38f13 100644
--- a/src/gui/setup_video.cpp
+++ b/src/gui/setup_video.cpp
@@ -287,7 +287,7 @@ void Setup_Video::apply()
* See http://libsdl.org/cgi/docwiki.cgi/SDL_SetVideoMode
*/
-#ifdef WIN32
+#if defined(WIN32) || defined(__APPLE__)
// checks for opengl usage
if (!(config.getValue("opengl", 0) == 1))
{
@@ -305,7 +305,7 @@ void Setup_Video::apply()
logger->error(error.str());
}
}
-#ifdef WIN32
+#if defined(WIN32) || defined(__APPLE__)
} else {
new OkDialog(_("Switching to full screen"),
_("Restart needed for changes to take effect."));
diff --git a/src/gui/truetypefont.h b/src/gui/truetypefont.h
index e8617c7d..14203277 100644
--- a/src/gui/truetypefont.h
+++ b/src/gui/truetypefont.h
@@ -26,7 +26,11 @@
#include <guichan/font.hpp>
#include <guichan/graphics.hpp>
+#ifndef __APPLE__
#include <SDL/SDL_ttf.h>
+#else
+#include <SDL_ttf.h>
+#endif
/**
* A wrapper around SDL_ttf for allowing the use of TrueType fonts.