gui::menu Class Reference

#include <menu.hpp>

Inheritance diagram for gui::menu:

Inheritance graph
[legend]
Collaboration diagram for gui::menu:

Collaboration graph
[legend]

List of all members.

Public Types

enum  ROW_TYPE { NORMAL_ROW, SELECTED_ROW, HEADING_ROW }

Public Member Functions

 menu (CVideo &video, const std::vector< std::string > &items, bool click_selects=false, int max_height=-1, int max_width=-1, const sorter *sorter_obj=NULL, style *menu_style=NULL, const bool auto_join=true)
int selection () const
void move_selection (size_t id)
void reset_selection ()
void change_item (int pos1, int pos2, const std::string &str)
void erase_item (size_t index)
void set_heading (const std::vector< std::string > &heading)
void set_items (const std::vector< std::string > &items, bool strip_spaces=true, bool keep_viewport=false)
 Set new items to show and redraw/recalculate everything.
void set_max_height (const int new_max_height)
 Set a new max height for this menu.
void set_max_width (const int new_max_width)
size_t nitems () const
int process ()
bool double_clicked ()
void set_click_selects (bool value)
void set_numeric_keypress_selection (bool value)
void scroll (unsigned int pos)
void set_sorter (sorter *s)
void sort_by (int column)
void wrap_words ()

Static Public Attributes

static styledefault_style = menu::bluebg_style
static style simple_style
static imgsel_style bluebg_style

Protected Member Functions

bool item_ends_with_image (const std::string &item) const
virtual void handle_event (const SDL_Event &event)
void set_inner_location (const SDL_Rect &rect)
bool requires_event_focus (const SDL_Event *event=NULL) const
const std::vector< int > & column_widths () const
virtual void draw_row (const size_t row_index, const SDL_Rect &rect, ROW_TYPE type)

Protected Attributes

stylestyle_
bool silent_

Private Types

enum  SELECTION_MOVE_VIEWPORT { MOVE_VIEWPORT, NO_MOVE_VIEWPORT }

Private Member Functions

size_t max_items_onscreen () const
size_t heading_height () const
void adjust_viewport_to_selection ()
void key_press (SDLKey key)
void create_help_strings ()
void process_help_string (int mousex, int mousey)
void column_widths_item (const std::vector< std::string > &row, std::vector< int > &widths) const
void clear_item (int item)
void draw_contents ()
void draw ()
int hit (int x, int y) const
std::pair< int, int > hit_cell (int x, int y) const
int hit_column (int x) const
int hit_heading (int x, int y) const
SDL_Rect get_item_rect (int item) const
SDL_Rect get_item_rect_internal (size_t pos) const
size_t get_item_height_internal (const std::vector< std::string > &item) const
size_t get_item_height (int item) const
int items_start () const
int items_end () const
int items_height () const
void update_scrollbar_grip_height ()
void fill_items (const std::vector< std::string > &items, bool strip_spaces)
 Set new items to show.
void do_sort ()
void recalculate_pos ()
void assert_pos ()
void update_size ()
void set_selection_pos (size_t pos, bool silent=false, SELECTION_MOVE_VIEWPORT move_viewport=MOVE_VIEWPORT)
void move_selection_to (size_t id, bool silent=false, SELECTION_MOVE_VIEWPORT move_viewport=MOVE_VIEWPORT)
void move_selection_up (size_t dep)
void move_selection_down (size_t dep)
void invalidate_row (size_t id)
void invalidate_row_pos (size_t pos)
void invalidate_heading ()

Private Attributes

int max_height_
int max_width_
int max_items_
int item_height_
std::vector< itemitems_
std::vector< size_t > item_pos_
std::vector< std::string > heading_
int heading_height_
std::pair< int, int > cur_help_
int help_string_
std::vector< int > column_widths_
size_t selected_
bool click_selects_
bool out_
bool previous_button_
bool show_result_
bool double_clicked_
std::map< int, SDL_Rect > itemRects_
bool num_selects_
 variable which determines whether a numeric keypress should select an item on the dialog
