aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/genericprojectmanager
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2023-11-20 14:57:22 +0100
committerhjk <hjk@qt.io>2023-11-21 08:46:22 +0000
commit5a3261f15ad4a010e685211b49d6ec7559c0bc77 (patch)
treea8d3c6c2385250f026577d2ed1fb75cd118e2c53 /src/plugins/genericprojectmanager
parent50b9e601b0305253d5303fb49ea7b910d767d6d1 (diff)
GenericProject: Code cosmetics
Compactify genericprojectwizard.cpp a bit. Also, rename GenericProjectWizard to GenericProjectWizardFactory and GenericProjectWizardDialog to GenericProjectWizard. That's what they are. Change-Id: I9a7ac55b047cc9e40cb0c4f7f25bc6239686bf99 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Diffstat (limited to 'src/plugins/genericprojectmanager')
-rw-r--r--src/plugins/genericprojectmanager/genericprojectwizard.cpp382
1 files changed, 176 insertions, 206 deletions
diff --git a/src/plugins/genericprojectmanager/genericprojectwizard.cpp b/src/plugins/genericprojectmanager/genericprojectwizard.cpp
index 02a1d29b0cb..ae7e421c293 100644
--- a/src/plugins/genericprojectmanager/genericprojectwizard.cpp
+++ b/src/plugins/genericprojectmanager/genericprojectwizard.cpp
@@ -24,9 +24,7 @@
#include <QDebug>
#include <QDir>
#include <QFileInfo>
-#include <QPainter>
#include <QPixmap>
-#include <QStyle>
#include <QVBoxLayout>
#include <QWizardPage>
@@ -40,267 +38,239 @@ const char ConfigFileTemplate[] =
"// Add predefined macros for your project here. For example:\n"
"// #define THE_ANSWER 42\n";
+class GenericProjectWizard;
-class GenericProjectWizardDialog;
-
-class FilesSelectionWizardPage : public QWizardPage
+class FilesSelectionWizardPage final : public QWizardPage
{
public:
- FilesSelectionWizardPage(GenericProjectWizardDialog *genericProjectWizard, QWidget *parent = nullptr);
-
- bool isComplete() const override;
- void initializePage() override;
- void cleanupPage() override;
- FilePaths selectedFiles() const;
- FilePaths selectedPaths() const;
-
-private:
- GenericProjectWizardDialog *m_genericProjectWizardDialog;
- ProjectExplorer::SelectableFilesWidget *m_filesWidget;
-};
+ explicit FilesSelectionWizardPage(GenericProjectWizard *genericProjectWizard)
+ : m_genericProjectWizardDialog(genericProjectWizard),
+ m_filesWidget(new SelectableFilesWidget(this))
+ {
+ auto layout = new QVBoxLayout(this);
+
+ layout->addWidget(m_filesWidget);
+ m_filesWidget->enableFilterHistoryCompletion
+ (ProjectExplorer::Constants::ADD_FILES_DIALOG_FILTER_HISTORY_KEY);
+ m_filesWidget->setBaseDirEditable(false);
+ connect(m_filesWidget, &SelectableFilesWidget::selectedFilesChanged,
+ this, &FilesSelectionWizardPage::completeChanged);
-FilesSelectionWizardPage::FilesSelectionWizardPage(GenericProjectWizardDialog *genericProjectWizard,
- QWidget *parent) :
- QWizardPage(parent),
- m_genericProjectWizardDialog(genericProjectWizard),
- m_filesWidget(new ProjectExplorer::SelectableFilesWidget(this))
-{
- auto layout = new QVBoxLayout(this);
+ setProperty(SHORT_TITLE_PROPERTY, Tr::tr("Files"));
+ }
- layout->addWidget(m_filesWidget);
- m_filesWidget->enableFilterHistoryCompletion
- (ProjectExplorer::Constants::ADD_FILES_DIALOG_FILTER_HISTORY_KEY);
- m_filesWidget->setBaseDirEditable(false);
- connect(m_filesWidget, &ProjectExplorer::SelectableFilesWidget::selectedFilesChanged,
- this, &FilesSelectionWizardPage::completeChanged);
+ bool isComplete() const final
+ {
+ return m_filesWidget->hasFilesSelected();
+ }
- setProperty(Utils::SHORT_TITLE_PROPERTY, Tr::tr("Files"));
-}
+ void initializePage() final;
-void FilesSelectionWizardPage::cleanupPage()
-{
- m_filesWidget->cancelParsing();
-}
+ void cleanupPage() final
+ {
+ m_filesWidget->cancelParsing();
+ }
-bool FilesSelectionWizardPage::isComplete() const
-{
- return m_filesWidget->hasFilesSelected();
-}
+ FilePaths selectedFiles() const
+ {
+ return m_filesWidget->selectedFiles();
+ }
-Utils::FilePaths FilesSelectionWizardPage::selectedPaths() const
-{
- return m_filesWidget->selectedPaths();
-}
+ FilePaths selectedPaths() const
+ {
+ return m_filesWidget->selectedPaths();
+ }
-Utils::FilePaths FilesSelectionWizardPage::selectedFiles() const
-{
- return m_filesWidget->selectedFiles();
-}
+private:
+ GenericProjectWizard *m_genericProjectWizardDialog;
+ SelectableFilesWidget *m_filesWidget;
+};
//////////////////////////////////////////////////////////////////////////////
//
-// GenericProjectWizardDialog
+// GenericProjectWizard
//
//////////////////////////////////////////////////////////////////////////////
-class GenericProjectWizardDialog : public Core::BaseFileWizard
+class GenericProjectWizard final : public BaseFileWizard
{
Q_OBJECT
public:
- explicit GenericProjectWizardDialog(const Core::BaseFileWizardFactory *factory, QWidget *parent = nullptr);
-
- Utils::FilePath filePath() const;
- void setFilePath(const Utils::FilePath &path);
- Utils::FilePaths selectedFiles() const;
- Utils::FilePaths selectedPaths() const;
-
- QString projectName() const;
-
- Utils::FileWizardPage *m_firstPage;
- FilesSelectionWizardPage *m_secondPage;
-};
+ GenericProjectWizard(const BaseFileWizardFactory *factory, QWidget *parent)
+ : BaseFileWizard(factory, QVariantMap(), parent)
+ {
+ setWindowTitle(Tr::tr("Import Existing Project"));
+
+ // first page
+ m_firstPage = new FileWizardPage;
+ m_firstPage->setTitle(Tr::tr("Project Name and Location"));
+ m_firstPage->setFileNameLabel(Tr::tr("Project name:"));
+ m_firstPage->setPathLabel(Tr::tr("Location:"));
+ addPage(m_firstPage);
+
+ // second page
+ m_secondPage = new FilesSelectionWizardPage(this);
+ m_secondPage->setTitle(Tr::tr("File Selection"));
+ addPage(m_secondPage);
+ }
-GenericProjectWizardDialog::GenericProjectWizardDialog(const Core::BaseFileWizardFactory *factory,
- QWidget *parent) :
- Core::BaseFileWizard(factory, QVariantMap(), parent)
-{
- setWindowTitle(Tr::tr("Import Existing Project"));
-
- // first page
- m_firstPage = new Utils::FileWizardPage;
- m_firstPage->setTitle(Tr::tr("Project Name and Location"));
- m_firstPage->setFileNameLabel(Tr::tr("Project name:"));
- m_firstPage->setPathLabel(Tr::tr("Location:"));
- addPage(m_firstPage);
-
- // second page
- m_secondPage = new FilesSelectionWizardPage(this);
- m_secondPage->setTitle(Tr::tr("File Selection"));
- addPage(m_secondPage);
-}
+ FilePath filePath() const
+ {
+ return m_firstPage->filePath();
+ }
-FilePath GenericProjectWizardDialog::filePath() const
-{
- return m_firstPage->filePath();
-}
+ void setFilePath(const FilePath &path)
+ {
+ m_firstPage->setFilePath(path);
+ }
-FilePaths GenericProjectWizardDialog::selectedPaths() const
-{
- return m_secondPage->selectedPaths();
-}
+ FilePaths selectedFiles() const
+ {
+ return m_secondPage->selectedFiles();
+ }
-FilePaths GenericProjectWizardDialog::selectedFiles() const
-{
- return m_secondPage->selectedFiles();
-}
+ FilePaths selectedPaths() const
+ {
+ return m_secondPage->selectedPaths();
+ }
-void GenericProjectWizardDialog::setFilePath(const FilePath &path)
-{
- m_firstPage->setFilePath(path);
-}
+ QString projectName() const
+ {
+ return m_firstPage->fileName();
+ }
-QString GenericProjectWizardDialog::projectName() const
-{
- return m_firstPage->fileName();
-}
+ FileWizardPage *m_firstPage;
+ FilesSelectionWizardPage *m_secondPage;
+};
//////////////////////////////////////////////////////////////////////////////
//
-// GenericProjectWizard
+// GenericProjectWizardFactory
//
//////////////////////////////////////////////////////////////////////////////
-class GenericProjectWizard : public Core::BaseFileWizardFactory
+class GenericProjectWizardFactory final : public BaseFileWizardFactory
{
Q_OBJECT
public:
- GenericProjectWizard();
+ GenericProjectWizardFactory()
+ {
+ setSupportedProjectTypes({Constants::GENERICPROJECT_ID});
+ setIcon(ProjectExplorer::Icons::WIZARD_IMPORT_AS_PROJECT.icon());
+ setDisplayName(Tr::tr("Import Existing Project"));
+ setId("Z.Makefile");
+ setDescription(
+ Tr::tr("Imports existing projects that do not use qmake, CMake, Qbs, Meson, or Autotools. "
+ "This allows you to use %1 as a code editor.")
+ .arg(QGuiApplication::applicationDisplayName()));
+ setCategory(QLatin1String(ProjectExplorer::Constants::IMPORT_WIZARD_CATEGORY));
+ setDisplayCategory(QLatin1String(ProjectExplorer::Constants::IMPORT_WIZARD_CATEGORY_DISPLAY));
+ setFlags(IWizardFactory::PlatformIndependent);
+ }
protected:
- Core::BaseFileWizard *create(QWidget *parent, const Core::WizardDialogParameters &parameters) const override;
- Core::GeneratedFiles generateFiles(const QWizard *w, QString *errorMessage) const override;
- bool postGenerateFiles(const QWizard *w, const Core::GeneratedFiles &l,
- QString *errorMessage) const override;
-};
-
-GenericProjectWizard::GenericProjectWizard()
-{
- setSupportedProjectTypes({Constants::GENERICPROJECT_ID});
- setIcon(ProjectExplorer::Icons::WIZARD_IMPORT_AS_PROJECT.icon());
- setDisplayName(Tr::tr("Import Existing Project"));
- setId("Z.Makefile");
- setDescription(
- Tr::tr("Imports existing projects that do not use qmake, CMake, Qbs, Meson, or Autotools. "
- "This allows you to use %1 as a code editor.")
- .arg(QGuiApplication::applicationDisplayName()));
- setCategory(QLatin1String(ProjectExplorer::Constants::IMPORT_WIZARD_CATEGORY));
- setDisplayCategory(QLatin1String(ProjectExplorer::Constants::IMPORT_WIZARD_CATEGORY_DISPLAY));
- setFlags(Core::IWizardFactory::PlatformIndependent);
-}
-
-Core::BaseFileWizard *GenericProjectWizard::create(QWidget *parent,
- const Core::WizardDialogParameters &parameters) const
-{
- auto wizard = new GenericProjectWizardDialog(this, parent);
- wizard->setFilePath(parameters.defaultPath());
- const QList<QWizardPage *> pages = wizard->extensionPages();
- for (QWizardPage *p : pages)
- wizard->addPage(p);
-
- return wizard;
-}
+ BaseFileWizard *create(QWidget *parent, const WizardDialogParameters &parameters) const final
+ {
+ auto wizard = new GenericProjectWizard(this, parent);
+ wizard->setFilePath(parameters.defaultPath());
+ const QList<QWizardPage *> pages = wizard->extensionPages();
+ for (QWizardPage *p : pages)
+ wizard->addPage(p);
+
+ return wizard;
+ }
-Core::GeneratedFiles GenericProjectWizard::generateFiles(const QWizard *w,
- QString *errorMessage) const
-{
- Q_UNUSED(errorMessage)
-
- auto wizard = qobject_cast<const GenericProjectWizardDialog *>(w);
- const FilePath projectPath = wizard->filePath();
- const QString projectName = wizard->projectName();
- const FilePath creatorFileName = projectPath.pathAppended(projectName + ".creator");
- const FilePath filesFileName = projectPath.pathAppended(projectName + ".files");
- const FilePath includesFileName = projectPath.pathAppended(projectName + ".includes");
- const FilePath configFileName = projectPath.pathAppended(projectName + ".config");
- const FilePath cxxflagsFileName = projectPath.pathAppended(projectName + ".cxxflags");
- const FilePath cflagsFileName = projectPath.pathAppended(projectName + ".cflags");
- const QStringList paths = Utils::transform(wizard->selectedPaths(), &Utils::FilePath::toString);
-
- Utils::MimeType headerTy = Utils::mimeTypeForName(QLatin1String("text/x-chdr"));
-
- QStringList nameFilters = headerTy.globPatterns();
-
- QStringList includePaths;
- const QDir dir(projectPath.toString());
- for (const QString &path : paths) {
- QFileInfo fileInfo(path);
- if (fileInfo.fileName() != "include")
- continue;
- QDir thisDir(fileInfo.absoluteFilePath());
-
- if (! thisDir.entryList(nameFilters, QDir::Files).isEmpty()) {
- QString relative = dir.relativeFilePath(path);
- if (relative.isEmpty())
- relative = QLatin1Char('.');
- includePaths.append(relative);
+ GeneratedFiles generateFiles(const QWizard *w, QString *errorMessage) const final
+ {
+ Q_UNUSED(errorMessage)
+
+ auto wizard = qobject_cast<const GenericProjectWizard *>(w);
+ const FilePath projectPath = wizard->filePath();
+ const QString projectName = wizard->projectName();
+ const FilePath creatorFileName = projectPath.pathAppended(projectName + ".creator");
+ const FilePath filesFileName = projectPath.pathAppended(projectName + ".files");
+ const FilePath includesFileName = projectPath.pathAppended(projectName + ".includes");
+ const FilePath configFileName = projectPath.pathAppended(projectName + ".config");
+ const FilePath cxxflagsFileName = projectPath.pathAppended(projectName + ".cxxflags");
+ const FilePath cflagsFileName = projectPath.pathAppended(projectName + ".cflags");
+ const QStringList paths = Utils::transform(wizard->selectedPaths(), &FilePath::toString);
+
+ MimeType headerTy = Utils::mimeTypeForName(QLatin1String("text/x-chdr"));
+
+ QStringList nameFilters = headerTy.globPatterns();
+
+ QStringList includePaths;
+ const QDir dir(projectPath.toString());
+ for (const QString &path : paths) {
+ QFileInfo fileInfo(path);
+ if (fileInfo.fileName() != "include")
+ continue;
+ QDir thisDir(fileInfo.absoluteFilePath());
+
+ if (! thisDir.entryList(nameFilters, QDir::Files).isEmpty()) {
+ QString relative = dir.relativeFilePath(path);
+ if (relative.isEmpty())
+ relative = QLatin1Char('.');
+ includePaths.append(relative);
+ }
}
- }
- includePaths.append(QString()); // ensure newline at EOF
+ includePaths.append(QString()); // ensure newline at EOF
- Core::GeneratedFile generatedCreatorFile(creatorFileName);
- generatedCreatorFile.setContents(QLatin1String("[General]\n"));
- generatedCreatorFile.setAttributes(Core::GeneratedFile::OpenProjectAttribute);
+ GeneratedFile generatedCreatorFile(creatorFileName);
+ generatedCreatorFile.setContents(QLatin1String("[General]\n"));
+ generatedCreatorFile.setAttributes(GeneratedFile::OpenProjectAttribute);
- QStringList sources = Utils::transform(wizard->selectedFiles(), &Utils::FilePath::toString);
- for (int i = 0; i < sources.length(); ++i)
- sources[i] = dir.relativeFilePath(sources[i]);
- Utils::sort(sources);
- sources.append(QString()); // ensure newline at EOF
+ QStringList sources = Utils::transform(wizard->selectedFiles(), &FilePath::toString);
+ for (int i = 0; i < sources.length(); ++i)
+ sources[i] = dir.relativeFilePath(sources[i]);
+ Utils::sort(sources);
+ sources.append(QString()); // ensure newline at EOF
- Core::GeneratedFile generatedFilesFile(filesFileName);
- generatedFilesFile.setContents(sources.join(QLatin1Char('\n')));
+ GeneratedFile generatedFilesFile(filesFileName);
+ generatedFilesFile.setContents(sources.join(QLatin1Char('\n')));
- Core::GeneratedFile generatedIncludesFile(includesFileName);
- generatedIncludesFile.setContents(includePaths.join(QLatin1Char('\n')));
+ GeneratedFile generatedIncludesFile(includesFileName);
+ generatedIncludesFile.setContents(includePaths.join(QLatin1Char('\n')));
- Core::GeneratedFile generatedConfigFile(configFileName);
- generatedConfigFile.setContents(QLatin1String(ConfigFileTemplate));
+ GeneratedFile generatedConfigFile(configFileName);
+ generatedConfigFile.setContents(QLatin1String(ConfigFileTemplate));
- Core::GeneratedFile generatedCxxFlagsFile(cxxflagsFileName);
- generatedCxxFlagsFile.setContents(
- QLatin1String(Constants::GENERICPROJECT_CXXFLAGS_FILE_TEMPLATE));
+ GeneratedFile generatedCxxFlagsFile(cxxflagsFileName);
+ generatedCxxFlagsFile.setContents(
+ QLatin1String(Constants::GENERICPROJECT_CXXFLAGS_FILE_TEMPLATE));
- Core::GeneratedFile generatedCFlagsFile(cflagsFileName);
- generatedCFlagsFile.setContents(QLatin1String(Constants::GENERICPROJECT_CFLAGS_FILE_TEMPLATE));
+ GeneratedFile generatedCFlagsFile(cflagsFileName);
+ generatedCFlagsFile.setContents(QLatin1String(Constants::GENERICPROJECT_CFLAGS_FILE_TEMPLATE));
- Core::GeneratedFiles files;
- files.append(generatedFilesFile);
- files.append(generatedIncludesFile);
- files.append(generatedConfigFile);
- files.append(generatedCreatorFile);
- files.append(generatedCxxFlagsFile);
- files.append(generatedCFlagsFile);
+ GeneratedFiles files;
+ files.append(generatedFilesFile);
+ files.append(generatedIncludesFile);
+ files.append(generatedConfigFile);
+ files.append(generatedCreatorFile);
+ files.append(generatedCxxFlagsFile);
+ files.append(generatedCFlagsFile);
- return files;
-}
+ return files;
+ }
-bool GenericProjectWizard::postGenerateFiles(const QWizard *w, const Core::GeneratedFiles &l,
- QString *errorMessage) const
-{
- Q_UNUSED(w)
- return ProjectExplorer::CustomProjectWizard::postGenerateOpen(l, errorMessage);
-}
+ bool postGenerateFiles(const QWizard *w, const GeneratedFiles &l,
+ QString *errorMessage) const final
+ {
+ Q_UNUSED(w)
+ return CustomProjectWizard::postGenerateOpen(l, errorMessage);
+ }
+};
void FilesSelectionWizardPage::initializePage()
{
- m_filesWidget->resetModel(m_genericProjectWizardDialog->filePath(), Utils::FilePaths());
+ m_filesWidget->resetModel(m_genericProjectWizardDialog->filePath(), FilePaths());
}
void setupGenericProjectWizard()
{
- IWizardFactory::registerFactoryCreator([] { return new GenericProjectWizard; });
+ IWizardFactory::registerFactoryCreator([] { return new GenericProjectWizardFactory; });
}
} // GenericProjectManager::Internal