blob: ae039f7c7606287813eb38ef15b8ae8830229d41 (
plain)
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
|
#pragma once
#include "StarWidget.hpp"
#include "StarGuiReader.hpp"
namespace Star {
STAR_CLASS(ListWidget);
class ListWidget : public Widget {
public:
ListWidget(Json const& schema);
ListWidget();
RectI relativeBoundRect() const override;
// Callback is called when the selection changes
void setCallback(WidgetCallbackFunc callback);
bool sendEvent(InputEvent const& event) override;
void setSchema(Json const& schema);
WidgetPtr constructWidget();
WidgetPtr addItem();
WidgetPtr addItem(size_t at);
WidgetPtr addItem(WidgetPtr existingItem);
void removeItem(size_t at);
void removeItem(WidgetPtr item);
void clear();
size_t selectedItem() const;
size_t itemPosition(WidgetPtr item) const;
WidgetPtr itemAt(size_t n) const;
WidgetPtr selectedWidget() const;
List<WidgetPtr> const& list() const;
size_t listSize() const;
void setEnabled(size_t pos, bool enabled);
void setHovered(size_t pos, bool hovered);
void setSelected(size_t pos);
void clearSelected();
void setSelectedWidget(WidgetPtr selected);
void registerMemberCallback(String const& name, WidgetCallbackFunc const& callback);
void setFillDown(bool fillDown);
void setColumns(uint64_t columns);
private:
void updateSizeAndPosition();
Json m_schema;
GuiReader m_reader;
Set<size_t> m_disabledItems;
size_t m_selectedItem;
WidgetCallbackFunc m_callback;
String m_selectedBG;
String m_unselectedBG;
String m_hoverBG;
String m_disabledBG;
Vec2I m_spacing;
bool m_fillDown;
uint64_t m_columns;
};
}
|