3 Copyright (C) 2013 sapier
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as published by
7 the Free Software Foundation; either version 2.1 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public License along
16 with this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 #include "guiFileSelectMenu.h"
21 #include "util/string.h"
24 GUIFileSelectMenu::GUIFileSelectMenu(gui::IGUIEnvironment
* env
,
25 gui::IGUIElement
* parent
, s32 id
, IMenuManager
*menumgr
,
26 std::string title
, std::string formname
) :
27 GUIModalMenu(env
, parent
, id
, menumgr
)
29 m_title
= utf8_to_wide(title
);
31 m_formname
= formname
;
36 GUIFileSelectMenu::~GUIFileSelectMenu()
41 void GUIFileSelectMenu::removeChildren()
43 const core::list
<gui::IGUIElement
*> &children
= getChildren();
44 core::list
<gui::IGUIElement
*> children_copy
;
45 for (core::list
<gui::IGUIElement
*>::ConstIterator i
= children
.begin(); i
46 != children
.end(); i
++)
48 children_copy
.push_back(*i
);
50 for (core::list
<gui::IGUIElement
*>::Iterator i
= children_copy
.begin(); i
51 != children_copy
.end(); i
++)
57 void GUIFileSelectMenu::regenerateGui(v2u32 screensize
)
62 core::dimension2du
size(600,400);
63 core::rect
< s32
> rect(0,0,screensize
.X
,screensize
.Y
);
66 recalculateAbsolutePosition(false);
69 Environment
->addFileOpenDialog(m_title
.c_str(),false,this,-1);
71 core::position2di pos
= core::position2di(screensize
.X
/2 - size
.Width
/2,screensize
.Y
/2 -size
.Height
/2);
72 m_fileOpenDialog
->setRelativePosition(pos
);
73 m_fileOpenDialog
->setMinSize(size
);
76 void GUIFileSelectMenu::drawMenu()
78 gui::IGUISkin
* skin
= Environment
->getSkin();
82 gui::IGUIElement::draw();
85 void GUIFileSelectMenu::acceptInput() {
86 if ((m_text_dst
!= 0) && (this->m_formname
!= "")){
90 fields
[m_formname
+ "_accepted"] = wide_to_utf8(m_fileOpenDialog
->getFileName());
92 fields
[m_formname
+ "_canceled"] = m_formname
;
94 this->m_text_dst
->gotText(fields
);
98 bool GUIFileSelectMenu::OnEvent(const SEvent
& event
)
101 if (event
.EventType
== irr::EET_GUI_EVENT
) {
102 switch (event
.GUIEvent
.EventType
) {
103 case gui::EGET_ELEMENT_CLOSED
:
104 case gui::EGET_FILE_CHOOSE_DIALOG_CANCELLED
:
111 case gui::EGET_DIRECTORY_SELECTED
:
112 case gui::EGET_FILE_SELECTED
:
124 return Parent
? Parent
->OnEvent(event
) : false;