item_floatfield.hpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. #ifndef HEADER_SUPERTUX_GUI_ITEM_FLOATFIELD_HPP
  17. #define HEADER_SUPERTUX_GUI_ITEM_FLOATFIELD_HPP
  18. #include "gui/menu_item.hpp"
  19. class ItemFloatField final : public MenuItem
  20. {
  21. public:
  22. ItemFloatField(const std::string& text_, float* input_, int id_ = -1);
  23. /** Draws the menu item. */
  24. virtual void draw(DrawingContext&, const Vector& pos, int menu_width, bool active) override;
  25. /** Returns the minimum width of the menu item. */
  26. virtual int get_width() const override;
  27. /** Processes the menu action. */
  28. virtual void process_action(const MenuAction& action) override;
  29. float* number;
  30. void change_input(const std::string& input_) {
  31. input = input_;
  32. }
  33. /** Processes the given event. */
  34. virtual void event(const SDL_Event& ev) override;
  35. virtual bool changes_width() const override {
  36. return true;
  37. }
  38. private:
  39. std::string input;
  40. int flickw;
  41. bool has_comma;
  42. void add_char(char c);
  43. private:
  44. ItemFloatField(const ItemFloatField&) = delete;
  45. ItemFloatField& operator=(const ItemFloatField&) = delete;
  46. };
  47. #endif
  48. /* EOF */