Add an option to style merge from string data

Task-number: QDS-8601
Change-Id: Icb56e5bc26c6cc3711c304641cce3cbbd6d7c8b2
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Vikas Pachdha
2022-12-14 14:09:15 +01:00
parent 973f74b8a0
commit 6ae064619f
3 changed files with 34 additions and 13 deletions

View File

@@ -1525,8 +1525,11 @@ void mergeWithTemplate(const SelectionContext &selectionContext, ExternalDepende
const QString templateFile = getTemplateDialog(projectPath);
if (QFileInfo::exists(templateFile))
StylesheetMerger::styleMerge(selectionContext.view()->model(), templateFile, externalDependencies);
if (QFileInfo::exists(templateFile)) {
StylesheetMerger::styleMerge(Utils::FilePath::fromString(templateFile),
selectionContext.view()->model(),
externalDependencies);
}
}
void removeGroup(const SelectionContext &selectionContext)

View File

@@ -5,6 +5,8 @@
#include "qmldesignercorelib_global.h"
#include "utils/filepath.h"
#include <QString>
#include <QHash>
#include <modelnode.h>
@@ -26,7 +28,12 @@ class QMLDESIGNERCORE_EXPORT StylesheetMerger
public:
StylesheetMerger(AbstractView*, AbstractView*);
void merge();
static void styleMerge(Model *model, const QString &templateFile, class ExternalDependenciesInterface &externalDependencies);
static void styleMerge(const Utils::FilePath &templateFile,
Model *model,
class ExternalDependenciesInterface &ed);
static void styleMerge(const QString &qmlTemplateString,
Model *model,
class ExternalDependenciesInterface &externalDependencies);
private:
void preprocessStyleSheet();

View File

@@ -515,7 +515,20 @@ void StylesheetMerger::merge()
}
}
void StylesheetMerger::styleMerge(Model *model, const QString &templateFile, ExternalDependenciesInterface &externalDependencies)
void StylesheetMerger::styleMerge(const Utils::FilePath &templateFile,
Model *model,
ExternalDependenciesInterface &externalDependencies)
{
Utils::FileReader reader;
QTC_ASSERT(reader.fetch(templateFile), return );
const QString qmlTemplateString = QString::fromUtf8(reader.data());
StylesheetMerger::styleMerge(qmlTemplateString, model, externalDependencies);
}
void StylesheetMerger::styleMerge(const QString &qmlTemplateString,
Model *model,
ExternalDependenciesInterface &externalDependencies)
{
Model *parentModel = model;
@@ -527,10 +540,6 @@ void StylesheetMerger::styleMerge(Model *model, const QString &templateFile, Ext
templateModel->setFileUrl(parentModel->fileUrl());
QPlainTextEdit textEditTemplate;
Utils::FileReader reader;
QTC_ASSERT(reader.fetch(Utils::FilePath::fromString(templateFile)), return);
QString qmlTemplateString = QString::fromUtf8(reader.data());
QString imports;
for (const Import &import : parentModel->imports()) {
@@ -541,7 +550,8 @@ void StylesheetMerger::styleMerge(Model *model, const QString &templateFile, Ext
textEditTemplate.setPlainText(imports + qmlTemplateString);
NotIndentingTextEditModifier textModifierTemplate(&textEditTemplate);
QScopedPointer<RewriterView> templateRewriterView(new RewriterView(externalDependencies, RewriterView::Amend));
QScopedPointer<RewriterView> templateRewriterView(
new RewriterView(externalDependencies, RewriterView::Amend));
templateRewriterView->setTextModifier(&textModifierTemplate);
templateModel->attachView(templateRewriterView.data());
templateRewriterView->setCheckSemanticErrors(false);
@@ -560,7 +570,8 @@ void StylesheetMerger::styleMerge(Model *model, const QString &templateFile, Ext
textEditStyle.setPlainText(parentRewriterView->textModifierContent());
NotIndentingTextEditModifier textModifierStyle(&textEditStyle);
QScopedPointer<RewriterView> styleRewriterView(new RewriterView(externalDependencies, RewriterView::Amend));
QScopedPointer<RewriterView> styleRewriterView(
new RewriterView(externalDependencies, RewriterView::Amend));
styleRewriterView->setTextModifier(&textModifierStyle);
styleModel->attachView(styleRewriterView.data());