QmlDesigner: Add helper functions for translated text

Change-Id: Ib5b5037f492f7f7ee448aebd5215d28e0ccae7f0
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
This commit is contained in:
Marco Bubke
2013-05-28 16:48:46 +02:00
committed by Thomas Hartmann
parent 8934100a12
commit c7dd854842
2 changed files with 37 additions and 0 deletions

View File

@@ -72,6 +72,8 @@ public:
bool instanceHasBinding(const PropertyName &name) const; bool instanceHasBinding(const PropertyName &name) const;
bool propertyAffectedByCurrentState(const PropertyName &name) const; bool propertyAffectedByCurrentState(const PropertyName &name) const;
QVariant modelValue(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; QString expression(const PropertyName &name) const;
bool isInBaseState() const; bool isInBaseState() const;
QmlPropertyChanges propertyChangeForCurrentState() const; QmlPropertyChanges propertyChangeForCurrentState() const;
@@ -98,6 +100,8 @@ public:
static QVariant instanceValue(const ModelNode &modelNode, const PropertyName &name); static QVariant instanceValue(const ModelNode &modelNode, const PropertyName &name);
static QString generateTranslatableText(const QString& text);
protected: protected:
NodeInstance nodeInstance() const; NodeInstance nodeInstance() const;
QmlObjectNode nodeForInstance(const NodeInstance &instance) const; QmlObjectNode nodeForInstance(const NodeInstance &instance) const;

View File

@@ -175,6 +175,34 @@ QVariant QmlObjectNode::modelValue(const PropertyName &name) const
return propertyChanges.modelNode().variantProperty(name).value(); 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 QString QmlObjectNode::expression(const PropertyName &name) const
{ {
if (!isValid()) if (!isValid())
@@ -387,6 +415,11 @@ QVariant QmlObjectNode::instanceValue(const ModelNode &modelNode, const Property
return modelView->instanceForModelNode(modelNode).property(name); 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 TypeName QmlObjectNode::instanceType(const PropertyName &name) const
{ {
return nodeInstance().instanceType(name); return nodeInstance().instanceType(name);