bool ignore_next_doubleclick_
bool last_was_doubleclick_
bool use_ellipsis_
const sortersorter_
int sortby_
bool sortreversed_
int highlight_heading_
std::set< int > invalid_

Friends

class style
class imgsel_style

Classes

class  basic_sorter
class  imgsel_style
struct  item
class  sorter
class  style


Detailed Description

Definition at line 37 of file menu.hpp.


Member Enumeration Documentation

Enumerator:
NORMAL_ROW 
SELECTED_ROW 
HEADING_ROW 

Definition at line 41 of file menu.hpp.

Enumerator:
MOVE_VIEWPORT 
NO_MOVE_VIEWPORT 

Definition at line 299 of file menu.hpp.


Constructor & Destructor Documentation

gui::menu::menu ( CVideo video,
const std::vector< std::string > &  items,
bool  click_selects = false,
int  max_height = -1,
int  max_width = -1,
const sorter sorter_obj = NULL,
style menu_style = NULL,
const bool  auto_join = true 
)

Definition at line 155 of file menu.cpp.

References default_style, fill_items(), gui::menu::style::init(), and style_.


Member Function Documentation

int gui::menu::selection (  )  const

void gui::menu::move_selection ( size_t  id  ) 

void gui::menu::reset_selection (  ) 

Reimplemented in mp::gamebrowser.

Definition at line 524 of file menu.cpp.

References set_selection_pos().

void gui::menu::change_item ( int  pos1,
int  pos2,
const std::string &  str 
)

Definition at line 341 of file menu.cpp.

References item_pos_, items_, and gui::widget::set_dirty().

void gui::menu::erase_item ( size_t  index  ) 

void gui::menu::set_heading ( const std::vector< std::string > &  heading  ) 

Definition at line 381 of file menu.cpp.

References column_widths_, heading_, itemRects_, max_items_, and gui::widget::set_dirty().

void gui::menu::set_items ( const std::vector< std::string > &  items,
bool  strip_spaces = true,
bool  keep_viewport = false 
)

void gui::menu::set_max_height ( const int  new_max_height  ) 

Set a new max height for this menu.

Note that this does not take effect immediately, only after certain operations that clear everything, such as set_items().

Definition at line 423 of file menu.cpp.

References itemRects_, max_height_, max_items_, and update_size().

Referenced by help::help_browser::adjust_layout(), dialogs::file_dialog::file_dialog(), mp::wait::layout_children(), mp::ui::layout_children(), mp::create::layout_children(), and gui::dialog::update_widget_positions().

void gui::menu::set_max_width ( const int  new_max_width  ) 

size_t gui::menu::nitems (  )  const [inline]

Definition at line 185 of file menu.hpp.

References items_.

Referenced by gui::dialog::action(), and mp::create::process_event().

int gui::menu::process (  ) 

Reimplemented in help::help_menu.

Definition at line 681 of file menu.cpp.

References selected_, and show_result_.

Referenced by gui::dialog::process().

bool gui::menu::double_clicked (  ) 

Definition at line 691 of file menu.cpp.

References double_clicked_.

Referenced by mp::ui::handle_event(), gui::dialog::process(), and mp::create::process_event().

void gui::menu::set_click_selects ( bool  value  ) 

Definition at line 698 of file menu.cpp.

References click_selects_.

void gui::menu::set_numeric_keypress_selection ( bool  value  ) 

void gui::menu::scroll ( unsigned int  pos  )  [virtual]

Implements gui::scrollarea.

Reimplemented in mp::gamebrowser.

Definition at line 708 of file menu.cpp.

References itemRects_, and gui::widget::set_dirty().

void gui::menu::set_sorter ( sorter s  ) 

Definition at line 714 of file menu.cpp.

