TGUI_API Widget::Ptr loadWidget(std::shared_ptr<DataIO::Node> node, Widget::Ptr widget) { assert(widget != nullptr); if (node->propertyValuePairs["visible"]) { bool visible = parseBoolean(node->propertyValuePairs["visible"]->value); if (visible) widget->show(); else widget->hide(); } if (node->propertyValuePairs["enabled"]) { bool enabled = parseBoolean(node->propertyValuePairs["enabled"]->value); if (enabled) widget->enable(); else widget->disable(); } if (node->propertyValuePairs["position"]) widget->setPosition(parseLayout(node->propertyValuePairs["position"]->value)); if (node->propertyValuePairs["size"]) widget->setSize(parseLayout(node->propertyValuePairs["size"]->value)); if (node->propertyValuePairs["opacity"]) widget->setOpacity(tgui::stof(node->propertyValuePairs["opacity"]->value)); /// TODO: Font and ToolTip (and Theme?) for (auto& childNode : node->children) { if (toLower(childNode->name) == "renderer") { for (auto& pair : childNode->propertyValuePairs) widget->getRenderer()->setProperty(pair.first, pair.second->value); } } REMOVE_CHILD("renderer"); return widget; }
QList<XKBLayout> findLayouts(const QDomElement &layoutList) { QList<XKBLayout> layouts; QDomNodeList children = layoutList.childNodes(); for (int i = 0; i < children.size(); ++i) { const QDomNode &n = children.at(i); if (n.isElement()) layouts += parseLayout(n.toElement()); } return layouts; }
void LayoutParser::parseKeyboard() { const QXmlStreamAttributes attributes(m_xml.attributes()); const QString version(attributes.value(QLatin1String("version")).toString()); const QString actual_version(version.isEmpty() ? "1.0" : version); const QString title(attributes.value(QLatin1String("title")).toString()); const QString language(attributes.value(QLatin1String("language")).toString()); const QString catalog(attributes.value(QLatin1String("catalog")).toString()); const bool autocapitalization(boolValue(attributes.value(QLatin1String("autocapitalization")), true)); m_keyboard = TagKeyboardPtr(new TagKeyboard(actual_version, title, language, catalog, autocapitalization)); while (m_xml.readNextStartElement()) { const QStringRef name(m_xml.name()); if (name == QLatin1String("import")) { parseImport(); } else if (name == QLatin1String("layout")) { parseLayout(); } else { error(QString::fromLatin1("Expected '<layout>' or '<import>', but got '<%1>'.").arg(name.toString())); } } }