forked from qt-creator/qt-creator
QmlProjectManager: FilePathify further
Change-Id: I8d83cc93778f8786c30e0aaef459c51005139b19 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io> Reviewed-by: Artem Sokolovskii <artem.sokolovskii@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -173,18 +173,17 @@ public:
|
|||||||
runControl->target()->buildSystem());
|
runControl->target()->buildSystem());
|
||||||
QTC_ASSERT(qmlBuildSystem, return);
|
QTC_ASSERT(qmlBuildSystem, return);
|
||||||
|
|
||||||
const QString mainScript = aspect->mainScript;
|
const FilePath mainScript = aspect->mainScript;
|
||||||
const QString currentFile = aspect->currentFile;
|
const FilePath currentFile = aspect->currentFile;
|
||||||
|
|
||||||
const QString mainScriptFromProject = qmlBuildSystem->targetFile(
|
const QString mainScriptFromProject = qmlBuildSystem->targetFile(mainScript).path();
|
||||||
FilePath::fromString(mainScript)).path();
|
|
||||||
|
|
||||||
QStringList qmlProjectRunConfigurationArguments = cmd.splitArguments();
|
QStringList qmlProjectRunConfigurationArguments = cmd.splitArguments();
|
||||||
|
|
||||||
if (!currentFile.isEmpty() && qmlProjectRunConfigurationArguments.last().contains(mainScriptFromProject)) {
|
if (!currentFile.isEmpty() && qmlProjectRunConfigurationArguments.last().contains(mainScriptFromProject)) {
|
||||||
qmlProjectRunConfigurationArguments.removeLast();
|
qmlProjectRunConfigurationArguments.removeLast();
|
||||||
cmd = CommandLine(cmd.executable(), qmlProjectRunConfigurationArguments);
|
cmd = CommandLine(cmd.executable(), qmlProjectRunConfigurationArguments);
|
||||||
cmd.addArg(currentFile);
|
cmd.addArg(currentFile.path());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,9 +32,9 @@ namespace QmlProjectManager {
|
|||||||
const char M_CURRENT_FILE[] = "CurrentFile";
|
const char M_CURRENT_FILE[] = "CurrentFile";
|
||||||
const char CURRENT_FILE[] = QT_TRANSLATE_NOOP("::QmlProjectManager", "<Current File>");
|
const char CURRENT_FILE[] = QT_TRANSLATE_NOOP("::QmlProjectManager", "<Current File>");
|
||||||
|
|
||||||
static bool caseInsensitiveLessThan(const QString &s1, const QString &s2)
|
static bool caseInsensitiveLessThan(const FilePath &s1, const FilePath &s2)
|
||||||
{
|
{
|
||||||
return s1.toLower() < s2.toLower();
|
return s1.toString().toCaseFolded() < s2.toString().toCaseFolded();
|
||||||
}
|
}
|
||||||
|
|
||||||
QmlMainFileAspect::QmlMainFileAspect(Target *target)
|
QmlMainFileAspect::QmlMainFileAspect(Target *target)
|
||||||
@@ -89,12 +89,12 @@ void QmlMainFileAspect::fromMap(const QVariantMap &map)
|
|||||||
|
|
||||||
void QmlMainFileAspect::updateFileComboBox()
|
void QmlMainFileAspect::updateFileComboBox()
|
||||||
{
|
{
|
||||||
QDir projectDir(m_target->project()->projectDirectory().toString());
|
const FilePath projectDir = m_target->project()->projectDirectory();
|
||||||
|
|
||||||
if (mainScriptSource() == FileInProjectFile) {
|
if (mainScriptSource() == FileInProjectFile) {
|
||||||
const QString mainScriptInFilePath = projectDir.relativeFilePath(mainScript());
|
const FilePath mainScriptInFilePath = projectDir.relativeChildPath(mainScript());
|
||||||
m_fileListModel.clear();
|
m_fileListModel.clear();
|
||||||
m_fileListModel.appendRow(new QStandardItem(mainScriptInFilePath));
|
m_fileListModel.appendRow(new QStandardItem(mainScriptInFilePath.toString()));
|
||||||
if (m_fileListCombo)
|
if (m_fileListCombo)
|
||||||
m_fileListCombo->setEnabled(false);
|
m_fileListCombo->setEnabled(false);
|
||||||
return;
|
return;
|
||||||
@@ -106,27 +106,25 @@ void QmlMainFileAspect::updateFileComboBox()
|
|||||||
m_fileListModel.appendRow(new QStandardItem(CURRENT_FILE));
|
m_fileListModel.appendRow(new QStandardItem(CURRENT_FILE));
|
||||||
QModelIndex currentIndex;
|
QModelIndex currentIndex;
|
||||||
|
|
||||||
QStringList sortedFiles = Utils::transform(m_target->project()->files(Project::SourceFiles),
|
FilePaths sortedFiles = m_target->project()->files(Project::SourceFiles);
|
||||||
&Utils::FilePath::toString);
|
|
||||||
|
|
||||||
// make paths relative to project directory
|
// make paths relative to project directory
|
||||||
QStringList relativeFiles;
|
FilePaths relativeFiles;
|
||||||
for (const QString &fn : std::as_const(sortedFiles))
|
for (const FilePath &fn : std::as_const(sortedFiles))
|
||||||
relativeFiles += projectDir.relativeFilePath(fn);
|
relativeFiles += projectDir.relativeChildPath(fn);
|
||||||
sortedFiles = relativeFiles;
|
sortedFiles = relativeFiles;
|
||||||
|
|
||||||
std::stable_sort(sortedFiles.begin(), sortedFiles.end(), caseInsensitiveLessThan);
|
std::stable_sort(sortedFiles.begin(), sortedFiles.end(), caseInsensitiveLessThan);
|
||||||
|
|
||||||
QString mainScriptPath;
|
FilePath mainScriptPath;
|
||||||
if (mainScriptSource() != FileInEditor)
|
if (mainScriptSource() != FileInEditor)
|
||||||
mainScriptPath = projectDir.relativeFilePath(mainScript());
|
mainScriptPath = projectDir.relativeChildPath(mainScript());
|
||||||
|
|
||||||
for (const QString &fn : std::as_const(sortedFiles)) {
|
for (const FilePath &fn : std::as_const(sortedFiles)) {
|
||||||
QFileInfo fileInfo(fn);
|
if (fn.suffixView() != u"qml")
|
||||||
if (fileInfo.suffix() != "qml")
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
auto item = new QStandardItem(fn);
|
auto item = new QStandardItem(fn.toString());
|
||||||
m_fileListModel.appendRow(item);
|
m_fileListModel.appendRow(item);
|
||||||
|
|
||||||
if (mainScriptPath == fn)
|
if (mainScriptPath == fn)
|
||||||
@@ -170,7 +168,7 @@ void QmlMainFileAspect::setScriptSource(MainScriptSource source, const QString &
|
|||||||
m_mainScriptFilename.clear();
|
m_mainScriptFilename.clear();
|
||||||
} else { // FileInSettings
|
} else { // FileInSettings
|
||||||
m_scriptFile = settingsPath;
|
m_scriptFile = settingsPath;
|
||||||
m_mainScriptFilename = m_target->project()->projectDirectory().toString() + '/' + m_scriptFile;
|
m_mainScriptFilename = m_target->project()->projectDirectory() / m_scriptFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
emit changed();
|
emit changed();
|
||||||
@@ -180,14 +178,11 @@ void QmlMainFileAspect::setScriptSource(MainScriptSource source, const QString &
|
|||||||
/**
|
/**
|
||||||
Returns absolute path to main script file.
|
Returns absolute path to main script file.
|
||||||
*/
|
*/
|
||||||
QString QmlMainFileAspect::mainScript() const
|
FilePath QmlMainFileAspect::mainScript() const
|
||||||
{
|
{
|
||||||
if (!qmlBuildSystem()->mainFile().isEmpty()) {
|
if (!qmlBuildSystem()->mainFile().isEmpty()) {
|
||||||
const QString pathInProject = qmlBuildSystem()->mainFile();
|
const FilePath pathInProject = qmlBuildSystem()->mainFile();
|
||||||
if (QFileInfo(pathInProject).isAbsolute())
|
return qmlBuildSystem()->canonicalProjectDir().resolvePath(pathInProject);
|
||||||
return pathInProject;
|
|
||||||
else
|
|
||||||
return QDir(qmlBuildSystem()->canonicalProjectDir().toString()).absoluteFilePath(pathInProject);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_mainScriptFilename.isEmpty())
|
if (!m_mainScriptFilename.isEmpty())
|
||||||
@@ -196,7 +191,7 @@ QString QmlMainFileAspect::mainScript() const
|
|||||||
return m_currentFileFilename;
|
return m_currentFileFilename;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QmlMainFileAspect::currentFile() const
|
FilePath QmlMainFileAspect::currentFile() const
|
||||||
{
|
{
|
||||||
return m_currentFileFilename;
|
return m_currentFileFilename;
|
||||||
}
|
}
|
||||||
@@ -207,7 +202,7 @@ void QmlMainFileAspect::changeCurrentFile(Core::IEditor *editor)
|
|||||||
editor = EditorManager::currentEditor();
|
editor = EditorManager::currentEditor();
|
||||||
|
|
||||||
if (editor)
|
if (editor)
|
||||||
m_currentFileFilename = editor->document()->filePath().toString();
|
m_currentFileFilename = editor->document()->filePath();
|
||||||
|
|
||||||
emit changed();
|
emit changed();
|
||||||
}
|
}
|
||||||
@@ -219,7 +214,7 @@ bool QmlMainFileAspect::isQmlFilePresent()
|
|||||||
IDocument *document = EditorManager::currentDocument();
|
IDocument *document = EditorManager::currentDocument();
|
||||||
const MimeType mainScriptMimeType = mimeTypeForFile(mainScript());
|
const MimeType mainScriptMimeType = mimeTypeForFile(mainScript());
|
||||||
if (document) {
|
if (document) {
|
||||||
m_currentFileFilename = document->filePath().toString();
|
m_currentFileFilename = document->filePath();
|
||||||
if (mainScriptMimeType.matchesName(ProjectExplorer::Constants::QML_MIMETYPE)
|
if (mainScriptMimeType.matchesName(ProjectExplorer::Constants::QML_MIMETYPE)
|
||||||
|| mainScriptMimeType.matchesName(ProjectExplorer::Constants::QMLUI_MIMETYPE)) {
|
|| mainScriptMimeType.matchesName(ProjectExplorer::Constants::QMLUI_MIMETYPE)) {
|
||||||
qmlFileFound = true;
|
qmlFileFound = true;
|
||||||
@@ -229,13 +224,13 @@ bool QmlMainFileAspect::isQmlFilePresent()
|
|||||||
|| mainScriptMimeType.matchesName(QmlJSTools::Constants::QMLPROJECT_MIMETYPE)) {
|
|| mainScriptMimeType.matchesName(QmlJSTools::Constants::QMLPROJECT_MIMETYPE)) {
|
||||||
// find a qml file with lowercase filename. This is slow, but only done
|
// find a qml file with lowercase filename. This is slow, but only done
|
||||||
// in initialization/other border cases.
|
// in initialization/other border cases.
|
||||||
const auto files = m_target->project()->files(Project::SourceFiles);
|
const FilePaths files = m_target->project()->files(Project::SourceFiles);
|
||||||
for (const FilePath &filename : files) {
|
for (const FilePath &filename : files) {
|
||||||
if (!filename.isEmpty() && filename.baseName().at(0).isLower()) {
|
if (!filename.isEmpty() && filename.baseName().at(0).isLower()) {
|
||||||
const MimeType type = mimeTypeForFile(filename);
|
const MimeType type = mimeTypeForFile(filename);
|
||||||
if (type.matchesName(ProjectExplorer::Constants::QML_MIMETYPE)
|
if (type.matchesName(ProjectExplorer::Constants::QML_MIMETYPE)
|
||||||
|| type.matchesName(ProjectExplorer::Constants::QMLUI_MIMETYPE)) {
|
|| type.matchesName(ProjectExplorer::Constants::QMLUI_MIMETYPE)) {
|
||||||
m_currentFileFilename = filename.toString();
|
m_currentFileFilename = filename;
|
||||||
qmlFileFound = true;
|
qmlFileFound = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -252,4 +247,5 @@ QmlBuildSystem *QmlMainFileAspect::qmlBuildSystem() const
|
|||||||
{
|
{
|
||||||
return static_cast<QmlBuildSystem *>(m_target->buildSystem());
|
return static_cast<QmlBuildSystem *>(m_target->buildSystem());
|
||||||
}
|
}
|
||||||
} // namespace QmlProjectManager
|
|
||||||
|
} // QmlProjectManager
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ public:
|
|||||||
|
|
||||||
struct Data : BaseAspect::Data
|
struct Data : BaseAspect::Data
|
||||||
{
|
{
|
||||||
QString mainScript;
|
Utils::FilePath mainScript;
|
||||||
QString currentFile;
|
Utils::FilePath currentFile;
|
||||||
};
|
};
|
||||||
|
|
||||||
void addToLayout(Utils::Layouting::LayoutBuilder &builder) final;
|
void addToLayout(Utils::Layouting::LayoutBuilder &builder) final;
|
||||||
@@ -52,8 +52,8 @@ public:
|
|||||||
|
|
||||||
void setScriptSource(MainScriptSource source, const QString &settingsPath = QString());
|
void setScriptSource(MainScriptSource source, const QString &settingsPath = QString());
|
||||||
|
|
||||||
QString mainScript() const;
|
Utils::FilePath mainScript() const;
|
||||||
QString currentFile() const;
|
Utils::FilePath currentFile() const;
|
||||||
void changeCurrentFile(Core::IEditor *editor = nullptr);
|
void changeCurrentFile(Core::IEditor *editor = nullptr);
|
||||||
bool isQmlFilePresent();
|
bool isQmlFilePresent();
|
||||||
QmlBuildSystem *qmlBuildSystem() const;
|
QmlBuildSystem *qmlBuildSystem() const;
|
||||||
@@ -64,9 +64,9 @@ public:
|
|||||||
QStandardItemModel m_fileListModel;
|
QStandardItemModel m_fileListModel;
|
||||||
QString m_scriptFile;
|
QString m_scriptFile;
|
||||||
// absolute path to current file (if being used)
|
// absolute path to current file (if being used)
|
||||||
QString m_currentFileFilename;
|
Utils::FilePath m_currentFileFilename;
|
||||||
// absolute path to selected main script (if being used)
|
// absolute path to selected main script (if being used)
|
||||||
QString m_mainScriptFilename;
|
Utils::FilePath m_mainScriptFilename;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QmlProjectManager
|
} // QmlProjectManager
|
||||||
|
|||||||
@@ -250,7 +250,9 @@ void QmlBuildSystem::parseProject(RefreshOptions options)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QmlBuildSystem::setFileSettingInProjectFile(const QString &setting, const Utils::FilePath &mainFilePath, const QString &oldFile)
|
bool QmlBuildSystem::setFileSettingInProjectFile(const QString &setting,
|
||||||
|
const FilePath &mainFilePath,
|
||||||
|
const FilePath &oldFile)
|
||||||
{
|
{
|
||||||
// make sure to change it also in the qmlproject file
|
// make sure to change it also in the qmlproject file
|
||||||
const Utils::FilePath qmlProjectFilePath = project()->projectFilePath();
|
const Utils::FilePath qmlProjectFilePath = project()->projectFilePath();
|
||||||
@@ -283,7 +285,7 @@ bool QmlBuildSystem::setFileSettingInProjectFile(const QString &setting, const U
|
|||||||
auto index = fileContent.lastIndexOf("}");
|
auto index = fileContent.lastIndexOf("}");
|
||||||
fileContent.insert(index, addedText);
|
fileContent.insert(index, addedText);
|
||||||
} else {
|
} else {
|
||||||
QString originalFileName = oldFile;
|
QString originalFileName = oldFile.path();
|
||||||
originalFileName.replace(".", "\\.");
|
originalFileName.replace(".", "\\.");
|
||||||
const QRegularExpression expression(QString("%1\\s*\"(%2)\"").arg(settingQmlCode).arg(originalFileName));
|
const QRegularExpression expression(QString("%1\\s*\"(%2)\"").arg(settingQmlCode).arg(originalFileName));
|
||||||
|
|
||||||
@@ -328,43 +330,42 @@ void QmlBuildSystem::refresh(RefreshOptions options)
|
|||||||
emit projectChanged();
|
emit projectChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QmlBuildSystem::mainFile() const
|
FilePath QmlBuildSystem::mainFile() const
|
||||||
{
|
{
|
||||||
if (m_projectItem)
|
if (m_projectItem)
|
||||||
return m_projectItem->mainFile();
|
return FilePath::fromString(m_projectItem->mainFile());
|
||||||
return QString();
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QmlBuildSystem::mainUiFile() const
|
FilePath QmlBuildSystem::mainUiFile() const
|
||||||
{
|
{
|
||||||
if (m_projectItem)
|
if (m_projectItem)
|
||||||
return m_projectItem->mainUiFile();
|
return FilePath::fromString(m_projectItem->mainUiFile());
|
||||||
return QString();
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
Utils::FilePath QmlBuildSystem::mainFilePath() const
|
FilePath QmlBuildSystem::mainFilePath() const
|
||||||
{
|
{
|
||||||
return projectDirectory().pathAppended(mainFile());
|
return projectDirectory().resolvePath(mainFile());
|
||||||
}
|
}
|
||||||
|
|
||||||
Utils::FilePath QmlBuildSystem::mainUiFilePath() const
|
FilePath QmlBuildSystem::mainUiFilePath() const
|
||||||
{
|
{
|
||||||
return projectDirectory().pathAppended(mainUiFile());
|
return projectDirectory().resolvePath(mainUiFile());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QmlBuildSystem::setMainFileInProjectFile(const Utils::FilePath &newMainFilePath)
|
bool QmlBuildSystem::setMainFileInProjectFile(const FilePath &newMainFilePath)
|
||||||
{
|
{
|
||||||
|
|
||||||
return setFileSettingInProjectFile("mainFile", newMainFilePath, mainFile());
|
return setFileSettingInProjectFile("mainFile", newMainFilePath, mainFile());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QmlBuildSystem::setMainUiFileInProjectFile(const Utils::FilePath &newMainUiFilePath)
|
bool QmlBuildSystem::setMainUiFileInProjectFile(const FilePath &newMainUiFilePath)
|
||||||
{
|
{
|
||||||
return setMainUiFileInMainFile(newMainUiFilePath)
|
return setMainUiFileInMainFile(newMainUiFilePath)
|
||||||
&& setFileSettingInProjectFile("mainUiFile", newMainUiFilePath, mainUiFile());
|
&& setFileSettingInProjectFile("mainUiFile", newMainUiFilePath, mainUiFile());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QmlBuildSystem::setMainUiFileInMainFile(const Utils::FilePath &newMainUiFilePath)
|
bool QmlBuildSystem::setMainUiFileInMainFile(const FilePath &newMainUiFilePath)
|
||||||
{
|
{
|
||||||
Core::FileChangeBlocker fileChangeBlocker(mainFilePath());
|
Core::FileChangeBlocker fileChangeBlocker(mainFilePath());
|
||||||
const QList<Core::IEditor *> editors = Core::DocumentModel::editorsForFilePath(mainFilePath());
|
const QList<Core::IEditor *> editors = Core::DocumentModel::editorsForFilePath(mainFilePath());
|
||||||
@@ -793,9 +794,9 @@ bool QmlBuildSystem::deleteFiles(Node *context, const FilePaths &filePaths)
|
|||||||
bool QmlBuildSystem::renameFile(Node * context, const FilePath &oldFilePath, const FilePath &newFilePath)
|
bool QmlBuildSystem::renameFile(Node * context, const FilePath &oldFilePath, const FilePath &newFilePath)
|
||||||
{
|
{
|
||||||
if (dynamic_cast<QmlProjectNode *>(context)) {
|
if (dynamic_cast<QmlProjectNode *>(context)) {
|
||||||
if (oldFilePath.endsWith(mainFile()))
|
if (oldFilePath.endsWith(mainFile().path()))
|
||||||
return setMainFileInProjectFile(newFilePath);
|
return setMainFileInProjectFile(newFilePath);
|
||||||
if (oldFilePath.endsWith(mainUiFile()))
|
if (oldFilePath.endsWith(mainUiFile().path()))
|
||||||
return setMainUiFileInProjectFile(newFilePath);
|
return setMainUiFileInProjectFile(newFilePath);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -53,8 +53,8 @@ public:
|
|||||||
void refresh(RefreshOptions options);
|
void refresh(RefreshOptions options);
|
||||||
|
|
||||||
Utils::FilePath canonicalProjectDir() const;
|
Utils::FilePath canonicalProjectDir() const;
|
||||||
QString mainFile() const;
|
Utils::FilePath mainFile() const;
|
||||||
QString mainUiFile() const;
|
Utils::FilePath mainUiFile() const;
|
||||||
Utils::FilePath mainFilePath() const;
|
Utils::FilePath mainFilePath() const;
|
||||||
Utils::FilePath mainUiFilePath() const;
|
Utils::FilePath mainUiFilePath() const;
|
||||||
|
|
||||||
@@ -106,7 +106,7 @@ signals:
|
|||||||
private:
|
private:
|
||||||
bool setFileSettingInProjectFile(const QString &setting,
|
bool setFileSettingInProjectFile(const QString &setting,
|
||||||
const Utils::FilePath &mainFilePath,
|
const Utils::FilePath &mainFilePath,
|
||||||
const QString &oldFile);
|
const Utils::FilePath &oldFile);
|
||||||
|
|
||||||
std::unique_ptr<QmlProjectItem> m_projectItem;
|
std::unique_ptr<QmlProjectItem> m_projectItem;
|
||||||
Utils::FilePath m_canonicalProjectDir;
|
Utils::FilePath m_canonicalProjectDir;
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ private:
|
|||||||
QString disabledReason() const final;
|
QString disabledReason() const final;
|
||||||
bool isEnabled() const final;
|
bool isEnabled() const final;
|
||||||
|
|
||||||
QString mainScript() const;
|
FilePath mainScript() const;
|
||||||
FilePath qmlRuntimeFilePath() const;
|
FilePath qmlRuntimeFilePath() const;
|
||||||
void createQtVersionAspect();
|
void createQtVersionAspect();
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id)
|
|||||||
cmd.addArg("widget");
|
cmd.addArg("widget");
|
||||||
}
|
}
|
||||||
|
|
||||||
const FilePath main = bs->targetFile(FilePath::fromString(mainScript()));
|
const FilePath main = bs->targetFile(mainScript());
|
||||||
if (!main.isEmpty())
|
if (!main.isEmpty())
|
||||||
cmd.addArg(main.nativePath());
|
cmd.addArg(main.nativePath());
|
||||||
|
|
||||||
@@ -292,7 +292,7 @@ bool QmlProjectRunConfiguration::isEnabled() const
|
|||||||
&& activeBuildSystem()->hasParsingData();
|
&& activeBuildSystem()->hasParsingData();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QmlProjectRunConfiguration::mainScript() const
|
FilePath QmlProjectRunConfiguration::mainScript() const
|
||||||
{
|
{
|
||||||
return m_qmlMainFileAspect->mainScript();
|
return m_qmlMainFileAspect->mainScript();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user