aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2024-02-01 15:52:48 +0100
committerThomas Hartmann <thomas.hartmann@qt.io>2024-02-01 15:13:07 +0000
commitb894ae3d16dee1cb2d53d26c8e60cb3f6cc5b283 (patch)
tree650fa204b8715ffe00cb1c2ed408e488b26e0e16
parentdf0125547db2b8aaa8b839fa7b47b2c21a1a7280 (diff)
QmlDesigner: Disable exports not supported for MCU
Add helper function getStartupBuildSystem() to avoid code duplication. Task-number: QDS-11544 Change-Id: Id8d752d63171838ac9ea6402ff9f2b179d0d8f53 Reviewed-by: Aleksei German <aleksei.german@qt.io>
-rw-r--r--src/plugins/qmldesigner/generateresource.cpp10
-rw-r--r--src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp11
-rw-r--r--src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h2
-rw-r--r--src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.cpp13
-rw-r--r--src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp17
5 files changed, 34 insertions, 19 deletions
diff --git a/src/plugins/qmldesigner/generateresource.cpp b/src/plugins/qmldesigner/generateresource.cpp
index de8cd5a80b..63370a82f1 100644
--- a/src/plugins/qmldesigner/generateresource.cpp
+++ b/src/plugins/qmldesigner/generateresource.cpp
@@ -16,6 +16,7 @@
#include <projectexplorer/projectmanager.h>
#include <projectexplorer/target.h>
+#include <qmlprojectmanager/buildsystem/qmlbuildsystem.h>
#include <qmlprojectmanager/qmlprojectmanagerconstants.h>
#include <qtsupport/baseqtversion.h>
@@ -227,9 +228,12 @@ void GenerateResource::generateMenuEntry(QObject *parent)
action->setEnabled(ProjectExplorer::ProjectManager::startupProject() != nullptr);
// todo make it more intelligent when it gets enabled
QObject::connect(ProjectExplorer::ProjectManager::instance(),
- &ProjectExplorer::ProjectManager::startupProjectChanged, [action]() {
- action->setEnabled(ProjectExplorer::ProjectManager::startupProject());
- });
+ &ProjectExplorer::ProjectManager::startupProjectChanged,
+ [action]() {
+ if (auto buildSystem
+ = QmlProjectManager::QmlBuildSystem::getStartupBuildSystem())
+ action->setEnabled(!buildSystem->qtForMCUs());
+ });
Core::Command *cmd = Core::ActionManager::registerAction(action, "QmlProject.CreateResource");
QObject::connect(action, &QAction::triggered, [] () {
diff --git a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp
index 4016cc6ac6..5131d9c57c 100644
--- a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp
+++ b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp
@@ -32,6 +32,7 @@
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h>
+#include "projectexplorer/projectmanager.h"
#include "projectitem/qmlprojectitem.h"
#include "projectnode/qmlprojectnodes.h"
@@ -389,6 +390,16 @@ Utils::FilePath QmlBuildSystem::getStartupQmlFileWithFallback() const
return {};
}
+QmlBuildSystem *QmlBuildSystem::getStartupBuildSystem()
+{
+ auto project = ProjectExplorer::ProjectManager::startupProject();
+ if (project && project->activeTarget() && project->activeTarget()->buildSystem()) {
+ return qobject_cast<QmlProjectManager::QmlBuildSystem *>(
+ project->activeTarget()->buildSystem());
+ }
+ return nullptr;
+}
+
Utils::FilePath QmlBuildSystem::mainFilePath() const
{
const QString fileName = mainFile();
diff --git a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h
index 95b66871eb..3615979e2d 100644
--- a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h
+++ b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h
@@ -102,6 +102,8 @@ public:
Utils::FilePath getStartupQmlFileWithFallback() const;
+ static QmlBuildSystem *getStartupBuildSystem();
+
signals:
void projectChanged();
diff --git a/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.cpp b/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.cpp
index 21a538c7c5..232d822cd5 100644
--- a/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.cpp
+++ b/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.cpp
@@ -15,6 +15,7 @@
#include <projectexplorer/projectmanager.h>
#include <projectexplorer/target.h>
+#include <qmlprojectmanager/buildsystem/qmlbuildsystem.h>
#include <qmlprojectmanager/qmlprojectmanagerconstants.h>
#include <QAction>
@@ -44,9 +45,15 @@ void CmakeProjectConverter::generateMenuEntry(QObject *parent)
action->setEnabled(isProjectConvertable(ProjectExplorer::ProjectManager::startupProject()));
QObject::connect(ProjectExplorer::ProjectManager::instance(),
- &ProjectExplorer::ProjectManager::startupProjectChanged, [action]() {
- action->setEnabled(isProjectConvertable(ProjectExplorer::ProjectManager::startupProject()));
- });
+ &ProjectExplorer::ProjectManager::startupProjectChanged,
+ [action]() {
+ auto currentBuildSystem = QmlBuildSystem::getStartupBuildSystem();
+ bool isMCU = currentBuildSystem ? currentBuildSystem->qtForMCUs() : false;
+
+ action->setEnabled(isMCU
+ && isProjectConvertable(
+ ProjectExplorer::ProjectManager::startupProject()));
+ });
}
bool CmakeProjectConverter::isProjectConvertable(const ProjectExplorer::Project *project)
diff --git a/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp b/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp
index cee9eb247e..76452c3e78 100644
--- a/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp
+++ b/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp
@@ -16,6 +16,7 @@
#include <projectexplorer/projectmanager.h>
#include <projectexplorer/target.h>
+#include <qmlprojectmanager/buildsystem/qmlbuildsystem.h>
#include <qmlprojectmanager/qmlmainfileaspect.h>
#include <qmlprojectmanager/qmlproject.h>
#include <qmlprojectmanager/qmlprojectmanagerconstants.h>
@@ -85,16 +86,6 @@ enum ProjectDirectoryError {
const QString MENU_ITEM_GENERATE = Tr::tr("Generate CMake Build Files...");
-const QmlBuildSystem *getBuildSystem()
-{
- auto project = ProjectExplorer::ProjectManager::startupProject();
- if (project && project->activeTarget() && project->activeTarget()->buildSystem()) {
- return qobject_cast<QmlProjectManager::QmlBuildSystem *>(
- project->activeTarget()->buildSystem());
- }
- return nullptr;
-}
-
void generateMenuEntry(QObject *parent)
{
Core::ActionContainer *menu = Core::ActionManager::actionContainer(Core::Constants::M_FILE);
@@ -118,7 +109,7 @@ void generateMenuEntry(QObject *parent)
QObject::connect(ProjectExplorer::ProjectManager::instance(),
&ProjectExplorer::ProjectManager::startupProjectChanged,
[action]() {
- if (auto buildSystem = getBuildSystem())
+ if (auto buildSystem = QmlBuildSystem::getStartupBuildSystem())
action->setEnabled(!buildSystem->qtForMCUs());
});
}
@@ -284,7 +275,7 @@ const QString projectEnvironmentVariable(const QString &key)
{
QString value = {};
- if (auto buildSystem = getBuildSystem()) {
+ if (auto buildSystem = QmlBuildSystem::getStartupBuildSystem()) {
auto envItems = buildSystem->environment();
auto confEnv = std::find_if(envItems.begin(), envItems.end(), [key](NameValueItem &item) {
return item.name == key;
@@ -636,7 +627,7 @@ bool CmakeFileGenerator::generateMainCpp(const FilePath &dir)
bool envHeaderOk = true;
QString environment;
- if (auto buildSystem = getBuildSystem()) {
+ if (auto buildSystem = QmlBuildSystem::getStartupBuildSystem()) {
for (EnvironmentItem &envItem : buildSystem->environment()) {
QString key = envItem.name;
QString value = envItem.value;