diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.h b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.h index d6bafffc7a7..ff7389d088d 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.h +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.h @@ -49,6 +49,7 @@ class JsonWizardFactory; class JsonWizardPageFactory; class JsonWizardGeneratorFactory; class ProjectExplorerPlugin; +class ProjectExplorerPluginPrivate; // Documentation inside. class PROJECTEXPLORER_EXPORT JsonWizardFactory : public Core::IWizardFactory @@ -116,6 +117,7 @@ private: static int m_verbose; friend class ProjectExplorerPlugin; + friend class ProjectExplorerPluginPrivate; }; } //namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 6f71d0590e3..90f4464a806 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -193,6 +193,8 @@ static Kit *currentKit() class ProjectExplorerPluginPrivate : public QObject { + Q_DECLARE_TR_FUNCTIONS(ProjectExplorer::ProjectExplorerPlugin) + public: ProjectExplorerPluginPrivate(); @@ -211,6 +213,83 @@ public: void updateDeployActions(); void updateRunWithoutDeployMenu(); + void buildQueueFinished(bool success); + + void buildStateChanged(ProjectExplorer::Project * pro); + void buildProjectOnly(); + void handleBuildProject(); + void buildProjectContextMenu(); + void buildSession(); + void rebuildProjectOnly(); + void rebuildProject(); + void rebuildProjectContextMenu(); + void rebuildSession(); + void deployProjectOnly(); + void deployProject(); + void deployProjectContextMenu(); + void deploySession(); + void cleanProjectOnly(); + void cleanProject(); + void cleanProjectContextMenu(); + void cleanSession(); + void cancelBuild(); + void loadAction(); + void handleUnloadProject(); + void unloadProjectContextMenu(); + void closeAllProjects(); + void newProject(); + void showSessionManager(); + void updateSessionMenu(); + void setSession(QAction *action); + + void determineSessionToRestoreAtStartup(); + void restoreSession(); + void loadSession(const QString &session); + void handleRunProject(); + void runProjectContextMenu(); + void runProjectWithoutDeploy(); + void savePersistentSettings(); + + void addNewFile(); + void handleAddExistingFiles(); + void addExistingDirectory(); + void addNewSubproject(); + void removeProject(); + void openFile(); + void searchOnFileSystem(); + void showInGraphicalShell(); + void removeFile(); + void deleteFile(); + void handleRenameFile(); + void handleSetStartupProject(); + void setStartupProject(ProjectExplorer::Project *project); + + void updateRecentProjectMenu(); + void clearRecentProjects(); + void openRecentProject(); + void updateUnloadProjectMenu(); + void openTerminalHere(); + + void invalidateProject(ProjectExplorer::Project *project); + + void projectAdded(ProjectExplorer::Project *pro); + void projectRemoved(ProjectExplorer::Project *pro); + void projectDisplayNameChanged(ProjectExplorer::Project *pro); + void startupProjectChanged(); // Calls updateRunAction + void activeTargetChanged(); + void activeRunConfigurationChanged(); + + void slotUpdateRunActions(); + + void currentModeChanged(Core::IMode *mode, Core::IMode *oldMode); + void loadCustomWizards(); + + void updateWelcomePage(); + + void handleRunControlFinished(); + void runConfigurationConfigurationFinished(); + +public: QMenu *m_sessionMenu; QMenu *m_openWithMenu; @@ -352,6 +431,11 @@ ProjectExplorerPlugin *ProjectExplorerPlugin::instance() return m_instance; } +static void updateActions() +{ + dd->updateActions(); +} + bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *error) { Q_UNUSED(error); @@ -406,11 +490,11 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er addAutoReleasedObject(new TaskHub); connect(ICore::instance(), &ICore::newItemsDialogRequested, - this, &ProjectExplorerPlugin::loadCustomWizards); + dd, &ProjectExplorerPluginPrivate::loadCustomWizards); dd->m_welcomePage = new ProjectWelcomePage; connect(dd->m_welcomePage, &ProjectWelcomePage::manageSessions, - this, &ProjectExplorerPlugin::showSessionManager); + dd, &ProjectExplorerPluginPrivate::showSessionManager); addObject(dd->m_welcomePage); auto sessionManager = new SessionManager(this); @@ -418,31 +502,28 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er connect(sessionManager, &SessionManager::projectAdded, this, &ProjectExplorerPlugin::fileListChanged); connect(sessionManager, &SessionManager::aboutToRemoveProject, - this, &ProjectExplorerPlugin::invalidateProject); + dd, &ProjectExplorerPluginPrivate::invalidateProject); connect(sessionManager, &SessionManager::projectRemoved, this, &ProjectExplorerPlugin::fileListChanged); connect(sessionManager, &SessionManager::projectAdded, - this, &ProjectExplorerPlugin::projectAdded); + dd, &ProjectExplorerPluginPrivate::projectAdded); connect(sessionManager, &SessionManager::projectRemoved, - this, &ProjectExplorerPlugin::projectRemoved); + dd, &ProjectExplorerPluginPrivate::projectRemoved); connect(sessionManager, &SessionManager::startupProjectChanged, - this, &ProjectExplorerPlugin::startupProjectChanged); + dd, &ProjectExplorerPluginPrivate::startupProjectChanged); connect(sessionManager, &SessionManager::projectDisplayNameChanged, - this, &ProjectExplorerPlugin::projectDisplayNameChanged); - connect(sessionManager, &SessionManager::dependencyChanged, - this, &ProjectExplorerPlugin::updateActions); + dd, &ProjectExplorerPluginPrivate::projectDisplayNameChanged); + connect(sessionManager, &SessionManager::dependencyChanged, updateActions); + connect(sessionManager, &SessionManager::sessionLoaded, updateActions); connect(sessionManager, &SessionManager::sessionLoaded, - this, &ProjectExplorerPlugin::updateActions); - connect(sessionManager, &SessionManager::sessionLoaded, - this, &ProjectExplorerPlugin::updateWelcomePage); + dd, &ProjectExplorerPluginPrivate::updateWelcomePage); ProjectTree *tree = new ProjectTree(this); connect(tree, &ProjectTree::currentProjectChanged, dd, &ProjectExplorerPluginPrivate::updateContextMenuActions); connect(tree, &ProjectTree::currentNodeChanged, dd, &ProjectExplorerPluginPrivate::updateContextMenuActions); - connect(tree, &ProjectTree::currentProjectChanged, - dd, &ProjectExplorerPluginPrivate::updateActions); + connect(tree, &ProjectTree::currentProjectChanged, updateActions); addAutoReleasedObject(new CustomWizardMetaFactory(IWizardFactory::ProjectWizard)); addAutoReleasedObject(new CustomWizardMetaFactory(IWizardFactory::FileWizard)); @@ -484,7 +565,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er connect(dd->m_outputPane, &AppOutputPane::runControlStarted, this, &ProjectExplorerPlugin::runControlStarted); connect(dd->m_outputPane, &AppOutputPane::runControlFinished, - this, &ProjectExplorerPlugin::handleRunControlFinished); + dd, &ProjectExplorerPluginPrivate::handleRunControlFinished); addAutoReleasedObject(new AllProjectsFilter); addAutoReleasedObject(new CurrentProjectFilter); @@ -715,7 +796,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er mrecent->setOnAllDisabledBehavior(ActionContainer::Show); mfile->addMenu(mrecent, Core::Constants::G_FILE_OPEN); connect(mfile->menu(), &QMenu::aboutToShow, - this, &ProjectExplorerPlugin::updateRecentProjectMenu); + dd, &ProjectExplorerPluginPrivate::updateRecentProjectMenu); // session menu ActionContainer *msession = ActionManager::createMenu(Constants::M_SESSION); @@ -724,7 +805,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er mfile->addMenu(msession, Core::Constants::G_FILE_OPEN); dd->m_sessionMenu = msession->menu(); connect(mfile->menu(), &QMenu::aboutToShow, - this, &ProjectExplorerPlugin::updateSessionMenu); + dd, &ProjectExplorerPluginPrivate::updateSessionMenu); // session manager action dd->m_sessionManagerAction = new QAction(tr("Session Manager..."), this); @@ -747,7 +828,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er munload->setOnAllDisabledBehavior(ActionContainer::Show); mfile->addMenu(munload, Core::Constants::G_FILE_PROJECT); connect(mfile->menu(), &QMenu::aboutToShow, - this, &ProjectExplorerPlugin::updateUnloadProjectMenu); + dd, &ProjectExplorerPluginPrivate::updateUnloadProjectMenu); // unload session action dd->m_closeAllProjects = new QAction(tr("Close All Projects and Editors"), this); @@ -1012,7 +1093,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+T"))); connect(ICore::instance(), &ICore::saveSettingsRequested, - this, &ProjectExplorerPlugin::savePersistentSettings); + dd, &ProjectExplorerPluginPrivate::savePersistentSettings); addAutoReleasedObject(new ProjectTreeWidgetFactory); addAutoReleasedObject(new FolderNavigationWidgetFactory); @@ -1061,67 +1142,105 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er if (dd->m_projectExplorerSettings.environmentId.isNull()) dd->m_projectExplorerSettings.environmentId = QUuid::createUuid(); - connect(dd->m_sessionManagerAction, &QAction::triggered, this, &ProjectExplorerPlugin::showSessionManager); - connect(dd->m_newAction, &QAction::triggered, this, &ProjectExplorerPlugin::newProject); - connect(dd->m_loadAction, &QAction::triggered, this, &ProjectExplorerPlugin::loadAction); - connect(dd->m_buildProjectOnlyAction, &QAction::triggered, this, &ProjectExplorerPlugin::buildProjectOnly); - connect(dd->m_buildAction, &QAction::triggered, this, &ProjectExplorerPlugin::handleBuildProject); - connect(dd->m_buildActionContextMenu, &QAction::triggered, this, &ProjectExplorerPlugin::buildProjectContextMenu); - connect(dd->m_buildSessionAction, &QAction::triggered, this, &ProjectExplorerPlugin::buildSession); - connect(dd->m_rebuildProjectOnlyAction, &QAction::triggered, this, &ProjectExplorerPlugin::rebuildProjectOnly); - connect(dd->m_rebuildAction, &QAction::triggered, this, &ProjectExplorerPlugin::rebuildProject); - connect(dd->m_rebuildActionContextMenu, &QAction::triggered, this, &ProjectExplorerPlugin::rebuildProjectContextMenu); - connect(dd->m_rebuildSessionAction, &QAction::triggered, this, &ProjectExplorerPlugin::rebuildSession); - connect(dd->m_deployProjectOnlyAction, &QAction::triggered, this, &ProjectExplorerPlugin::deployProjectOnly); - connect(dd->m_deployAction, &QAction::triggered, this, &ProjectExplorerPlugin::deployProject); - connect(dd->m_deployActionContextMenu, &QAction::triggered, this, &ProjectExplorerPlugin::deployProjectContextMenu); - connect(dd->m_deploySessionAction, &QAction::triggered, this, &ProjectExplorerPlugin::deploySession); - connect(dd->m_cleanProjectOnlyAction, &QAction::triggered, this, &ProjectExplorerPlugin::cleanProjectOnly); - connect(dd->m_cleanAction, &QAction::triggered, this, &ProjectExplorerPlugin::cleanProject); - connect(dd->m_cleanActionContextMenu, &QAction::triggered, this, &ProjectExplorerPlugin::cleanProjectContextMenu); - connect(dd->m_cleanSessionAction, &QAction::triggered, this, &ProjectExplorerPlugin::cleanSession); - connect(dd->m_runAction, &QAction::triggered, this, &ProjectExplorerPlugin::handleRunProject); - connect(dd->m_runActionContextMenu, &QAction::triggered, this, &ProjectExplorerPlugin::runProjectContextMenu); - connect(dd->m_runWithoutDeployAction, &QAction::triggered, this, &ProjectExplorerPlugin::runProjectWithoutDeploy); - connect(dd->m_cancelBuildAction, &QAction::triggered, this, &ProjectExplorerPlugin::cancelBuild); - connect(dd->m_unloadAction, &QAction::triggered, this, &ProjectExplorerPlugin::handleUnloadProject); - connect(dd->m_unloadActionContextMenu, &QAction::triggered, this, &ProjectExplorerPlugin::unloadProjectContextMenu); - connect(dd->m_closeAllProjects, &QAction::triggered, this, &ProjectExplorerPlugin::closeAllProjects); - connect(dd->m_addNewFileAction, &QAction::triggered, this, &ProjectExplorerPlugin::addNewFile); - connect(dd->m_addExistingFilesAction, &QAction::triggered, this, &ProjectExplorerPlugin::handleAddExistingFiles); - connect(dd->m_addExistingDirectoryAction, &QAction::triggered, this, &ProjectExplorerPlugin::addExistingDirectory); - connect(dd->m_addNewSubprojectAction, &QAction::triggered, this, &ProjectExplorerPlugin::addNewSubproject); - connect(dd->m_removeProjectAction, &QAction::triggered, this, &ProjectExplorerPlugin::removeProject); - connect(dd->m_openFileAction, &QAction::triggered, this, &ProjectExplorerPlugin::openFile); - connect(dd->m_searchOnFileSystem, &QAction::triggered, this, &ProjectExplorerPlugin::searchOnFileSystem); - connect(dd->m_showInGraphicalShell, &QAction::triggered, this, &ProjectExplorerPlugin::showInGraphicalShell); - connect(dd->m_openTerminalHere, &QAction::triggered, this, &ProjectExplorerPlugin::openTerminalHere); - connect(dd->m_removeFileAction, &QAction::triggered, this, &ProjectExplorerPlugin::removeFile); - connect(dd->m_deleteFileAction, &QAction::triggered, this, &ProjectExplorerPlugin::deleteFile); - connect(dd->m_renameFileAction, &QAction::triggered, this, &ProjectExplorerPlugin::handleRenameFile); - connect(dd->m_setStartupProjectAction, &QAction::triggered, this, &ProjectExplorerPlugin::handleSetStartupProject); + connect(dd->m_sessionManagerAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::showSessionManager); + connect(dd->m_newAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::newProject); + connect(dd->m_loadAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::loadAction); + connect(dd->m_buildProjectOnlyAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::buildProjectOnly); + connect(dd->m_buildAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::handleBuildProject); + connect(dd->m_buildActionContextMenu, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::buildProjectContextMenu); + connect(dd->m_buildSessionAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::buildSession); + connect(dd->m_rebuildProjectOnlyAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::rebuildProjectOnly); + connect(dd->m_rebuildAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::rebuildProject); + connect(dd->m_rebuildActionContextMenu, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::rebuildProjectContextMenu); + connect(dd->m_rebuildSessionAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::rebuildSession); + connect(dd->m_deployProjectOnlyAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::deployProjectOnly); + connect(dd->m_deployAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::deployProject); + connect(dd->m_deployActionContextMenu, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::deployProjectContextMenu); + connect(dd->m_deploySessionAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::deploySession); + connect(dd->m_cleanProjectOnlyAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::cleanProjectOnly); + connect(dd->m_cleanAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::cleanProject); + connect(dd->m_cleanActionContextMenu, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::cleanProjectContextMenu); + connect(dd->m_cleanSessionAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::cleanSession); + connect(dd->m_runAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::handleRunProject); + connect(dd->m_runActionContextMenu, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::runProjectContextMenu); + connect(dd->m_runWithoutDeployAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::runProjectWithoutDeploy); + connect(dd->m_cancelBuildAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::cancelBuild); + connect(dd->m_unloadAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::handleUnloadProject); + connect(dd->m_unloadActionContextMenu, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::unloadProjectContextMenu); + connect(dd->m_closeAllProjects, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::closeAllProjects); + connect(dd->m_addNewFileAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::addNewFile); + connect(dd->m_addExistingFilesAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::handleAddExistingFiles); + connect(dd->m_addExistingDirectoryAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::addExistingDirectory); + connect(dd->m_addNewSubprojectAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::addNewSubproject); + connect(dd->m_removeProjectAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::removeProject); + connect(dd->m_openFileAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::openFile); + connect(dd->m_searchOnFileSystem, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::searchOnFileSystem); + connect(dd->m_showInGraphicalShell, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::showInGraphicalShell); + connect(dd->m_openTerminalHere, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::openTerminalHere); + connect(dd->m_removeFileAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::removeFile); + connect(dd->m_deleteFileAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::deleteFile); + connect(dd->m_renameFileAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::handleRenameFile); + connect(dd->m_setStartupProjectAction, &QAction::triggered, + dd, &ProjectExplorerPluginPrivate::handleSetStartupProject); connect(dd->m_projectTreeCollapseAllAction, &QAction::triggered, ProjectTree::instance(), &ProjectTree::collapseAll); - connect(this, &ProjectExplorerPlugin::updateRunActions, this, &ProjectExplorerPlugin::slotUpdateRunActions); + connect(this, &ProjectExplorerPlugin::updateRunActions, + dd, &ProjectExplorerPluginPrivate::slotUpdateRunActions); connect(this, &ProjectExplorerPlugin::settingsChanged, dd, &ProjectExplorerPluginPrivate::updateRunWithoutDeployMenu); auto buildManager = new BuildManager(this, dd->m_cancelBuildAction); connect(buildManager, &BuildManager::buildStateChanged, - this, &ProjectExplorerPlugin::buildStateChanged); + dd, &ProjectExplorerPluginPrivate::buildStateChanged); connect(buildManager, &BuildManager::buildQueueFinished, - this, &ProjectExplorerPlugin::buildQueueFinished, Qt::QueuedConnection); - - m_instance->updateActions(); + dd, &ProjectExplorerPluginPrivate::buildQueueFinished, Qt::QueuedConnection); connect(ICore::instance(), &ICore::coreAboutToOpen, - this, &ProjectExplorerPlugin::determineSessionToRestoreAtStartup); - connect(ICore::instance(), &ICore::coreOpened, this, &ProjectExplorerPlugin::restoreSession); - connect(ICore::instance(), &ICore::newItemDialogRunningChanged, - this, &ProjectExplorerPlugin::updateActions); + dd, &ProjectExplorerPluginPrivate::determineSessionToRestoreAtStartup); + connect(ICore::instance(), &ICore::coreOpened, + dd, &ProjectExplorerPluginPrivate::restoreSession); + connect(ICore::instance(), &ICore::newItemDialogRunningChanged, updateActions); - updateWelcomePage(); + dd->updateWelcomePage(); // FIXME: These are mostly "legacy"/"convenience" entries, relying on // the global entry point ProjectExplorer::currentProject(). They should @@ -1241,7 +1360,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er return true; } -void ProjectExplorerPlugin::loadAction() +void ProjectExplorerPluginPrivate::loadAction() { if (debug) qDebug() << "ProjectExplorerPlugin::loadAction"; @@ -1263,23 +1382,23 @@ void ProjectExplorerPlugin::loadAction() if (filename.isEmpty()) return; QString errorMessage; - openProject(filename, &errorMessage); + ProjectExplorerPlugin::openProject(filename, &errorMessage); if (!errorMessage.isEmpty()) QMessageBox::critical(ICore::mainWindow(), tr("Failed to open project."), errorMessage); updateActions(); } -void ProjectExplorerPlugin::unloadProjectContextMenu() +void ProjectExplorerPluginPrivate::unloadProjectContextMenu() { if (debug) qDebug() << "ProjectExplorerPlugin::unloadProjectContextMenu"; if (Project *p = ProjectTree::currentProject()) - unloadProject(p); + ProjectExplorerPlugin::unloadProject(p); } -void ProjectExplorerPlugin::handleUnloadProject() +void ProjectExplorerPluginPrivate::handleUnloadProject() { if (debug) qDebug() << "ProjectExplorerPlugin::unloadProject"; @@ -1287,7 +1406,7 @@ void ProjectExplorerPlugin::handleUnloadProject() QList projects = SessionManager::projects(); QTC_ASSERT(!projects.isEmpty(), return); - unloadProject(projects.first()); + ProjectExplorerPlugin::unloadProject(projects.first()); } void ProjectExplorerPlugin::unloadProject(Project *project) @@ -1317,10 +1436,10 @@ void ProjectExplorerPlugin::unloadProject(Project *project) dd->addToRecentProjects(document->filePath().toString(), project->displayName()); SessionManager::removeProject(project); - m_instance->updateActions(); + updateActions(); } -void ProjectExplorerPlugin::closeAllProjects() +void ProjectExplorerPluginPrivate::closeAllProjects() { if (debug) qDebug() << "ProjectExplorerPlugin::closeAllProject"; @@ -1382,7 +1501,7 @@ void ProjectExplorerPlugin::extensionsInitialized() dd->m_kitManager->restoreKits(); } -void ProjectExplorerPlugin::loadCustomWizards() +void ProjectExplorerPluginPrivate::loadCustomWizards() { // Add custom wizards, for which other plugins might have registered // class factories @@ -1390,9 +1509,9 @@ void ProjectExplorerPlugin::loadCustomWizards() if (firstTime) { firstTime = false; foreach (IWizardFactory *cpw, CustomWizard::createWizards()) - addAutoReleasedObject(cpw); + m_instance->addAutoReleasedObject(cpw); foreach (IWizardFactory *cpw, JsonWizardFactory::createWizardFactories()) - addAutoReleasedObject(cpw); + m_instance->addAutoReleasedObject(cpw); } } @@ -1404,7 +1523,7 @@ void ProjectExplorerPluginPrivate::updateRunWithoutDeployMenu() ExtensionSystem::IPlugin::ShutdownFlag ProjectExplorerPlugin::aboutToShutdown() { disconnect(ModeManager::instance(), &ModeManager::currentModeChanged, - this, &ProjectExplorerPlugin::currentModeChanged); + dd, &ProjectExplorerPluginPrivate::currentModeChanged); ProjectTree::aboutToShutDown(); dd->m_proWindow->aboutToShutdown(); // disconnect from session SessionManager::closeAllProjects(); @@ -1420,7 +1539,7 @@ ExtensionSystem::IPlugin::ShutdownFlag ProjectExplorerPlugin::aboutToShutdown() return AsynchronousShutdown; } -void ProjectExplorerPlugin::newProject() +void ProjectExplorerPluginPrivate::newProject() { if (debug) qDebug() << "ProjectExplorerPlugin::newProject"; @@ -1430,7 +1549,7 @@ void ProjectExplorerPlugin::newProject() updateActions(); } -void ProjectExplorerPlugin::showSessionManager() +void ProjectExplorerPluginPrivate::showSessionManager() { if (debug) qDebug() << "ProjectExplorerPlugin::showSessionManager"; @@ -1452,7 +1571,7 @@ void ProjectExplorerPlugin::showSessionManager() updateWelcomePage(); } -void ProjectExplorerPlugin::setStartupProject(Project *project) +void ProjectExplorerPluginPrivate::setStartupProject(Project *project) { if (debug) qDebug() << "ProjectExplorerPlugin::setStartupProject"; @@ -1463,7 +1582,7 @@ void ProjectExplorerPlugin::setStartupProject(Project *project) updateActions(); } -void ProjectExplorerPlugin::savePersistentSettings() +void ProjectExplorerPluginPrivate::savePersistentSettings() { if (debug) qDebug()<<"ProjectExplorerPlugin::savePersistentSettings()"; @@ -1616,7 +1735,7 @@ QList ProjectExplorerPlugin::openProjects(const QStringList &fileName if (fileNames.size() > 1) SessionManager::reportProjectLoadingProgress(); } - m_instance->updateActions(); + updateActions(); bool switchToProjectsMode = Utils::anyOf(openedPro, &Project::needsConfiguration); @@ -1631,12 +1750,12 @@ QList ProjectExplorerPlugin::openProjects(const QStringList &fileName return openedPro; } -void ProjectExplorerPlugin::updateWelcomePage() +void ProjectExplorerPluginPrivate::updateWelcomePage() { - dd->m_welcomePage->reloadWelcomeScreenData(); + m_welcomePage->reloadWelcomeScreenData(); } -void ProjectExplorerPlugin::currentModeChanged(IMode *mode, IMode *oldMode) +void ProjectExplorerPluginPrivate::currentModeChanged(IMode *mode, IMode *oldMode) { if (oldMode && oldMode->id() == Constants::MODE_SESSION) ICore::saveSettings(); @@ -1644,30 +1763,30 @@ void ProjectExplorerPlugin::currentModeChanged(IMode *mode, IMode *oldMode) updateWelcomePage(); } -void ProjectExplorerPlugin::determineSessionToRestoreAtStartup() +void ProjectExplorerPluginPrivate::determineSessionToRestoreAtStartup() { // Process command line arguments first: - if (pluginSpec()->arguments().contains(QLatin1String("-lastsession"))) - dd->m_sessionToRestoreAtStartup = SessionManager::lastSession(); + if (m_instance->pluginSpec()->arguments().contains(QLatin1String("-lastsession"))) + m_sessionToRestoreAtStartup = SessionManager::lastSession(); QStringList arguments = ExtensionSystem::PluginManager::arguments(); - if (dd->m_sessionToRestoreAtStartup.isNull()) { + if (m_sessionToRestoreAtStartup.isNull()) { QStringList sessions = SessionManager::sessions(); // We have command line arguments, try to find a session in them // Default to no session loading foreach (const QString &arg, arguments) { if (sessions.contains(arg)) { // Session argument - dd->m_sessionToRestoreAtStartup = arg; + m_sessionToRestoreAtStartup = arg; break; } } } // Handle settings only after command line arguments: - if (dd->m_sessionToRestoreAtStartup.isNull() - && dd->m_projectExplorerSettings.autorestoreLastSession) - dd->m_sessionToRestoreAtStartup = SessionManager::lastSession(); + if (m_sessionToRestoreAtStartup.isNull() + && m_projectExplorerSettings.autorestoreLastSession) + m_sessionToRestoreAtStartup = SessionManager::lastSession(); - if (!dd->m_sessionToRestoreAtStartup.isNull()) + if (!m_sessionToRestoreAtStartup.isNull()) ModeManager::activateMode(Core::Constants::MODE_EDIT); } @@ -1698,7 +1817,7 @@ void ProjectExplorerPlugin::updateContextMenuActions() default session and puts the list of recent projects and sessions onto the welcome page. */ -void ProjectExplorerPlugin::restoreSession() +void ProjectExplorerPluginPrivate::restoreSession() { if (debug) qDebug() << "ProjectExplorerPlugin::restoreSession"; @@ -1760,30 +1879,30 @@ void ProjectExplorerPlugin::restoreSession() // update welcome page connect(ModeManager::instance(), &ModeManager::currentModeChanged, - this, &ProjectExplorerPlugin::currentModeChanged); + dd, &ProjectExplorerPluginPrivate::currentModeChanged); connect(dd->m_welcomePage, &ProjectWelcomePage::requestSession, - this, &ProjectExplorerPlugin::loadSession); + dd, &ProjectExplorerPluginPrivate::loadSession); connect(dd->m_welcomePage, &ProjectWelcomePage::requestProject, - this, &ProjectExplorerPlugin::openProjectWelcomePage); + m_instance, &ProjectExplorerPlugin::openProjectWelcomePage); dd->m_arguments = arguments; QTimer::singleShot(0, this, SLOT(restoreSession2())); updateActions(); } +void ProjectExplorerPluginPrivate::loadSession(const QString &session) +{ + if (debug) + qDebug() << "ProjectExplorerPlugin::loadSession" << session; + SessionManager::loadSession(session); +} + void ProjectExplorerPlugin::restoreSession2() { QApplication::processEvents(QEventLoop::ExcludeUserInputEvents); ICore::openFiles(dd->m_arguments, ICore::OpenFilesFlags(ICore::CanContainLineNumbers | ICore::SwitchMode)); } -void ProjectExplorerPlugin::loadSession(const QString &session) -{ - if (debug) - qDebug() << "ProjectExplorerPlugin::loadSession" << session; - SessionManager::loadSession(session); -} - -void ProjectExplorerPlugin::buildStateChanged(Project * pro) +void ProjectExplorerPluginPrivate::buildStateChanged(Project * pro) { if (debug) { qDebug() << "buildStateChanged"; @@ -1812,8 +1931,8 @@ void ProjectExplorerPluginPrivate::executeRunConfiguration(RunConfiguration *run m_instance->showRunErrorMessage(errorMessage); return; } else if (state == RunConfiguration::Waiting) { - QObject::connect(runConfiguration, &RunConfiguration::configurationFinished, - m_instance, &ProjectExplorerPlugin::runConfigurationConfigurationFinished); + connect(runConfiguration, &RunConfiguration::configurationFinished, + this, &ProjectExplorerPluginPrivate::runConfigurationConfigurationFinished); m_delayedRunConfigurationForRun.append(qMakePair(runConfiguration, runMode)); return; } @@ -1845,6 +1964,11 @@ void ProjectExplorerPlugin::startRunControl(RunControl *runControl, RunMode runM dd->startRunControl(runControl, runMode); } +void ProjectExplorerPluginPrivate::handleRunControlFinished() +{ + emit m_instance->updateRunActions(); +} + void ProjectExplorerPluginPrivate::startRunControl(RunControl *runControl, RunMode runMode) { m_outputPane->createNewOutputWindow(runControl); @@ -1855,17 +1979,17 @@ void ProjectExplorerPluginPrivate::startRunControl(RunControl *runControl, RunMo && m_projectExplorerSettings.showDebugOutput); m_outputPane->setBehaviorOnOutput(runControl, popup ? AppOutputPane::Popup : AppOutputPane::Flash); QObject::connect(runControl, &RunControl::finished, - m_instance, &ProjectExplorerPlugin::handleRunControlFinished); + this, &ProjectExplorerPluginPrivate::handleRunControlFinished); runControl->start(); emit m_instance->updateRunActions(); } void ProjectExplorerPlugin::initiateInlineRenaming() { - m_instance->handleRenameFile(); + dd->handleRenameFile(); } -void ProjectExplorerPlugin::buildQueueFinished(bool success) +void ProjectExplorerPluginPrivate::buildQueueFinished(bool success) { if (debug) qDebug() << "buildQueueFinished()" << success; @@ -1873,45 +1997,45 @@ void ProjectExplorerPlugin::buildQueueFinished(bool success) updateActions(); bool ignoreErrors = true; - if (!dd->m_delayedRunConfiguration.isNull() && success && BuildManager::getErrorTaskCount() > 0) { + if (!m_delayedRunConfiguration.isNull() && success && BuildManager::getErrorTaskCount() > 0) { ignoreErrors = QMessageBox::question(ICore::dialogParent(), - tr("Ignore All Errors?"), - tr("Found some build errors in current task.\n" + ProjectExplorerPlugin::tr("Ignore All Errors?"), + ProjectExplorerPlugin::tr("Found some build errors in current task.\n" "Do you want to ignore them?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::Yes; } - if (dd->m_delayedRunConfiguration.isNull() && dd->m_shouldHaveRunConfiguration) { + if (m_delayedRunConfiguration.isNull() && m_shouldHaveRunConfiguration) { QMessageBox::warning(ICore::dialogParent(), - tr("Run Configuration Removed"), - tr("The configuration that was supposed to run is no longer " + ProjectExplorerPlugin::tr("Run Configuration Removed"), + ProjectExplorerPlugin::tr("The configuration that was supposed to run is no longer " "available."), QMessageBox::Ok); } - if (success && ignoreErrors && !dd->m_delayedRunConfiguration.isNull()) { - dd->executeRunConfiguration(dd->m_delayedRunConfiguration.data(), dd->m_runMode); + if (success && ignoreErrors && !m_delayedRunConfiguration.isNull()) { + executeRunConfiguration(m_delayedRunConfiguration.data(), m_runMode); } else { if (BuildManager::tasksAvailable()) BuildManager::showTaskWindow(); } - dd->m_delayedRunConfiguration = 0; - dd->m_shouldHaveRunConfiguration = false; - dd->m_runMode = NoRunMode; + m_delayedRunConfiguration = 0; + m_shouldHaveRunConfiguration = false; + m_runMode = NoRunMode; } -void ProjectExplorerPlugin::runConfigurationConfigurationFinished() +void ProjectExplorerPluginPrivate::runConfigurationConfigurationFinished() { RunConfiguration *rc = qobject_cast(sender()); RunMode runMode = NoRunMode; - for (int i = 0; i < dd->m_delayedRunConfigurationForRun.size(); ++i) { - if (dd->m_delayedRunConfigurationForRun.at(i).first == rc) { - runMode = dd->m_delayedRunConfigurationForRun.at(i).second; - dd->m_delayedRunConfigurationForRun.removeAt(i); + for (int i = 0; i < m_delayedRunConfigurationForRun.size(); ++i) { + if (m_delayedRunConfigurationForRun.at(i).first == rc) { + runMode = m_delayedRunConfigurationForRun.at(i).second; + m_delayedRunConfigurationForRun.removeAt(i); break; } } if (runMode != NoRunMode && rc->isConfigured()) - dd->executeRunConfiguration(rc, runMode); + executeRunConfiguration(rc, runMode); } static QString pathOrDirectoryFor(Node *node, bool dir) @@ -1957,14 +2081,14 @@ static QString pathFor(Node *node) return pathOrDirectoryFor(node, false); } -QString ProjectExplorerPlugin::directoryFor(Node *node) +static QString directoryFor(Node *node) { return pathOrDirectoryFor(node, true); } -void ProjectExplorerPlugin::updateActions() +QString ProjectExplorerPlugin::directoryFor(Node *node) { - dd->updateActions(); + return ProjectExplorer::directoryFor(node); } void ProjectExplorerPluginPrivate::updateActions() @@ -2159,9 +2283,9 @@ int ProjectExplorerPluginPrivate::queue(QList projects, QList ste return stepLists.count(); } -void ProjectExplorerPlugin::buildProjectOnly() +void ProjectExplorerPluginPrivate::buildProjectOnly() { - dd->queue(QList() << SessionManager::startupProject(), QList() << Id(Constants::BUILDSTEPS_BUILD)); + queue(QList() << SessionManager::startupProject(), QList() << Id(Constants::BUILDSTEPS_BUILD)); } void ProjectExplorerPlugin::buildProject(Project *p) @@ -2175,107 +2299,107 @@ void ProjectExplorerPlugin::requestProjectModeUpdate(Project *p) dd->m_proWindow->projectUpdated(p); } -void ProjectExplorerPlugin::handleBuildProject() +void ProjectExplorerPluginPrivate::handleBuildProject() { - dd->queue(SessionManager::projectOrder(SessionManager::startupProject()), + queue(SessionManager::projectOrder(SessionManager::startupProject()), QList() << Id(Constants::BUILDSTEPS_BUILD)); } -void ProjectExplorerPlugin::buildProjectContextMenu() +void ProjectExplorerPluginPrivate::buildProjectContextMenu() { - dd->queue(QList() << ProjectTree::currentProject(), + queue(QList() << ProjectTree::currentProject(), QList() << Id(Constants::BUILDSTEPS_BUILD)); } -void ProjectExplorerPlugin::buildSession() +void ProjectExplorerPluginPrivate::buildSession() { - dd->queue(SessionManager::projectOrder(), + queue(SessionManager::projectOrder(), QList() << Id(Constants::BUILDSTEPS_BUILD)); } -void ProjectExplorerPlugin::rebuildProjectOnly() +void ProjectExplorerPluginPrivate::rebuildProjectOnly() { - dd->queue(QList() << SessionManager::startupProject(), + queue(QList() << SessionManager::startupProject(), QList() << Id(Constants::BUILDSTEPS_CLEAN) << Id(Constants::BUILDSTEPS_BUILD)); } -void ProjectExplorerPlugin::rebuildProject() +void ProjectExplorerPluginPrivate::rebuildProject() { - dd->queue(SessionManager::projectOrder(SessionManager::startupProject()), + queue(SessionManager::projectOrder(SessionManager::startupProject()), QList() << Id(Constants::BUILDSTEPS_CLEAN) << Id(Constants::BUILDSTEPS_BUILD)); } -void ProjectExplorerPlugin::rebuildProjectContextMenu() +void ProjectExplorerPluginPrivate::rebuildProjectContextMenu() { - dd->queue(QList() << ProjectTree::currentProject(), + queue(QList() << ProjectTree::currentProject(), QList() << Id(Constants::BUILDSTEPS_CLEAN) << Id(Constants::BUILDSTEPS_BUILD)); } -void ProjectExplorerPlugin::rebuildSession() +void ProjectExplorerPluginPrivate::rebuildSession() { - dd->queue(SessionManager::projectOrder(), + queue(SessionManager::projectOrder(), QList() << Id(Constants::BUILDSTEPS_CLEAN) << Id(Constants::BUILDSTEPS_BUILD)); } -void ProjectExplorerPlugin::deployProjectOnly() +void ProjectExplorerPluginPrivate::deployProjectOnly() { - dd->deploy(QList() << SessionManager::startupProject()); + deploy(QList() << SessionManager::startupProject()); } -void ProjectExplorerPlugin::deployProject() +void ProjectExplorerPluginPrivate::deployProject() { - dd->deploy(SessionManager::projectOrder(SessionManager::startupProject())); + deploy(SessionManager::projectOrder(SessionManager::startupProject())); } -void ProjectExplorerPlugin::deployProjectContextMenu() +void ProjectExplorerPluginPrivate::deployProjectContextMenu() { - dd->deploy(QList() << ProjectTree::currentProject()); + deploy(QList() << ProjectTree::currentProject()); } -void ProjectExplorerPlugin::deploySession() +void ProjectExplorerPluginPrivate::deploySession() { - dd->deploy(SessionManager::projectOrder()); + deploy(SessionManager::projectOrder()); } -void ProjectExplorerPlugin::cleanProjectOnly() +void ProjectExplorerPluginPrivate::cleanProjectOnly() { - dd->queue(QList() << SessionManager::startupProject(), + queue(QList() << SessionManager::startupProject(), QList() << Id(Constants::BUILDSTEPS_CLEAN)); } -void ProjectExplorerPlugin::cleanProject() +void ProjectExplorerPluginPrivate::cleanProject() { - dd->queue(SessionManager::projectOrder(SessionManager::startupProject()), + queue(SessionManager::projectOrder(SessionManager::startupProject()), QList() << Id(Constants::BUILDSTEPS_CLEAN)); } -void ProjectExplorerPlugin::cleanProjectContextMenu() +void ProjectExplorerPluginPrivate::cleanProjectContextMenu() { - dd->queue(QList() << ProjectTree::currentProject(), + queue(QList() << ProjectTree::currentProject(), QList() << Id(Constants::BUILDSTEPS_CLEAN)); } -void ProjectExplorerPlugin::cleanSession() +void ProjectExplorerPluginPrivate::cleanSession() { - dd->queue(SessionManager::projectOrder(), + queue(SessionManager::projectOrder(), QList() << Id(Constants::BUILDSTEPS_CLEAN)); } -void ProjectExplorerPlugin::handleRunProject() +void ProjectExplorerPluginPrivate::handleRunProject() { - runStartupProject(NormalRunMode); + m_instance->runStartupProject(NormalRunMode); } -void ProjectExplorerPlugin::runProjectWithoutDeploy() +void ProjectExplorerPluginPrivate::runProjectWithoutDeploy() { - runStartupProject(NormalRunMode, true); + m_instance->runStartupProject(NormalRunMode, true); } -void ProjectExplorerPlugin::runProjectContextMenu() +void ProjectExplorerPluginPrivate::runProjectContextMenu() { ProjectNode *projectNode = dynamic_cast(ProjectTree::currentNode()); if (projectNode == ProjectTree::currentProject()->rootProjectNode() || !projectNode) { - runProject(ProjectTree::currentProject(), NormalRunMode); + m_instance->runProject(ProjectTree::currentProject(), NormalRunMode); } else { QAction *act = qobject_cast(sender()); if (!act) @@ -2283,7 +2407,7 @@ void ProjectExplorerPlugin::runProjectContextMenu() RunConfiguration *rc = act->data().value(); if (!rc) return; - runRunConfiguration(rc, NormalRunMode); + m_instance->runRunConfiguration(rc, NormalRunMode); } } @@ -2433,36 +2557,31 @@ void ProjectExplorerPlugin::runRunConfiguration(RunConfiguration *rc, emit m_instance->updateRunActions(); } -void ProjectExplorerPlugin::handleRunControlFinished() +void ProjectExplorerPluginPrivate::projectAdded(Project *pro) { - emit updateRunActions(); -} - -void ProjectExplorerPlugin::projectAdded(Project *pro) -{ - if (dd->m_projectsMode) - dd->m_projectsMode->setEnabled(true); + if (m_projectsMode) + m_projectsMode->setEnabled(true); // more specific action en and disabling ? connect(pro, &Project::buildConfigurationEnabledChanged, - this, &ProjectExplorerPlugin::updateActions); + this, &ProjectExplorerPluginPrivate::updateActions); } -void ProjectExplorerPlugin::projectRemoved(Project * pro) +void ProjectExplorerPluginPrivate::projectRemoved(Project * pro) { - if (dd->m_projectsMode) - dd->m_projectsMode->setEnabled(SessionManager::hasProjects()); + if (m_projectsMode) + m_projectsMode->setEnabled(SessionManager::hasProjects()); // more specific action en and disabling ? disconnect(pro, &Project::buildConfigurationEnabledChanged, - this, &ProjectExplorerPlugin::updateActions); + this, &ProjectExplorerPluginPrivate::updateActions); } -void ProjectExplorerPlugin::projectDisplayNameChanged(Project *pro) +void ProjectExplorerPluginPrivate::projectDisplayNameChanged(Project *pro) { - dd->addToRecentProjects(pro->projectFilePath().toString(), pro->displayName()); + addToRecentProjects(pro->projectFilePath().toString(), pro->displayName()); updateActions(); } -void ProjectExplorerPlugin::startupProjectChanged() +void ProjectExplorerPluginPrivate::startupProjectChanged() { static QPointer previousStartupProject = 0; Project *project = SessionManager::startupProject(); @@ -2471,21 +2590,21 @@ void ProjectExplorerPlugin::startupProjectChanged() if (previousStartupProject) { disconnect(previousStartupProject.data(), &Project::activeTargetChanged, - this, &ProjectExplorerPlugin::activeTargetChanged); + this, &ProjectExplorerPluginPrivate::activeTargetChanged); } previousStartupProject = project; if (project) { connect(project, &Project::activeTargetChanged, - this, &ProjectExplorerPlugin::activeTargetChanged); + this, &ProjectExplorerPluginPrivate::activeTargetChanged); } activeTargetChanged(); updateActions(); } -void ProjectExplorerPlugin::activeTargetChanged() +void ProjectExplorerPluginPrivate::activeTargetChanged() { static QPointer previousTarget = 0; Target *target = 0; @@ -2497,19 +2616,19 @@ void ProjectExplorerPlugin::activeTargetChanged() if (previousTarget) { disconnect(previousTarget.data(), &Target::activeRunConfigurationChanged, - this, &ProjectExplorerPlugin::activeRunConfigurationChanged); + this, &ProjectExplorerPluginPrivate::activeRunConfigurationChanged); } previousTarget = target; if (target) { connect(target, &Target::activeRunConfigurationChanged, - this, &ProjectExplorerPlugin::activeRunConfigurationChanged); + this, &ProjectExplorerPluginPrivate::activeRunConfigurationChanged); } activeRunConfigurationChanged(); - dd->updateDeployActions(); + updateDeployActions(); } -void ProjectExplorerPlugin::activeRunConfigurationChanged() +void ProjectExplorerPluginPrivate::activeRunConfigurationChanged() { static QPointer previousRunConfiguration = 0; RunConfiguration *rc = 0; @@ -2520,14 +2639,14 @@ void ProjectExplorerPlugin::activeRunConfigurationChanged() return; if (previousRunConfiguration) { disconnect(previousRunConfiguration.data(), &RunConfiguration::requestRunActionsUpdate, - this, &ProjectExplorerPlugin::updateRunActions); + m_instance, &ProjectExplorerPlugin::updateRunActions); } previousRunConfiguration = rc; if (rc) { connect(rc, &RunConfiguration::requestRunActionsUpdate, - this, &ProjectExplorerPlugin::updateRunActions); + m_instance, &ProjectExplorerPlugin::updateRunActions); } - emit updateRunActions(); + emit m_instance->updateRunActions(); } void ProjectExplorerPluginPrivate::updateDeployActions() @@ -2642,17 +2761,17 @@ bool ProjectExplorerPlugin::canRun(Project *project, RunMode runMode, QString *w return true; } -void ProjectExplorerPlugin::slotUpdateRunActions() +void ProjectExplorerPluginPrivate::slotUpdateRunActions() { Project *project = SessionManager::startupProject(); QString whyNot; - const bool state = canRun(project, NormalRunMode, &whyNot); - dd->m_runAction->setEnabled(state); - dd->m_runAction->setToolTip(whyNot); - dd->m_runWithoutDeployAction->setEnabled(state); + const bool state = ProjectExplorerPlugin::canRun(project, NormalRunMode, &whyNot); + m_runAction->setEnabled(state); + m_runAction->setToolTip(whyNot); + m_runWithoutDeployAction->setEnabled(state); } -void ProjectExplorerPlugin::cancelBuild() +void ProjectExplorerPluginPrivate::cancelBuild() { if (debug) qDebug() << "ProjectExplorerPlugin::cancelBuild"; @@ -2685,7 +2804,7 @@ void ProjectExplorerPluginPrivate::addToRecentProjects(const QString &fileName, emit m_instance->recentProjectsChanged(); } -void ProjectExplorerPlugin::updateUnloadProjectMenu() +void ProjectExplorerPluginPrivate::updateUnloadProjectMenu() { ActionContainer *aci = ActionManager::actionContainer(Constants::M_UNLOADPROJECTS); QMenu *menu = aci->menu(); @@ -2693,11 +2812,11 @@ void ProjectExplorerPlugin::updateUnloadProjectMenu() foreach (Project *project, SessionManager::projects()) { QAction *action = menu->addAction(tr("Close Project \"%1\"").arg(project->displayName())); connect(action, &QAction::triggered, - this, [project, this](){ unloadProject(project); } ); + [project] { ProjectExplorerPlugin::unloadProject(project); } ); } } -void ProjectExplorerPlugin::updateRecentProjectMenu() +void ProjectExplorerPluginPrivate::updateRecentProjectMenu() { typedef QList >::const_iterator StringPairListConstIterator; if (debug) @@ -2717,7 +2836,7 @@ void ProjectExplorerPlugin::updateRecentProjectMenu() continue; QAction *action = menu->addAction(Utils::withTildeHomePath(s.first)); action->setData(s.first); - connect(action, &QAction::triggered, this, &ProjectExplorerPlugin::openRecentProject); + connect(action, &QAction::triggered, this, &ProjectExplorerPluginPrivate::openRecentProject); hasRecentProjects = true; } menu->setEnabled(hasRecentProjects); @@ -2727,18 +2846,18 @@ void ProjectExplorerPlugin::updateRecentProjectMenu() menu->addSeparator(); QAction *action = menu->addAction(QCoreApplication::translate( "Core", Core::Constants::TR_CLEAR_MENU)); - connect(action, &QAction::triggered, this, &ProjectExplorerPlugin::clearRecentProjects); + connect(action, &QAction::triggered, this, &ProjectExplorerPluginPrivate::clearRecentProjects); } - emit recentProjectsChanged(); + emit m_instance->recentProjectsChanged(); } -void ProjectExplorerPlugin::clearRecentProjects() +void ProjectExplorerPluginPrivate::clearRecentProjects() { - dd->m_recentProjects.clear(); + m_recentProjects.clear(); updateWelcomePage(); } -void ProjectExplorerPlugin::openRecentProject() +void ProjectExplorerPluginPrivate::openRecentProject() { if (debug) qDebug() << "ProjectExplorerPlugin::openRecentProject()"; @@ -2749,18 +2868,18 @@ void ProjectExplorerPlugin::openRecentProject() QString fileName = a->data().toString(); if (!fileName.isEmpty()) { QString errorMessage; - openProject(fileName, &errorMessage); + ProjectExplorerPlugin::openProject(fileName, &errorMessage); if (!errorMessage.isEmpty()) QMessageBox::critical(ICore::mainWindow(), tr("Failed to open project."), errorMessage); } } -void ProjectExplorerPlugin::invalidateProject(Project *project) +void ProjectExplorerPluginPrivate::invalidateProject(Project *project) { if (debug) qDebug() << "ProjectExplorerPlugin::invalidateProject" << project->displayName(); - disconnect(project, &Project::fileListChanged, this, &ProjectExplorerPlugin::fileListChanged); + disconnect(project, &Project::fileListChanged, m_instance, &ProjectExplorerPlugin::fileListChanged); updateActions(); } @@ -2813,7 +2932,7 @@ void ProjectExplorerPluginPrivate::updateContextMenuActions() act->setText(tr("Run %1").arg(rc->displayName())); runMenu->menu()->addAction(act); connect(act, &QAction::triggered, - m_instance, &ProjectExplorerPlugin::runProjectContextMenu); + this, &ProjectExplorerPluginPrivate::runProjectContextMenu); } } } @@ -2869,7 +2988,7 @@ void ProjectExplorerPluginPrivate::updateContextMenuActions() } } -void ProjectExplorerPlugin::addNewFile() +void ProjectExplorerPluginPrivate::addNewFile() { QTC_ASSERT(ProjectTree::currentNode(), return); QString location = directoryFor(ProjectTree::currentNode()); @@ -2886,7 +3005,7 @@ void ProjectExplorerPlugin::addNewFile() location, map); } -void ProjectExplorerPlugin::addNewSubproject() +void ProjectExplorerPluginPrivate::addNewSubproject() { QTC_ASSERT(ProjectTree::currentNode(), return); Node *currentNode = ProjectTree::currentNode(); @@ -2908,7 +3027,7 @@ void ProjectExplorerPlugin::addNewSubproject() } } -void ProjectExplorerPlugin::handleAddExistingFiles() +void ProjectExplorerPluginPrivate::handleAddExistingFiles() { QTC_ASSERT(ProjectTree::currentNode(), return); @@ -2916,17 +3035,17 @@ void ProjectExplorerPlugin::handleAddExistingFiles() tr("Add Existing Files"), directoryFor(ProjectTree::currentNode())); if (fileNames.isEmpty()) return; - addExistingFiles(fileNames); + ProjectExplorerPlugin::addExistingFiles(fileNames); } -void ProjectExplorerPlugin::addExistingDirectory() +void ProjectExplorerPluginPrivate::addExistingDirectory() { QTC_ASSERT(ProjectTree::currentNode(), return); SelectableFilesDialogAddDirectory dialog(directoryFor(ProjectTree::currentNode()), QStringList(), ICore::mainWindow()); if (dialog.exec() == QDialog::Accepted) - addExistingFiles(dialog.selectedFiles()); + ProjectExplorerPlugin::addExistingFiles(dialog.selectedFiles()); } void ProjectExplorerPlugin::addExistingFiles(const QStringList &filePaths) @@ -2958,7 +3077,7 @@ void ProjectExplorerPlugin::addExistingFiles(FolderNode *folderNode, const QStri VcsManager::promptToAdd(dir, fileNames); } -void ProjectExplorerPlugin::removeProject() +void ProjectExplorerPluginPrivate::removeProject() { ProjectNode *subProjectNode = dynamic_cast(ProjectTree::currentNode()->projectNode()); ProjectNode *projectNode = dynamic_cast(subProjectNode->parentFolderNode()); @@ -2970,31 +3089,31 @@ void ProjectExplorerPlugin::removeProject() } } -void ProjectExplorerPlugin::openFile() +void ProjectExplorerPluginPrivate::openFile() { QTC_ASSERT(ProjectTree::currentNode(), return); EditorManager::openEditor(ProjectTree::currentNode()->path().toString()); } -void ProjectExplorerPlugin::searchOnFileSystem() +void ProjectExplorerPluginPrivate::searchOnFileSystem() { QTC_ASSERT(ProjectTree::currentNode(), return); TextEditor::FindInFiles::findOnFileSystem(pathFor(ProjectTree::currentNode())); } -void ProjectExplorerPlugin::showInGraphicalShell() +void ProjectExplorerPluginPrivate::showInGraphicalShell() { QTC_ASSERT(ProjectTree::currentNode(), return); FileUtils::showInGraphicalShell(ICore::mainWindow(), pathFor(ProjectTree::currentNode())); } -void ProjectExplorerPlugin::openTerminalHere() +void ProjectExplorerPluginPrivate::openTerminalHere() { QTC_ASSERT(ProjectTree::currentNode(), return); FileUtils::openTerminal(directoryFor(ProjectTree::currentNode())); } -void ProjectExplorerPlugin::removeFile() +void ProjectExplorerPluginPrivate::removeFile() { Node *currentNode = ProjectTree::currentNode(); QTC_ASSERT(currentNode && currentNode->nodeType() == FileNodeType, return); @@ -3023,7 +3142,7 @@ void ProjectExplorerPlugin::removeFile() } } -void ProjectExplorerPlugin::deleteFile() +void ProjectExplorerPluginPrivate::deleteFile() { Node *currentNode = ProjectTree::currentNode(); QTC_ASSERT(currentNode && currentNode->nodeType() == FileNodeType, return); @@ -3058,7 +3177,7 @@ void ProjectExplorerPlugin::deleteFile() DocumentManager::unexpectFileChange(filePath); } -void ProjectExplorerPlugin::handleRenameFile() +void ProjectExplorerPluginPrivate::handleRenameFile() { QWidget *focusWidget = QApplication::focusWidget(); while (focusWidget) { @@ -3090,7 +3209,7 @@ void ProjectExplorerPlugin::renameFile(Node *node, const QString &newFilePath) } } -void ProjectExplorerPlugin::handleSetStartupProject() +void ProjectExplorerPluginPrivate::handleSetStartupProject() { setStartupProject(ProjectTree::currentProject()); } @@ -3100,11 +3219,11 @@ void ProjectExplorerPlugin::showRenameFileError() QMessageBox::warning(ICore::mainWindow(), tr("Project Editing Failed"), dd->m_renameFileError); } -void ProjectExplorerPlugin::updateSessionMenu() +void ProjectExplorerPluginPrivate::updateSessionMenu() { - dd->m_sessionMenu->clear(); - QActionGroup *ag = new QActionGroup(dd->m_sessionMenu); - connect(ag, &QActionGroup::triggered, this, &ProjectExplorerPlugin::setSession); + m_sessionMenu->clear(); + QActionGroup *ag = new QActionGroup(m_sessionMenu); + connect(ag, &QActionGroup::triggered, this, &ProjectExplorerPluginPrivate::setSession); const QString activeSession = SessionManager::activeSession(); foreach (const QString &session, SessionManager::sessions()) { QAction *act = ag->addAction(session); @@ -3112,11 +3231,11 @@ void ProjectExplorerPlugin::updateSessionMenu() if (session == activeSession) act->setChecked(true); } - dd->m_sessionMenu->addActions(ag->actions()); - dd->m_sessionMenu->setEnabled(true); + m_sessionMenu->addActions(ag->actions()); + m_sessionMenu->setEnabled(true); } -void ProjectExplorerPlugin::setSession(QAction *action) +void ProjectExplorerPluginPrivate::setSession(QAction *action) { QString session = action->text(); if (session != SessionManager::activeSession()) diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index 6034458a4d5..a4157c36229 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -137,84 +137,9 @@ signals: public slots: static void openOpenProjectDialog(); - void handleRunControlFinished(); - void runConfigurationConfigurationFinished(); - void runProjectContextMenu(); private slots: - void buildStateChanged(ProjectExplorer::Project * pro); - void buildQueueFinished(bool success); - void buildProjectOnly(); - void handleBuildProject(); - void buildProjectContextMenu(); - void buildSession(); - void rebuildProjectOnly(); - void rebuildProject(); - void rebuildProjectContextMenu(); - void rebuildSession(); - void deployProjectOnly(); - void deployProject(); - void deployProjectContextMenu(); - void deploySession(); - void cleanProjectOnly(); - void cleanProject(); - void cleanProjectContextMenu(); - void cleanSession(); - void cancelBuild(); - void loadAction(); - void handleUnloadProject(); - void unloadProjectContextMenu(); - void closeAllProjects(); - void newProject(); - void showSessionManager(); - void updateSessionMenu(); - void setSession(QAction *action); - - void determineSessionToRestoreAtStartup(); - void restoreSession(); void restoreSession2(); - void loadSession(const QString &session); - void handleRunProject(); - void runProjectWithoutDeploy(); - void savePersistentSettings(); - - void addNewFile(); - void handleAddExistingFiles(); - void addExistingDirectory(); - void addNewSubproject(); - void removeProject(); - void openFile(); - void searchOnFileSystem(); - void showInGraphicalShell(); - void removeFile(); - void deleteFile(); - void handleRenameFile(); - void handleSetStartupProject(); - void setStartupProject(ProjectExplorer::Project *project); - - void updateRecentProjectMenu(); - void clearRecentProjects(); - void openRecentProject(); - void updateUnloadProjectMenu(); - void openTerminalHere(); - - void invalidateProject(ProjectExplorer::Project *project); - - void projectAdded(ProjectExplorer::Project *pro); - void projectRemoved(ProjectExplorer::Project *pro); - void projectDisplayNameChanged(ProjectExplorer::Project *pro); - void startupProjectChanged(); // Calls updateRunAction - void activeTargetChanged(); - void activeRunConfigurationChanged(); - - void slotUpdateRunActions(); - - void currentModeChanged(Core::IMode *mode, Core::IMode *oldMode); - void loadCustomWizards(); - - void updateWelcomePage(); - - void updateActions(); void showRenameFileError(); #ifdef WITH_TESTS