updating Nolok contrib templates
[supertux.git] / lib / gui / menu.h
index f4a3943..c9ef6ee 100644 (file)
 
 #include "SDL.h"
 
-#include "../video/surface.h"
-#include "../video/font.h"
-#include "../special/timer.h"
-#include "../special/base.h"
-#include "../gui/mousecursor.h"
+#include "video/surface.h"
+#include "video/font.h"
+#include "special/timer.h"
+#include "mousecursor.h"
 
 namespace SuperTux
   {
@@ -64,19 +63,26 @@ namespace SuperTux
   class MenuItem
     {
     public:
+      MenuItem() {};
+      MenuItem(MenuItemKind kind, int id = -1);
+      MenuItem(MenuItemKind kind, int id, const std::string& text);
       MenuItemKind kind;
+      int id;   // item id      
       int toggled;
-      char *text;
-      char *input;
+      std::string text;
+      std::string input;
       int *int_p;   // used for setting keys (can be used for more stuff...)
-      int id;   // item id
-      std::pair<std::set<std::string>, std::set<std::string>::iterator> list;
+
+      std::vector<std::string> list; // list of values for a STRINGSELECT item
+      size_t selected; // currently selected item
+      
       Menu* target_menu;
 
-      void change_text (const char *text);
-      void change_input(const char *text);
+      void change_text (const std::string& text);
+      void change_input(const std::string& text);
 
-      static MenuItem* create(MenuItemKind kind, const char *text, int init_toggle, Menu* target_menu, int id, int* int_p);
+      static MenuItem* create(MenuItemKind kind, const std::string& text,
+          int init_toggle, Menu* target_menu, int id, int* int_p);
 
       std::string get_input_with_symbol(bool active_item);   // returns the text with an input symbol
     private:
@@ -148,6 +154,7 @@ namespace SuperTux
       Menu();
       ~Menu();
 
+      void additem(const MenuItem& menu_item);      
       void additem(MenuItem* pmenu_item);
       void additem(MenuItemKind kind, const std::string& text, int init_toggle, Menu* target_menu, int id = -1, int *int_p = NULL);