Commit 1da94d5f authored by Tobias Hunger's avatar Tobias Hunger

QMakeProjectManager: Replace consoleappwizard with a Json wizard

Change-Id: If05743ad530ee7d589fde324202ffb9c2750a669
Reviewed-by: default avatarAlessandro Portale <alessandro.portale@theqtcompany.com>
parent 3d0b690d
QT += core
QT -= gui
TARGET = %{ProjectName}
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += %{MainCppName}
%{Cpp:LicenseTemplate}\
%{JS: QtSupport.qtIncludes([ 'QtCore/QCoreApplication' ],
[ 'QtCore/QCoreApplication' ]) }\
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
return a.exec();
}
{
"version": 1,
"kind": "project",
"id": "E.QtCore",
"category": "F.Application",
"trDescription": "Creates a project containing a single main.cpp file with a stub implementation.\n\nPreselects a desktop Qt for building the application if available.",
"trDisplayName": "Qt Console Application",
"trDisplayCategory": "Application",
"icon": "../../../global/consoleapplication.png",
"featuresRequired": [ "Plugin.QmakeProjectManager", "QtSupport.Wizards.FeatureQt" ],
"options":
[
{ "key": "ProFileName", "value": "%{JS: Util.fileName('%{ProjectDirectory}/%{ProjectName}', 'pro')}" },
{ "key": "IsTopLevelProject", "value": "%{JS: !'%{Exists:ProjectExplorer.Profile.Ids}' }" },
{ "key": "MainCppName", "value": "%{JS: 'main.' + Util.preferredSuffix('text/x-c++src') }" }
],
"pages":
[
{
"trDisplayName": "Project Location",
"trShortTitle": "Location",
"typeId": "Project",
"data": { "trDescription": "This wizard creates a simple Qt-based console application." }
},
{
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
"enabled": "%{IsTopLevelProject}",
"data": { "projectFilePath": "%{ProFileName}" }
},
{
"trDisplayName": "Project Management",
"trShortTitle": "Summary",
"typeId": "Summary"
}
],
"generators":
[
{
"typeId": "File",
"data":
[
{
"source": "file.pro",
"target": "%{ProFileName}",
"openAsProject": true
},
{
"source": "main.cpp",
"target": "%{MainCppName}",
"openInEditor": true
},
{
"source": "../git.ignore",
"target": ".gitignore",
"condition": "%{JS: ( %{IsTopLevelProject} && '%{VersionControl}' === 'G.Git' )}"
}
]
}
]
}
......@@ -19,8 +19,6 @@ HEADERS += \
profilehoverhandler.h \
wizards/qtprojectparameters.h \
wizards/guiappwizard.h \
wizards/consoleappwizard.h \
wizards/consoleappwizarddialog.h \
wizards/libraryparameters.h \
wizards/librarywizard.h \
wizards/librarywizarddialog.h \
......@@ -63,8 +61,6 @@ SOURCES += \
profilehoverhandler.cpp \
wizards/qtprojectparameters.cpp \
wizards/guiappwizard.cpp \
wizards/consoleappwizard.cpp \
wizards/consoleappwizarddialog.cpp \
wizards/libraryparameters.cpp \
wizards/librarywizard.cpp \
wizards/librarywizarddialog.cpp \
......
......@@ -85,8 +85,6 @@ QtcPlugin {
name: "Wizards"
prefix: "wizards/"
files: [
"consoleappwizard.cpp", "consoleappwizard.h",
"consoleappwizarddialog.cpp", "consoleappwizarddialog.h",
"filespage.cpp", "filespage.h",
"guiappwizard.cpp", "guiappwizard.h",
"guiappwizarddialog.cpp", "guiappwizarddialog.h",
......
......@@ -37,7 +37,6 @@
#include "makestep.h"
#include "qmakebuildconfiguration.h"
#include "desktopqmakerunconfiguration.h"
#include "wizards/consoleappwizard.h"
#include "wizards/guiappwizard.h"
#include "wizards/librarywizard.h"
#include "wizards/testwizard.h"
......@@ -108,7 +107,6 @@ bool QmakeProjectManagerPlugin::initialize(const QStringList &arguments, QString
addAutoReleasedObject(new SubdirsProjectWizard);
addAutoReleasedObject(new GuiAppWizard);
addAutoReleasedObject(new ConsoleAppWizard);
addAutoReleasedObject(new LibraryWizard);
addAutoReleasedObject(new TestWizard);
addAutoReleasedObject(new CustomWidgetWizard);
......
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://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 http://www.qt.io/terms-conditions. For further information
** use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
#include "consoleappwizard.h"
#include "consoleappwizarddialog.h"
#include <projectexplorer/projectexplorerconstants.h>
#include <cpptools/abstracteditorsupport.h>
#include <qtsupport/qtsupportconstants.h>
#include <utils/fileutils.h>
#include <QCoreApplication>
#include <QTextStream>
static const char mainCppC[] =
"#include <QCoreApplication>\n\n"
"int main(int argc, char *argv[])\n"
"{\n"
" QCoreApplication a(argc, argv);\n\n"
" return a.exec();\n"
"}\n";
static const char mainSourceFileC[] = "main";
namespace QmakeProjectManager {
namespace Internal {
ConsoleAppWizard::ConsoleAppWizard()
{
setId(QLatin1String("E.Qt4Core"));
setCategory(QLatin1String(ProjectExplorer::Constants::QT_APPLICATION_WIZARD_CATEGORY));
setDisplayCategory(QCoreApplication::translate("ProjectExplorer",
ProjectExplorer::Constants::QT_APPLICATION_WIZARD_CATEGORY_DISPLAY));
setDisplayName(tr("Qt Console Application"));
setDescription(tr("Creates a project containing a single main.cpp file with a stub implementation.\n\n"
"Preselects a desktop Qt for building the application if available."));
setIcon(QIcon(QLatin1String(":/wizards/images/console.png")));
setRequiredFeatures(Core::Feature(QtSupport::Constants::FEATURE_QT_CONSOLE));
}
Core::BaseFileWizard *ConsoleAppWizard::create(QWidget *parent, const Core::WizardDialogParameters &parameters) const
{
ConsoleAppWizardDialog *dialog = new ConsoleAppWizardDialog(displayName(), icon(),
showModulesPageForApplications(), parent, parameters);
dialog->setProjectName(ConsoleAppWizardDialog::uniqueProjectName(parameters.defaultPath()));
return dialog;
}
Core::GeneratedFiles
ConsoleAppWizard::generateFiles(const QWizard *w,
QString * /*errorMessage*/) const
{
const ConsoleAppWizardDialog *wizard = qobject_cast< const ConsoleAppWizardDialog *>(w);
const QtProjectParameters params = wizard->parameters();
const QString projectPath = params.projectPath();
// Create files: Source
const QString sourceFileName = Core::BaseFileWizardFactory::buildFileName(projectPath, QLatin1String(mainSourceFileC), sourceSuffix());
Core::GeneratedFile source(sourceFileName);
source.setContents(CppTools::AbstractEditorSupport::licenseTemplate(sourceFileName) + QLatin1String(mainCppC));
source.setAttributes(Core::GeneratedFile::OpenEditorAttribute);
// Create files: Profile
const QString profileName = Core::BaseFileWizardFactory::buildFileName(projectPath, params.fileName, profileSuffix());
Core::GeneratedFile profile(profileName);
profile.setAttributes(Core::GeneratedFile::OpenProjectAttribute);
QString contents;
{
QTextStream proStr(&contents);
QtProjectParameters::writeProFileHeader(proStr);
params.writeProFile(proStr);
proStr << "\n\nSOURCES += " << Utils::FileName::fromString(sourceFileName).fileName() << '\n';
}
profile.setContents(contents);
return Core::GeneratedFiles() << source << profile;
}
} // namespace Internal
} // namespace QmakeProjectManager
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://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 http://www.qt.io/terms-conditions. For further information
** use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
#ifndef CONSOLEAPPWIZARD_H
#define CONSOLEAPPWIZARD_H
#include "qtwizard.h"
namespace QmakeProjectManager {
namespace Internal {
class ModulesPage;
class ConsoleAppWizard : public QtWizard
{
Q_OBJECT
public:
ConsoleAppWizard();
protected:
Core::BaseFileWizard *create(QWidget *parent, const Core::WizardDialogParameters &parameters) const;
Core::GeneratedFiles generateFiles(const QWizard *w, QString *errorMessage) const;
};
} // namespace Internal
} // namespace QmakeProjectManager
#endif // CONSOLEAPPWIZARD_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://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 http://www.qt.io/terms-conditions. For further information
** use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
#include "consoleappwizarddialog.h"
#include <projectexplorer/projectexplorerconstants.h>
#include <QDebug>
namespace QmakeProjectManager {
namespace Internal {
ConsoleAppWizardDialog::ConsoleAppWizardDialog(const QString &templateName,
const QIcon &icon,
bool showModulesPage,
QWidget *parent, const Core::WizardDialogParameters &parameters) :
BaseQmakeProjectWizardDialog(showModulesPage, parent, parameters)
{
setWindowIcon(icon);
setWindowTitle(templateName);
setSelectedModules(QLatin1String("core"));
setDeselectedModules(QLatin1String("gui"));
setIntroDescription(tr("This wizard generates a Qt Console Application "
"project. The application derives from QCoreApplication and does not "
"provide a GUI."));
addModulesPage();
if (!parameters.extraValues().contains(QLatin1String(ProjectExplorer::Constants::PROJECT_KIT_IDS)))
addTargetSetupPage();
addExtensionPages(parameters.extensionPages());
}
QtProjectParameters ConsoleAppWizardDialog::parameters() const
{
QtProjectParameters rc;
rc.type = QtProjectParameters::ConsoleApp;
rc.fileName = projectName();
rc.path = path();
rc.selectedModules = selectedModulesList();
rc.deselectedModules = deselectedModulesList();
return rc;
}
} // namespace Internal
} // namespace QmakeProjectManager
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://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 http://www.qt.io/terms-conditions. For further information
** use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
#ifndef CONSOLEAPPWIZARDDIALOG_H
#define CONSOLEAPPWIZARDDIALOG_H
#include "qtwizard.h"
namespace QmakeProjectManager {
namespace Internal {
struct QtProjectParameters;
class ConsoleAppWizardDialog : public BaseQmakeProjectWizardDialog
{
Q_OBJECT
public:
explicit ConsoleAppWizardDialog(const QString &templateName,
const QIcon &icon,
bool showModulesPage,
QWidget *parent, const Core::WizardDialogParameters &parameters);
QtProjectParameters parameters() const;
};
} // namespace Internal
} // namespace QmakeProjectManager
#endif // CONSOLEAPPWIZARDDIALOG_H
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment