26#ifndef TGUI_TREE_VIEW_HPP
27#define TGUI_TREE_VIEW_HPP
29#include <TGUI/CopiedSharedPtr.hpp>
30#include <TGUI/Widgets/Scrollbar.hpp>
31#include <TGUI/Renderers/TreeViewRenderer.hpp>
32#include <TGUI/Text.hpp>
45 typedef std::shared_ptr<TreeView>
Ptr;
46 typedef std::shared_ptr<const TreeView>
ConstPtr;
53 std::vector<ConstNode> nodes;
62 Node* parent =
nullptr;
63 std::vector<std::shared_ptr<Node>> nodes;
74 TreeView(
const char* typeName =
"TreeView",
bool initRenderer =
true);
110 static TreeView::Ptr
copy(TreeView::ConstPtr treeView);
146 bool addItem(
const std::vector<String>& hierarchy,
bool createParents =
true);
154 void expand(
const std::vector<String>& hierarchy);
168 void collapse(
const std::vector<String>& hierarchy);
201 bool removeItem(
const std::vector<String>& hierarchy,
bool removeParentsWhenEmpty =
true);
280 void leftMousePressed(
Vector2f pos)
override;
285 void leftMouseReleased(
Vector2f pos)
override;
290 void rightMousePressed(
Vector2f pos)
override;
295 void mouseMoved(
Vector2f pos)
override;
300 bool mouseWheelScrolled(
float delta,
Vector2f pos)
override;
305 void mouseNoLongerOnWidget()
override;
310 void leftMouseButtonNoLongerDown()
override;
320 void markNodesDirty();
361 std::unique_ptr<DataIO::Node>
save(SavingRenderersMap& renderers)
const override;
367 void load(
const std::unique_ptr<DataIO::Node>& node,
const LoadingRenderersMap& renderers)
override;
385 void updateIconBounds();
391 bool updateTime(
Duration elapsedTime)
override;
403 void updateTextColors(std::vector<std::shared_ptr<Node>>& nodes);
409 void createNode(std::vector<std::shared_ptr<Node>>& menus,
Node* parent,
const String& text);
415 Node* findParentNode(
const std::vector<String>& hierarchy,
unsigned int parentIndex, std::vector<std::shared_ptr<Node>>& nodes,
Node* parent,
bool createParents);
421 void toggleNodeInternal(std::size_t index);
427 bool expandOrCollapse(
const std::vector<String>& hierarchy,
bool expand);
433 void loadItems(
const std::unique_ptr<DataIO::Node>& node, std::vector<std::shared_ptr<Node>>& items,
Node* parent);
439 unsigned int updateVisibleNodes(std::vector<std::shared_ptr<Node>>& nodes,
Node* selectedNode,
float textPadding,
unsigned int pos);
445 void updateSelectedAndHoveringItemColors();
451 void updateHoveredItem(
int item);
457 void updateSelectedItem(
int item);
473 std::vector<std::shared_ptr<Node>> m_nodes;
474 std::vector<std::shared_ptr<Node>> m_visibleNodes;
476 int m_selectedItem = -1;
477 int m_hoveredItem = -1;
479 unsigned int m_itemHeight = 0;
480 float m_maxRight = 0;
488 bool m_possibleDoubleClick =
false;
489 int m_doubleClickNodeIndex = -1;
491 Sprite m_spriteBranchExpanded;
492 Sprite m_spriteBranchCollapsed;
498 Color m_borderColorCached;
499 Color m_backgroundColorCached;
500 Color m_textColorCached;
501 Color m_textColorHoverCached;
502 Color m_selectedTextColorCached;
503 Color m_selectedTextColorHoverCached;
504 Color m_selectedBackgroundColorCached;
505 Color m_selectedBackgroundColorHoverCached;
506 Color m_backgroundColorHoverCached;
Base class for render targets.
Definition: BackendRenderTarget.hpp:48
Wrapper for colors.
Definition: Color.hpp:63
Definition: CopiedSharedPtr.hpp:40
Wrapper for durations.
Definition: Duration.hpp:52
Class to store the position or size of a widget.
Definition: Layout.hpp:284
Definition: Outline.hpp:39
Signal to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:859
Signal to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:58
Definition: Sprite.hpp:45
Wrapper class to store strings.
Definition: String.hpp:79
Wrapper for text styles.
Definition: TextStyle.hpp:58
Definition: TreeViewRenderer.hpp:37
Tree view widget.
Definition: TreeView.hpp:42
void draw(BackendRenderTarget &target, RenderStates states) const override
Draw the widget to a render target.
Signal & getSignal(String signalName) override
Retrieves a signal based on its name.
void deselectItem()
Deselect the item if one was selected.
Widget::Ptr clone() const override
Makes a copy of the widget if you don't know its exact type.
unsigned int getHorizontalScrollbarValue() const
Returns the thumb position of the horizontal scrollbar.
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 addItem(const std::vector< String > &hierarchy, bool createParents=true)
Adds a new item to the tree view.
void updateTextSize() override
Called when the text size is changed (either by setTextSize or via the renderer)
unsigned int getItemHeight() const
Returns the height of the items in the tree view.
void load(const std::unique_ptr< DataIO::Node > &node, const LoadingRenderersMap &renderers) override
Loads the widget from a tree of nodes.
std::vector< ConstNode > getNodes() const
Returns the nodes in the tree view.
void collapseAll()
Collapses all items.
void collapse(const std::vector< String > &hierarchy)
Collapses the given item.
bool selectItem(const std::vector< String > &hierarchy)
Selects an item in the tree view.
bool removeItem(const std::vector< String > &hierarchy, bool removeParentsWhenEmpty=true)
Removes an item.
void setItemHeight(unsigned int itemHeight)
Changes the height of the items in the tree view.
void expandAll()
Expands all items.
void setVerticalScrollbarValue(unsigned int value)
Changes the thumb position of the vertical scrollbar.
void expand(const std::vector< String > &hierarchy)
Expands the given item.
void removeAllItems()
Removes all items.
TreeViewRenderer * getRenderer()
Returns the renderer, which gives access to functions that determine how the widget is displayed.
bool isMouseOnWidget(Vector2f pos) const override
Returns whether the mouse position (which is relative to the parent widget) lies on top of the widget...
std::vector< String > getSelectedItem() const
Returns the selected item.
unsigned int getVerticalScrollbarValue() const
Returns the thumb position of the vertical scrollbar.
static TreeView::Ptr create()
Creates a new tree view widget.
void setHorizontalScrollbarValue(unsigned int value)
Changes the thumb position of the horizontal scrollbar.
void rendererChanged(const String &property) override
Function called when one of the properties of the renderer is changed.
static TreeView::Ptr copy(TreeView::ConstPtr treeView)
Makes a copy of another tree view.
TreeViewRenderer * getSharedRenderer()
Returns the renderer, which gives access to functions that determine how the widget is displayed.
void setSize(const Layout2d &size) override
Changes the size of the tree view.
Namespace that contains all TGUI functions and classes.
Definition: AbsoluteOrRelativeValue.hpp:36
KeyPressed event parameters.
Definition: Event.hpp:167
States used for drawing.
Definition: RenderStates.hpp:39
Read-only node representation used by getNodes.
Definition: TreeView.hpp:50
Internal representation of a node.
Definition: TreeView.hpp:58