diff options
author | red-001 <red-001@outlook.ie> | 2017-06-11 08:43:31 +0100 |
---|---|---|
committer | Loïc Blot <nerzhul@users.noreply.github.com> | 2017-06-11 09:43:31 +0200 |
commit | 26e2eb019afa60c66c4dc89cf24bbf5b25c6a383 (patch) | |
tree | a2ac098a32d4b7c97775c9161a29b12ec54e3fad /src/guiFileSelectMenu.cpp | |
parent | 6c5e5e202394ce8063e3c2d9b663145bc4f8efce (diff) | |
download | minetest-26e2eb019afa60c66c4dc89cf24bbf5b25c6a383.tar.xz |
Improve the path select GUI (#5852)
- Allow lua to chose whatever directories or files can be selected
- Fix selecting directories
- Rename dialog to `guiPathSelectMenu` from `guiFileSelectMenu`
- Rename lua function for opening the menu from `show_file_open_dialog` to `show_path_select_dialog`
- Remove duplicate code and fix code style.
Related changes
- fix `clang-format` whitelist.
- Regenerate minetest.conf.example
Diffstat (limited to 'src/guiFileSelectMenu.cpp')
-rw-r--r-- | src/guiFileSelectMenu.cpp | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/src/guiFileSelectMenu.cpp b/src/guiFileSelectMenu.cpp deleted file mode 100644 index 65a07be39..000000000 --- a/src/guiFileSelectMenu.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* - Minetest - Copyright (C) 2013 sapier - - This program is free software; you can redistribute it and/or modify - 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 Lesser General Public License for more details. - - 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 "guiFileSelectMenu.h" - -GUIFileSelectMenu::GUIFileSelectMenu(gui::IGUIEnvironment* env, - gui::IGUIElement* parent, s32 id, IMenuManager *menumgr, - const std::string &title, const std::string &formname) : - GUIModalMenu(env, parent, id, menumgr), - m_title(utf8_to_wide(title)), - m_accepted(false), - m_text_dst(NULL), - m_formname(formname) -{ -} - -GUIFileSelectMenu::~GUIFileSelectMenu() -{ - removeChildren(); - setlocale(LC_NUMERIC, "C"); -} - -void GUIFileSelectMenu::removeChildren() -{ - const core::list<gui::IGUIElement*> &children = getChildren(); - core::list<gui::IGUIElement*> children_copy; - for (core::list<gui::IGUIElement*>::ConstIterator i = children.begin(); i - != children.end(); i++) - { - children_copy.push_back(*i); - } - for (core::list<gui::IGUIElement*>::Iterator i = children_copy.begin(); i - != children_copy.end(); i++) - { - (*i)->remove(); - } -} - -void GUIFileSelectMenu::regenerateGui(v2u32 screensize) -{ - removeChildren(); - m_fileOpenDialog = 0; - - core::dimension2du size(600,400); - core::rect < s32 > rect(0,0,screensize.X,screensize.Y); - - DesiredRect = rect; - recalculateAbsolutePosition(false); - - m_fileOpenDialog = - Environment->addFileOpenDialog(m_title.c_str(),false,this,-1); - - core::position2di pos = core::position2di(screensize.X/2 - size.Width/2,screensize.Y/2 -size.Height/2); - m_fileOpenDialog->setRelativePosition(pos); - m_fileOpenDialog->setMinSize(size); -} - -void GUIFileSelectMenu::drawMenu() -{ - gui::IGUISkin* skin = Environment->getSkin(); - if (!skin) - return; - - gui::IGUIElement::draw(); -} - -void GUIFileSelectMenu::acceptInput() { - if ((m_text_dst != 0) && (this->m_formname != "")){ - StringMap fields; - - if (m_accepted) - fields[m_formname + "_accepted"] = wide_to_utf8(m_fileOpenDialog->getFileName()); - else - fields[m_formname + "_canceled"] = m_formname; - - this->m_text_dst->gotText(fields); - } -} - -bool GUIFileSelectMenu::OnEvent(const SEvent& event) -{ - - if (event.EventType == irr::EET_GUI_EVENT) { - switch (event.GUIEvent.EventType) { - case gui::EGET_ELEMENT_CLOSED: - case gui::EGET_FILE_CHOOSE_DIALOG_CANCELLED: - m_accepted=false; - acceptInput(); - quitMenu(); - return true; - case gui::EGET_DIRECTORY_SELECTED: - case gui::EGET_FILE_SELECTED: - m_accepted=true; - acceptInput(); - quitMenu(); - return true; - default: - //ignore this event - break; - } - } - return Parent ? Parent->OnEvent(event) : false; -} |