QmlDesigner: Add support for tooltip in item library

This allows to define tool tips in the .metainfo files.

Change-Id: I3236c6e9f374a052e99b18d8c3983bfd0f072162
Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
Thomas Hartmann
2022-11-25 16:55:26 +01:00
parent 5544cdc276
commit ee10ba1909
5 changed files with 24 additions and 1 deletions

View File

@@ -68,6 +68,8 @@ Item {
id: mouseRegion
anchors.fill: parent
tooltip: toolTip
onShowContextMenu: delegateRoot.showContextMenu()
onPressed: (mouse)=> {
allowTooltip = false

View File

@@ -5,7 +5,7 @@ import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
MouseArea {
ToolTipArea {
id: mouseArea
property bool allowTooltip: true

View File

@@ -47,6 +47,7 @@ public:
QString requiredImport() const;
QString customComponentSource() const;
QStringList extraFilePaths() const;
QString toolTip() const;
using Property = QmlDesigner::PropertyContainer;
@@ -62,6 +63,7 @@ public:
void setCategory(const QString &category);
void setQmlPath(const QString &qml);
void setRequiredImport(const QString &requiredImport);
void setToolTip(const QString &tooltip);
void addHints(const QHash<QString, QString> &hints);
void setCustomComponentSource(const QString &source);
void addExtraFilePath(const QString &extraFile);

View File

@@ -3,6 +3,7 @@
#include "itemlibraryinfo.h"
#include "nodemetainfo.h"
#include "qregularexpression.h"
#include <invalidmetainfoexception.h>
@@ -32,6 +33,7 @@ public:
QHash<QString, QString> hints;
QString customComponentSource;
QStringList extraFilePaths;
QString toolTip;
};
} // namespace Internal
@@ -96,6 +98,11 @@ QStringList ItemLibraryEntry::extraFilePaths() const
return m_data->extraFilePaths;
}
QString ItemLibraryEntry::toolTip() const
{
return m_data->toolTip;
}
int ItemLibraryEntry::majorVersion() const
{
return m_data->majorVersion;
@@ -165,6 +172,16 @@ void ItemLibraryEntry::setRequiredImport(const QString &requiredImport)
m_data->requiredImport = requiredImport;
}
void ItemLibraryEntry::setToolTip(const QString &tooltip)
{
static QRegularExpression regularExpressionPattern(QLatin1String("^qsTr\\(\"(.*)\"\\)$"));
const QRegularExpressionMatch match = regularExpressionPattern.match(tooltip);
if (match.hasMatch())
m_data->toolTip = match.captured(1);
else
m_data->toolTip = tooltip;
}
void ItemLibraryEntry::addHints(const QHash<QString, QString> &hints)
{
Utils::addToHash(&m_data->hints, hints);

View File

@@ -266,6 +266,8 @@ void MetaInfoReader::readItemLibraryEntryProperty(const QString &name, const QVa
setVersion(value.toString());
} else if (name == QStringLiteral("requiredImport")) {
m_currentEntry.setRequiredImport(value.toString());
} else if (name == QStringLiteral("toolTip")) {
m_currentEntry.setToolTip(value.toString());
} else {
addError(::QmlDesigner::Internal::MetaInfoReader::tr(
"Unknown property for ItemLibraryEntry %1")