diff options
8 files changed, 111 insertions, 269 deletions
diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp index 1e2f38ea62..461232e4c8 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp @@ -30,11 +30,14 @@ #include "genericprojectconstants.h" #include <coreplugin/icore.h> + #include <projectexplorer/buildinfo.h> #include <projectexplorer/buildsteplist.h> #include <projectexplorer/kitinformation.h> #include <projectexplorer/projectexplorerconstants.h> +#include <projectexplorer/target.h> #include <projectexplorer/toolchain.h> + #include <utils/mimetypes/mimedatabase.h> #include <utils/pathchooser.h> #include <utils/qtcassert.h> diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp index 4046106eee..8569a994ef 100644 --- a/src/plugins/genericprojectmanager/genericmakestep.cpp +++ b/src/plugins/genericprojectmanager/genericmakestep.cpp @@ -29,15 +29,17 @@ #include "ui_genericmakestep.h" #include "genericbuildconfiguration.h" -#include <extensionsystem/pluginmanager.h> #include <projectexplorer/buildsteplist.h> #include <projectexplorer/gnumakeparser.h> #include <projectexplorer/kitinformation.h> #include <projectexplorer/projectexplorer.h> #include <projectexplorer/projectexplorerconstants.h> +#include <projectexplorer/target.h> #include <projectexplorer/toolchain.h> + #include <qtsupport/qtkitinformation.h> #include <qtsupport/qtparser.h> + #include <utils/stringutils.h> #include <utils/qtcassert.h> #include <utils/qtcprocess.h> diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index c8b14a125d..be174cae0d 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -32,11 +32,13 @@ #include <coreplugin/documentmanager.h> #include <coreplugin/icontext.h> #include <coreplugin/icore.h> +#include <coreplugin/idocument.h> + #include <cpptools/cpptoolsconstants.h> #include <cpptools/cppmodelmanager.h> #include <cpptools/projectinfo.h> #include <cpptools/cppprojectupdater.h> -#include <extensionsystem/pluginmanager.h> + #include <projectexplorer/abi.h> #include <projectexplorer/buildsteplist.h> #include <projectexplorer/customexecutablerunconfiguration.h> @@ -44,13 +46,20 @@ #include <projectexplorer/kitinformation.h> #include <projectexplorer/kitmanager.h> #include <projectexplorer/projectexplorerconstants.h> +#include <projectexplorer/projectnodes.h> +#include <projectexplorer/target.h> + #include <qtsupport/baseqtversion.h> #include <qtsupport/qtkitinformation.h> + #include <utils/algorithm.h> #include <utils/fileutils.h> #include <utils/qtcassert.h> #include <QDir> +#include <QHash> +#include <QSet> +#include <QStringList> using namespace Core; using namespace ProjectExplorer; @@ -61,6 +70,89 @@ namespace Internal { //////////////////////////////////////////////////////////////////////////////////// // +// GenericProjectFile +// +//////////////////////////////////////////////////////////////////////////////////// + +class GenericProjectFile : public Core::IDocument +{ +public: + GenericProjectFile(GenericProject *parent, const FileName &fileName, + GenericProject::RefreshOptions options) : + m_project(parent), + m_options(options) + { + setId("Generic.ProjectFile"); + setMimeType(Constants::GENERICMIMETYPE); + setFilePath(fileName); + } + + ReloadBehavior reloadBehavior(ChangeTrigger, ChangeType) const final + { + return BehaviorSilent; + } + + bool reload(QString *errorString, ReloadFlag flag, ChangeType type) override + { + Q_UNUSED(errorString); + Q_UNUSED(flag); + if (type == TypePermissions) + return true; + m_project->refresh(m_options); + return true; + } + +private: + GenericProject *m_project = nullptr; + GenericProject::RefreshOptions m_options; +}; + + +//////////////////////////////////////////////////////////////////////////////////// +// +// GenericProjectNode +// +//////////////////////////////////////////////////////////////////////////////////// + +class GenericProjectNode : public ProjectNode +{ +public: + explicit GenericProjectNode(GenericProject *project) : + ProjectNode(project->projectDirectory()), + m_project(project) + { + setDisplayName(project->projectFilePath().toFileInfo().completeBaseName()); + } + + bool showInSimpleTree() const override { return true; } + + QList<ProjectExplorer::ProjectAction> supportedActions(Node *) const override + { + return {AddNewFile, AddExistingFile, AddExistingDirectory, RemoveFile, Rename}; + } + + bool addFiles(const QStringList &filePaths, QStringList * = 0) override + { + return m_project->addFiles(filePaths); + } + + bool removeFiles(const QStringList &filePaths, QStringList * = 0) override + { + return m_project->removeFiles(filePaths); + } + + bool renameFile(const QString &filePath, const QString &newFilePath) override + { + return m_project->renameFile(filePath, newFilePath); + } + +private: + GenericProject *m_project = nullptr; +}; + + +//////////////////////////////////////////////////////////////////////////////////// +// // GenericProject // //////////////////////////////////////////////////////////////////////////////////// @@ -97,21 +189,6 @@ GenericProject::~GenericProject() delete m_cppCodeModelUpdater; } -QString GenericProject::filesFileName() const -{ - return m_filesFileName; -} - -QString GenericProject::includesFileName() const -{ - return m_includesFileName; -} - -QString GenericProject::configFileName() const -{ - return m_configFileName; -} - static QStringList readLines(const QString &absoluteFileName) { QStringList lines; @@ -134,7 +211,7 @@ static QStringList readLines(const QString &absoluteFileName) bool GenericProject::saveRawFileList(const QStringList &rawFileList) { - bool result = saveRawList(rawFileList, filesFileName()); + bool result = saveRawList(rawFileList, m_filesFileName); refresh(GenericProject::Files); return result; } @@ -168,7 +245,7 @@ bool GenericProject::addFiles(const QStringList &filePaths) for (const QString &filePath : filePaths) insertSorted(&newList, baseDir.relativeFilePath(filePath)); - const QSet<QString> includes = projectIncludePaths().toSet(); + const QSet<QString> includes = m_projectIncludePaths.toSet(); QSet<QString> toAdd; for (const QString &filePath : filePaths) { @@ -186,8 +263,8 @@ bool GenericProject::addFiles(const QStringList &filePaths) m_rawProjectIncludePaths.append(relative); } - bool result = saveRawList(newList, filesFileName()); - result &= saveRawList(m_rawProjectIncludePaths, includesFileName()); + bool result = saveRawList(newList, m_filesFileName); + result &= saveRawList(m_rawProjectIncludePaths, m_includesFileName); refresh(GenericProject::Everything); return result; @@ -238,12 +315,12 @@ void GenericProject::parseProject(RefreshOptions options) { if (options & Files) { m_rawListEntries.clear(); - m_rawFileList = readLines(filesFileName()); + m_rawFileList = readLines(m_filesFileName); m_files = processEntries(m_rawFileList, &m_rawListEntries); } if (options & Configuration) { - m_rawProjectIncludePaths = readLines(includesFileName()); + m_rawProjectIncludePaths = readLines(m_includesFileName); m_projectIncludePaths = processEntries(m_rawProjectIncludePaths); // TODO: Possibly load some configuration from the project file @@ -261,7 +338,7 @@ void GenericProject::refresh(RefreshOptions options) if (options & Files) { auto newRoot = new GenericProjectNode(this); - for (const QString &f : files()) { + for (const QString &f : m_files) { FileType fileType = FileType::Source; // ### FIXME if (f.endsWith(".qrc")) fileType = FileType::Resource; @@ -362,9 +439,9 @@ void GenericProject::refreshCppCodeModel() rpp.setDisplayName(displayName()); rpp.setProjectFileLocation(projectFilePath().toString()); rpp.setQtVersion(activeQtVersion); - rpp.setIncludePaths(projectIncludePaths()); - rpp.setConfigFileName(configFileName()); - rpp.setFiles(files()); + rpp.setIncludePaths(m_projectIncludePaths); + rpp.setConfigFileName(m_configFileName); + rpp.setFiles(m_files); const CppTools::ProjectUpdateInfo projectInfoUpdate(this, cToolChain, cxxToolChain, k, {rpp}); m_cppCodeModelUpdater->update(projectInfoUpdate); @@ -392,11 +469,6 @@ void GenericProject::activeBuildConfigurationWasChanged() refresh(Everything); } -QStringList GenericProject::projectIncludePaths() const -{ - return m_projectIncludePaths; -} - QStringList GenericProject::files() const { return m_files; @@ -455,38 +527,5 @@ Project::RestoreResult GenericProject::fromMap(const QVariantMap &map, QString * return RestoreResult::Ok; } -//////////////////////////////////////////////////////////////////////////////////// -// -// GenericProjectFile -// -//////////////////////////////////////////////////////////////////////////////////// - -GenericProjectFile::GenericProjectFile(GenericProject *parent, const Utils::FileName &fileName, - GenericProject::RefreshOptions options) : - m_project(parent), - m_options(options) -{ - setId("Generic.ProjectFile"); - setMimeType(Constants::GENERICMIMETYPE); - setFilePath(fileName); -} - -IDocument::ReloadBehavior GenericProjectFile::reloadBehavior(ChangeTrigger state, ChangeType type) const -{ - Q_UNUSED(state); - Q_UNUSED(type); - return BehaviorSilent; -} - -bool GenericProjectFile::reload(QString *errorString, ReloadFlag flag, ChangeType type) -{ - Q_UNUSED(errorString); - Q_UNUSED(flag); - if (type == TypePermissions) - return true; - m_project->refresh(m_options); - return true; -} - } // namespace Internal } // namespace GenericProjectManager diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h index c63614ed6f..3b14c0b11d 100644 --- a/src/plugins/genericprojectmanager/genericproject.h +++ b/src/plugins/genericprojectmanager/genericproject.h @@ -25,16 +25,7 @@ #pragma once -#include "genericprojectnodes.h" - #include <projectexplorer/project.h> -#include <projectexplorer/projectnodes.h> -#include <projectexplorer/target.h> -#include <projectexplorer/toolchain.h> -#include <projectexplorer/buildconfiguration.h> -#include <coreplugin/idocument.h> - -#include <QFuture> namespace CppTools { class CppProjectUpdater; } @@ -51,10 +42,6 @@ public: explicit GenericProject(const Utils::FileName &filename); ~GenericProject() override; - QString filesFileName() const; - QString includesFileName() const; - QString configFileName() const; - QString displayName() const override; QStringList files(FilesMode fileMode) const override; @@ -74,7 +61,6 @@ public: void refresh(RefreshOptions options); - QStringList projectIncludePaths() const; QStringList files() const; protected: @@ -108,19 +94,5 @@ private: ProjectExplorer::Target *m_activeTarget = nullptr; }; -class GenericProjectFile : public Core::IDocument -{ -public: - GenericProjectFile(GenericProject *parent, const Utils::FileName &fileName, - GenericProject::RefreshOptions options); - - ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const override; - bool reload(QString *errorString, ReloadFlag flag, ChangeType type) override; - -private: - GenericProject *m_project; - GenericProject::RefreshOptions m_options; -}; - } // namespace Internal } // namespace GenericProjectManager diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.pro b/src/plugins/genericprojectmanager/genericprojectmanager.pro index b4a8cf0631..ba64569783 100644 --- a/src/plugins/genericprojectmanager/genericprojectmanager.pro +++ b/src/plugins/genericprojectmanager/genericprojectmanager.pro @@ -3,20 +3,20 @@ include(../../qtcreatorplugin.pri) HEADERS = genericproject.h \ genericprojectplugin.h \ genericprojectconstants.h \ - genericprojectnodes.h \ genericprojectwizard.h \ genericprojectfileseditor.h \ genericmakestep.h \ genericbuildconfiguration.h \ filesselectionwizardpage.h + SOURCES = genericproject.cpp \ genericprojectplugin.cpp \ - genericprojectnodes.cpp \ genericprojectwizard.cpp \ genericprojectfileseditor.cpp \ genericmakestep.cpp \ genericbuildconfiguration.cpp \ filesselectionwizardpage.cpp + FORMS += genericmakestep.ui equals(TEST, 1) { diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.qbs b/src/plugins/genericprojectmanager/genericprojectmanager.qbs index 74fc022ec2..be30ddffad 100644 --- a/src/plugins/genericprojectmanager/genericprojectmanager.qbs +++ b/src/plugins/genericprojectmanager/genericprojectmanager.qbs @@ -30,8 +30,6 @@ QtcPlugin { "genericprojectconstants.h", "genericprojectfileseditor.cpp", "genericprojectfileseditor.h", - "genericprojectnodes.cpp", - "genericprojectnodes.h", "genericprojectplugin.cpp", "genericprojectplugin.h", "genericprojectwizard.cpp", diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.cpp b/src/plugins/genericprojectmanager/genericprojectnodes.cpp deleted file mode 100644 index bdd7b71cdf..0000000000 --- a/src/plugins/genericprojectmanager/genericprojectnodes.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "genericprojectnodes.h" -#include "genericproject.h" - -#include <coreplugin/idocument.h> -#include <projectexplorer/projectexplorer.h> - -#include <utils/algorithm.h> -#include <utils/fileutils.h> - -#include <QFileInfo> - -using namespace ProjectExplorer; - -namespace GenericProjectManager { -namespace Internal { - -GenericProjectNode::GenericProjectNode(GenericProject *project) : - ProjectNode(project->projectDirectory()), - m_project(project) -{ - setDisplayName(project->projectFilePath().toFileInfo().completeBaseName()); -} - -QHash<QString, QStringList> sortFilesIntoPaths(const QString &base, const QSet<QString> &files) -{ - QHash<QString, QStringList> filesInPath; - const QDir baseDir(base); - - foreach (const QString &absoluteFileName, files) { - QFileInfo fileInfo(absoluteFileName); - Utils::FileName absoluteFilePath = Utils::FileName::fromString(fileInfo.path()); - QString relativeFilePath; - - if (absoluteFilePath.isChildOf(baseDir)) { - relativeFilePath = absoluteFilePath.relativeChildPath(Utils::FileName::fromString(base)).toString(); - } else { - // `file' is not part of the project. - relativeFilePath = baseDir.relativeFilePath(absoluteFilePath.toString()); - if (relativeFilePath.endsWith('/')) - relativeFilePath.chop(1); - } - - if (relativeFilePath == ".") - relativeFilePath.clear(); - - filesInPath[relativeFilePath].append(absoluteFileName); - } - return filesInPath; -} - -bool GenericProjectNode::showInSimpleTree() const -{ - return true; -} - -QList<ProjectAction> GenericProjectNode::supportedActions(Node *node) const -{ - Q_UNUSED(node); - return { - AddNewFile, - AddExistingFile, - AddExistingDirectory, - RemoveFile, - Rename - }; -} - -bool GenericProjectNode::addFiles(const QStringList &filePaths, QStringList *notAdded) -{ - Q_UNUSED(notAdded) - - return m_project->addFiles(filePaths); -} - -bool GenericProjectNode::removeFiles(const QStringList &filePaths, QStringList *notRemoved) -{ - Q_UNUSED(notRemoved) - - return m_project->removeFiles(filePaths); -} - -bool GenericProjectNode::renameFile(const QString &filePath, const QString &newFilePath) -{ - return m_project->renameFile(filePath, newFilePath); -} - -} // namespace Internal -} // namespace GenericProjectManager diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.h b/src/plugins/genericprojectmanager/genericprojectnodes.h deleted file mode 100644 index 3c51d75fa4..0000000000 --- a/src/plugins/genericprojectmanager/genericprojectnodes.h +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include <projectexplorer/projectnodes.h> - -#include <QStringList> -#include <QHash> -#include <QSet> - -namespace Core { class IDocument; } - -namespace GenericProjectManager { -namespace Internal { - -class GenericProject; - -class GenericProjectNode : public ProjectExplorer::ProjectNode -{ -public: - explicit GenericProjectNode(GenericProject *project); - - bool showInSimpleTree() const override; - - QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override; - - bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0) override; - bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0) override; - bool renameFile(const QString &filePath, const QString &newFilePath) override; - -private: - GenericProject *const m_project; -}; - -} // namespace Internal -} // namespace GenericProjectManager |