| 82 | } |
| 83 | |
| 84 | void WidgetTypes::loadWidgets(MyGUI::xml::ElementPtr _node, std::string_view _file, MyGUI::Version _version) |
| 85 | { |
| 86 | MyGUI::xml::ElementEnumerator widgets = _node->getElementEnumerator(); |
| 87 | while (widgets.next("Widget")) |
| 88 | { |
| 89 | WidgetStyle* widget_type = getWidgetType(widgets->findAttribute("name")); |
| 90 | |
| 91 | widget_type->internalType = widgets->findAttribute("internal") == "true"; |
| 92 | |
| 93 | // берем детей и крутимся |
| 94 | MyGUI::xml::ElementEnumerator field = widgets->getElementEnumerator(); |
| 95 | while (field.next()) |
| 96 | { |
| 97 | std::string key; |
| 98 | std::string value; |
| 99 | std::string group; |
| 100 | |
| 101 | if (field->getName() == "Property") |
| 102 | { |
| 103 | if (!field->findAttribute("key", key)) |
| 104 | continue; |
| 105 | if (!field->findAttribute("value", value)) |
| 106 | continue; |
| 107 | field->findAttribute("group", group); |
| 108 | if (key == "Skin") |
| 109 | { |
| 110 | std::string_view button_name = field->findAttribute("name"); |
| 111 | if (button_name.empty()) |
| 112 | button_name = value; |
| 113 | |
| 114 | if (group.empty()) |
| 115 | group = DEFAULT_GROUP_NAME; |
| 116 | mSkinGroups[group].emplace_back(value, widget_type->name, button_name); |
| 117 | widget_type->skin.push_back(value); |
| 118 | } |
| 119 | else if (key == "DefaultSkin") |
| 120 | widget_type->default_skin = value; |
| 121 | else if (key == "Parent") |
| 122 | widget_type->parent = MyGUI::utility::parseBool(value); |
| 123 | else if (key == "Child") |
| 124 | widget_type->child = MyGUI::utility::parseBool(value); |
| 125 | else if (key == "Resizeable") |
| 126 | widget_type->resizeable = MyGUI::utility::parseBool(value); |
| 127 | else if (key == "ItemManager") |
| 128 | widget_type->many_items = MyGUI::utility::parseBool(value); |
| 129 | else if (key == "Base") |
| 130 | widget_type->base = value; |
| 131 | } |
| 132 | else if (field->getName() == "Parameter") |
| 133 | { |
| 134 | if (!field->findAttribute("key", key)) |
| 135 | continue; |
| 136 | if (!field->findAttribute("value", value)) |
| 137 | continue; |
| 138 | widget_type->parameter.emplace_back(key, value); |
| 139 | } |
| 140 | else if (field->getName() == "TemplateData") |
| 141 | { |
nothing calls this directly
no test coverage detected