1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
#ifndef ITEMLIST_H
#define ITEMLIST_H
#include "scene/gui/control.h"
#include "scene/gui/scroll_bar.h"
class ItemList : public Control {
OBJ_TYPE( ItemList, Control );
public:
enum IconMode {
ICON_MODE_TOP,
ICON_MODE_LEFT
};
enum SelectMode {
SELECT_SINGLE,
SELECT_MULTI
};
private:
struct Item {
Ref<Texture> icon;
Ref<Texture> tag_icon;
String text;
bool selectable;
bool selected;
bool disabled;
Variant metadata;
String tooltip;
Rect2 rect_cache;
};
int current;
bool shape_changed;
Vector<Item> items;
Vector<int> separators;
SelectMode select_mode;
IconMode icon_mode;
VScrollBar *scroll_bar;
uint64_t search_time_msec;
String search_string;
int current_columns;
int fixed_column_width;
int max_text_lines;
int max_columns;
Size2 min_icon_size;
void _scroll_changed(double);
void _input_event(const InputEvent& p_event);
protected:
void _notification(int p_what);
static void _bind_methods();
public:
void add_item(const String& p_item,const Ref<Texture>& p_texture=Ref<Texture>(),bool p_selectable=true);
void add_icon_item(const Ref<Texture>& p_item,bool p_selectable=true);
void set_item_text(int p_idx,const String& p_text);
String get_item_text(int p_idx) const;
void set_item_icon(int p_idx,const Ref<Texture>& p_icon);
Ref<Texture> get_item_icon(int p_idx) const;
void set_item_selectable(int p_idx,bool p_selectable);
bool is_item_selectable(int p_idx) const;
void set_item_disabled(int p_idx,bool p_disabled);
bool is_item_disabled(int p_idx) const;
void set_item_metadata(int p_idx,const Variant& p_metadata);
Variant get_item_metadata(int p_idx) const;
void set_item_tag_icon(int p_idx,const Ref<Texture>& p_tag_icon);
Ref<Texture> get_item_tag_icon(int p_idx) const;
void set_item_tooltip(int p_idx,const String& p_tooltip);
String get_item_tooltip(int p_idx) const;
void select(int p_idx,bool p_single=true);
void unselect(int p_idx);
bool is_selected(int p_idx) const;
void set_current(int p_current);
int get_current() const;
int get_item_count() const;
void remove_item(int p_idx);
void clear();
void set_fixed_column_width(int p_size);
int get_fixed_column_width() const;
void set_max_text_lines(int p_amount);
int get_max_text_lines() const;
void set_max_columns(int p_amount);
int get_max_columns() const;
void set_select_mode(SelectMode p_mode);
SelectMode get_select_mode() const;
void set_icon_mode(IconMode p_mode);
IconMode get_icon_mode() const;
void set_min_icon_size(const Size2& p_size);
Size2 get_min_icon_size() const;
void ensure_current_is_visible();
virtual String get_tooltip(const Point2& p_pos) const;
ItemList();
~ItemList();
};
VARIANT_ENUM_CAST(ItemList::SelectMode);
VARIANT_ENUM_CAST(ItemList::IconMode);
#endif // ITEMLIST_H
|