From 7e03b29bc7d6f3eba4988e7e2caf9af62f68321b Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 30 Nov 2022 15:43:04 +0100 Subject: QmlDesigner: Add new menu for export actions Task-number: QDS-8092 Change-Id: If83ea84fded27485c50865e49d8d184fecc6d454 Reviewed-by: Tim Jenssen --- src/plugins/qmldesigner/generateresource.cpp | 15 ++++++++---- src/plugins/qmldesigner/shortcutmanager.cpp | 28 +++++++++++++--------- .../cmakegen/cmakeprojectconverter.cpp | 10 ++++---- .../cmakegen/generatecmakelists.cpp | 24 ++++++++++++++----- .../qmlprojectmanager/qmlprojectmanagerconstants.h | 4 ++++ 5 files changed, 55 insertions(+), 26 deletions(-) diff --git a/src/plugins/qmldesigner/generateresource.cpp b/src/plugins/qmldesigner/generateresource.cpp index 4e319f2c1c..5dfd49bd49 100644 --- a/src/plugins/qmldesigner/generateresource.cpp +++ b/src/plugins/qmldesigner/generateresource.cpp @@ -182,7 +182,8 @@ void GenerateResource::generateMenuEntry(QObject *parent) const Core::Context projectContext(QmlProjectManager::Constants::QML_PROJECT_ID); // ToDo: move this to QtCreator and add tr to the string then auto action = new QAction(QCoreApplication::translate("QmlDesigner::GenerateResource", - "Generate QRC Resource File"), parent); + "Generate QRC Resource File..."), + parent); action->setEnabled(ProjectExplorer::SessionManager::startupProject() != nullptr); // todo make it more intelligent when it gets enabled QObject::connect(ProjectExplorer::SessionManager::instance(), @@ -331,7 +332,8 @@ void GenerateResource::generateMenuEntry(QObject *parent) // ToDo: move this to QtCreator and add tr to the string then auto rccAction = new QAction(QCoreApplication::translate("QmlDesigner::GenerateResource", - "Generate Deployable Package"), parent); + "Generate Deployable Package..."), + parent); rccAction->setEnabled(ProjectExplorer::SessionManager::startupProject() != nullptr); QObject::connect(ProjectExplorer::SessionManager::instance(), &ProjectExplorer::SessionManager::startupProjectChanged, [rccAction]() { @@ -340,7 +342,7 @@ void GenerateResource::generateMenuEntry(QObject *parent) Core::Command *cmd2 = Core::ActionManager::registerAction(rccAction, "QmlProject.CreateRCCResource"); - QObject::connect(rccAction, &QAction::triggered, [] () { + QObject::connect(rccAction, &QAction::triggered, []() { auto currentProject = ProjectExplorer::SessionManager::startupProject(); QTC_ASSERT(currentProject, return); const FilePath projectPath = currentProject->projectFilePath().parentDir(); @@ -558,8 +560,11 @@ void GenerateResource::generateMenuEntry(QObject *parent) "Successfully generated deployable package\n %1") .arg(resourceFileName.toString())); }); - menu->addAction(cmd, Core::Constants::G_FILE_EXPORT); - menu->addAction(cmd2, Core::Constants::G_FILE_EXPORT); + + Core::ActionContainer *exportMenu = Core::ActionManager::actionContainer( + QmlProjectManager::Constants::EXPORT_MENU); + exportMenu->addAction(cmd, QmlProjectManager::Constants::G_EXPORT_GENERATE); + exportMenu->addAction(cmd2, QmlProjectManager::Constants::G_EXPORT_GENERATE); } } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/shortcutmanager.cpp b/src/plugins/qmldesigner/shortcutmanager.cpp index 22f91f9543..6b3e6fa9f3 100644 --- a/src/plugins/qmldesigner/shortcutmanager.cpp +++ b/src/plugins/qmldesigner/shortcutmanager.cpp @@ -19,6 +19,8 @@ #include #include +#include + #include #include @@ -38,16 +40,16 @@ namespace QmlDesigner { ShortCutManager::ShortCutManager() - : QObject(), - m_exportAsImageAction(tr("Export as &Image...")), - m_undoAction(tr("&Undo")), - m_redoAction(tr("&Redo")), - m_deleteAction(tr("Delete")), - m_cutAction(tr("Cu&t")), - m_copyAction(tr("&Copy")), - m_pasteAction(tr("&Paste")), - m_selectAllAction(tr("Select &All")), - m_escapeAction(this) + : QObject() + , m_exportAsImageAction(tr("Export as Image...")) + , m_undoAction(tr("&Undo")) + , m_redoAction(tr("&Redo")) + , m_deleteAction(tr("Delete")) + , m_cutAction(tr("Cu&t")) + , m_copyAction(tr("&Copy")) + , m_pasteAction(tr("&Paste")) + , m_selectAllAction(tr("Select &All")) + , m_escapeAction(this) { } @@ -101,7 +103,11 @@ void ShortCutManager::registerActions(const Core::Context &qmlDesignerMainContex connect(&m_exportAsImageAction, &QAction::triggered, [] { QmlDesignerPlugin::instance()->viewManager().exportAsImage(); }); - fileMenu->addAction(command, Core::Constants::G_FILE_SAVE); + + Core::ActionContainer *exportMenu = Core::ActionManager::actionContainer( + QmlProjectManager::Constants::EXPORT_MENU); + + exportMenu->addAction(command, QmlProjectManager::Constants::G_EXPORT_CONVERT); //Close Editor Core::ActionManager::registerAction(&m_closeCurrentEditorAction, Core::Constants::CLOSE, qmlDesignerMainContext); diff --git a/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.cpp b/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.cpp index 159e7f5fad..4cd3a586de 100644 --- a/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.cpp +++ b/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.cpp @@ -13,6 +13,8 @@ #include #include +#include + #include #include #include @@ -24,7 +26,7 @@ namespace QmlProjectManager { namespace GenerateCmake { const QString MENU_ITEM_CONVERT = QCoreApplication::translate("QmlDesigner::CmakeProjectConverter", - "Export as Latest Project Format"); + "Export as Latest Project Format..."); const QString ERROR_TITLE = QCoreApplication::translate("QmlDesigner::CmakeProjectConverter", "Creating Project"); const QString SUCCESS_TITLE = QCoreApplication::translate("QmlDesigner::CmakeProjectConverter", @@ -36,12 +38,12 @@ const QString SUCCESS_TEXT = QCoreApplication::translate("QmlDesigner::CmakeProj void CmakeProjectConverter::generateMenuEntry(QObject *parent) { - Core::ActionContainer *menu = - Core::ActionManager::actionContainer(Core::Constants::M_FILE); + Core::ActionContainer *exportMenu = Core::ActionManager::actionContainer( + QmlProjectManager::Constants::EXPORT_MENU); auto action = new QAction(MENU_ITEM_CONVERT, parent); QObject::connect(action, &QAction::triggered, CmakeProjectConverter::onConvertProject); Core::Command *cmd = Core::ActionManager::registerAction(action, "QmlProject.ConvertToCmakeProject"); - menu->addAction(cmd, Core::Constants::G_FILE_EXPORT); + exportMenu->addAction(cmd, QmlProjectManager::Constants::G_EXPORT_CONVERT); action->setEnabled(isProjectConvertable(ProjectExplorer::SessionManager::startupProject())); QObject::connect(ProjectExplorer::SessionManager::instance(), diff --git a/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp b/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp index 74b37db8c9..b239ca75cc 100644 --- a/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp +++ b/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp @@ -14,18 +14,19 @@ #include #include +#include #include #include -#include #include #include +#include #include -#include #include #include #include +#include using namespace Utils; using namespace QmlProjectManager::GenerateCmake::Constants; @@ -56,16 +57,27 @@ enum ProjectDirectoryError { }; const QString MENU_ITEM_GENERATE = QCoreApplication::translate("QmlDesigner::GenerateCmake", - "Generate CMake Build Files"); + "Generate CMake Build Files..."); void generateMenuEntry(QObject *parent) { - Core::ActionContainer *menu = - Core::ActionManager::actionContainer(Core::Constants::M_FILE); + Core::ActionContainer *menu = Core::ActionManager::actionContainer(Core::Constants::M_FILE); + + Core::ActionContainer *exportMenu = Core::ActionManager::createMenu( + QmlProjectManager::Constants::EXPORT_MENU); + + exportMenu->menu()->setTitle( + QCoreApplication::translate("QmlDesigner::GenerateCmake", "Export Project")); + menu->addMenu(exportMenu, Core::Constants::G_FILE_EXPORT); + + exportMenu->appendGroup(QmlProjectManager::Constants::G_EXPORT_GENERATE); + exportMenu->appendGroup(QmlProjectManager::Constants::G_EXPORT_CONVERT); + exportMenu->addSeparator(QmlProjectManager::Constants::G_EXPORT_CONVERT); + auto action = new QAction(MENU_ITEM_GENERATE, parent); QObject::connect(action, &QAction::triggered, GenerateCmake::onGenerateCmakeLists); Core::Command *cmd = Core::ActionManager::registerAction(action, "QmlProject.CreateCMakeLists"); - menu->addAction(cmd, Core::Constants::G_FILE_EXPORT); + exportMenu->addAction(cmd, QmlProjectManager::Constants::G_EXPORT_GENERATE); action->setEnabled(false); QObject::connect(ProjectExplorer::SessionManager::instance(), diff --git a/src/plugins/qmlprojectmanager/qmlprojectmanagerconstants.h b/src/plugins/qmlprojectmanager/qmlprojectmanagerconstants.h index 43b266d999..dd4d7a9789 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectmanagerconstants.h +++ b/src/plugins/qmlprojectmanager/qmlprojectmanagerconstants.h @@ -16,5 +16,9 @@ const char USE_MULTILANGUAGE_KEY[] = "QmlProjectManager.QmlRunConfiguration.UseM const char LAST_USED_LANGUAGE[] = "QmlProjectManager.QmlRunConfiguration.LastUsedLanguage"; const char USER_ENVIRONMENT_CHANGES_KEY[] = "QmlProjectManager.QmlRunConfiguration.UserEnvironmentChanges"; +const char EXPORT_MENU[] = "QmlDesigner.ExportMenu"; +const char G_EXPORT_GENERATE[] = "QmlDesigner.Group.GenerateProject"; +const char G_EXPORT_CONVERT[] = "QmlDesigner.Group.ConvertProject"; + } // namespace Constants } // namespace QmlProjectManager -- cgit v1.2.3