Commit 3efefbda authored by Marco Bubke's avatar Marco Bubke
Browse files

QmlDesigner.MetaInfo: Cleanup the MetaInfoParser

parent 8fdcaa5c
......@@ -197,6 +197,4 @@ contains(CONFIG, plugin) {
HEADERS += $$PWD/include/basetexteditmodifier.h
}
DISTFILES += $$PWD/metafile/widget.metafile
RESOURCES += $$PWD/designercore.qrc
OTHER_FILES += $$PWD/metainfo/gui.metainfo
<!DOCTYPE RCC>
<RCC version="1.0">
<qresource>
<file>metainfo/gui.metainfo</file>
</qresource>
</RCC>
......@@ -57,14 +57,8 @@ protected:
void tokenHandler(QXmlStreamReader &reader);
void metaInfoHandler(QXmlStreamReader &reader);
void handleMetaInfoElement(QXmlStreamReader &reader);
void handleEnumElement(QXmlStreamReader &reader);
void handleEnumElementElement(QXmlStreamReader &reader, EnumeratorMetaInfo &enumeratorMetaInfo);
void handleFlagElement(QXmlStreamReader &reader);
void handleFlagElementElement(QXmlStreamReader &reader, EnumeratorMetaInfo &enumeratorMetaInfo);
void handleNodeElement(QXmlStreamReader &reader);
void handleNodeItemLibraryEntryElement(QXmlStreamReader &reader, const QString &className);
void handleAbstractPropertyElement(QXmlStreamReader &reader, NodeMetaInfo &nodeMetaInfo);
void handleAbstractPropertyDefaultValueElement(QXmlStreamReader &reader, NodeMetaInfo &nodeMetaInfo);
void handleItemLibraryEntryPropertyElement(QXmlStreamReader &reader, ItemLibraryEntry &itemLibraryEntry);
private:
......
......@@ -133,6 +133,8 @@ Internal::ObjectNodeInstance::Pointer NodeInstance::createInstance(const NodeMet
{
Internal::ObjectNodeInstance::Pointer instance;
qDebug() << __FUNCTION__ << metaInfo.typeName() << metaInfo.directSuperClass().typeName();
if (!metaInfo.isValid())
instance = Internal::DummyNodeInstance::create();
else if (metaInfo.isSubclassOf("Qt/QWidget", 4, 7))
......
......@@ -879,8 +879,9 @@ QStringList propertyNameForWritableProperties(QObject *object, const QString &ba
const QMetaObject *metaObject = object->metaObject();
for (int index = 0; index < metaObject->propertyCount(); ++index) {
QMetaProperty metaProperty = metaObject->property(index);
if (metaProperty.isReadable() && !metaProperty.isWritable()) {
QObject *childObject = QDeclarativeMetaType::toQObject(metaProperty.read(object));
QDeclarativeProperty declarativeProperty(object, QLatin1String(metaProperty.name()));
if (declarativeProperty.isValid() && declarativeProperty.isWritable() && declarativeProperty.propertyTypeCategory() == QDeclarativeProperty::Object) {
QObject *childObject = QDeclarativeMetaType::toQObject(declarativeProperty.read());
if (childObject)
propertyNameList.append(propertyNameForWritableProperties(childObject, baseName + QString::fromUtf8(metaProperty.name()) + '.'));
} else if (QDeclarativeValueTypeFactory::valueType(metaProperty.userType())) {
......
<!-- Metadata that is general to Qt and cannot be put into a separate plugin -->
<metainfo>
<enumerator name="Orientation" scope="Qt">
<element name="Horizontal" value="1" />
<element name="Vertical" value="2" />
</enumerator>
<enumerator name="ContextMenuPolicy" scope="Qt">
<element name="DefaultContextMenu" value="1" />
<element name="PreventContextMenu" value="4" />
<element name="ActionsContextMenu" value="2" />
<element name="NoContextMenu" value="0" />
<element name="CustomContextMenu" value="3" />
</enumerator>
<enumerator name="LayoutDirection" scope="Qt">
<element name="RightToLeft" value="1" />
<element name="LeftToRight" value="0" />
</enumerator>
<enumerator name="ArrowType" scope="Qt">
<element name="RightArrow" value="4" />
<element name="NoArrow" value="0" />
<element name="UpArrow" value="1" />
<element name="DownArrow" value="2" />
<element name="LeftArrow" value="3" />
</enumerator>
<enumerator name="PenStyle" scope="Qt">
<element name="DashLine" value="2" />
<element name="NoPen" value="0" />
<element name="DashDotLine" value="4" />
<element name="DashDotDotLine" value="5" />
<element name="SolidLine" value="1" />
<element name="DotLine" value="3" />
<element name="CustomDashLine" value="6" />
</enumerator>
<enumerator name="CaseSensitivity" scope="Qt">
<element name="CaseSensitive" value="1" />
<element name="CaseInsensitive" value="0" />
</enumerator>
<enumerator name="WritingSystem" scope="QFontDatabase">
<element name="Thaana" value="8" />
<element name="Telugu" value="15" />
<element name="Cyrillic" value="3" />
<element name="Oriya" value="13" />
<element name="Gujarati" value="12" />
<element name="Other" value="30" />
<element name="Any" value="0" />
<element name="Korean" value="28" />
<element name="Khmer" value="24" />
<element name="Latin" value="1" />
<element name="Georgian" value="23" />
<element name="Vietnamese" value="29" />
<element name="TraditionalChinese" value="26" />
<element name="Armenian" value="4" />
<element name="Devanagari" value="9" />
<element name="Thai" value="19" />
<element name="Tibetan" value="21" />
<element name="Bengali" value="10" />
<element name="Symbol" value="30" />
<element name="WritingSystemsCount" value="33" />
<element name="Greek" value="2" />
<element name="Lao" value="20" />
<element name="Gurmukhi" value="11" />
<element name="Malayalam" value="17" />
<element name="Ogham" value="31" />
<element name="Myanmar" value="22" />
<element name="Tamil" value="14" />
<element name="Japanese" value="27" />
<element name="SimplifiedChinese" value="25" />
<element name="Kannada" value="16" />
<element name="Syriac" value="7" />
<element name="Runic" value="32" />
<element name="Hebrew" value="5" />
<element name="Arabic" value="6" />
<element name="Sinhala" value="18" />
</enumerator>
<enumerator name="ToolButtonStyle" scope="Qt">
<element name="ToolButtonIconOnly" value="0" />
<element name="ToolButtonTextBesideIcon" value="2" />
<element name="ToolButtonTextOnly" value="1" />
<element name="ToolButtonTextUnderIcon" value="3" />
</enumerator>
<enumerator name="ItemSelectionMode" scope="Qt">
<element name="ContainsItemBoundingRect" value="2" />
<element name="IntersectsItemBoundingRect" value="3" />
<element name="ContainsItemShape" value="0" />
<element name="IntersectsItemShape" value="1" />
</enumerator>
<enumerator name="TextElideMode" scope="Qt">
<element name="ElideMiddle" value="2" />
<element name="ElideRight" value="1" />
<element name="ElideNone" value="3" />
<element name="ElideLeft" value="0" />
</enumerator>
<enumerator name="TimeSpec" scope="Qt">
<element name="OffsetFromUTC" value="2" />
<element name="UTC" value="1" />
<element name="LocalTime" value="0" />
</enumerator>
<enumerator name="FocusPolicy" scope="Qt">
<element name="StrongFocus" value="11" />
<element name="WheelFocus" value="15" />
<element name="ClickFocus" value="2" />
<element name="TabFocus" value="1" />
<element name="NoFocus" value="0" />
</enumerator>
<enumerator name="ScrollBarPolicy" scope="Qt">
<element name="ScrollBarAsNeeded" value="0" />
<element name="ScrollBarAlwaysOff" value="1" />
<element name="ScrollBarAlwaysOn" value="2" />
</enumerator>
<enumerator name="TextFormat" scope="Qt">
<element name="PlainText" value="0" />
<element name="AutoText" value="2" />
<element name="LogText" value="3" />
<element name="RichText" value="1" />
</enumerator>
<enumerator name="DayOfWeek" scope="Qt">
<element name="Monday" value="1" />
<element name="Tuesday" value="2" />
<element name="Friday" value="5" />
<element name="Wednesday" value="3" />
<element name="Thursday" value="4" />
<element name="Sunday" value="7" />
<element name="Saturday" value="6" />
</enumerator>
<enumerator name="WindowModality" scope="Qt">
<element name="WindowModal" value="1" />
<element name="NonModal" value="0" />
<element name="ApplicationModal" value="2" />
</enumerator>
<enumerator name="Type" scope="QEasingCurve">
<element name="Linear" value="0" />
<element name="InQuad" value="1" />
<element name="OutQuad" value="2" />
<element name="InOutQuad" value="3" />
<element name="OutInQuad" value="4" />
<element name="InCubic" value="5" />
<element name="OutCubic" value="6" />
<element name="InOutCubic" value="7" />
<element name="OutInCubic" value="8" />
<element name="InQuart" value="9" />
<element name="OutQuart" value="10" />
<element name="InOutQuart" value="11" />
<element name="OutInQuart" value="12" />
<element name="InQuint" value="13" />
<element name="OutQuint" value="14" />
<element name="InOutQuint" value="15" />
<element name="OutInQuint" value="16" />
<element name="InSine" value="17" />
<element name="OutSine" value="18" />
<element name="InOutSine" value="19" />
<element name="OutInSine" value="20" />
<element name="InExpo" value="21" />
<element name="OutExpo" value="22" />
<element name="InOutExpo" value="23" />
<element name="OutInExpo" value="24" />
<element name="InCirc" value="25" />
<element name="OutCirc" value="26" />
<element name="InOutCirc" value="27" />
<element name="OutInCirc" value="28" />
<element name="InElastic" value="29" />
<element name="OutElastic" value="30" />
<element name="InOutElastic" value="31" />
<element name="OutInElastic" value="32" />
<element name="InBack" value="33" />
<element name="OutBack" value="34" />
<element name="InOutBack" value="35" />
<element name="OutInBack" value="36" />
<element name="InBounce" value="37" />
<element name="OutBounce" value="38" />
<element name="InOutBounce" value="39" />
<element name="OutInBounce" value="40" />
<element name="InCurve" value="41" />
<element name="OutCurve" value="42" />
<element name="SineCurve" value="43" />
<element name="CosineCurve" value="44" />
<element name="Custom" value="45" />
<element name="NCurveTypes" value="46" />
</enumerator>
<flag name="Alignment" scope="Qt">
<element name="AlignLeft" value="1" />
<element name="AlignTrailing" value="2" />
<element name="AlignAbsolute" value="16" />
<element name="AlignHCenter" value="4" />
<element name="AlignCenter" value="132" />
<element name="AlignJustify" value="8" />
<element name="AlignHorizontal_Mask" value="31" />
<element name="AlignTop" value="32" />
<element name="AlignRight" value="2" />
<element name="AlignLeading" value="1" />
<element name="AlignVCenter" value="128" />
<element name="AlignBottom" value="64" />
<element name="AlignVertical_Mask" value="224" />
</flag>
<flag name="DockWidgetAreas" scope="Qt">
<element name="AllDockWidgetAreas" value="15" />
<element name="LeftDockWidgetArea" value="1" />
<element name="DockWidgetArea_Mask" value="15" />
<element name="NoDockWidgetArea" value="0" />
<element name="TopDockWidgetArea" value="4" />
<element name="RightDockWidgetArea" value="2" />
<element name="BottomDockWidgetArea" value="8" />
</flag>
<flag name="ToolBarAreas" scope="Qt">
<element name="RightToolBarArea" value="2" />
<element name="TopToolBarArea" value="4" />
<element name="ToolBarArea_Mask" value="15" />
<element name="NoToolBarArea" value="0" />
<element name="LeftToolBarArea" value="1" />
<element name="AllToolBarAreas" value="15" />
<element name="BottomToolBarArea" value="8" />
</flag>
<flag name="RenderHints" scope="QPainter">
<element name="Antialiasing" value="1" />
<element name="TextAntialiasing" value="2" />
<element name="SmoothPixmapTransform" value="4" />
<element name="HighQualityAntialiasing" value="8" />
<element name="NonCosmeticDefaultPen" value="16" />
</flag>
<flag name="TextInteractionFlags" scope="Qt">
<element name="TextEditable" value="16" />
<element name="TextSelectableByKeyboard" value="2" />
<element name="NoTextInteraction" value="0" />
<element name="TextSelectableByMouse" value="1" />
<element name="TextBrowserInteraction" value="13" />
<element name="LinksAccessibleByKeyboard" value="8" />
<element name="LinksAccessibleByMouse" value="4" />
<element name="TextEditorInteraction" value="19" />
</flag>
</metainfo>
......@@ -117,8 +117,8 @@ void MetaInfoPrivate::initialize()
loadPlugins(&engine);
parseQmlTypes();
parseNonQmlTypes();
parseXmlFiles();
parseValueTypes();
parseXmlFiles();
m_isInitialized = true;
}
......@@ -135,8 +135,10 @@ void MetaInfoPrivate::loadPlugins(QDeclarativeEngine *engine)
// load maybe useful plugins
pluginList += "import Qt.labs.folderlistmodel 1.0";
pluginList += "import Qt.labs.gestures 1.0";
pluginList += "import Qt.multimedia 4.7";
pluginList += "import Qt.labs.particles 1.0";
pluginList += "import Qt.labs.components 1.0";
pluginList += "import com.meego.themebridge 1.0";
pluginList += "import com.meego 1.0";
QString componentString = QString("%1\n Item {}\n").arg(pluginList.join("\n"));
......@@ -384,6 +386,7 @@ void MetaInfoPrivate::parseQmlTypes()
m_QtTypesToQmlTypes.insert(qtTypeName, qmlTypeName);
}
foreach (QDeclarativeType *qmlType, qmlTypes()) {
qDebug() << __FUNCTION__ << qmlType->qmlTypeName() << qmlType->typeName();
const QMetaObject *qMetaObject = qmlType->metaObject();
// parseQmlTypes is called iteratively e.g. when plugins are loaded
......@@ -439,8 +442,6 @@ void MetaInfoPrivate::parseNonQmlTypes()
void MetaInfoPrivate::parseXmlFiles()
{
Internal::MetaInfoParser(*m_q).parseFile(":/metainfo/gui.metainfo");
Internal::WidgetPluginManager pluginManager;
foreach (const QString &pluginDir, m_q->s_pluginDirs)
pluginManager.addPath(pluginDir);
......@@ -654,6 +655,7 @@ void MetaInfo::removeNodeInfo(NodeMetaInfo &info)
EnumeratorMetaInfo MetaInfo::addEnumerator(const QString &enumeratorScope, const QString &enumeratorName)
{
qDebug() << __FUNCTION__ << enumeratorScope << enumeratorName;
Q_ASSERT(!enumeratorName.isEmpty());
EnumeratorMetaInfo enumeratorMetaInfo;
......
......@@ -90,70 +90,11 @@ void MetaInfoParser::metaInfoHandler(QXmlStreamReader &reader)
{
if (reader.isStartElement())
{
if (reader.name() == "enumerator")
handleEnumElement(reader);
if (reader.name() == "flag")
handleFlagElement(reader);
if (reader.name() == "node")
handleNodeElement(reader);
}
}
void MetaInfoParser::handleEnumElement(QXmlStreamReader &reader)
{
QString enumeratorName = reader.attributes().value("name").toString();
QString enumeratorScope = reader.attributes().value("scope").toString();
EnumeratorMetaInfo enumeratorMetaInfo;
if (m_metaInfo.hasEnumerator(enumeratorName)) {
enumeratorMetaInfo = m_metaInfo.enumerator(enumeratorName);
} else {
enumeratorMetaInfo = m_metaInfo.addEnumerator(enumeratorScope, enumeratorName);
}
while (!reader.atEnd() && !(reader.isEndElement() && reader.name() == "enumerator")) {
reader.readNext();
handleEnumElementElement(reader, enumeratorMetaInfo);
}
}
void MetaInfoParser::handleFlagElement(QXmlStreamReader &reader)
{
QString enumeratorName = reader.attributes().value("name").toString();
QString enumeratorScope = reader.attributes().value("scope").toString();
EnumeratorMetaInfo enumeratorMetaInfo = m_metaInfo.addFlag(enumeratorScope, enumeratorName);
while (!reader.atEnd() && !(reader.isEndElement() && reader.name() == "flag")) {
reader.readNext();
handleFlagElementElement(reader, enumeratorMetaInfo);
}
}
void MetaInfoParser::handleEnumElementElement(QXmlStreamReader &reader, EnumeratorMetaInfo &enumeratorMetaInfo)
{
if (reader.isStartElement() && reader.name() == "element")
{
bool isIntType;
enumeratorMetaInfo.addElement(reader.attributes().value("name").toString(),
reader.attributes().value("value").toString().toInt(&isIntType));
Q_ASSERT(isIntType);
}
}
void MetaInfoParser::handleFlagElementElement(QXmlStreamReader &reader, EnumeratorMetaInfo &enumeratorMetaInfo)
{
if (reader.isStartElement() && reader.name() == "element")
{
bool isIntType;
enumeratorMetaInfo.addElement(reader.attributes().value("name").toString(),
reader.attributes().value("value").toString().toInt(&isIntType));
Q_ASSERT(isIntType);
}
}
void MetaInfoParser::handleNodeElement(QXmlStreamReader &reader)
{
const QXmlStreamAttributes attributes = reader.attributes();
......@@ -164,46 +105,21 @@ void MetaInfoParser::handleNodeElement(QXmlStreamReader &reader)
return;
}
NodeMetaInfo nodeMetaInfo;
if (m_metaInfo.hasNodeMetaInfo(className)) {
nodeMetaInfo = m_metaInfo.nodeMetaInfo(className);
} else {
nodeMetaInfo = MetaInfo(m_metaInfo);
nodeMetaInfo.setType(className, 1, 0);
m_metaInfo.addNodeInfo(nodeMetaInfo);
qWarning() << "Metainfo: " << className << " does not exist";
/*while (!reader.atEnd() && !(reader.isEndElement() && reader.name() == "node"))
reader.readNext();*/
}
if (attributes.hasAttribute("isContainer")) {
const QString isContainer = attributes.value("isContainer").toString();
nodeMetaInfo.setIsContainer(stringToBool(isContainer));
}
if (attributes.hasAttribute("icon")) {
const QString iconPath = reader.attributes().value("icon").toString();
nodeMetaInfo.setIcon(QIcon(iconPath));
}
while (!reader.atEnd() && !(reader.isEndElement() && reader.name() == "node")) {
reader.readNext();
handleAbstractPropertyElement(reader, nodeMetaInfo);
handleAbstractPropertyDefaultValueElement(reader, nodeMetaInfo);
handleNodeItemLibraryEntryElement(reader, className);
}
}
void MetaInfoParser::handleNodeItemLibraryEntryElement(QXmlStreamReader &reader, const QString & className)
void MetaInfoParser::handleNodeItemLibraryEntryElement(QXmlStreamReader &reader, const QString &className)
{
if (reader.isStartElement() && reader.name() == "itemlibraryentry")
{
const QString name = reader.attributes().value("name").toString();
const NodeMetaInfo typeInfo = m_metaInfo.nodeMetaInfo(className);
ItemLibraryEntry entry;
entry.setType(typeInfo.typeName(), typeInfo.majorVersion(), typeInfo.minorVersion());
entry.setType(className, 4, 7);
entry.setName(name);
QString iconPath = reader.attributes().value("icon").toString();
......@@ -237,93 +153,6 @@ void MetaInfoParser::handleItemLibraryEntryPropertyElement(QXmlStreamReader &rea
}
}
void MetaInfoParser::handleAbstractPropertyDefaultValueElement(QXmlStreamReader &reader, NodeMetaInfo &nodeMetaInfoArg)
{
if (reader.isStartElement() && reader.name() == "propertyDefaultValue")
{
const QXmlStreamAttributes attributes(reader.attributes());
Q_ASSERT(attributes.hasAttribute("name"));
Q_ASSERT(attributes.hasAttribute("type"));
Q_ASSERT(attributes.hasAttribute("defaultValue"));
const QString propertyName = attributes.value("name").toString();
const QString propertyType = attributes.value("type").toString();
const QString defaultValueString = attributes.value("defaultValue").toString();
QVariant defaultValue = Internal::PropertyParser::read(propertyType,
defaultValueString,
m_metaInfo);
QList<NodeMetaInfo> nodeMetaInfoList(nodeMetaInfoArg.superClasses());
nodeMetaInfoList.prepend(nodeMetaInfoArg);
foreach(const NodeMetaInfo &nodeMetaInfo, nodeMetaInfoList) {
if (nodeMetaInfo.hasLocalProperty(propertyName)) {
nodeMetaInfo.property(propertyName).setDefaultValue(nodeMetaInfoArg, defaultValue);
break;
}
}
reader.readNext();
}
}
void MetaInfoParser::handleAbstractPropertyElement(QXmlStreamReader &reader, NodeMetaInfo &nodeMetaInfo)
{
if (reader.isStartElement() && reader.name() == "property")
{
const QXmlStreamAttributes attributes(reader.attributes());
const QString propertyName = attributes.value("name").toString();
if (propertyName.isEmpty()) {
reader.raiseError("Invalid element 'property' - attribute 'name' is missing or empty");
return;
}
PropertyMetaInfo propertyMetaInfo;
if (nodeMetaInfo.hasLocalProperty(propertyName)) {
propertyMetaInfo = nodeMetaInfo.property(propertyName);
} else {
propertyMetaInfo.setName(propertyName);
}
propertyMetaInfo.setValid(true);
//propertyMetaInfo.setReadable(stringToBool(attributes.value("isReadable").toString()));
//propertyMetaInfo.setWritable(stringToBool(attributes.value("isWritable").toString()));
//propertyMetaInfo.setResettable(stringToBool(attributes.value("isResetable").toString()));
if (attributes.hasAttribute("isEnumType"))
propertyMetaInfo.setEnumType(stringToBool(attributes.value("isEnumType").toString()));
if (attributes.hasAttribute("isFlagType"))
propertyMetaInfo.setFlagType(stringToBool(attributes.value("isFlagType").toString()));
if (attributes.hasAttribute("showInPropertyEditor"))
propertyMetaInfo.setIsVisibleToPropertyEditor(stringToBool(attributes.value("showInPropertyEditor").toString()));
if (propertyMetaInfo.isEnumType()) {
propertyMetaInfo.setType(QString("%1::%2").arg(attributes.value("enumeratorScope").toString(),
attributes.value("enumeratorName").toString()));
propertyMetaInfo.setEnumerator(m_metaInfo.enumerator(propertyMetaInfo.type()));
} else {
const QString type = attributes.value("type").toString();
if (type.isEmpty()) {
reader.raiseError("Invalid element 'property' - attribute 'type' is missing or empty");
return;
}
propertyMetaInfo.setType(attributes.value("type").toString());
}
if (attributes.hasAttribute("defaultValue")) {
QVariant defaultValue = Internal::PropertyParser::read(propertyMetaInfo.type(),
attributes.value("defaultValue").toString(),
m_metaInfo);
propertyMetaInfo.setDefaultValue(nodeMetaInfo, defaultValue);
}
nodeMetaInfo.addProperty(propertyMetaInfo);
reader.readNext();
}
}
void MetaInfoParser::errorHandling(QXmlStreamReader &reader, QFile &file)
{
if (!reader.hasError())
......
......@@ -38,8 +38,8 @@ namespace QmlDesigner {
QtQuickPlugin::QtQuickPlugin()
{
qmlRegisterType<QDeclarativePen>("Qt", 4, 7, "Pen");
qmlRegisterType<QDeclarativeScaleGrid>("Qt", 4, 7, "ScaleGrid");
qmlRegisterType<QDeclarativePen>("QtQuick", 1, 0, "Pen");
qmlRegisterType<QDeclarativeScaleGrid>("QtQuick", 1, 0, "ScaleGrid");
}
QString QtQuickPlugin::pluginName()
......
<metainfo>
<node name="Qt/Item" isContainer="true" icon=":/qtquickplugin/images/item-icon16.png">
<propertyDefaultValue name="width" type="int" defaultValue="600"/>
<propertyDefaultValue name="height" type="int" defaultValue="400"/>
<node name="Qt/Item" icon=":/qtquickplugin/images/item-icon16.png">
<itemlibraryentry name="Item" category="Qt - Basic" icon=":/qtquickplugin/images/item-icon.png">
<property name="width" type="int" value="200"/>
<property name="height" type="int" value="200"/>
......@@ -9,14 +7,10 @@
</node>
<node name="Qt/Rectangle" category="Qt - Basic" isContainer="true" icon=":/qtquickplugin/images/rect-icon16.png">
<itemlibraryentry name="Rectangle" category="Qt - Basic" icon=":/qtquickplugin/images/rect-icon.png">
<property name="width" type="int" value="100"/>
<property name="height" type="int" value="100"/>
<property name="color" type="QColor" value="#ffffff"/>
</itemlibraryentry>
</node>
<node name="Qt/Text" icon=":/qtquickplugin/images/text-icon16.png">
<propertyDefaultValue name="width" type="int" defaultValue="80"/>
<propertyDefaultValue name="height" type="int" defaultValue="20"/>
<itemlibraryentry name="Text" category="Qt - Basic" icon=":/qtquickplugin/images/text-icon.png">
<property name="width" type="int" value="80"/>
<property name="height" type="int" value="20"/>
......@@ -24,9 +18,7 @@
<property name="font.pixelSize" type="int" value="12"/>
</itemlibraryentry>
</node>
<node name="Qt/TextEdit" isContainer="false" icon=":/qtquickplugin/images/text-edit-icon16.png">
<propertyDefaultValue name="width" type="int" defaultValue="80"/>
<propertyDefaultValue name="height" type="int" defaultValue="20"/>
<node name="Qt/TextEdit" icon=":/qtquickplugin/images/text-edit-icon16.png">
<itemlibraryentry name="Text Edit" category="Qt - Basic" icon=":/qtquickplugin/images/text-edit-icon.png">
<property name="width" type="int" value="80"/>
<property name="height" type="int" value="20"/>
......@@ -34,9 +26,7 @@
<property name="font.pixelSize" type="int" value="12"/>
</itemlibraryentry>
</node>