The Battle for Wesnoth
1.17.17+dev
widgets
menu.hpp
Go to the documentation of this file.
1
/*
2
Copyright (C) 2003 - 2023
3
by David White <dave@whitevine.net>
4
Part of the Battle for Wesnoth Project https://www.wesnoth.org/
5
6
This program is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2 of the License, or
9
(at your option) any later version.
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY.
12
13
See the COPYING file for more details.
14
*/
15
16
#pragma once
17
18
#include <map>
19
#include <set>
20
21
#include "
scrollarea.hpp
"
22
23
class
texture
;
24
25
namespace
image
{
26
class
locator;
27
}
28
29
namespace
gui
{
30
31
class
menu
:
public
scrollarea
32
{
33
public
:
34
35
enum
ROW_TYPE
{
NORMAL_ROW
,
SELECTED_ROW
,
HEADING_ROW
};
36
//basic menu style
37
class
style
38
{
39
public
:
40
style
();
41
virtual
~style
();
42
virtual
void
init
() {}
43
44
virtual
SDL_Rect
item_size
(
const
std::string&
item
)
const
;
45
virtual
void
draw_row_bg
(
menu
& menu_ref,
const
std::size_t row_index,
const
SDL_Rect&
rect
,
ROW_TYPE
type
);
46
virtual
void
draw_row
(
menu
& menu_ref,
const
std::size_t row_index,
const
SDL_Rect&
rect
,
ROW_TYPE
type
);
47
void
scale_images
(
int
max_width,
int
max_height);
48
void
adjust_image_bounds
(
int
&
w
,
int
&
h
)
const
;
49
std::size_t
get_font_size
()
const
;
50
std::size_t
get_cell_padding
()
const
;
51
std::size_t
get_thickness
()
const
;
52
53
protected
:
54
std::size_t
font_size_
;
55
std::size_t
cell_padding_
;
56
std::size_t
thickness_
;
//additional cell padding for style use only
57
58
int
normal_rgb_
,
selected_rgb_
,
heading_rgb_
;
59
double
normal_alpha_
,
selected_alpha_
,
heading_alpha_
;
60
int
max_img_w_
,
max_img_h_
;
61
};
62
63
//image-border selection style
64
class
imgsel_style
:
public
style
65
{
66
public
:
67
imgsel_style
(
const
std::string &img_base,
bool
has_bg,
68
int
normal_rgb,
int
selected_rgb,
int
heading_rgb,
69
double
normal_alpha,
double
selected_alpha,
double
heading_alpha);
70
virtual
~imgsel_style
();
71
72
virtual
SDL_Rect
item_size
(
const
std::string&
item
)
const
;
73
virtual
void
draw_row_bg
(
menu
& menu_ref,
const
std::size_t row_index,
const
SDL_Rect&
rect
,
ROW_TYPE
type
);
74
virtual
void
draw_row
(
menu
& menu_ref,
const
std::size_t row_index,
const
SDL_Rect&
rect
,
ROW_TYPE
type
);
75
76
virtual
void
init
() {
load_images
(); }
77
bool
load_images
();
78
void
unload_images
();
79
80
protected
:
81
const
std::string
img_base_
;
82
std::map<std::string,texture>
img_map_
;
83
84
private
:
85
bool
load_image
(
const
std::string &img_sub);
86
bool
has_background_
;
87
bool
initialized_
;
88
bool
load_failed_
;
89
int
normal_rgb2_
,
selected_rgb2_
,
heading_rgb2_
;
90
double
normal_alpha2_
,
selected_alpha2_
,
heading_alpha2_
;
91
};
92
93
friend
class
style
;
94
friend
class
imgsel_style
;
95
static
style
&
default_style
;
96
static
imgsel_style
bluebg_style
;
97
98
struct
item
99
{
100
item
() :
fields
(),
id
(0)
101
{}
102
103
item
(
const
std::vector<std::string>&
fields
, std::size_t
id
)
104
:
fields
(
fields
),
id
(
id
)
105
{}
106
107
std::vector<std::string>
fields
;
108
std::size_t
id
;
109
};
110
111
class
sorter
112
{
113
public
:
114
virtual
~sorter
() {}
115
virtual
bool
column_sortable
(
int
column)
const
= 0;
116
virtual
bool
less
(
int
column,
const
item
& row1,
const
item
& row2)
const
= 0;
117
};
118
119
class
basic_sorter
:
public
sorter
120
{
121
public
:
122
basic_sorter
();
123
virtual
~basic_sorter
() {}
124
125
basic_sorter
&
set_alpha_sort
(
int
column);
126
basic_sorter
&
set_numeric_sort
(
int
column);
127
basic_sorter
&
set_id_sort
(
int
column);
128
basic_sorter
&
set_redirect_sort
(
int
column,
int
to);
129
basic_sorter
&
set_position_sort
(
int
column,
const
std::vector<int>& pos);
130
protected
:
131
virtual
bool
column_sortable
(
int
column)
const
;
132
virtual
bool
less
(
int
column,
const
item
& row1,
const
item
& row2)
const
;
133
134
private
:
135
std::set<int>
alpha_sort_
,
numeric_sort_
,
id_sort_
;
136
std::map<int,int>
redirect_sort_
;
137
std::map<int,std::vector<int>>
pos_sort_
;
138
};
139
140
menu
(
const
std::vector<std::string>&
items
,
141
bool
click_selects=
false
,
int
max_height=-1,
int
max_width=-1,
142
const
sorter
* sorter_obj=
nullptr
,
style
*menu_style=
nullptr
,
const
bool
auto_join=
true
);
143
144
/** Default implementation, but defined out-of-line for efficiency reasons. */
145
~menu
();
146
147
int
selection
()
const
;
148
149
void
move_selection
(std::size_t
id
);
150
void
move_selection_keeping_viewport
(std::size_t
id
);
151
void
reset_selection
();
152
153
// allows user to change_item while running (dangerous)
154
void
change_item
(
int
pos1,
int
pos2,
const
std::string& str);
155
156
virtual
void
erase_item
(std::size_t
index
);
157
158
void
set_heading
(
const
std::vector<std::string>& heading);
159
160
/**
161
* Set new items to show and redraw/recalculate everything. If
162
* strip_spaces is false, spaces will remain at the item edges. If
163
* keep_viewport is true, the menu tries to keep the selection at
164
* the same position as it were before the items were set.
165
*/
166
virtual
void
set_items
(
const
std::vector<std::string>&
items
,
bool
strip_spaces=
true
,
167
bool
keep_viewport=
false
);
168
169
/**
170
* Set a new max height for this menu. Note that this does not take
171
* effect immediately, only after certain operations that clear
172
* everything, such as set_items().
173
*/
174
void
set_max_height
(
const
int
new_max_height);
175
void
set_max_width
(
const
int
new_max_width);
176
177
int
get_max_height
()
const
{
return
max_height_
; }
178
int
get_max_width
()
const
{
return
max_width_
; }
179
180
std::size_t
number_of_items
()
const
{
return
items_
.size(); }
181
182
int
process
();
183
184
bool
double_clicked
();
185
186
void
set_click_selects
(
bool
value);
187
void
set_numeric_keypress_selection
(
bool
value);
188
189
// scrollarea override
190
void
scroll
(
unsigned
int
pos)
override
;
191
192
//currently, menus do not manage the memory of their sorter
193
//this should be changed to a more object-oriented approach
194
void
set_sorter
(sorter *
s
);
195
void
sort_by
(
int
column);
196
int
get_sort_by
()
const
{
return
sortby_
;}
197
bool
get_sort_reversed
()
const
{
return
sortreversed_
;}
198
199
protected
:
200
bool
item_ends_with_image
(
const
std::string&
item
)
const
;
201
virtual
void
handle_event
(
const
SDL_Event& event)
override
;
202
void
set_inner_location
(
const
SDL_Rect&
rect
)
override
;
203
204
bool
requires_event_focus
(
const
SDL_Event *event=
nullptr
)
const override
;
205
const
std::vector<int>&
column_widths
()
const
;
206
virtual
void
draw_row
(
const
std::size_t row_index,
const
SDL_Rect&
rect
,
ROW_TYPE
type
);
207
208
style
*
style_
;
209
bool
silent_
;
210
211
int
hit
(
int
x
,
int
y
)
const
;
212
213
int
hit_column
(
int
x
)
const
;
214
215
int
hit_heading
(
int
x
,
int
y
)
const
;
216
217
void
invalidate_row
(std::size_t
id
);
218
void
invalidate_row_pos
(std::size_t pos);
219
void
invalidate_heading
();
220
221
private
:
222
std::size_t
max_items_onscreen
()
const
;
223
224
std::size_t
heading_height
()
const
;
225
226
int
max_height_
,
max_width_
;
227
mutable
int
max_items_
,
item_height_
;
228
229
void
adjust_viewport_to_selection
();
230
void
key_press
(SDL_Keycode key);
231
232
std::vector<item>
items_
;
233
std::vector<std::size_t>
item_pos_
;
234
235
std::vector<std::string>
heading_
;
236
mutable
int
heading_height_
;
237
238
mutable
std::vector<int>
column_widths_
;
239
240
std::size_t
selected_
;
241
bool
click_selects_
;
242
bool
out_
;
243
bool
previous_button_
;
244
//std::set<std::size_t> undrawn_items_;
245
246
bool
show_result_
;
247
248
bool
double_clicked_
;
249
250
void
column_widths_item
(
const
std::vector<std::string>& row, std::vector<int>& widths)
const
;
251
252
void
clear_item
(
int
item
);
253
void
draw_contents
()
override
;
254
255
mutable
std::map<int,SDL_Rect>
itemRects_
;
256
257
SDL_Rect
get_item_rect
(
int
item
)
const
;
258
SDL_Rect
get_item_rect_internal
(std::size_t pos)
const
;
259
std::size_t
get_item_height_internal
(
const
std::vector<std::string>&
item
)
const
;
260
std::size_t
get_item_height
(
int
item
)
const
;
261
int
items_start
()
const
;
262
263
int
items_end
()
const
;
264
int
items_height
()
const
;
265
266
void
update_scrollbar_grip_height
();
267
268
/**
269
* variable which determines whether a numeric keypress should
270
* select an item on the dialog
271
*/
272
bool
num_selects_
;
273
// These two variables are used to get the correct double click
274
// behavior so that a click that causes one double click won't be
275
// counted as a first click in the "next" double click.
276
bool
ignore_next_doubleclick_
;
277
bool
last_was_doubleclick_
;
278
279
//ellipsis calculation is slightly off, so default to false
280
bool
use_ellipsis_
;
281
282
const
sorter
*
sorter_
;
283
int
sortby_
;
284
bool
sortreversed_
;
285
int
highlight_heading_
;
286
287
/**
288
* Set new items to show. If strip_spaces is false, spaces will
289
* remain at the item edges.
290
*/
291
void
fill_items
(
const
std::vector<std::string>&
items
,
bool
strip_spaces);
292
293
void
do_sort
();
294
void
recalculate_pos
();
295
void
assert_pos
();
296
297
void
update_size
();
298
enum
SELECTION_MOVE_VIEWPORT
{
MOVE_VIEWPORT
,
NO_MOVE_VIEWPORT
};
299
void
set_selection_pos
(std::size_t pos,
bool
silent=
false
,
SELECTION_MOVE_VIEWPORT
move_viewport=
MOVE_VIEWPORT
);
300
void
move_selection_to
(std::size_t
id
,
bool
silent=
false
,
SELECTION_MOVE_VIEWPORT
move_viewport=
MOVE_VIEWPORT
);
301
void
move_selection_up
(std::size_t dep);
302
void
move_selection_down
(std::size_t dep);
303
304
std::set<int>
invalid_
;
305
};
306
307
}
gui::menu::basic_sorter
Definition:
menu.hpp:120
gui::menu::basic_sorter::set_id_sort
basic_sorter & set_id_sort(int column)
Definition:
menu.cpp:60
gui::menu::basic_sorter::set_numeric_sort
basic_sorter & set_numeric_sort(int column)
Definition:
menu.cpp:54
gui::menu::basic_sorter::set_position_sort
basic_sorter & set_position_sort(int column, const std::vector< int > &pos)
Definition:
menu.cpp:75
gui::menu::basic_sorter::pos_sort_
std::map< int, std::vector< int > > pos_sort_
Definition:
menu.hpp:137
gui::menu::basic_sorter::numeric_sort_
std::set< int > numeric_sort_
Definition:
menu.hpp:135
gui::menu::basic_sorter::~basic_sorter
virtual ~basic_sorter()
Definition:
menu.hpp:123
gui::menu::basic_sorter::less
virtual bool less(int column, const item &row1, const item &row2) const
Definition:
menu.cpp:92
gui::menu::basic_sorter::set_redirect_sort
basic_sorter & set_redirect_sort(int column, int to)
Definition:
menu.cpp:66
gui::menu::basic_sorter::column_sortable
virtual bool column_sortable(int column) const
Definition:
menu.cpp:81
gui::menu::basic_sorter::set_alpha_sort
basic_sorter & set_alpha_sort(int column)
Definition:
menu.cpp:48
gui::menu::basic_sorter::alpha_sort_
std::set< int > alpha_sort_
Definition:
menu.hpp:135
gui::menu::basic_sorter::id_sort_
std::set< int > id_sort_
Definition:
menu.hpp:135
gui::menu::basic_sorter::basic_sorter
basic_sorter()
Definition:
menu.cpp:38
gui::menu::basic_sorter::redirect_sort_
std::map< int, int > redirect_sort_
Definition:
menu.hpp:136
gui::menu::imgsel_style
Definition:
menu.hpp:65
gui::menu::imgsel_style::item_size
virtual SDL_Rect item_size(const std::string &item) const
Definition:
menu_style.cpp:240
gui::menu::imgsel_style::~imgsel_style
virtual ~imgsel_style()
Definition:
menu_style.cpp:53
gui::menu::imgsel_style::initialized_
bool initialized_
Definition:
menu.hpp:87
gui::menu::imgsel_style::img_map_
std::map< std::string, texture > img_map_
Definition:
menu.hpp:82
gui::menu::imgsel_style::img_base_
const std::string img_base_
Definition:
menu.hpp:81
gui::menu::imgsel_style::normal_rgb2_
int normal_rgb2_
Definition:
menu.hpp:89
gui::menu::imgsel_style::has_background_
bool has_background_
Definition:
menu.hpp:86
gui::menu::imgsel_style::draw_row
virtual void draw_row(menu &menu_ref, const std::size_t row_index, const SDL_Rect &rect, ROW_TYPE type)
Definition:
menu_style.cpp:151
gui::menu::imgsel_style::heading_alpha2_
double heading_alpha2_
Definition:
menu.hpp:90
gui::menu::imgsel_style::imgsel_style
imgsel_style(const std::string &img_base, bool has_bg, int normal_rgb, int selected_rgb, int heading_rgb, double normal_alpha, double selected_alpha, double heading_alpha)
Definition:
menu_style.cpp:46
gui::menu::imgsel_style::init
virtual void init()
Definition:
menu.hpp:76
gui::menu::imgsel_style::normal_alpha2_
double normal_alpha2_
Definition:
menu.hpp:90
gui::menu::imgsel_style::selected_rgb2_
int selected_rgb2_
Definition:
menu.hpp:89
gui::menu::imgsel_style::selected_alpha2_
double selected_alpha2_
Definition:
menu.hpp:90
gui::menu::imgsel_style::load_image
bool load_image(const std::string &img_sub)
Definition:
menu_style.cpp:82
gui::menu::imgsel_style::unload_images
void unload_images()
Definition:
menu_style.cpp:136
gui::menu::imgsel_style::load_images
bool load_images()
Definition:
menu_style.cpp:90
gui::menu::imgsel_style::heading_rgb2_
int heading_rgb2_
Definition:
menu.hpp:89
gui::menu::imgsel_style::load_failed_
bool load_failed_
Definition:
menu.hpp:88
gui::menu::imgsel_style::draw_row_bg
virtual void draw_row_bg(menu &menu_ref, const std::size_t row_index, const SDL_Rect &rect, ROW_TYPE type)
Definition:
menu_style.cpp:141
gui::menu::sorter
Definition:
menu.hpp:112
gui::menu::sorter::~sorter
virtual ~sorter()
Definition:
menu.hpp:114
gui::menu::sorter::column_sortable
virtual bool column_sortable(int column) const =0
gui::menu::sorter::less
virtual bool less(int column, const item &row1, const item &row2) const =0
gui::menu::style
Definition:
menu.hpp:38
gui::menu::style::get_thickness
std::size_t get_thickness() const
Definition:
menu_style.cpp:58
gui::menu::style::scale_images
void scale_images(int max_width, int max_height)
Definition:
menu_style.cpp:60
gui::menu::style::heading_rgb_
int heading_rgb_
Definition:
menu.hpp:58
gui::menu::style::adjust_image_bounds
void adjust_image_bounds(int &w, int &h) const
Definition:
menu_style.cpp:66
gui::menu::style::get_font_size
std::size_t get_font_size() const
Definition:
menu_style.cpp:56
gui::menu::style::font_size_
std::size_t font_size_
Definition:
menu.hpp:54
gui::menu::style::item_size
virtual SDL_Rect item_size(const std::string &item) const
Definition:
menu.cpp:728
gui::menu::style::heading_alpha_
double heading_alpha_
Definition:
menu.hpp:59
gui::menu::style::max_img_w_
int max_img_w_
Definition:
menu.hpp:60
gui::menu::style::max_img_h_
int max_img_h_
Definition:
menu.hpp:60
gui::menu::style::style
style()
Definition:
menu_style.cpp:37
gui::menu::style::normal_alpha_
double normal_alpha_
Definition:
menu.hpp:59
gui::menu::style::selected_alpha_
double selected_alpha_
Definition:
menu.hpp:59
gui::menu::style::draw_row_bg
virtual void draw_row_bg(menu &menu_ref, const std::size_t row_index, const SDL_Rect &rect, ROW_TYPE type)
Definition:
menu.cpp:761
gui::menu::style::get_cell_padding
std::size_t get_cell_padding() const
Definition:
menu_style.cpp:57
gui::menu::style::thickness_
std::size_t thickness_
Definition:
menu.hpp:56
gui::menu::style::normal_rgb_
int normal_rgb_
Definition:
menu.hpp:58
gui::menu::style::init
virtual void init()
Definition:
menu.hpp:42
gui::menu::style::selected_rgb_
int selected_rgb_
Definition:
menu.hpp:58
gui::menu::style::~style
virtual ~style()
Definition:
menu_style.cpp:44
gui::menu::style::cell_padding_
std::size_t cell_padding_
Definition:
menu.hpp:55
gui::menu::style::draw_row
virtual void draw_row(menu &menu_ref, const std::size_t row_index, const SDL_Rect &rect, ROW_TYPE type)
Definition:
menu.cpp:788
gui::menu
Definition:
menu.hpp:32
gui::menu::reset_selection
void reset_selection()
Definition:
menu.cpp:507
gui::menu::requires_event_focus
bool requires_event_focus(const SDL_Event *event=nullptr) const override
Definition:
menu.cpp:546
gui::menu::do_sort
void do_sort()
Definition:
menu.cpp:229
gui::menu::max_items_
int max_items_
Definition:
menu.hpp:227
gui::menu::process
int process()
Definition:
menu.cpp:663
gui::menu::draw_contents
void draw_contents() override
Definition:
menu.cpp:937
gui::menu::show_result_
bool show_result_
Definition:
menu.hpp:246
gui::menu::move_selection_up
void move_selection_up(std::size_t dep)
Definition:
menu.cpp:472
gui::menu::click_selects_
bool click_selects_
Definition:
menu.hpp:241
gui::menu::heading_height_
int heading_height_
Definition:
menu.hpp:236
gui::menu::get_item_rect_internal
SDL_Rect get_item_rect_internal(std::size_t pos) const
Definition:
menu.cpp:991
gui::menu::highlight_heading_
int highlight_heading_
Definition:
menu.hpp:285
gui::menu::set_sorter
void set_sorter(sorter *s)
Definition:
menu.cpp:696
gui::menu::get_sort_reversed
bool get_sort_reversed() const
Definition:
menu.hpp:197
gui::menu::sort_by
void sort_by(int column)
Definition:
menu.cpp:707
gui::menu::sorter_
const sorter * sorter_
Definition:
menu.hpp:282
gui::menu::set_max_width
void set_max_width(const int new_max_width)
Definition:
menu.cpp:406
gui::menu::out_
bool out_
Definition:
menu.hpp:242
gui::menu::items_height
int items_height() const
gui::menu::selected_
std::size_t selected_
Definition:
menu.hpp:240
gui::menu::recalculate_pos
void recalculate_pos()
Definition:
menu.cpp:250
gui::menu::item_height_
int item_height_
Definition:
menu.hpp:227
gui::menu::set_selection_pos
void set_selection_pos(std::size_t pos, bool silent=false, SELECTION_MOVE_VIEWPORT move_viewport=MOVE_VIEWPORT)
Definition:
menu.cpp:451
gui::menu::set_max_height
void set_max_height(const int new_max_height)
Set a new max height for this menu.
Definition:
menu.cpp:398
gui::menu::get_item_height_internal
std::size_t get_item_height_internal(const std::vector< std::string > &item) const
Definition:
menu.cpp:1035
gui::menu::item_pos_
std::vector< std::size_t > item_pos_
Definition:
menu.hpp:233
gui::menu::clear_item
void clear_item(int item)
Definition:
menu.cpp:840
gui::menu::last_was_doubleclick_
bool last_was_doubleclick_
Definition:
menu.hpp:277
gui::menu::fill_items
void fill_items(const std::vector< std::string > &items, bool strip_spaces)
Set new items to show.
Definition:
menu.cpp:174
gui::menu::itemRects_
std::map< int, SDL_Rect > itemRects_
Definition:
menu.hpp:255
gui::menu::adjust_viewport_to_selection
void adjust_viewport_to_selection()
Definition:
menu.cpp:444
gui::menu::heading_
std::vector< std::string > heading_
Definition:
menu.hpp:235
gui::menu::item_ends_with_image
bool item_ends_with_image(const std::string &item) const
Definition:
menu.cpp:821
gui::menu::use_ellipsis_
bool use_ellipsis_
Definition:
menu.hpp:280
gui::menu::invalidate_row_pos
void invalidate_row_pos(std::size_t pos)
Definition:
menu.cpp:1077
gui::menu::sortby_
int sortby_
Definition:
menu.hpp:283
gui::menu::get_max_height
int get_max_height() const
Definition:
menu.hpp:177
gui::menu::default_style
static style & default_style
Definition:
menu.hpp:95
gui::menu::column_widths_item
void column_widths_item(const std::vector< std::string > &row, std::vector< int > &widths) const
Definition:
menu.cpp:807
gui::menu::items_start
int items_start() const
gui::menu::SELECTION_MOVE_VIEWPORT
SELECTION_MOVE_VIEWPORT
Definition:
menu.hpp:298
gui::menu::NO_MOVE_VIEWPORT
@ NO_MOVE_VIEWPORT
Definition:
menu.hpp:298
gui::menu::MOVE_VIEWPORT
@ MOVE_VIEWPORT
Definition:
menu.hpp:298
gui::menu::selection
int selection() const
Definition:
menu.cpp:301
gui::menu::get_sort_by
int get_sort_by() const
Definition:
menu.hpp:196
gui::menu::set_inner_location
void set_inner_location(const SDL_Rect &rect) override
Definition:
menu.cpp:310
gui::menu::style_
style * style_
Definition:
menu.hpp:208
gui::menu::set_heading
void set_heading(const std::vector< std::string > &heading)
Definition:
menu.cpp:356
gui::menu::~menu
~menu()
Default implementation, but defined out-of-line for efficiency reasons.
Definition:
menu.cpp:170
gui::menu::previous_button_
bool previous_button_
Definition:
menu.hpp:243
gui::menu::hit_column
int hit_column(int x) const
Definition:
menu.cpp:963
gui::menu::handle_event
virtual void handle_event(const SDL_Event &event) override
Definition:
menu.cpp:579
gui::menu::update_size
void update_size()
Definition:
menu.cpp:274
gui::menu::number_of_items
std::size_t number_of_items() const
Definition:
menu.hpp:180
gui::menu::move_selection_down
void move_selection_down(std::size_t dep)
Definition:
menu.cpp:477
gui::menu::double_clicked_
bool double_clicked_
Definition:
menu.hpp:248
gui::menu::hit
int hit(int x, int y) const
Definition:
menu.cpp:949
gui::menu::column_widths
const std::vector< int > & column_widths() const
Definition:
menu.cpp:828
gui::menu::move_selection_keeping_viewport
void move_selection_keeping_viewport(std::size_t id)
Definition:
menu.cpp:500
gui::menu::max_items_onscreen
std::size_t max_items_onscreen() const
Definition:
menu.cpp:414
gui::menu::key_press
void key_press(SDL_Keycode key)
Definition:
menu.cpp:512
gui::menu::menu
menu(const std::vector< std::string > &items, bool click_selects=false, int max_height=-1, int max_width=-1, const sorter *sorter_obj=nullptr, style *menu_style=nullptr, const bool auto_join=true)
Definition:
menu.cpp:150
gui::menu::items_end
int items_end() const
gui::menu::get_item_height
std::size_t get_item_height(int item) const
Definition:
menu.cpp:1055
gui::menu::set_click_selects
void set_click_selects(bool value)
Definition:
menu.cpp:680
gui::menu::erase_item
virtual void erase_item(std::size_t index)
Definition:
menu.cpp:327
gui::menu::draw_row
virtual void draw_row(const std::size_t row_index, const SDL_Rect &rect, ROW_TYPE type)
Definition:
menu.cpp:848
gui::menu::get_max_width
int get_max_width() const
Definition:
menu.hpp:178
gui::menu::invalid_
std::set< int > invalid_
Definition:
menu.hpp:304
gui::menu::double_clicked
bool double_clicked()
Definition:
menu.cpp:673
gui::menu::silent_
bool silent_
Definition:
menu.hpp:209
gui::menu::move_selection_to
void move_selection_to(std::size_t id, bool silent=false, SELECTION_MOVE_VIEWPORT move_viewport=MOVE_VIEWPORT)
Definition:
menu.cpp:484
gui::menu::assert_pos
void assert_pos()
Definition:
menu.cpp:259
gui::menu::update_scrollbar_grip_height
void update_scrollbar_grip_height()
Definition:
menu.cpp:268
gui::menu::scroll
void scroll(unsigned int pos) override
Definition:
menu.cpp:690
gui::menu::hit_heading
int hit_heading(int x, int y) const
Definition:
menu.cpp:975
gui::menu::set_numeric_keypress_selection
void set_numeric_keypress_selection(bool value)
Definition:
menu.cpp:685
gui::menu::max_height_
int max_height_
Definition:
menu.hpp:226
gui::menu::sortreversed_
bool sortreversed_
Definition:
menu.hpp:284
gui::menu::move_selection
void move_selection(std::size_t id)
Definition:
menu.cpp:492
gui::menu::get_item_rect
SDL_Rect get_item_rect(int item) const
Definition:
menu.cpp:986
gui::menu::items_
std::vector< item > items_
Definition:
menu.hpp:232
gui::menu::heading_height
std::size_t heading_height() const
Definition:
menu.cpp:1046
gui::menu::bluebg_style
static imgsel_style bluebg_style
Definition:
menu.hpp:96
gui::menu::max_width_
int max_width_
Definition:
menu.hpp:226
gui::menu::num_selects_
bool num_selects_
variable which determines whether a numeric keypress should select an item on the dialog
Definition:
menu.hpp:272
gui::menu::ROW_TYPE
ROW_TYPE
Definition:
menu.hpp:35
gui::menu::SELECTED_ROW
@ SELECTED_ROW
Definition:
menu.hpp:35
gui::menu::NORMAL_ROW
@ NORMAL_ROW
Definition:
menu.hpp:35
gui::menu::HEADING_ROW
@ HEADING_ROW
Definition:
menu.hpp:35
gui::menu::set_items
virtual 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.
Definition:
menu.cpp:367
gui::menu::invalidate_heading
void invalidate_heading()
Definition:
menu.cpp:1086
gui::menu::invalidate_row
void invalidate_row(std::size_t id)
Definition:
menu.cpp:1068
gui::menu::ignore_next_doubleclick_
bool ignore_next_doubleclick_
Definition:
menu.hpp:276
gui::menu::column_widths_
std::vector< int > column_widths_
Definition:
menu.hpp:238
gui::menu::change_item
void change_item(int pos1, int pos2, const std::string &str)
Definition:
menu.cpp:316
gui::scrollarea
Definition:
scrollarea.hpp:23
gui::scrollarea::x
int x
Definition:
scrollarea.hpp:64
gui::scrollarea::y
int y
Definition:
scrollarea.hpp:65
texture
Wrapper class to encapsulate creation and management of an SDL_Texture.
Definition:
texture.hpp:33
w
int w
Definition:
function_table.cpp:137
desktop::notifications::type
type
Definition:
notifications.hpp:24
gui
General purpose widgets.
Definition:
tristate_button.cpp:30
help::item
std::pair< std::string, unsigned > item
Definition:
help_impl.hpp:414
image
Functions to load and save images from/to disk.
Definition:
image_modifications.cpp:35
mp::ui_alerts::items
const std::vector< std::string > items
Definition:
mp_ui_alerts.cpp:64
utf8::index
std::size_t index(const std::string &str, const std::size_t index)
Codepoint index corresponding to the nth character in a UTF-8 string.
Definition:
unicode.cpp:72
scrollarea.hpp
gui::menu::item
Definition:
menu.hpp:99
gui::menu::item::item
item()
Definition:
menu.hpp:100
gui::menu::item::fields
std::vector< std::string > fields
Definition:
menu.hpp:107
gui::menu::item::id
std::size_t id
Definition:
menu.hpp:108
gui::menu::item::item
item(const std::vector< std::string > &fields, std::size_t id)
Definition:
menu.hpp:103
rect
An abstract description of a rectangle with integer coordinates.
Definition:
rect.hpp:47
s
static map_location::DIRECTION s
Definition:
test_map_location.cpp:28
h
#define h
Generated by
1.9.1