/*
-Minetest-c55
-Copyright (C) 2012 celeron55, Perttu Ahola <celeron55@gmail.com>
+Minetest
+Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
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
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or
(at your option) 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.
+GNU Lesser General Public License for more details.
-You should have received a copy of the GNU General Public License along
+You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <IGUIStaticText.h>
#include <IGUIFont.h>
#include <IGUIListBox.h>
-
#include "gettext.h"
+#include "util/string.h"
enum
{
gui::IGUIElement* parent, s32 id,
IMenuManager *menumgr,
CreateWorldDest *dest,
- const std::vector<SubgameSpec> &games
+ const std::vector<SubgameSpec> &games,
+ const std::string &initial_game
):
GUIModalMenu(env, parent, id, menumgr),
m_dest(dest),
- m_games(games)
+ m_games(games),
+ m_initial_game_i(0)
{
assert(games.size() > 0);
+
+ for(size_t i=0; i<games.size(); i++){
+ if(games[i].id == initial_game){
+ m_initial_game_i = i;
+ break;
+ }
+ }
}
GUICreateWorld::~GUICreateWorld()
{
core::rect<s32> rect(0, 0, 100, 20);
rect += v2s32(0, 5) + topleft;
- Environment->addStaticText(wgettext("World name"),
- rect, false, true, this, -1);
+ wchar_t* text = wgettext("World name");
+ Environment->addStaticText(text, rect, false, true, this, -1);
+ delete[] text;
}
{
core::rect<s32> rect(0, 0, 300, 30);
{
core::rect<s32> rect(0, 0, 100, 20);
rect += v2s32(0, 40+5) + topleft;
- Environment->addStaticText(wgettext("Game"),
- rect, false, true, this, -1);
+ wchar_t* text = wgettext("Game");
+ Environment->addStaticText(text, rect, false, true, this, -1);
+ delete[] text;
}
{
core::rect<s32> rect(0, 0, 300, 80);
os<<L"]";
e->addItem(os.str().c_str());
}
- e->setSelected(0);
+ e->setSelected(m_initial_game_i);
}
changeCtype("");
{
core::rect<s32> rect(0, 0, 120, 30);
rect = rect + v2s32(170, 140) + topleft;
- Environment->addButton(rect, this, GUI_ID_CANCEL,
- wgettext("Cancel"));
+ wchar_t* text = wgettext("Create");
+ Environment->addButton(rect, this, GUI_ID_CREATE,
+ text);
+ delete[] text;
}
{
core::rect<s32> rect(0, 0, 120, 30);
rect = rect + v2s32(300, 140) + topleft;
- Environment->addButton(rect, this, GUI_ID_CREATE,
- wgettext("Create"));
+ wchar_t* text = wgettext("Cancel");
+ Environment->addButton(rect, this, GUI_ID_CANCEL,
+ text);
+ delete [] text;
}
changeCtype("C");
}
{
if(m_dest)
{
- gui::IGUIElement *e = getElementFromId(GUI_ID_NAME_INPUT);
- if(e != NULL)
+ int selected = -1;
+ {
+ gui::IGUIElement *e = getElementFromId(GUI_ID_GAME_LISTBOX);
+ if(e != NULL && e->getType() == gui::EGUIET_LIST_BOX)
+ selected = ((gui::IGUIListBox*)e)->getSelected();
+ }
+ std::wstring name;
{
- m_dest->accepted(e->getText(), m_games[0].id);
+ gui::IGUIElement *e = getElementFromId(GUI_ID_NAME_INPUT);
+ if(e != NULL)
+ name = e->getText();
}
+ if(selected != -1 && name != L"")
+ m_dest->accepted(name, m_games[selected].id);
delete m_dest;
m_dest = NULL;
}