#include <iostream>
#include "gui/menu.hpp"
+#include "gui/menu_item.hpp"
#include "util/writer.hpp"
#include "lisp/list_iterator.hpp"
#include "supertux/gameconfig.hpp"
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
+#include "gui/menu.hpp"
+
#include <math.h>
#include "control/joystickkeyboardcontroller.hpp"
-#include "gui/menu.hpp"
+#include "gui/menu_item.hpp"
#include "supertux/main.hpp"
#include "supertux/mainloop.hpp"
#include "supertux/resources.hpp"
static const float MENU_REPEAT_INITIAL = 0.4f;
static const float MENU_REPEAT_RATE = 0.1f;
-static const float FLICK_CURSOR_TIME = 0.5f;
extern SDL_Surface* g_screen;
}
}
-MenuItem::MenuItem(MenuItemKind _kind, int _id) :
- kind(_kind),
- id(_id),
- toggled(),
- text(),
- input(),
- help(),
- list(),
- selected(),
- target_menu(),
- input_flickering()
-{
- toggled = false;
- selected = false;
- target_menu = 0;
-}
-
-void
-MenuItem::change_text(const std::string& text_)
-{
- text = text_;
-}
-
-void
-MenuItem::change_input(const std::string& text_)
-{
- input = text_;
-}
-
-void
-MenuItem::set_help(const std::string& help_text)
-{
- std::string overflow;
- help = normal_font->wrap_to_width(help_text, 600, &overflow);
- while (!overflow.empty())
- {
- help += "\n";
- help += normal_font->wrap_to_width(overflow, 600, &overflow);
- }
-}
-
-std::string MenuItem::get_input_with_symbol(bool active_item)
-{
- if(!active_item) {
- input_flickering = true;
- } else {
- input_flickering = ((int) (real_time / FLICK_CURSOR_TIME)) % 2;
- }
-
- char str[1024];
- if(input_flickering)
- snprintf(str, sizeof(str), "%s ",input.c_str());
- else
- snprintf(str, sizeof(str), "%s_",input.c_str());
-
- std::string string = str;
-
- return string;
-}
-
Menu::~Menu()
{
all_menus.remove(this);
bool confirm_dialog(Surface* background, std::string text);
-/* Kinds of menu items */
-enum MenuItemKind {
- MN_ACTION,
- MN_GOTO,
- MN_TOGGLE,
- MN_BACK,
- MN_INACTIVE,
- MN_TEXTFIELD,
- MN_NUMFIELD,
- MN_CONTROLFIELD,
- MN_STRINGSELECT,
- MN_LABEL,
- MN_HL /* horizontal line */
-};
-
-class Menu;
-
-class MenuItem
-{
-public:
- MenuItem(MenuItemKind kind, int id = -1);
-
- void set_help(const std::string& help_text);
-
- void change_text (const std::string& text);
- void change_input(const std::string& text);
-
- static MenuItem* create(MenuItemKind kind, const std::string& text,
- int init_toggle, Menu* target_menu, int id, int key);
-
- std::string get_input_with_symbol(bool active_item); // returns the text with an input symbol
-
-public:
- MenuItemKind kind;
- int id; // item id
- bool toggled;
- std::string text;
- std::string input;
- std::string help;
-
- std::vector<std::string> list; // list of values for a STRINGSELECT item
- size_t selected; // currently selected item
-
- Menu* target_menu;
-
-private:
- /// keyboard key or joystick button
- bool input_flickering;
-
-private:
- MenuItem(const MenuItem&);
- MenuItem& operator=(const MenuItem&);
-};
+class MenuItem;
class Menu
{
--- /dev/null
+// SuperTux
+// Copyright (C) 2006 Matthias Braun <matze@braunis.de>
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+#include "gui/menu_item.hpp"
+
+#include <math.h>
+
+#include "control/joystickkeyboardcontroller.hpp"
+#include "supertux/main.hpp"
+#include "supertux/mainloop.hpp"
+#include "supertux/resources.hpp"
+#include "supertux/timer.hpp"
+#include "util/gettext.hpp"
+#include "video/drawing_context.hpp"
+
+static const float FLICK_CURSOR_TIME = 0.5f;
+
+MenuItem::MenuItem(MenuItemKind _kind, int _id) :
+ kind(_kind),
+ id(_id),
+ toggled(),
+ text(),
+ input(),
+ help(),
+ list(),
+ selected(),
+ target_menu(),
+ input_flickering()
+{
+ toggled = false;
+ selected = false;
+ target_menu = 0;
+}
+
+void
+MenuItem::change_text(const std::string& text_)
+{
+ text = text_;
+}
+
+void
+MenuItem::change_input(const std::string& text_)
+{
+ input = text_;
+}
+
+void
+MenuItem::set_help(const std::string& help_text)
+{
+ std::string overflow;
+ help = normal_font->wrap_to_width(help_text, 600, &overflow);
+ while (!overflow.empty())
+ {
+ help += "\n";
+ help += normal_font->wrap_to_width(overflow, 600, &overflow);
+ }
+}
+
+std::string
+MenuItem::get_input_with_symbol(bool active_item)
+{
+ if(!active_item) {
+ input_flickering = true;
+ } else {
+ input_flickering = ((int) (real_time / FLICK_CURSOR_TIME)) % 2;
+ }
+
+ char str[1024];
+ if(input_flickering)
+ snprintf(str, sizeof(str), "%s ",input.c_str());
+ else
+ snprintf(str, sizeof(str), "%s_",input.c_str());
+
+ std::string string = str;
+
+ return string;
+}
+
+/* EOF */
--- /dev/null
+// SuperTux
+// Copyright (C) 2006 Matthias Braun <matze@braunis.de>
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef HEADER_SUPERTUX_GUI_MENU_ITEM_HPP
+#define HEADER_SUPERTUX_GUI_MENU_ITEM_HPP
+
+#include <list>
+#include <memory>
+#include <SDL.h>
+
+#include "gui/menu.hpp"
+#include "gui/mousecursor.hpp"
+#include "video/font.hpp"
+
+/* Kinds of menu items */
+enum MenuItemKind {
+ MN_ACTION,
+ MN_GOTO,
+ MN_TOGGLE,
+ MN_BACK,
+ MN_INACTIVE,
+ MN_TEXTFIELD,
+ MN_NUMFIELD,
+ MN_CONTROLFIELD,
+ MN_STRINGSELECT,
+ MN_LABEL,
+ MN_HL /* horizontal line */
+};
+
+class MenuItem
+{
+public:
+ MenuItem(MenuItemKind kind, int id = -1);
+
+ void set_help(const std::string& help_text);
+
+ void change_text (const std::string& text);
+ void change_input(const std::string& text);
+
+ static MenuItem* create(MenuItemKind kind, const std::string& text,
+ int init_toggle, Menu* target_menu, int id, int key);
+
+ std::string get_input_with_symbol(bool active_item); // returns the text with an input symbol
+
+public:
+ MenuItemKind kind;
+ int id; // item id
+ bool toggled;
+ std::string text;
+ std::string input;
+ std::string help;
+
+ std::vector<std::string> list; // list of values for a STRINGSELECT item
+ size_t selected; // currently selected item
+
+ Menu* target_menu;
+
+private:
+ /// keyboard key or joystick button
+ bool input_flickering;
+
+private:
+ MenuItem(const MenuItem&);
+ MenuItem& operator=(const MenuItem&);
+};
+
+#endif
+
+/* EOF */
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
+#include "supertux/options_menu.hpp"
+
#include "audio/sound_manager.hpp"
#include "control/joystickkeyboardcontroller.hpp"
#include "gui/menu.hpp"
+#include "gui/menu_item.hpp"
#include "supertux/gameconfig.hpp"
#include "supertux/main.hpp"
#include "supertux/profile_menu.hpp"
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "gui/menu.hpp"
+#include "gui/menu_item.hpp"
#include "supertux/gameconfig.hpp"
#include "util/gettext.hpp"
#include "addon/addon_manager.hpp"
#include "audio/sound_manager.hpp"
#include "gui/menu.hpp"
+#include "gui/menu_item.hpp"
#include "lisp/parser.hpp"
#include "lisp/lisp.hpp"
#include "object/camera.hpp"