00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef HEADER_SUPERTUX_GUI_MENU_ITEM_HPP
00018 #define HEADER_SUPERTUX_GUI_MENU_ITEM_HPP
00019
00020 #include <list>
00021 #include <memory>
00022 #include <SDL.h>
00023
00024 #include "gui/menu.hpp"
00025
00026
00027 enum MenuItemKind {
00028 MN_ACTION,
00029 MN_GOTO,
00030 MN_TOGGLE,
00031 MN_BACK,
00032 MN_INACTIVE,
00033 MN_TEXTFIELD,
00034 MN_NUMFIELD,
00035 MN_CONTROLFIELD,
00036 MN_STRINGSELECT,
00037 MN_LABEL,
00038 MN_HL
00039 };
00040
00041 class MenuItem
00042 {
00043 public:
00044 static MenuItem* create(MenuItemKind kind, const std::string& text,
00045 int init_toggle, Menu* target_menu, int id, int key);
00046
00047 public:
00048 MenuItem(MenuItemKind kind, int id = -1);
00049
00050 void set_help(const std::string& help_text);
00051
00052 void change_text (const std::string& text);
00053 void change_input(const std::string& text);
00054
00055 std::string get_input_with_symbol(bool active_item);
00056
00057 public:
00058 MenuItemKind kind;
00059 int id;
00060 bool toggled;
00061 std::string text;
00062 std::string input;
00063 std::string help;
00064
00065 std::vector<std::string> list;
00066 size_t selected;
00067
00068 Menu* target_menu;
00069
00070 private:
00072 bool input_flickering;
00073
00074 private:
00075 MenuItem(const MenuItem&);
00076 MenuItem& operator=(const MenuItem&);
00077 };
00078
00079 #endif
00080
00081