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