1 // SuperTux 2 // Copyright (C) 2015 Hume2 <teratux.mail@gmail.com> 3 // 4 // This program is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // This program is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with this program. If not, see <http://www.gnu.org/licenses/>. 16 17 #ifndef HEADER_SUPERTUX_GUI_ITEM_STRINGSELECT_HPP 18 #define HEADER_SUPERTUX_GUI_ITEM_STRINGSELECT_HPP 19 20 #include <functional> 21 22 #include "gui/menu_item.hpp" 23 24 class ItemStringSelect final : public MenuItem 25 { 26 public: 27 ItemStringSelect(const std::string& text, const std::vector<std::string>& list_, int* selected_, int id = -1); 28 29 /** Draws the menu item. */ 30 virtual void draw(DrawingContext&, const Vector& pos, int menu_width, bool active) override; 31 32 /** Returns the minimum width of the menu item. */ 33 virtual int get_width() const override; 34 35 /** Processes the menu action. */ 36 virtual void process_action(const MenuAction& action) override; 37 changes_width() const38 virtual bool changes_width() const override { 39 return true; 40 } 41 set_callback(const std::function<void (int)> & callback)42 void set_callback(const std::function<void(int)>& callback) { 43 m_callback = callback; 44 } 45 46 std::vector<std::string> list; // list of values for a STRINGSELECT item 47 int* selected; // currently selected item 48 private: 49 std::function<void(int)> m_callback; 50 51 private: 52 ItemStringSelect(const ItemStringSelect&) = delete; 53 ItemStringSelect& operator=(const ItemStringSelect&) = delete; 54 }; 55 56 #endif 57 58 /* EOF */ 59