References sort_by(), sortby_, sorter_, and sortreversed_.

void gui::menu::sort_by ( int  column  ) 

Definition at line 725 of file menu.cpp.

References do_sort(), itemRects_, gui::widget::set_dirty(), sortby_, and sortreversed_.

Referenced by handle_event(), and set_sorter().

void gui::menu::wrap_words (  ) 

bool gui::menu::item_ends_with_image ( const std::string &  item  )  const [protected]

Definition at line 834 of file menu.cpp.

References IMAGE_PREFIX, IMG_TEXT_SEPARATOR, and pos.

Referenced by column_widths_item().

void gui::menu::handle_event ( const SDL_Event &  event  )  [protected, virtual]

void gui::menu::set_inner_location ( const SDL_Rect &  rect  )  [protected, virtual]

Implements gui::scrollarea.

Reimplemented in mp::gamebrowser.

Definition at line 334 of file menu.cpp.

References gui::widget::bg_register(), itemRects_, and update_scrollbar_grip_height().

bool gui::menu::requires_event_focus ( const SDL_Event *  event = NULL  )  const [protected, virtual]

Reimplemented from events::handler.

Definition at line 563 of file menu.cpp.

References click_selects_, gui::widget::focus_, gui::widget::height(), gui::widget::hidden(), and num_selects_.

const std::vector< int > & gui::menu::column_widths (  )  const [protected]

Definition at line 841 of file menu.cpp.

References column_widths_, column_widths_item(), heading_, and items_.

Referenced by draw_row(), hit_column(), update_size(), and wrap_words().

void gui::menu::draw_row ( const size_t  row_index,
const SDL_Rect &  rect,
ROW_TYPE  type 
) [protected, virtual]

size_t gui::menu::max_items_onscreen (  )  const [private]

size_t gui::menu::heading_height (  )  const [private]

void gui::menu::adjust_viewport_to_selection (  )  [private]

Definition at line 469 of file menu.cpp.

References gui::scrollarea::adjust_position(), click_selects_, and selected_.

Referenced by erase_item(), set_items(), and set_selection_pos().

void gui::menu::key_press ( SDLKey  key  )  [private]

void gui::menu::create_help_strings (  )  [private]

Definition at line 272 of file menu.cpp.

References HELP_STRING_SEPARATOR, items_, and utils::split().

Referenced by fill_items().

void gui::menu::process_help_string ( int  mousex,
int  mousey 
) [private, virtual]

void gui::menu::column_widths_item ( const std::vector< std::string > &  row,
std::vector< int > &  widths 
) const [private]

void gui::menu::clear_item ( int  item  )  [private]

Definition at line 853 of file menu.cpp.

References gui::widget::bg_restore(), get_item_rect(), and rect.

Referenced by erase_item().

void gui::menu::draw_contents (  )  [private, virtual]

void gui::menu::draw (  )  [private, virtual]

int gui::menu::hit ( int  x,
int  y 
) const [private]

Definition at line 1023 of file menu.cpp.

References get_item_rect(), gui::scrollarea::inner_location(), items_, loc, and rect.

Referenced by handle_event(), hit_cell(), and process_help_string().

std::pair< int, int > gui::menu::hit_cell ( int  x,
int  y 
) const [private]

Definition at line 1049 of file menu.cpp.

References hit(), and hit_column().

int gui::menu::hit_column ( int  x  )  const [private]

Definition at line 1037 of file menu.cpp.

References column_widths(), and gui::widget::location().

Referenced by hit_cell(), hit_heading(), and process_help_string().

int gui::menu::hit_heading ( int  x,
int  y 
) const [private]

SDL_Rect gui::menu::get_item_rect ( int  item  )  const [private]

Definition at line 1075 of file menu.cpp.

References get_item_rect_internal(), and item_pos_.

Referenced by clear_item(), draw(), draw_contents(), hit(), and update_size().

