TGUI_API std::shared_ptr<DataIO::Node> saveWidget(Widget::Ptr widget) { std::string widgetName; if (widget->getParent()) widget->getParent()->getWidgetName(widget, widgetName); auto node = std::make_shared<DataIO::Node>(); if (widgetName.empty()) node->name = widget->getWidgetType(); else node->name = widget->getWidgetType() + "." + widgetName; if (!widget->isVisible()) SET_PROPERTY("Visible", "false"); if (!widget->isEnabled()) SET_PROPERTY("Enabled", "false"); if (widget->getPosition() != sf::Vector2f{}) SET_PROPERTY("Position", emitLayout(widget->getPositionLayout())); if (widget->getSize() != sf::Vector2f{}) SET_PROPERTY("Size", emitLayout(widget->getSizeLayout())); if (widget->getOpacity() != 255) SET_PROPERTY("Opacity", tgui::to_string(widget->getOpacity())); /// TODO: Font and ToolTip if (widget->getRenderer()) { node->children.emplace_back(std::make_shared<DataIO::Node>()); node->children.back()->name = "Renderer"; for (auto& pair : widget->getRenderer()->getPropertyValuePairs()) node->children.back()->propertyValuePairs[pair.first] = std::make_shared<DataIO::ValueNode>(node->children.back().get(), Serializer::serialize(std::move(pair.second))); } return node; }
bool ScrollablePanel::remove(const Widget::Ptr& widget) { const sf::Vector2f bottomRight = widget->getPosition() + widget->getFullSize(); const bool ret = Panel::remove(widget); if (m_contentSize == sf::Vector2f{0, 0}) { if ((bottomRight.x == m_mostBottomRightPosition.x) || (bottomRight.y == m_mostBottomRightPosition.y)) { recalculateMostBottomRightPosition(); updateScrollbars(); } } return ret; }