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