SDL_Rect gui::menu::get_item_rect_internal ( size_t  pos  )  const [private]

size_t gui::menu::get_item_height_internal ( const std::vector< std::string > &  item  )  const [private]

Definition at line 1124 of file menu.cpp.

References gui::menu::style::item_size(), rect, and style_.

Referenced by get_item_height(), and heading_height().

size_t gui::menu::get_item_height ( int  item  )  const [private]

Definition at line 1144 of file menu.cpp.

References get_item_height_internal(), item_height_, items_, and max_height.

Referenced by get_item_rect_internal(), and max_items_onscreen().

int gui::menu::items_start (  )  const [private]

int gui::menu::items_end (  )  const [private]

int gui::menu::items_height (  )  const [private]

void gui::menu::update_scrollbar_grip_height (  )  [private]

void gui::menu::fill_items ( const std::vector< std::string > &  items,
bool  strip_spaces 
) [private]

Set new items to show.

If strip_spaces is false, spaces will remain at the item edges.

Definition at line 175 of file menu.cpp.

References COLUMN_SEPARATOR, create_help_strings(), DEFAULT_ITEM, do_sort(), heading_, HEADING_PREFIX, item_pos_, items_, utils::quoted_split(), selected_, sortby_, and update_size().

Referenced by menu(), and set_items().

void gui::menu::do_sort (  )  [private]

void gui::menu::recalculate_pos (  )  [private]

Definition at line 253 of file menu.cpp.

References assert_pos(), item_pos_, and items_.

Referenced by do_sort().

void gui::menu::assert_pos (  )  [private]

Definition at line 262 of file menu.cpp.

References item_pos_, and items_.

Referenced by erase_item(), and recalculate_pos().

void gui::menu::update_size (  )  [private]

void gui::menu::set_selection_pos ( size_t  pos,
bool  silent = false,
SELECTION_MOVE_VIEWPORT  move_viewport = MOVE_VIEWPORT 
) [private]

void gui::menu::move_selection_to ( size_t  id,
bool  silent = false,
SELECTION_MOVE_VIEWPORT  move_viewport = MOVE_VIEWPORT 
) [private]

Definition at line 509 of file menu.cpp.

References item_pos_, and set_selection_pos().

Referenced by do_sort(), and handle_event().

void gui::menu::move_selection_up ( size_t  dep  )  [private]

Definition at line 497 of file menu.cpp.

References selected_, and set_selection_pos().

Referenced by key_press().

void gui::menu::move_selection_down ( size_t  dep  )  [private]

Definition at line 502 of file menu.cpp.

References items_, selected_, and set_selection_pos().

Referenced by key_press().

void gui::menu::invalidate_row ( size_t  id  )  [private]

Definition at line 1185 of file menu.cpp.

References invalid_, and items_.

Referenced by invalidate_row_pos().

void gui::menu::invalidate_row_pos ( size_t  pos  )  [private]

Definition at line 1194 of file menu.cpp.

References invalidate_row(), and items_.

Referenced by handle_event(), and set_selection_pos().

void gui::menu::invalidate_heading (  )  [private]

Definition at line 1203 of file menu.cpp.

References invalid_.

Referenced by handle_event().


Friends And Related Function Documentation

friend class style [friend]

Definition at line 107 of file menu.hpp.

friend class imgsel_style [friend]

Definition at line 108 of file menu.hpp.


Member Data Documentation

Definition at line 109 of file menu.hpp.

Referenced by menu(), and gui::dialog::set_menu().

Definition at line 110 of file menu.hpp.

Referenced by gui::dialog::get_menu().

Definition at line 111 of file menu.hpp.

Referenced by preferences::show_hotkeys_dialog().

style* gui::menu::style_ [protected]

bool gui::menu::silent_ [protected]

Definition at line 212 of file menu.hpp.

Referenced by handle_event(), help::help_menu::help_menu(), and set_selection_pos().

