Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/windowing/StarListWidget.hpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
commit6352e8e3196f78388b6c771073f9e03eaa612673 (patch)
treee23772f79a7fbc41bc9108951e9e136857484bf4 /source/windowing/StarListWidget.hpp
parent6741a057e5639280d85d0f88ba26f000baa58f61 (diff)
everything everywhere
all at once
Diffstat (limited to 'source/windowing/StarListWidget.hpp')
-rw-r--r--source/windowing/StarListWidget.hpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/source/windowing/StarListWidget.hpp b/source/windowing/StarListWidget.hpp
new file mode 100644
index 0000000..8f511e3
--- /dev/null
+++ b/source/windowing/StarListWidget.hpp
@@ -0,0 +1,70 @@
+#ifndef STAR_LIST_WIDGET_HPP
+#define STAR_LIST_WIDGET_HPP
+
+#include "StarWidget.hpp"
+#include "StarGuiReader.hpp"
+
+namespace Star {
+
+STAR_CLASS(GuiReader);
+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;
+};
+
+}
+
+#endif