extern SDL_Surface* screen;
std::vector<Menu*> Menu::last_menus;
+std::list<Menu*> Menu::all_menus;
Menu* Menu::current_ = 0;
Menu* Menu::previous = 0;
Font* Menu::default_font;
Font* Menu::active_font;
-Font* Menu::deactive_font;
+Font* Menu::inactive_font;
Font* Menu::label_font;
Font* Menu::field_font;
{
//Surface* cap_screen = Surface::CaptureScreen();
Menu* dialog = new Menu;
- dialog->add_deactive(-1, text);
+ dialog->add_inactive(-1, text);
dialog->add_hl();
dialog->add_entry(true, _("Yes"));
dialog->add_entry(false, _("No"));
if (current_)
current_->set_pos(SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
- for(std::vector<Menu*>::iterator i = last_menus.begin(); i != last_menus.end(); ++i)
+ for(std::list<Menu*>::iterator i = all_menus.begin(); i != all_menus.end(); ++i)
{
// FIXME: This is of course not quite right, since it ignores any previous set_pos() calls
(*i)->set_pos(SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
\f
Menu::~Menu()
{
+ all_menus.remove(this);
+
for(std::vector<MenuItem*>::iterator i = items.begin();
i != items.end(); ++i)
delete *i;
Menu::Menu()
{
+ all_menus.push_back(this);
+
hit_item = -1;
menuaction = MENU_ACTION_NONE;
delete_character = 0;
items.push_back(item);
/* If a new menu is being built, the active item shouldn't be set to
- * something that isnt selectable. Set the active_item to the first
- * selectable item added
+ * something that isn't selectable. Set the active_item to the first
+ * selectable item added.
*/
if (active_item == -1
&& item->kind != MN_HL
&& item->kind != MN_LABEL
- && item->kind != MN_DEACTIVE) {
+ && item->kind != MN_INACTIVE) {
active_item = items.size() - 1;
}
}
MenuItem*
Menu::add_controlfield(int id, const std::string& text,
- const std::string& mapping)
+ const std::string& mapping)
{
MenuItem* item = new MenuItem(MN_CONTROLFIELD, id);
item->change_text(text);
- item->change_input(mapping);
+ item->change_input(mapping);
additem(item);
return item;
}
}
MenuItem*
-Menu::add_deactive(int id, const std::string& text)
+Menu::add_inactive(int id, const std::string& text)
{
- MenuItem* item = new MenuItem(MN_DEACTIVE, id);
+ MenuItem* item = new MenuItem(MN_INACTIVE, id);
item->text = text;
additem(item);
return item;
active_item = int(items.size())-1;
} while ((items[active_item]->kind == MN_HL
|| items[active_item]->kind == MN_LABEL
- || items[active_item]->kind == MN_DEACTIVE)
+ || items[active_item]->kind == MN_INACTIVE)
&& (active_item != last_active_item));
break;
active_item = 0;
} while ((items[active_item]->kind == MN_HL
|| items[active_item]->kind == MN_LABEL
- || items[active_item]->kind == MN_DEACTIVE)
+ || items[active_item]->kind == MN_INACTIVE)
&& (active_item != last_active_item));
break;
{
int i = items[active_item]->input.size();
- while(delete_character > 0) /* remove charactes */
+ while(delete_character > 0) /* remove characters */
{
items[active_item]->input.resize(i-1);
delete_character--;
switch (pitem.kind)
{
- case MN_DEACTIVE:
+ case MN_INACTIVE:
{
- context.draw_text(deactive_font, pitem.text,
- Vector(pos_x, y_pos - int(deactive_font->get_height()/2)),
+ context.draw_text(inactive_font, pitem.text,
+ Vector(pos_x, y_pos - int(inactive_font->get_height()/2)),
ALIGN_CENTER, LAYER_GUI);
break;
}
/* only change the mouse focus to a selectable item */
if ((items[new_active_item]->kind != MN_HL)
&& (items[new_active_item]->kind != MN_LABEL)
- && (items[new_active_item]->kind != MN_DEACTIVE))
+ && (items[new_active_item]->kind != MN_INACTIVE))
active_item = new_active_item;
if(MouseCursor::current())