int gui::menu::max_height_ [private]

Definition at line 218 of file menu.hpp.

Referenced by heading_height(), max_items_onscreen(), set_max_height(), and update_size().

int gui::menu::max_width_ [private]

Definition at line 218 of file menu.hpp.

Referenced by draw_row(), set_max_width(), update_size(), and wrap_words().

int gui::menu::max_items_ [mutable, private]

Definition at line 219 of file menu.hpp.

Referenced by max_items_onscreen(), set_heading(), set_items(), set_max_height(), and wrap_words().

int gui::menu::item_height_ [mutable, private]

Reimplemented in mp::gamebrowser.

Definition at line 219 of file menu.hpp.

Referenced by get_item_height(), set_items(), and wrap_words().

std::vector<item> gui::menu::items_ [private]

std::vector<size_t> gui::menu::item_pos_ [private]

std::vector<std::string> gui::menu::heading_ [private]

Definition at line 227 of file menu.hpp.

Referenced by column_widths(), draw_row(), fill_items(), heading_height(), and set_heading().

int gui::menu::heading_height_ [mutable, private]

Definition at line 228 of file menu.hpp.

Referenced by heading_height().

std::pair<int,int> gui::menu::cur_help_ [private]

Definition at line 233 of file menu.hpp.

Referenced by process_help_string().

int gui::menu::help_string_ [private]

Reimplemented from gui::widget.

Definition at line 234 of file menu.hpp.

Referenced by process_help_string().

std::vector<int> gui::menu::column_widths_ [mutable, private]

Definition at line 236 of file menu.hpp.

Referenced by column_widths(), set_heading(), set_items(), set_max_width(), and wrap_words().

size_t gui::menu::selected_ [private]

bool gui::menu::click_selects_ [private]

bool gui::menu::out_ [private]

Definition at line 240 of file menu.hpp.

Referenced by draw(), draw_contents(), and handle_event().

Definition at line 241 of file menu.hpp.

bool gui::menu::show_result_ [private]

Definition at line 244 of file menu.hpp.

Referenced by handle_event(), and process().

Reimplemented in mp::gamebrowser.

Definition at line 246 of file menu.hpp.

Referenced by double_clicked(), and handle_event().

std::map<int,SDL_Rect> gui::menu::itemRects_ [mutable, private]

bool gui::menu::num_selects_ [private]

variable which determines whether a numeric keypress should select an item on the dialog

Definition at line 275 of file menu.hpp.

Referenced by key_press(), requires_event_focus(), and set_numeric_keypress_selection().

Reimplemented in mp::gamebrowser.

Definition at line 279 of file menu.hpp.

Referenced by handle_event().

Reimplemented in mp::gamebrowser.

Definition at line 280 of file menu.hpp.

Referenced by handle_event().

bool gui::menu::use_ellipsis_ [private]

Definition at line 283 of file menu.hpp.

Referenced by draw_row(), and update_size().

const sorter* gui::menu::sorter_ [private]

Definition at line 285 of file menu.hpp.

Referenced by do_sort(), handle_event(), and set_sorter().

int gui::menu::sortby_ [private]

Definition at line 286 of file menu.hpp.

Referenced by do_sort(), draw_row(), fill_items(), set_sorter(), and sort_by().

bool gui::menu::sortreversed_ [private]

Definition at line 287 of file menu.hpp.

Referenced by do_sort(), draw_row(), set_sorter(), and sort_by().

Definition at line 288 of file menu.hpp.

Referenced by draw_row(), and handle_event().

std::set<int> gui::menu::invalid_ [private]

Definition at line 309 of file menu.hpp.

Referenced by draw(), invalidate_heading(), and invalidate_row().


The documentation for this class was generated from the following files:

Generated by doxygen 1.5.5 on 23 May 2008 for The Battle for Wesnoth
Gna! | Forum | Wiki | CIA | devdocs