26#ifndef TGUI_LIST_VIEW_HPP
27#define TGUI_LIST_VIEW_HPP
30#include <TGUI/CopiedSharedPtr.hpp>
31#include <TGUI/Widgets/Scrollbar.hpp>
32#include <TGUI/Renderers/ListViewRenderer.hpp>
33#include <TGUI/Text.hpp>
49 typedef std::shared_ptr<ListView>
Ptr;
50 typedef std::shared_ptr<const ListView>
ConstPtr;
64 std::vector<Text> texts;
71 float designWidth = 0;
265 std::size_t
addItem(
const std::vector<sf::String>& item);
284 bool changeItem(std::size_t index,
const std::vector<sf::String>& item);
296 bool changeSubItem(std::size_t index, std::size_t column,
const sf::String& item);
330#ifndef TGUI_REMOVE_DEPRECATED_CODE
334 TGUI_DEPRECATED(
"Use deselectItems instead") void deselectItem();
432 sf::String
getItemCell(std::size_t rowIndex, std::size_t columnIndex)
const;
457 void sort(std::size_t index,
const std::function<
bool(
const sf::String&,
const sf::String&)>& cmp);
696 void leftMousePressed(
Vector2f pos)
override;
701 void leftMouseReleased(
Vector2f pos)
override;
706 void rightMousePressed(
Vector2f pos)
override;
711 void mouseMoved(
Vector2f pos)
override;
716 bool mouseWheelScrolled(
float delta,
Vector2f pos)
override;
721 void mouseNoLongerOnWidget()
override;
726 void leftMouseButtonNoLongerDown()
override;
735 void draw(sf::RenderTarget& target, sf::RenderStates states)
const override;
764 std::unique_ptr<DataIO::Node>
save(SavingRenderersMap& renderers)
const override;
770 void load(
const std::unique_ptr<DataIO::Node>& node,
const LoadingRenderersMap& renderers)
override;
782 Text createText(
const sf::String& caption);
788 Text createHeaderText(
const sf::String& caption);
794 virtual void setItemColor(std::size_t index,
const Color& color);
800 float calculateAutoColumnWidth(
const Text& text);
806 void updateSelectedAndhoveredItemColors();
812 void updateItemColors();
818 void updateHeaderTextsColor();
824 void updateHoveredItem(
int item);
830 void updateSelectedItem(
int item);
836 void addSelectedItem(
int item);
842 void removeSelectedItem(std::size_t item);
848 void updateHoveredItemByMousePos(
Vector2f mousePos);
854 unsigned int getTotalSeparatorWidth()
const;
861 int getColumnIndexBelowMouse(
float mouseLeft);
867 void updateScrollbars();
872 void updateVerticalScrollbarMaximum();
877 void updateHorizontalScrollbarMaximum();
883 void drawHeaderText(sf::RenderTarget& target, sf::RenderStates states,
float columnWidth,
float headerHeight, std::size_t column)
const;
889 void drawColumn(sf::RenderTarget& target, sf::RenderStates states, std::size_t firstItem, std::size_t lastItem, std::size_t column,
float columnWidth)
const;
895 bool update(sf::Time elapsedTime)
override;
903 return std::make_shared<ListView>(*
this);
910 SignalInt onItemSelect = {
"ItemSelected"};
911 SignalInt onDoubleClick = {
"DoubleClicked"};
912 SignalInt onRightClick = {
"RightClicked"};
913 SignalInt onHeaderClick = {
"HeaderClicked"};
919 std::vector<Column> m_columns;
920 std::vector<Item> m_items;
921 std::set<std::size_t> m_selectedItems;
923 int m_hoveredItem = -1;
924 int m_lastMouseDownItem = -1;
926 float m_requestedHeaderHeight = 0;
927 unsigned int m_itemHeight = 0;
928 unsigned int m_requestedTextSize = 0;
929 unsigned int m_headerTextSize = 0;
930 unsigned int m_headerSeparatorHeight = 0;
931 unsigned int m_separatorWidth = 1;
932 unsigned int m_gridLinesWidth = 1;
933 unsigned int m_iconCount = 0;
934 float m_maxIconWidth = 0;
935 bool m_headerVisible =
true;
936 bool m_showHorizontalGridLines =
false;
937 bool m_showVerticalGridLines =
true;
938 bool m_expandLastColumn =
false;
939 bool m_multiSelect =
false;
946 int m_mouseOnHeaderIndex = -1;
947 int m_possibleDoubleClick = -1;
948 bool m_autoScroll =
true;
953 Color m_borderColorCached;
954 Color m_separatorColorCached;
955 Color m_gridLinesColorCached;
956 Color m_headerTextColorCached;
957 Color m_headerBackgroundColorCached;
958 Color m_backgroundColorCached;
959 Color m_backgroundColorHoverCached;
960 Color m_selectedBackgroundColorCached;
961 Color m_selectedBackgroundColorHoverCached;
962 Color m_textColorCached;
963 Color m_textColorHoverCached;
964 Color m_selectedTextColorCached;
965 Color m_selectedTextColorHoverCached;
Wrapper for colors.
Definition: Color.hpp:49
Definition: CopiedSharedPtr.hpp:40
Class to store the position or size of a widget.
Definition: Layout.hpp:260
Definition: ListViewRenderer.hpp:37
List view widget.
Definition: ListView.hpp:46
void setShowVerticalGridLines(bool showGridLines)
Changes whether lines are drawn between columns.
Scrollbar::Policy getVerticalScrollbarPolicy() const
Returns when the vertical scrollbar should be displayed.
std::shared_ptr< ListView > Ptr
Shared widget pointer.
Definition: ListView.hpp:49
void setSelectedItems(const std::set< std::size_t > &indices)
Selects items in the list view.
void setTextSize(unsigned int textSize) override
Changes the text size of the items.
sf::String getItem(std::size_t index) const
Retrieves an item in the list.
bool getShowHorizontalGridLines() const
Returns whether lines are drawn between items.
void setHeaderTextSize(unsigned int textSize)
Changes the text size of the header caption.
bool mouseOnWidget(Vector2f pos) const override
Returns whether the mouse position (which is relative to the parent widget) lies on top of the widget...
unsigned int getVerticalScrollbarValue() const
Returns the thumb position of the vertical scrollbar.
void setHorizontalScrollbarPolicy(Scrollbar::Policy policy)
Changes when the horizontal scrollbar should be displayed.
void removeAllItems()
Removes all items from the list.
void setColumnAlignment(std::size_t columnIndex, ColumnAlignment alignment)
Changes the text alignment within a column.
std::vector< sf::String > getItemRow(std::size_t index) const
Retrieves the values of all columns for an item in the list.
ColumnAlignment getColumnAlignment(std::size_t columnIndex) const
Returns the current text alignment within a column.
std::size_t addItem(const sf::String &text)
Adds an item to the list.
void setColumnWidth(std::size_t index, float width)
Changes the width of a column.
sf::String getColumnText(std::size_t index) const
Returns the text of a column.
static ListView::Ptr copy(ListView::ConstPtr listView)
Makes a copy of another list view.
std::shared_ptr< const ListView > ConstPtr
Shared constant widget pointer.
Definition: ListView.hpp:50
unsigned int getSeparatorWidth() const
Returns the width of the column separator.
void setSize(const Layout2d &size) override
Changes the size of the list view.
void setHeaderVisible(bool showHeader)
Changes whether the header is shown.
std::vector< sf::String > getItems() const
Returns a list of the texts in the first column for all items in the list view.
void draw(sf::RenderTarget &target, sf::RenderStates states) const override
Draw the widget to a render target.
unsigned int getHorizontalScrollbarValue() const
Returns the thumb position of the horizontal scrollbar.
void setVerticalScrollbarValue(unsigned int value)
Changes the thumb position of the vertical scrollbar.
void rendererChanged(const std::string &property) override
Function called when one of the properties of the renderer is changed.
bool getExpandLastColumn() const
Returns whether the last column is expanded to fill the list view (if all columns fit inside the list...
float getHeaderHeight() const
Returns the height of the header row.
std::size_t getColumnCount() const
Returns the amount of columns in the list view.
std::unique_ptr< DataIO::Node > save(SavingRenderersMap &renderers) const override
Saves the widget as a tree node in order to save it to a file.
bool changeItem(std::size_t index, const std::vector< sf::String > &item)
Changes an item with values for multiple columns to the list.
unsigned int getGridLinesWidth() const
Returns the width of the grid lines.
void sort(std::size_t index, const std::function< bool(const sf::String &, const sf::String &)> &cmp)
Sort items.
void setHorizontalScrollbarValue(unsigned int value)
Changes the thumb position of the horizontal scrollbar.
bool getHeaderVisible() const
Returns whether the header is shown.
int getSelectedItemIndex() const
Gets the index of the selected item.
unsigned int getItemHeight() const
Returns the height of the items in the list view.
void setItemIcon(std::size_t index, const Texture &texture)
Sets a small icon in front of the item.
float getColumnWidth(std::size_t index) const
Returns the width of a column.
void setVerticalScrollbarPolicy(Scrollbar::Policy policy)
Changes when the vertical scrollbar should be displayed.
ColumnAlignment
The text alignment for all texts within a column.
Definition: ListView.hpp:56
static ListView::Ptr create()
Creates a new list view widget.
std::size_t getItemCount() const
Returns the amount of items in the list view.
Signal & getSignal(std::string signalName) override
Retrieves a signal based on its name.
void load(const std::unique_ptr< DataIO::Node > &node, const LoadingRenderersMap &renderers) override
Loads the widget from a tree of nodes.
ListViewRenderer * getSharedRenderer()
Returns the renderer, which gives access to functions that determine how the widget is displayed.
bool getAutoScroll() const
Returns whether the list view scrolls to the bottom when a new item is added.
void setColumnText(std::size_t index, const sf::String &text)
Changes the text of a column.
void setHeaderHeight(float height)
Changes the height of the header row.
void setShowHorizontalGridLines(bool showGridLines)
Changes whether lines are drawn between items.
void deselectItems()
Deselects the selected items.
void addMultipleItems(const std::vector< std::vector< sf::String > > &items)
Adds multiple items to the list.
void setExpandLastColumn(bool expand)
Changes whether the last column is expanded to fill the list view (if all columns fit inside the list...
void setAutoScroll(bool autoScroll)
Changes whether the list view scrolls to the bottom when a new item is added.
Widget::Ptr clone() const override
Makes a copy of the widget if you don't know its exact type.
Definition: ListView.hpp:901
std::set< std::size_t > getSelectedItemIndices() const
Gets the indices of the selected items.
void setItemHeight(unsigned int itemHeight)
Changes the height of the items in the list view.
void setSelectedItem(std::size_t index)
Selects an item in the list view.
void setSeparatorWidth(unsigned int width)
Changes the width of the column separator.
bool getMultiSelect() const
Returns multi selection of the items is allowed.
void setHeaderSeparatorHeight(unsigned int height)
Changes the height of the separator between the header and the items.
unsigned int getHeaderTextSize() const
Returns the text size of the header caption.
Texture getItemIcon(std::size_t index) const
Gets the icon displayed in front of the item.
Scrollbar::Policy getHorizontalScrollbarPolicy() const
Returns when the horizontal scrollbar should be displayed.
void setMultiSelect(bool multiSelect)
Allow multi selection of the items.
void removeAllColumns()
Removes all columns.
sf::String getItemCell(std::size_t rowIndex, std::size_t columnIndex) const
Retrieves the value for a cell in the list.
bool removeItem(std::size_t index)
Removes the item from the list view.
float getCurrentHeaderHeight() const
Returns the height of the header or 0 if no header row is shown.
bool getShowVerticalGridLines() const
Returns whether lines are drawn between items.
std::size_t addColumn(const sf::String &text, float width=0, ColumnAlignment alignment=ColumnAlignment::Left)
Adds a column.
unsigned int getHeaderSeparatorHeight() const
Returns the height of the separator between the header and the items.
void setGridLinesWidth(unsigned int width)
Changes the width of the grid lines.
ListViewRenderer * getRenderer()
Returns the renderer, which gives access to functions that determine how the widget is displayed.
std::vector< std::vector< sf::String > > getItemRows() const
Returns a list of all column values for all items in the list view.
std::size_t addItem(const std::vector< sf::String > &item)
Adds an item with values for multiple columns to the list.
bool changeSubItem(std::size_t index, std::size_t column, const sf::String &item)
Changes the caption of a single value in the item.
Definition: Outline.hpp:39
Signal to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:231
Definition: Sprite.hpp:46
Definition: Texture.hpp:42
Definition: Vector2f.hpp:39
Namespace that contains all TGUI functions and classes.
Definition: AbsoluteOrRelativeValue.hpp:37
Definition: ListView.hpp:69
Definition: ListView.hpp:63