diff options
author | Marco Bubke <marco.bubke@digia.com> | 2013-05-28 16:48:46 +0200 |
---|---|---|
committer | Thomas Hartmann <Thomas.Hartmann@digia.com> | 2013-05-29 12:50:59 +0200 |
commit | c7dd854842e57d10b4781e8d592278351a778d55 (patch) | |
tree | 5ee1ad2a6dedecb84c32f9f96377179484c50a05 | |
parent | 8934100a127631a9e66ad0fb3356ad815527f464 (diff) | |
download | qt-creator-c7dd854842e57d10b4781e8d592278351a778d55.tar.gz |
QmlDesigner: Add helper functions for translated text
Change-Id: Ib5b5037f492f7f7ee448aebd5215d28e0ccae7f0
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
-rw-r--r-- | src/plugins/qmldesigner/designercore/include/qmlobjectnode.h | 4 | ||||
-rw-r--r-- | src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp | 33 |
2 files changed, 37 insertions, 0 deletions
diff --git a/src/plugins/qmldesigner/designercore/include/qmlobjectnode.h b/src/plugins/qmldesigner/designercore/include/qmlobjectnode.h index 552b5b1fb2..bbbecdbe6f 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlobjectnode.h +++ b/src/plugins/qmldesigner/designercore/include/qmlobjectnode.h @@ -72,6 +72,8 @@ public: bool instanceHasBinding(const PropertyName &name) const; bool propertyAffectedByCurrentState(const PropertyName &name) const; QVariant modelValue(const PropertyName &name) const; + bool isTranslatableText(const PropertyName &name) const; + QString stripedTranslatableText(const PropertyName &name) const; QString expression(const PropertyName &name) const; bool isInBaseState() const; QmlPropertyChanges propertyChangeForCurrentState() const; @@ -98,6 +100,8 @@ public: static QVariant instanceValue(const ModelNode &modelNode, const PropertyName &name); + static QString generateTranslatableText(const QString& text); + protected: NodeInstance nodeInstance() const; QmlObjectNode nodeForInstance(const NodeInstance &instance) const; diff --git a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp index 0681f2f3f5..42643ed82f 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp @@ -175,6 +175,34 @@ QVariant QmlObjectNode::modelValue(const PropertyName &name) const return propertyChanges.modelNode().variantProperty(name).value(); } +bool QmlObjectNode::isTranslatableText(const PropertyName &name) const +{ + if (modelNode().metaInfo().isValid() && modelNode().metaInfo().hasProperty(name)) + if (modelNode().metaInfo().propertyTypeName(name) == "QString" || modelNode().metaInfo().propertyTypeName(name) == "string") { + if (modelNode().hasBindingProperty(name)) { + static QRegExp regularExpressionPatter("qsTr\\((\".*\")\\)"); + return regularExpressionPatter.exactMatch(modelNode().bindingProperty(name).expression()); + } + + return false; + } + + return false; +} + +QString QmlObjectNode::stripedTranslatableText(const PropertyName &name) const +{ + if (modelNode().hasBindingProperty(name)) { + static QRegExp regularExpressionPatter("qsTr\\(\"(.*)\"\\)"); + if (regularExpressionPatter.exactMatch(modelNode().bindingProperty(name).expression())) + return regularExpressionPatter.cap(1); + } else { + return modelNode().variantProperty(name).value().toString(); + } + + return QString(); +} + QString QmlObjectNode::expression(const PropertyName &name) const { if (!isValid()) @@ -387,6 +415,11 @@ QVariant QmlObjectNode::instanceValue(const ModelNode &modelNode, const Property return modelView->instanceForModelNode(modelNode).property(name); } +QString QmlObjectNode::generateTranslatableText(const QString &text) +{ + return QString("qsTr(\"%1\")").arg(text); +} + TypeName QmlObjectNode::instanceType(const PropertyName &name) const { return nodeInstance().instanceType(name); |