25#ifndef TGUI_LIST_BOX_HPP
26#define TGUI_LIST_BOX_HPP
28#include <TGUI/Widgets/Scrollbar.hpp>
29#include <TGUI/Renderers/ListBoxRenderer.hpp>
30#include <TGUI/Text.hpp>
34TGUI_MODULE_EXPORT
namespace tgui
43 using Ptr = std::shared_ptr<ListBox>;
44 using ConstPtr = std::shared_ptr<const ListBox>;
46 static constexpr const char StaticWidgetType[] =
"ListBox";
60 ListBox(
const char* typeName = StaticWidgetType,
bool initRenderer =
true);
83 TGUI_NODISCARD
const ListBoxRenderer* getSharedRenderer()
const override;
98 using Widget::setSize;
328 TGUI_NODISCARD std::vector<String>
getItems()
const;
359 template <
typename DataType>
362 if (index < m_items.size())
363 return AnyCast<DataType>(m_items[index].data);
365 throw std::bad_cast();
456 TGUI_DEPRECATED(
"Use getScrollbar()->setValue(value) instead") void setScrollbarValue(
unsigned int value);
463 TGUI_DEPRECATED("Use getScrollbar()->getValue() instead") TGUI_NODISCARD
unsigned int getScrollbarValue() const;
472 TGUI_DEPRECATED("Use getScrollbar()->getMaxValue() instead") TGUI_NODISCARD
unsigned int getScrollbarMaxValue() const;
479 TGUI_NODISCARD
bool isMouseOnWidget(
Vector2f pos) const override;
489 void leftMouseReleased(
Vector2f pos) override;
494 void mouseMoved(
Vector2f pos) override;
499 bool scrolled(
float delta,
Vector2f pos,
bool touch) override;
504 void mouseNoLongerOnWidget() override;
509 void leftMouseButtonNoLongerDown() override;
514 void keyPressed(const
Event::KeyEvent& event) override;
525 bool canHandleKeyPress(const
Event::KeyEvent& event) override;
554 void rendererChanged(const
String& property) override;
559 TGUI_NODISCARD std::unique_ptr<DataIO::Node> save(SavingRenderersMap& renderers) const override;
564 void load(const std::unique_ptr<DataIO::Node>& node, const LoadingRenderersMap& renderers) override;
569 void updateTextSize() override;
574 void scrollbarValueChanged() override;
579 TGUI_NODISCARD
Vector2f getInnerSize() const;
584 void updateItemPositions();
589 void updateSelectedAndHoveringItemColorsAndStyle();
594 void updateItemColorsAndStyle();
599 void updateHoveringItem(
int item);
604 void updateSelectedItem(
int item);
609 void triggerOnScroll();
614 bool updateTime(
Duration elapsedTime) override;
640 std::vector<Item> m_items;
644 int m_selectedItem = -1;
646 int m_hoveringItem = -1;
648 unsigned int m_itemHeight = 0;
651 std::size_t m_maxItems = 0;
654 unsigned int m_lastScrollbarValue = 0;
657 bool m_possibleDoubleClick =
false;
659 bool m_autoScroll =
true;
662 Sprite m_spriteBackground;
667 Color m_borderColorCached;
668 Color m_backgroundColorCached;
669 Color m_backgroundColorHoverCached;
670 Color m_selectedBackgroundColorCached;
671 Color m_selectedBackgroundColorHoverCached;
672 Color m_textColorCached;
673 Color m_textColorHoverCached;
674 Color m_selectedTextColorCached;
675 Color m_selectedTextColorHoverCached;
Base class for render targets.
Definition BackendRenderTarget.hpp:46
Wrapper for colors.
Definition Color.hpp:73
Wrapper for durations.
Definition Duration.hpp:55
Class to store the position or size of a widget.
Definition Layout.hpp:313
Definition ListBoxRenderer.hpp:35
List box widget.
Definition ListBox.hpp:40
TGUI_NODISCARD String getItemById(const String &id) const
Returns the item name of the item with the given id.
bool changeItem(const String &originalValue, const String &newValue)
Changes an item with name originalValue to newValue.
void setItemHeight(unsigned int itemHeight)
Changes the height of the items in the list box.
bool changeItemByIndex(std::size_t index, const String &newValue)
Changes the name of an item at the given index to newValue.
bool changeItemById(const String &id, const String &newValue)
Changes the name of an item with the given id to newValue.
void setTextAlignment(HorizontalAlignment alignment)
Changes the horizontal text alignment.
TGUI_NODISCARD String getItemByIndex(std::size_t index) const
Returns the item name of the item at the given index.
void setItemData(std::size_t index, Any data)
Store some user data with the item.
TGUI_NODISCARD std::vector< String > getItems() const
Returns a copy of the items in the list box.
TGUI_NODISCARD bool contains(const String &item) const
Returns whether the list box contains the given item.
void deselectItem()
Deselects the selected item.
TGUI_NODISCARD std::vector< String > getItemIds() const
Returns a copy of the item ids in the list box.
std::shared_ptr< const ListBox > ConstPtr
Shared constant widget pointer.
Definition ListBox.hpp:44
TGUI_NODISCARD bool getAutoScroll() const
Returns whether the list box scrolls to the bottom when a new item is added.
void setMaximumItems(std::size_t maximumItems=0)
Changes the maximum items that the list box can contain.
TGUI_NODISCARD ListBoxRenderer * getRenderer() override
Returns the renderer, which gives access to functions that determine how the widget is displayed.
TGUI_NODISCARD bool containsId(const String &id) const
Returns whether the list box contains an item with the given id.
TGUI_NODISCARD String getSelectedItem() const
Returns the currently selected item.
void removeAllItems()
Removes all items from the list.
TGUI_NODISCARD HorizontalAlignment getTextAlignment() const
Gets the current horizontal text alignment.
bool removeItemByIndex(std::size_t index)
Removes the item from the list box.
TGUI_NODISCARD String getIdByIndex(std::size_t index) const
Returns the id of the item at the given index.
static TGUI_NODISCARD ListBox::Ptr create()
Creates a new list box widget.
TGUI_NODISCARD unsigned int getItemHeight() const
Returns the height of the items in the list box.
bool removeItemById(const String &id)
Removes the item that were added with the given id.
TGUI_NODISCARD int getIndexById(const String &id) const
Returns the index of the item with the given id.
bool setSelectedItemById(const String &id)
Selects an item in the list box.
bool setSelectedItem(const String &itemName)
Selects an item in the list box.
bool removeItem(const String &itemName)
Removes the item from the list with the given name.
void setSize(const Layout2d &size) override
Changes the size of the list box.
static TGUI_NODISCARD ListBox::Ptr copy(const ListBox::ConstPtr &listBox)
Makes a copy of another list box.
TGUI_NODISCARD std::size_t getMaximumItems() const
Returns the maximum items that the list box can contain.
TGUI_NODISCARD std::size_t getItemCount() const
Returns the amount of items in the list box.
TGUI_NODISCARD ListBoxRenderer * getSharedRenderer() override
Returns the renderer, which gives access to functions that determine how the widget is displayed.
TGUI_NODISCARD String getSelectedItemId() const
Gets the id of the selected item.
std::size_t addItem(const String &itemName, const String &id="")
Adds an item to the list.
void setAutoScroll(bool autoScroll)
Changes whether the list box scrolls to the bottom when a new item is added.
std::shared_ptr< ListBox > Ptr
Shared widget pointer.
Definition ListBox.hpp:43
bool setSelectedItemByIndex(std::size_t index)
Selects an item in the list box.
TGUI_NODISCARD int getHoveredItemIndex() const
Gets the index of the item below the mouse cursor.
TGUI_NODISCARD int getSelectedItemIndex() const
Gets the index of the selected item.
TGUI_NODISCARD DataType getItemData(std::size_t index) const
Returns user data stored in the item.
Definition ListBox.hpp:360
Definition Outline.hpp:38
Signal to which the user can subscribe to get callbacks from.
Definition Signal.hpp:522
Signal to which the user can subscribe to get callbacks from.
Definition Signal.hpp:61
Wrapper class to store strings.
Definition String.hpp:96
Wrapper for text styles.
Definition TextStyle.hpp:55
Backend-independent wrapper around the backend-specific text class.
Definition Text.hpp:48
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:38
HorizontalAlignment
The horizontal alignment.
Definition Layout.hpp:61
Definition ListBox.hpp:634
States used for drawing.
Definition RenderStates.hpp:38