forked from qt-creator/qt-creator
Symbian: Remove support for S60 emulator
The Qt SDK never supported this, so remove it from Qt Creator. Change-Id: I1da9d658195083aa1b6f5d8119cc03c4984e8d77 Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
This commit is contained in:
@@ -3,15 +3,12 @@ SOURCES += $$PWD/s60manager.cpp \
|
||||
$$PWD/symbianideviceconfigwidget.cpp \
|
||||
$$PWD/symbianidevicefactory.cpp \
|
||||
$$PWD/sbsv2parser.cpp \
|
||||
$$PWD/winscwtoolchain.cpp \
|
||||
$$PWD/gccetoolchain.cpp \
|
||||
$$PWD/s60emulatorrunconfiguration.cpp \
|
||||
$$PWD/s60devicerunconfiguration.cpp \
|
||||
$$PWD/s60devicerunconfigurationwidget.cpp \
|
||||
$$PWD/rvcttoolchain.cpp \
|
||||
$$PWD/abldparser.cpp \
|
||||
$$PWD/rvctparser.cpp \
|
||||
$$PWD/winscwparser.cpp \
|
||||
$$PWD/s60createpackagestep.cpp \
|
||||
$$PWD/s60deploystep.cpp \
|
||||
$$PWD/s60createpackageparser.cpp \
|
||||
@@ -42,15 +39,12 @@ HEADERS += $$PWD/s60manager.h \
|
||||
$$PWD/symbianideviceconfigwidget.h \
|
||||
$$PWD/symbianidevicefactory.h \
|
||||
$$PWD/sbsv2parser.h \
|
||||
$$PWD/winscwtoolchain.h \
|
||||
$$PWD/gccetoolchain.h \
|
||||
$$PWD/s60emulatorrunconfiguration.h \
|
||||
$$PWD/s60devicerunconfiguration.h \
|
||||
$$PWD/s60devicerunconfigurationwidget.h \
|
||||
$$PWD/rvcttoolchain.h \
|
||||
$$PWD/abldparser.h \
|
||||
$$PWD/rvctparser.h \
|
||||
$$PWD/winscwparser.h \
|
||||
$$PWD/s60createpackagestep.h \
|
||||
$$PWD/s60deploystep.h \
|
||||
$$PWD/s60createpackageparser.h \
|
||||
@@ -79,7 +73,6 @@ HEADERS += $$PWD/s60manager.h \
|
||||
FORMS += $$PWD/s60createpackagestep.ui \
|
||||
$$PWD/s60certificatedetailsdialog.ui \
|
||||
$$PWD/rvcttoolchainconfigwidget.ui \
|
||||
$$PWD/winscwtoolchainconfigwidget.ui \
|
||||
$$PWD/s60publishingbuildsettingspageovi.ui \
|
||||
$$PWD/s60publishingresultspageovi.ui \
|
||||
$$PWD/s60publishingsissettingspageovi.ui
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
#include "symbianidevice.h"
|
||||
|
||||
#include "qt-s60/s60deployconfiguration.h"
|
||||
#include "qt-s60/s60emulatorrunconfiguration.h"
|
||||
#include "qt-s60/s60devicerunconfiguration.h"
|
||||
|
||||
#include <projectexplorer/customexecutablerunconfiguration.h>
|
||||
@@ -64,8 +63,6 @@ Qt4SymbianTarget::~Qt4SymbianTarget()
|
||||
|
||||
QString Qt4SymbianTarget::defaultDisplayName(const QString &id)
|
||||
{
|
||||
if (id == QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
|
||||
return QApplication::translate("Qt4ProjectManager::Qt4Target", "Symbian Emulator", "Qt4 Symbian Emulator target display name");
|
||||
if (id == QLatin1String(Constants::S60_DEVICE_TARGET_ID))
|
||||
return QApplication::translate("Qt4ProjectManager::Qt4Target", "Symbian Device", "Qt4 Symbian Device target display name");
|
||||
return QString();
|
||||
@@ -73,8 +70,6 @@ QString Qt4SymbianTarget::defaultDisplayName(const QString &id)
|
||||
|
||||
QIcon Qt4SymbianTarget::iconForId(const QString &id)
|
||||
{
|
||||
if (id == QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
|
||||
return QIcon(QLatin1String(":/projectexplorer/images/SymbianEmulator.png"));
|
||||
if (id == QLatin1String(Constants::S60_DEVICE_TARGET_ID))
|
||||
return QIcon(QLatin1String(":/projectexplorer/images/SymbianDevice.png"));
|
||||
return QIcon();
|
||||
@@ -85,26 +80,6 @@ ProjectExplorer::IBuildConfigurationFactory *Qt4SymbianTarget::buildConfiguratio
|
||||
return m_buildConfigurationFactory;
|
||||
}
|
||||
|
||||
QList<ProjectExplorer::ToolChain *> Qt4SymbianTarget::possibleToolChains(ProjectExplorer::BuildConfiguration *bc) const
|
||||
{
|
||||
QList<ProjectExplorer::ToolChain *> candidates = Qt4BaseTarget::possibleToolChains(bc);
|
||||
|
||||
QList<ProjectExplorer::ToolChain *> tmp;
|
||||
if (id() == QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) {
|
||||
foreach (ProjectExplorer::ToolChain *tc, candidates) {
|
||||
if (tc->id().startsWith(QLatin1String(Constants::WINSCW_TOOLCHAIN_ID)))
|
||||
tmp.append(tc);
|
||||
}
|
||||
} else if (id() == QLatin1String(Constants::S60_DEVICE_TARGET_ID)) {
|
||||
foreach (ProjectExplorer::ToolChain *tc, candidates) {
|
||||
if (!tc->id().startsWith(QLatin1String(Qt4ProjectManager::Constants::WINSCW_TOOLCHAIN_ID)))
|
||||
tmp.append(tc);
|
||||
}
|
||||
}
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
void Qt4SymbianTarget::createApplicationProFiles(bool reparse)
|
||||
{
|
||||
if (!reparse)
|
||||
@@ -116,15 +91,7 @@ void Qt4SymbianTarget::createApplicationProFiles(bool reparse)
|
||||
foreach (Qt4ProFileNode *pro, profiles)
|
||||
paths << pro->path();
|
||||
|
||||
if (id() == QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) {
|
||||
foreach (ProjectExplorer::RunConfiguration *rc, runConfigurations())
|
||||
if (S60EmulatorRunConfiguration *qt4rc = qobject_cast<S60EmulatorRunConfiguration *>(rc))
|
||||
paths.remove(qt4rc->proFilePath());
|
||||
|
||||
// Only add new runconfigurations if there are none.
|
||||
foreach (const QString &path, paths)
|
||||
addRunConfiguration(new S60EmulatorRunConfiguration(this, path));
|
||||
} else if (id() == QLatin1String(Constants::S60_DEVICE_TARGET_ID)) {
|
||||
if (id() == QLatin1String(Constants::S60_DEVICE_TARGET_ID)) {
|
||||
foreach (ProjectExplorer::RunConfiguration *rc, runConfigurations())
|
||||
if (S60DeviceRunConfiguration *qt4rc = qobject_cast<S60DeviceRunConfiguration *>(rc))
|
||||
paths.remove(qt4rc->proFilePath());
|
||||
@@ -144,11 +111,7 @@ QList<ProjectExplorer::RunConfiguration *> Qt4SymbianTarget::runConfigurationsFo
|
||||
{
|
||||
QList<ProjectExplorer::RunConfiguration *> result;
|
||||
foreach (ProjectExplorer::RunConfiguration *rc, runConfigurations()) {
|
||||
if (id() == QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) {
|
||||
if (S60EmulatorRunConfiguration * s60rc = qobject_cast<S60EmulatorRunConfiguration *>(rc))
|
||||
if (s60rc->proFilePath() == n->path())
|
||||
result << rc;
|
||||
} else if (id() == QLatin1String(Constants::S60_DEVICE_TARGET_ID)) {
|
||||
if (id() == QLatin1String(Constants::S60_DEVICE_TARGET_ID)) {
|
||||
if (S60DeviceRunConfiguration *s60rc = qobject_cast<S60DeviceRunConfiguration *>(rc))
|
||||
if (s60rc->proFilePath() == n->path())
|
||||
result << rc;
|
||||
|
||||
@@ -53,8 +53,6 @@ public:
|
||||
|
||||
ProjectExplorer::IBuildConfigurationFactory *buildConfigurationFactory() const;
|
||||
|
||||
QList<ProjectExplorer::ToolChain *> possibleToolChains(ProjectExplorer::BuildConfiguration *bc) const;
|
||||
|
||||
void createApplicationProFiles(bool reparse);
|
||||
virtual QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Node *n);
|
||||
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
|
||||
#include "qt-s60/s60deployconfiguration.h"
|
||||
#include "qt-s60/s60devicerunconfiguration.h"
|
||||
#include "qt-s60/s60emulatorrunconfiguration.h"
|
||||
#include "qt-s60/s60createpackagestep.h"
|
||||
#include "qt-s60/s60deploystep.h"
|
||||
#include "qt-s60/qt4symbiantarget.h"
|
||||
@@ -70,15 +69,13 @@ Qt4SymbianTargetFactory::~Qt4SymbianTargetFactory()
|
||||
|
||||
bool Qt4SymbianTargetFactory::supportsTargetId(const QString &id) const
|
||||
{
|
||||
return id == QLatin1String(Constants::S60_DEVICE_TARGET_ID)
|
||||
|| id == QLatin1String(Constants::S60_EMULATOR_TARGET_ID);
|
||||
return id == QLatin1String(Constants::S60_DEVICE_TARGET_ID);
|
||||
}
|
||||
|
||||
QStringList Qt4SymbianTargetFactory::supportedTargetIds() const
|
||||
{
|
||||
QStringList ids;
|
||||
ids << QLatin1String(Constants::S60_DEVICE_TARGET_ID)
|
||||
<< QLatin1String(Constants::S60_EMULATOR_TARGET_ID);
|
||||
ids << QLatin1String(Constants::S60_DEVICE_TARGET_ID);
|
||||
return ids;
|
||||
}
|
||||
|
||||
@@ -89,8 +86,6 @@ QString Qt4SymbianTargetFactory::displayNameForId(const QString &id) const
|
||||
|
||||
QIcon Qt4SymbianTargetFactory::iconForId(const QString &id) const
|
||||
{
|
||||
if (id == QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
|
||||
return QIcon(QLatin1String(":/projectexplorer/images/SymbianEmulator.png"));
|
||||
if (id == QLatin1String(Constants::S60_DEVICE_TARGET_ID))
|
||||
return QIcon(QLatin1String(":/projectexplorer/images/SymbianDevice.png"));
|
||||
return QIcon();
|
||||
@@ -164,21 +159,12 @@ QList<BuildConfigurationInfo> Qt4SymbianTargetFactory::availableBuildConfigurati
|
||||
const QtSupport::QtVersionNumber &maximumQtVersion,
|
||||
const Core::FeatureSet &requiredFeatures)
|
||||
{
|
||||
QList<BuildConfigurationInfo> infos
|
||||
= Qt4BaseTargetFactory::availableBuildConfigurations(id, proFilePath, minimumQtVersion, maximumQtVersion, requiredFeatures);
|
||||
if (id != QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
|
||||
return infos;
|
||||
// For emulator filter out all non debug builds
|
||||
QList<BuildConfigurationInfo> tmp;
|
||||
foreach (const BuildConfigurationInfo &info, infos)
|
||||
if (info.buildConfig & QtSupport::BaseQtVersion::DebugBuild)
|
||||
tmp << info;
|
||||
return tmp;
|
||||
return Qt4BaseTargetFactory::availableBuildConfigurations(id, proFilePath, minimumQtVersion, maximumQtVersion, requiredFeatures);
|
||||
}
|
||||
|
||||
bool Qt4SymbianTargetFactory::selectByDefault(const QString &id) const
|
||||
{
|
||||
return id != QLatin1String(Constants::S60_EMULATOR_TARGET_ID);
|
||||
return true;
|
||||
}
|
||||
|
||||
QSet<QString> Qt4SymbianTargetFactory::targetFeatures(const QString & /*id*/) const
|
||||
@@ -202,15 +188,8 @@ ProjectExplorer::Target *Qt4SymbianTargetFactory::create(ProjectExplorer::Projec
|
||||
QtSupport::BaseQtVersion::QmakeBuildConfigs config = qtVersion->defaultBuildConfig();
|
||||
|
||||
QList<BuildConfigurationInfo> infos;
|
||||
if (id != QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) {
|
||||
infos.append(BuildConfigurationInfo(qtVersion->uniqueId(), config, QString(), QString()));
|
||||
infos.append(BuildConfigurationInfo(qtVersion->uniqueId(), config ^ QtSupport::BaseQtVersion::DebugBuild, QString(), QString()));
|
||||
} else {
|
||||
if (config & QtSupport::BaseQtVersion::DebugBuild)
|
||||
infos.append(BuildConfigurationInfo(qtVersion->uniqueId(), config, QString(), QString()));
|
||||
else
|
||||
infos.append(BuildConfigurationInfo(qtVersion->uniqueId(), config ^ QtSupport::BaseQtVersion::DebugBuild, QString(), QString()));
|
||||
}
|
||||
|
||||
return create(parent, id, infos);
|
||||
}
|
||||
|
||||
@@ -1,413 +0,0 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
|
||||
**
|
||||
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
** If you have questions regarding the use of this file, please contact
|
||||
** Nokia at qt-info@nokia.com.
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "s60emulatorrunconfiguration.h"
|
||||
|
||||
#include "qt4project.h"
|
||||
#include "qt4target.h"
|
||||
#include "qt4nodes.h"
|
||||
#include "s60manager.h"
|
||||
#include "qt4symbiantarget.h"
|
||||
#include "qt4projectmanagerconstants.h"
|
||||
#include "qt4buildconfiguration.h"
|
||||
|
||||
#include <projectexplorer/projectexplorerconstants.h>
|
||||
|
||||
#include <utils/qtcassert.h>
|
||||
#include <utils/detailswidget.h>
|
||||
#include <qtsupport/qtoutputformatter.h>
|
||||
#include <qtsupport/baseqtversion.h>
|
||||
|
||||
#include <QLabel>
|
||||
#include <QVBoxLayout>
|
||||
#include <QFormLayout>
|
||||
|
||||
using namespace ProjectExplorer;
|
||||
using namespace Qt4ProjectManager;
|
||||
using namespace Qt4ProjectManager::Internal;
|
||||
|
||||
namespace {
|
||||
const char * const S60_EMULATOR_RC_ID("Qt4ProjectManager.S60EmulatorRunConfiguration");
|
||||
const char * const S60_EMULATOR_RC_PREFIX("Qt4ProjectManager.S60EmulatorRunConfiguration.");
|
||||
|
||||
const char * const PRO_FILE_KEY("Qt4ProjectManager.S60EmulatorRunConfiguration.ProFile");
|
||||
|
||||
QString pathFromId(const QString &id)
|
||||
{
|
||||
if (!id.startsWith(QLatin1String(S60_EMULATOR_RC_PREFIX)))
|
||||
return QString();
|
||||
return id.mid(QString::fromLatin1(S60_EMULATOR_RC_PREFIX).size());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// ======== S60EmulatorRunConfiguration
|
||||
|
||||
S60EmulatorRunConfiguration::S60EmulatorRunConfiguration(Qt4BaseTarget *parent, const QString &proFilePath) :
|
||||
RunConfiguration(parent, QLatin1String(S60_EMULATOR_RC_ID)),
|
||||
m_proFilePath(proFilePath),
|
||||
m_validParse(parent->qt4Project()->validParse(proFilePath)),
|
||||
m_parseInProgress(parent->qt4Project()->parseInProgress(proFilePath))
|
||||
{
|
||||
ctor();
|
||||
}
|
||||
|
||||
S60EmulatorRunConfiguration::S60EmulatorRunConfiguration(Qt4BaseTarget *parent, S60EmulatorRunConfiguration *source) :
|
||||
RunConfiguration(parent, source),
|
||||
m_proFilePath(source->m_proFilePath),
|
||||
m_validParse(source->m_validParse),
|
||||
m_parseInProgress(source->m_parseInProgress)
|
||||
{
|
||||
ctor();
|
||||
}
|
||||
|
||||
void S60EmulatorRunConfiguration::ctor()
|
||||
{
|
||||
if (!m_proFilePath.isEmpty())
|
||||
//: S60 emulator run configuration default display name, %1 is base pro-File name
|
||||
setDefaultDisplayName(tr("%1 in Symbian Emulator").arg(QFileInfo(m_proFilePath).completeBaseName()));
|
||||
else
|
||||
//: S60 emulator run configuration default display name (no pro-file name)
|
||||
setDefaultDisplayName(tr("Run on Symbian Emulator"));
|
||||
Qt4Project *pro = qt4Target()->qt4Project();
|
||||
connect(pro, SIGNAL(proFileUpdated(Qt4ProjectManager::Qt4ProFileNode*,bool,bool)),
|
||||
this, SLOT(proFileUpdate(Qt4ProjectManager::Qt4ProFileNode*,bool,bool)));
|
||||
}
|
||||
|
||||
|
||||
S60EmulatorRunConfiguration::~S60EmulatorRunConfiguration()
|
||||
{
|
||||
}
|
||||
|
||||
void S60EmulatorRunConfiguration::proFileUpdate(Qt4ProjectManager::Qt4ProFileNode *pro, bool success, bool parseInProgress)
|
||||
{
|
||||
if (m_proFilePath != pro->path())
|
||||
return;
|
||||
bool enabled = isEnabled();
|
||||
m_validParse = success;
|
||||
m_parseInProgress = parseInProgress;
|
||||
if (enabled != isEnabled()) {
|
||||
emit enabledChanged();
|
||||
}
|
||||
if (parseInProgress)
|
||||
emit targetInformationChanged();
|
||||
}
|
||||
|
||||
Qt4SymbianTarget *S60EmulatorRunConfiguration::qt4Target() const
|
||||
{
|
||||
return static_cast<Qt4SymbianTarget *>(target());
|
||||
}
|
||||
|
||||
bool S60EmulatorRunConfiguration::isEnabled() const
|
||||
{
|
||||
return m_validParse && !m_parseInProgress;
|
||||
}
|
||||
|
||||
QString S60EmulatorRunConfiguration::disabledReason() const
|
||||
{
|
||||
if (m_parseInProgress)
|
||||
return tr("The .pro file is currently being parsed.");
|
||||
if (!m_validParse)
|
||||
return tr("The .pro file could not be parsed.");
|
||||
return QString();
|
||||
}
|
||||
|
||||
QWidget *S60EmulatorRunConfiguration::createConfigurationWidget()
|
||||
{
|
||||
return new S60EmulatorRunConfigurationWidget(this);
|
||||
}
|
||||
|
||||
Utils::OutputFormatter *S60EmulatorRunConfiguration::createOutputFormatter() const
|
||||
{
|
||||
return new QtSupport::QtOutputFormatter(qt4Target()->qt4Project());
|
||||
}
|
||||
|
||||
QVariantMap S60EmulatorRunConfiguration::toMap() const
|
||||
{
|
||||
QVariantMap map(ProjectExplorer::RunConfiguration::toMap());
|
||||
const QDir projectDir = QDir(target()->project()->projectDirectory());
|
||||
map.insert(QLatin1String(PRO_FILE_KEY), projectDir.relativeFilePath(m_proFilePath));
|
||||
return map;
|
||||
}
|
||||
|
||||
bool S60EmulatorRunConfiguration::fromMap(const QVariantMap &map)
|
||||
{
|
||||
const QDir projectDir = QDir(target()->project()->projectDirectory());
|
||||
m_proFilePath = QDir::cleanPath(projectDir.filePath(map.value(QLatin1String(PRO_FILE_KEY)).toString()));
|
||||
|
||||
if (m_proFilePath.isEmpty())
|
||||
return false;
|
||||
|
||||
m_validParse = qt4Target()->qt4Project()->validParse(m_proFilePath);
|
||||
m_parseInProgress = qt4Target()->qt4Project()->parseInProgress(m_proFilePath);
|
||||
|
||||
//: S60 emulator run configuration default display name, %1 is base pro-File name
|
||||
setDefaultDisplayName(tr("%1 in Symbian Emulator").arg(QFileInfo(m_proFilePath).completeBaseName()));
|
||||
|
||||
return RunConfiguration::fromMap(map);
|
||||
}
|
||||
|
||||
QString S60EmulatorRunConfiguration::executable() const
|
||||
{
|
||||
if (!qt4Target())
|
||||
return QString();
|
||||
Qt4BuildConfiguration *qt4bc = qt4Target()->activeQt4BuildConfiguration();
|
||||
if (!qt4bc)
|
||||
return QString();
|
||||
QtSupport::BaseQtVersion *qtVersion = qt4bc->qtVersion();
|
||||
if (!qtVersion)
|
||||
return QString();
|
||||
QString baseDir = qtVersion->systemRoot();
|
||||
QString qmakeBuildConfig = QLatin1String("urel");
|
||||
if (qt4bc->qmakeBuildConfiguration() & QtSupport::BaseQtVersion::DebugBuild)
|
||||
qmakeBuildConfig = QLatin1String("udeb");
|
||||
baseDir += QLatin1String("/epoc32/release/winscw/") + qmakeBuildConfig;
|
||||
|
||||
TargetInformation ti = qt4Target()->qt4Project()->rootQt4ProjectNode()->targetInformation(m_proFilePath);
|
||||
if (!ti.valid)
|
||||
return QString();
|
||||
QString executable = QDir::toNativeSeparators(QDir::cleanPath(baseDir + QLatin1Char('/') + ti.target));
|
||||
executable += QLatin1String(".exe");
|
||||
|
||||
return executable;
|
||||
}
|
||||
|
||||
QString S60EmulatorRunConfiguration::proFilePath() const
|
||||
{
|
||||
return m_proFilePath;
|
||||
}
|
||||
|
||||
// ======== S60EmulatorRunConfigurationWidget
|
||||
|
||||
S60EmulatorRunConfigurationWidget::S60EmulatorRunConfigurationWidget(S60EmulatorRunConfiguration *runConfiguration,
|
||||
QWidget *parent)
|
||||
: QWidget(parent),
|
||||
m_runConfiguration(runConfiguration),
|
||||
m_detailsWidget(new Utils::DetailsWidget),
|
||||
m_executableLabel(new QLabel(m_runConfiguration->executable()))
|
||||
{
|
||||
m_detailsWidget->setState(Utils::DetailsWidget::NoSummary);
|
||||
QVBoxLayout *mainBoxLayout = new QVBoxLayout();
|
||||
mainBoxLayout->setMargin(0);
|
||||
|
||||
QHBoxLayout *hl = new QHBoxLayout();
|
||||
hl->addStretch();
|
||||
m_disabledIcon = new QLabel(this);
|
||||
m_disabledIcon->setPixmap(QPixmap(QLatin1String(":/projectexplorer/images/compile_warning.png")));
|
||||
hl->addWidget(m_disabledIcon);
|
||||
m_disabledReason = new QLabel(this);
|
||||
m_disabledReason->setVisible(false);
|
||||
hl->addWidget(m_disabledReason);
|
||||
hl->addStretch();
|
||||
mainBoxLayout->addLayout(hl);
|
||||
|
||||
setLayout(mainBoxLayout);
|
||||
mainBoxLayout->addWidget(m_detailsWidget);
|
||||
QWidget *detailsContainer = new QWidget;
|
||||
m_detailsWidget->setWidget(detailsContainer);
|
||||
|
||||
QFormLayout *detailsFormLayout = new QFormLayout();
|
||||
detailsFormLayout->setMargin(0);
|
||||
detailsContainer->setLayout(detailsFormLayout);
|
||||
|
||||
detailsFormLayout->addRow(tr("Executable:"), m_executableLabel);
|
||||
|
||||
connect(m_runConfiguration, SIGNAL(targetInformationChanged()),
|
||||
this, SLOT(updateTargetInformation()));
|
||||
|
||||
connect(m_runConfiguration, SIGNAL(enabledChanged()),
|
||||
this, SLOT(runConfigurationEnabledChange()));
|
||||
|
||||
runConfigurationEnabledChange();
|
||||
}
|
||||
|
||||
void S60EmulatorRunConfigurationWidget::updateTargetInformation()
|
||||
{
|
||||
m_executableLabel->setText(m_runConfiguration->executable());
|
||||
}
|
||||
|
||||
void S60EmulatorRunConfigurationWidget::runConfigurationEnabledChange()
|
||||
{
|
||||
bool enabled = m_runConfiguration->isEnabled();
|
||||
m_detailsWidget->setEnabled(enabled);
|
||||
m_disabledIcon->setVisible(!enabled);
|
||||
m_disabledReason->setVisible(!enabled);
|
||||
m_disabledReason->setText(m_runConfiguration->disabledReason());
|
||||
}
|
||||
|
||||
// ======== S60EmulatorRunConfigurationFactory
|
||||
|
||||
S60EmulatorRunConfigurationFactory::S60EmulatorRunConfigurationFactory(QObject *parent)
|
||||
: IRunConfigurationFactory(parent)
|
||||
{
|
||||
}
|
||||
|
||||
S60EmulatorRunConfigurationFactory::~S60EmulatorRunConfigurationFactory()
|
||||
{
|
||||
}
|
||||
|
||||
bool S60EmulatorRunConfigurationFactory::canCreate(Target *parent, const QString &id) const
|
||||
{
|
||||
Qt4SymbianTarget *t = qobject_cast<Qt4SymbianTarget *>(parent);
|
||||
if (!t ||
|
||||
t->id() != QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
|
||||
return false;
|
||||
return t->qt4Project()->hasApplicationProFile(pathFromId(id));
|
||||
}
|
||||
|
||||
RunConfiguration *S60EmulatorRunConfigurationFactory::create(Target *parent, const QString &id)
|
||||
{
|
||||
if (!canCreate(parent, id))
|
||||
return 0;
|
||||
Qt4SymbianTarget *t = static_cast<Qt4SymbianTarget *>(parent);
|
||||
return new S60EmulatorRunConfiguration(t, pathFromId(id));
|
||||
}
|
||||
|
||||
bool S60EmulatorRunConfigurationFactory::canRestore(Target *parent, const QVariantMap &map) const
|
||||
{
|
||||
Qt4SymbianTarget *t = qobject_cast<Qt4SymbianTarget *>(parent);
|
||||
if (!t ||
|
||||
t->id() != QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
|
||||
return false;
|
||||
QString id(ProjectExplorer::idFromMap(map));
|
||||
return id == QLatin1String(S60_EMULATOR_RC_ID);
|
||||
}
|
||||
|
||||
RunConfiguration *S60EmulatorRunConfigurationFactory::restore(Target *parent, const QVariantMap &map)
|
||||
{
|
||||
if (!canRestore(parent, map))
|
||||
return 0;
|
||||
Qt4SymbianTarget *t = static_cast<Qt4SymbianTarget *>(parent);
|
||||
S60EmulatorRunConfiguration *rc = new S60EmulatorRunConfiguration(t, QString());
|
||||
if (rc->fromMap(map))
|
||||
return rc;
|
||||
delete rc;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool S60EmulatorRunConfigurationFactory::canClone(Target *parent, RunConfiguration *source) const
|
||||
{
|
||||
return canCreate(parent, source->id());
|
||||
}
|
||||
|
||||
RunConfiguration *S60EmulatorRunConfigurationFactory::clone(Target *parent, RunConfiguration *source)
|
||||
{
|
||||
if (!canClone(parent, source))
|
||||
return 0;
|
||||
Qt4SymbianTarget *t = static_cast<Qt4SymbianTarget *>(parent);
|
||||
return new S60EmulatorRunConfiguration(t, QString());
|
||||
}
|
||||
|
||||
QStringList S60EmulatorRunConfigurationFactory::availableCreationIds(Target *parent) const
|
||||
{
|
||||
Qt4SymbianTarget *t = qobject_cast<Qt4SymbianTarget *>(parent);
|
||||
if (!t ||
|
||||
t->id() != QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
|
||||
return QStringList();
|
||||
|
||||
return t->qt4Project()->applicationProFilePathes(QLatin1String(S60_EMULATOR_RC_PREFIX));
|
||||
}
|
||||
|
||||
QString S60EmulatorRunConfigurationFactory::displayNameForId(const QString &id) const
|
||||
{
|
||||
if (!pathFromId(id).isEmpty())
|
||||
return tr("%1 in Symbian Emulator").arg(QFileInfo(pathFromId(id)).completeBaseName());
|
||||
return QString();
|
||||
}
|
||||
|
||||
// ======== S60EmulatorRunControl
|
||||
|
||||
S60EmulatorRunControl::S60EmulatorRunControl(S60EmulatorRunConfiguration *runConfiguration, RunMode mode)
|
||||
: RunControl(runConfiguration, mode)
|
||||
{
|
||||
// FIXME: This should be configurable!
|
||||
Utils::Environment env = runConfiguration->qt4Target()->activeBuildConfiguration()->environment();
|
||||
m_applicationLauncher.setEnvironment(env);
|
||||
|
||||
m_executable = runConfiguration->executable();
|
||||
connect(&m_applicationLauncher, SIGNAL(applicationError(QString)),
|
||||
this, SLOT(slotError(QString)));
|
||||
connect(&m_applicationLauncher, SIGNAL(appendMessage(QString,Utils::OutputFormat)),
|
||||
this, SLOT(slotAppendMessage(QString,Utils::OutputFormat)));
|
||||
connect(&m_applicationLauncher, SIGNAL(processExited(int)),
|
||||
this, SLOT(processExited(int)));
|
||||
connect(&m_applicationLauncher, SIGNAL(bringToForegroundRequested(quint64)),
|
||||
this, SLOT(bringApplicationToForeground(quint64)));
|
||||
}
|
||||
|
||||
void S60EmulatorRunControl::start()
|
||||
{
|
||||
m_applicationLauncher.start(ApplicationLauncher::Gui, m_executable, QString());
|
||||
setApplicationProcessHandle(ProcessHandle(m_applicationLauncher.applicationPID()));
|
||||
emit started();
|
||||
|
||||
QString msg = tr("Starting %1...\n").arg(QDir::toNativeSeparators(m_executable));
|
||||
appendMessage(msg, Utils::NormalMessageFormat);
|
||||
}
|
||||
|
||||
RunControl::StopResult S60EmulatorRunControl::stop()
|
||||
{
|
||||
m_applicationLauncher.stop();
|
||||
return StoppedSynchronously;
|
||||
}
|
||||
|
||||
bool S60EmulatorRunControl::isRunning() const
|
||||
{
|
||||
return m_applicationLauncher.isRunning();
|
||||
}
|
||||
|
||||
QIcon S60EmulatorRunControl::icon() const
|
||||
{
|
||||
return QIcon(QLatin1String(ProjectExplorer::Constants::ICON_RUN_SMALL));
|
||||
}
|
||||
|
||||
void S60EmulatorRunControl::slotError(const QString & err)
|
||||
{
|
||||
appendMessage(err, Utils::ErrorMessageFormat);
|
||||
emit finished();
|
||||
}
|
||||
|
||||
void S60EmulatorRunControl::slotAppendMessage(const QString &line, Utils::OutputFormat format)
|
||||
{
|
||||
static QString prefix = tr("[Qt Message]");
|
||||
static int prefixLength = prefix.length();
|
||||
int index = line.indexOf(prefix);
|
||||
if (index != -1)
|
||||
appendMessage(line.mid(index + prefixLength + 1), format);
|
||||
}
|
||||
|
||||
void S60EmulatorRunControl::processExited(int exitCode)
|
||||
{
|
||||
QString msg = tr("%1 exited with code %2\n");
|
||||
appendMessage(msg, exitCode ? Utils::ErrorMessageFormat : Utils::NormalMessageFormat);
|
||||
emit finished();
|
||||
}
|
||||
@@ -1,165 +0,0 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
|
||||
**
|
||||
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
** If you have questions regarding the use of this file, please contact
|
||||
** Nokia at qt-info@nokia.com.
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef S60EMULATORRUNCONFIGURATION_H
|
||||
#define S60EMULATORRUNCONFIGURATION_H
|
||||
|
||||
#include <projectexplorer/runconfiguration.h>
|
||||
#include <projectexplorer/applicationlauncher.h>
|
||||
|
||||
#include <QVariantMap>
|
||||
#include <QWidget>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QLabel;
|
||||
class QLineEdit;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace Utils {
|
||||
class DetailsWidget;
|
||||
}
|
||||
|
||||
namespace Qt4ProjectManager {
|
||||
class Qt4Project;
|
||||
class Qt4BaseTarget;
|
||||
class Qt4ProFileNode;
|
||||
|
||||
namespace Internal {
|
||||
class Qt4SymbianTarget;
|
||||
class S60EmulatorRunConfigurationFactory;
|
||||
|
||||
class S60EmulatorRunConfiguration : public ProjectExplorer::RunConfiguration
|
||||
{
|
||||
Q_OBJECT
|
||||
friend class S60EmulatorRunConfigurationFactory;
|
||||
|
||||
public:
|
||||
S60EmulatorRunConfiguration(Qt4ProjectManager::Qt4BaseTarget *parent, const QString &proFilePath);
|
||||
virtual ~S60EmulatorRunConfiguration();
|
||||
|
||||
Qt4SymbianTarget *qt4Target() const;
|
||||
|
||||
bool isEnabled() const;
|
||||
QString disabledReason() const;
|
||||
QWidget *createConfigurationWidget();
|
||||
|
||||
Utils::OutputFormatter *createOutputFormatter() const;
|
||||
|
||||
QString executable() const;
|
||||
|
||||
QVariantMap toMap() const;
|
||||
|
||||
QString proFilePath() const;
|
||||
|
||||
signals:
|
||||
void targetInformationChanged();
|
||||
|
||||
private slots:
|
||||
void proFileUpdate(Qt4ProjectManager::Qt4ProFileNode *pro, bool success, bool parseInProgress);
|
||||
|
||||
protected:
|
||||
S60EmulatorRunConfiguration(Qt4ProjectManager::Qt4BaseTarget *parent, S60EmulatorRunConfiguration *source);
|
||||
virtual bool fromMap(const QVariantMap &map);
|
||||
|
||||
private:
|
||||
void ctor();
|
||||
void updateTarget();
|
||||
|
||||
QString m_proFilePath;
|
||||
bool m_validParse;
|
||||
bool m_parseInProgress;
|
||||
};
|
||||
|
||||
class S60EmulatorRunConfigurationWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit S60EmulatorRunConfigurationWidget(S60EmulatorRunConfiguration *runConfiguration,
|
||||
QWidget *parent = 0);
|
||||
|
||||
private slots:
|
||||
void updateTargetInformation();
|
||||
void runConfigurationEnabledChange();
|
||||
|
||||
private:
|
||||
S60EmulatorRunConfiguration *m_runConfiguration;
|
||||
QLabel *m_disabledIcon;
|
||||
QLabel *m_disabledReason;
|
||||
Utils::DetailsWidget *m_detailsWidget;
|
||||
QLabel *m_executableLabel;
|
||||
};
|
||||
|
||||
class S60EmulatorRunConfigurationFactory : public ProjectExplorer::IRunConfigurationFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit S60EmulatorRunConfigurationFactory(QObject *parent = 0);
|
||||
~S60EmulatorRunConfigurationFactory();
|
||||
|
||||
bool canCreate(ProjectExplorer::Target *project, const QString &id) const;
|
||||
ProjectExplorer::RunConfiguration *create(ProjectExplorer::Target *parent, const QString &id);
|
||||
bool canRestore(ProjectExplorer::Target *parent, const QVariantMap &map) const;
|
||||
ProjectExplorer::RunConfiguration *restore(ProjectExplorer::Target *parent, const QVariantMap &map);
|
||||
bool canClone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source) const;
|
||||
ProjectExplorer::RunConfiguration *clone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source);
|
||||
|
||||
QStringList availableCreationIds(ProjectExplorer::Target *pro) const;
|
||||
// used to translate the ids to names to display to the user
|
||||
QString displayNameForId(const QString &id) const;
|
||||
};
|
||||
|
||||
class S60EmulatorRunControl : public ProjectExplorer::RunControl
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
S60EmulatorRunControl(S60EmulatorRunConfiguration *runConfiguration,
|
||||
ProjectExplorer::RunMode mode);
|
||||
~S60EmulatorRunControl() {}
|
||||
void start();
|
||||
virtual StopResult stop();
|
||||
bool isRunning() const;
|
||||
QIcon icon() const;
|
||||
|
||||
private slots:
|
||||
void processExited(int exitCode);
|
||||
void slotAppendMessage(const QString &line, Utils::OutputFormat);
|
||||
void slotError(const QString & error);
|
||||
|
||||
private:
|
||||
ProjectExplorer::ApplicationLauncher m_applicationLauncher;
|
||||
QString m_executable;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace Qt4ProjectManager
|
||||
|
||||
#endif // S60EMULATORRUNCONFIGURATION_H
|
||||
@@ -34,7 +34,6 @@
|
||||
//#include "qtversionmanager.h"
|
||||
|
||||
//#include "s60devicespreferencepane.h"
|
||||
#include "s60emulatorrunconfiguration.h"
|
||||
#include "s60devicerunconfiguration.h"
|
||||
#include "s60createpackagestep.h"
|
||||
#include "s60deployconfiguration.h"
|
||||
@@ -49,7 +48,6 @@
|
||||
|
||||
#include "gccetoolchain.h"
|
||||
#include "rvcttoolchain.h"
|
||||
#include "winscwtoolchain.h"
|
||||
#include "symbianqtversionfactory.h"
|
||||
|
||||
#include <symbianutils/symbiandevicemanager.h>
|
||||
@@ -116,11 +114,7 @@ S60Manager::S60Manager(QObject *parent) : QObject(parent)
|
||||
|
||||
addAutoReleasedObject(new GcceToolChainFactory);
|
||||
addAutoReleasedObject(new RvctToolChainFactory);
|
||||
addAutoReleasedObject(new WinscwToolChainFactory);
|
||||
|
||||
addAutoReleasedObject(new S60EmulatorRunConfigurationFactory);
|
||||
addAutoReleasedObject(new RunControlFactory<S60EmulatorRunControl, S60EmulatorRunConfiguration>
|
||||
(ProjectExplorer::NormalRunMode, tr("Run in Emulator"), parent));
|
||||
addAutoReleasedObject(new S60DeviceRunConfigurationFactory);
|
||||
addAutoReleasedObject(new S60RunControlFactory(ProjectExplorer::NormalRunMode,
|
||||
tr("Run on Device"), parent));
|
||||
|
||||
@@ -117,27 +117,10 @@ bool SymbianQtVersion::toolChainAvailable(const QString &id) const
|
||||
{
|
||||
if (!isValid())
|
||||
return false;
|
||||
if (id == QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) {
|
||||
#ifndef Q_OS_WIN
|
||||
return false;
|
||||
#endif
|
||||
if (!QFileInfo(systemRoot() + QLatin1String("/Epoc32/release/winscw/udeb/epoc.exe")).exists())
|
||||
return false;
|
||||
if (id == QLatin1String(Constants::S60_DEVICE_TARGET_ID)) {
|
||||
QList<ProjectExplorer::ToolChain *> tcList =
|
||||
ProjectExplorer::ToolChainManager::instance()->toolChains();
|
||||
foreach (ProjectExplorer::ToolChain *tc, tcList) {
|
||||
if (tc->id().startsWith(QLatin1String(Constants::WINSCW_TOOLCHAIN_ID)))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
} else if (id == QLatin1String(Constants::S60_DEVICE_TARGET_ID)) {
|
||||
QList<ProjectExplorer::ToolChain *> tcList =
|
||||
ProjectExplorer::ToolChainManager::instance()->toolChains();
|
||||
foreach (ProjectExplorer::ToolChain *tc, tcList) {
|
||||
if (!tc->id().startsWith(QLatin1String(Qt4ProjectManager::Constants::WINSCW_TOOLCHAIN_ID)))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return !tcList.isEmpty();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -179,8 +162,7 @@ bool SymbianQtVersion::supportsTargetId(const QString &id) const
|
||||
|
||||
QSet<QString> SymbianQtVersion::supportedTargetIds() const
|
||||
{
|
||||
return QSet<QString>() << QLatin1String(Constants::S60_DEVICE_TARGET_ID)
|
||||
<< QLatin1String(Constants::S60_EMULATOR_TARGET_ID);
|
||||
return QSet<QString>() << QLatin1String(Constants::S60_DEVICE_TARGET_ID);
|
||||
}
|
||||
|
||||
QString SymbianQtVersion::description() const
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
|
||||
**
|
||||
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
** If you have questions regarding the use of this file, please contact
|
||||
** Nokia at qt-info@nokia.com.
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "winscwparser.h"
|
||||
|
||||
#include <projectexplorer/projectexplorerconstants.h>
|
||||
#include <projectexplorer/task.h>
|
||||
|
||||
using namespace Qt4ProjectManager;
|
||||
using namespace ProjectExplorer;
|
||||
using namespace ProjectExplorer::Constants;
|
||||
|
||||
WinscwParser::WinscwParser()
|
||||
{
|
||||
setObjectName(QLatin1String("WinscwParser"));
|
||||
// linker problems:
|
||||
m_linkerProblem.setPattern(QLatin1String("^(\\S*)\\(\\S+\\):\\s(.+)$"));
|
||||
m_linkerProblem.setMinimal(true);
|
||||
|
||||
// WINSCW issue:
|
||||
m_compilerProblem.setPattern(QLatin1String("^([^\\(\\)]+[^\\d]):(\\d+):\\s(.+)$"));
|
||||
m_compilerProblem.setMinimal(true);
|
||||
}
|
||||
|
||||
void WinscwParser::stdOutput(const QString &line)
|
||||
{
|
||||
QString lne = line.trimmed();
|
||||
|
||||
if (m_compilerProblem.indexIn(lne) > -1) {
|
||||
Task task(Task::Error,
|
||||
m_compilerProblem.cap(3) /* description */,
|
||||
Utils::FileName::fromUserInput(m_compilerProblem.cap(1)) /* filename */,
|
||||
m_compilerProblem.cap(2).toInt() /* linenumber */,
|
||||
Core::Id(TASK_CATEGORY_COMPILE));
|
||||
if (task.description.startsWith(QLatin1String("warning: "))) {
|
||||
task.type = Task::Warning;
|
||||
task.description = task.description.mid(9);
|
||||
}
|
||||
emit addTask(task);
|
||||
return;
|
||||
}
|
||||
IOutputParser::stdOutput(line);
|
||||
}
|
||||
|
||||
void WinscwParser::stdError(const QString &line)
|
||||
{
|
||||
QString lne = line.trimmed();
|
||||
|
||||
if (m_linkerProblem.indexIn(lne) > -1) {
|
||||
emit addTask(Task(Task::Error,
|
||||
m_linkerProblem.cap(2) /* description */,
|
||||
Utils::FileName::fromUserInput(m_linkerProblem.cap(1)) /* filename */,
|
||||
-1 /* linenumber */,
|
||||
Core::Id(TASK_CATEGORY_COMPILE)));
|
||||
return;
|
||||
}
|
||||
IOutputParser::stdError(line);
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
|
||||
**
|
||||
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
** If you have questions regarding the use of this file, please contact
|
||||
** Nokia at qt-info@nokia.com.
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef WINSCWPARSER_H
|
||||
#define WINSCWPARSER_H
|
||||
|
||||
#include <projectexplorer/ioutputparser.h>
|
||||
|
||||
#include <QRegExp>
|
||||
|
||||
namespace Qt4ProjectManager {
|
||||
|
||||
class WinscwParser : public ProjectExplorer::IOutputParser
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
WinscwParser();
|
||||
|
||||
virtual void stdOutput(const QString &line);
|
||||
virtual void stdError(const QString &line);
|
||||
|
||||
private:
|
||||
QRegExp m_compilerProblem;
|
||||
QRegExp m_linkerProblem;
|
||||
};
|
||||
|
||||
} // namespace Qt4ProjectManager
|
||||
|
||||
#endif // WINSCWPARSER_H
|
||||
@@ -1,449 +0,0 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
|
||||
**
|
||||
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
** If you have questions regarding the use of this file, please contact
|
||||
** Nokia at qt-info@nokia.com.
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "winscwtoolchain.h"
|
||||
|
||||
#include "qt4projectmanager/qt4projectmanagerconstants.h"
|
||||
|
||||
#include "ui_winscwtoolchainconfigwidget.h"
|
||||
#include "winscwparser.h"
|
||||
|
||||
#include <projectexplorer/abi.h>
|
||||
#include <projectexplorer/headerpath.h>
|
||||
#include <utils/environment.h>
|
||||
#include <qtsupport/qtversionmanager.h>
|
||||
|
||||
#include <QDir>
|
||||
#include <QFileInfo>
|
||||
#include <QStringList>
|
||||
|
||||
namespace Qt4ProjectManager {
|
||||
namespace Internal {
|
||||
|
||||
static const char winscwCompilerPathKeyC[] = "Qt4ProjectManager.Winscw.CompilerPath";
|
||||
static const char winscwSystemIncludePathKeyC[] = "Qt4ProjectManager.Winscw.IncludePath";
|
||||
static const char winscwSystemLibraryPathKeyC[] = "Qt4ProjectManager.Winscw.LibraryPath";
|
||||
|
||||
static const char *const WINSCW_DEFAULT_SYSTEM_INCLUDES[] = {
|
||||
"/MSL/MSL_C/MSL_Common/Include",
|
||||
"/MSL/MSL_C/MSL_Win32/Include",
|
||||
"/MSL/MSL_CMSL_X86",
|
||||
"/MSL/MSL_C++/MSL_Common/Include",
|
||||
"/MSL/MSL_Extras/MSL_Common/Include",
|
||||
"/MSL/MSL_Extras/MSL_Win32/Include",
|
||||
"/Win32-x86 Support/Headers/Win32 SDK",
|
||||
0
|
||||
};
|
||||
|
||||
static const char *const WINSCW_DEFAULT_SYSTEM_LIBRARIES[] = {
|
||||
"/Win32-x86 Support/Libraries/Win32 SDK",
|
||||
"/Runtime/Runtime_x86/Runtime_Win32/Libs",
|
||||
0
|
||||
};
|
||||
|
||||
static Utils::FileName winscwRoot(const Utils::FileName &pathIn)
|
||||
{
|
||||
Utils::FileName path = pathIn;
|
||||
if (path.isEmpty())
|
||||
return Utils::FileName();
|
||||
|
||||
path = path.parentDir();
|
||||
path = path.parentDir();
|
||||
path = path.parentDir();
|
||||
path.appendPath(QLatin1String("Symbian_Support"));
|
||||
return path;
|
||||
}
|
||||
|
||||
static QString toNativePath(const QStringList &list)
|
||||
{
|
||||
return QDir::toNativeSeparators(list.join(QString(QLatin1Char(';'))));
|
||||
}
|
||||
|
||||
static QStringList fromNativePath(const QString &list)
|
||||
{
|
||||
return QDir::fromNativeSeparators(list).split(QLatin1Char(';'));
|
||||
}
|
||||
|
||||
static QStringList detectIncludesFor(const Utils::FileName &path)
|
||||
{
|
||||
Utils::FileName root = winscwRoot(path);
|
||||
QStringList result;
|
||||
for (int i = 0; WINSCW_DEFAULT_SYSTEM_INCLUDES[i] != 0; ++i) {
|
||||
QDir dir(root.toString() + QLatin1String(WINSCW_DEFAULT_SYSTEM_INCLUDES[i]));
|
||||
if (dir.exists())
|
||||
result.append(dir.absolutePath());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static QStringList detectLibrariesFor(const Utils::FileName &path)
|
||||
{
|
||||
Utils::FileName root = winscwRoot(path);
|
||||
QStringList result;
|
||||
for (int i = 0; WINSCW_DEFAULT_SYSTEM_LIBRARIES[i] != 0; ++i) {
|
||||
QDir dir(root.toString() + QLatin1String(WINSCW_DEFAULT_SYSTEM_LIBRARIES[i]));
|
||||
if (dir.exists())
|
||||
result.append(dir.absolutePath());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// WinscwToolChain
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
WinscwToolChain::WinscwToolChain(bool autodetected) :
|
||||
ProjectExplorer::ToolChain(QLatin1String(Constants::WINSCW_TOOLCHAIN_ID), autodetected)
|
||||
{ }
|
||||
|
||||
WinscwToolChain::WinscwToolChain(const WinscwToolChain &tc) :
|
||||
ProjectExplorer::ToolChain(tc),
|
||||
m_systemIncludePathes(tc.m_systemIncludePathes),
|
||||
m_systemLibraryPathes(tc.m_systemLibraryPathes),
|
||||
m_compilerPath(tc.m_compilerPath)
|
||||
{ }
|
||||
|
||||
WinscwToolChain::~WinscwToolChain()
|
||||
{ }
|
||||
|
||||
QString WinscwToolChain::type() const
|
||||
{
|
||||
return QLatin1String("winscw");
|
||||
}
|
||||
|
||||
QString WinscwToolChain::typeDisplayName() const
|
||||
{
|
||||
return WinscwToolChainFactory::tr("WINSCW");
|
||||
}
|
||||
|
||||
ProjectExplorer::Abi WinscwToolChain::targetAbi() const
|
||||
{
|
||||
return ProjectExplorer::Abi(ProjectExplorer::Abi::ArmArchitecture, ProjectExplorer::Abi::SymbianOS,
|
||||
ProjectExplorer::Abi::SymbianEmulatorFlavor,
|
||||
ProjectExplorer::Abi::ElfFormat, 32);
|
||||
}
|
||||
|
||||
QString WinscwToolChain::legacyId() const
|
||||
{
|
||||
return QLatin1String(Constants::WINSCW_TOOLCHAIN_ID) + QLatin1Char(':') + m_compilerPath.toString();
|
||||
}
|
||||
|
||||
bool WinscwToolChain::isValid() const
|
||||
{
|
||||
if (m_compilerPath.isEmpty())
|
||||
return false;
|
||||
|
||||
QFileInfo fi(m_compilerPath.toFileInfo());
|
||||
return fi.exists() && fi.isExecutable();
|
||||
}
|
||||
|
||||
QByteArray WinscwToolChain::predefinedMacros(const QStringList &cxxflags) const
|
||||
{
|
||||
Q_UNUSED(cxxflags);
|
||||
return QByteArray("#define __SYMBIAN32__\n");
|
||||
}
|
||||
|
||||
ProjectExplorer::ToolChain::CompilerFlags WinscwToolChain::compilerFlags(const QStringList &cxxflags) const
|
||||
{
|
||||
Q_UNUSED(cxxflags);
|
||||
return NO_FLAGS;
|
||||
}
|
||||
|
||||
QList<ProjectExplorer::HeaderPath> WinscwToolChain::systemHeaderPaths() const
|
||||
{
|
||||
QList<ProjectExplorer::HeaderPath> result;
|
||||
foreach (const QString &value, m_systemIncludePathes)
|
||||
result.append(ProjectExplorer::HeaderPath(value, ProjectExplorer::HeaderPath::GlobalHeaderPath));
|
||||
return result;
|
||||
}
|
||||
|
||||
void WinscwToolChain::addToEnvironment(Utils::Environment &env) const
|
||||
{
|
||||
if (!isValid())
|
||||
return;
|
||||
|
||||
env.set(QLatin1String("MWCSYM2INCLUDES"), toNativePath(m_systemIncludePathes));
|
||||
env.set(QLatin1String("MWSYM2LIBRARIES"), toNativePath(m_systemLibraryPathes));
|
||||
env.set(QLatin1String("MWSYM2LIBRARYFILES"),
|
||||
QLatin1String("MSL_All_MSE_Symbian_D.lib;gdi32.lib;user32.lib;kernel32.lib"));
|
||||
env.prependOrSetPath(m_compilerPath.toString());
|
||||
}
|
||||
|
||||
QString WinscwToolChain::makeCommand() const
|
||||
{
|
||||
#if defined Q_OS_WIN
|
||||
return QLatin1String("make.exe");
|
||||
#else
|
||||
return QLatin1String("make");
|
||||
#endif
|
||||
}
|
||||
|
||||
Utils::FileName WinscwToolChain::debuggerCommand() const
|
||||
{
|
||||
return Utils::FileName();
|
||||
}
|
||||
|
||||
QString WinscwToolChain::defaultMakeTarget() const
|
||||
{
|
||||
return QLatin1String("winscw");
|
||||
}
|
||||
|
||||
ProjectExplorer::IOutputParser *WinscwToolChain::outputParser() const
|
||||
{
|
||||
return new WinscwParser;
|
||||
}
|
||||
|
||||
bool WinscwToolChain::operator ==(const ProjectExplorer::ToolChain &tc) const
|
||||
{
|
||||
if (!ToolChain::operator ==(tc))
|
||||
return false;
|
||||
|
||||
const WinscwToolChain *tcPtr = dynamic_cast<const WinscwToolChain *>(&tc);
|
||||
Q_ASSERT(tcPtr);
|
||||
return m_compilerPath == tcPtr->m_compilerPath
|
||||
&& m_systemIncludePathes == tcPtr->m_systemIncludePathes
|
||||
&& m_systemLibraryPathes == tcPtr->m_systemLibraryPathes;
|
||||
}
|
||||
|
||||
ProjectExplorer::ToolChainConfigWidget *WinscwToolChain::configurationWidget()
|
||||
{
|
||||
return new WinscwToolChainConfigWidget(this);
|
||||
}
|
||||
|
||||
ProjectExplorer::ToolChain *WinscwToolChain::clone() const
|
||||
{
|
||||
return new WinscwToolChain(*this);
|
||||
}
|
||||
|
||||
QVariantMap WinscwToolChain::toMap() const
|
||||
{
|
||||
QVariantMap result = ToolChain::toMap();
|
||||
result.insert(QLatin1String(winscwCompilerPathKeyC), m_compilerPath.toString());
|
||||
const QString semicolon = QString(QLatin1Char(';'));
|
||||
result.insert(QLatin1String(winscwSystemIncludePathKeyC), m_systemIncludePathes.join(semicolon));
|
||||
result.insert(QLatin1String(winscwSystemLibraryPathKeyC), m_systemLibraryPathes.join(semicolon));
|
||||
return result;
|
||||
}
|
||||
|
||||
bool WinscwToolChain::fromMap(const QVariantMap &data)
|
||||
{
|
||||
if (!ToolChain::fromMap(data))
|
||||
return false;
|
||||
m_compilerPath = Utils::FileName::fromString(data.value(QLatin1String(winscwCompilerPathKeyC)).toString());
|
||||
const QChar semicolon = QLatin1Char(';');
|
||||
m_systemIncludePathes = data.value(QLatin1String(winscwSystemIncludePathKeyC)).toString().split(semicolon);
|
||||
m_systemLibraryPathes = data.value(QLatin1String(winscwSystemLibraryPathKeyC)).toString().split(semicolon);
|
||||
return isValid();
|
||||
}
|
||||
|
||||
void WinscwToolChain::setSystemIncludePathes(const QStringList &pathes)
|
||||
{
|
||||
if (m_systemIncludePathes == pathes)
|
||||
return;
|
||||
m_systemIncludePathes = pathes;
|
||||
toolChainUpdated();
|
||||
}
|
||||
|
||||
QStringList WinscwToolChain::systemIncludePathes() const
|
||||
{
|
||||
return m_systemIncludePathes;
|
||||
}
|
||||
|
||||
void WinscwToolChain::setSystemLibraryPathes(const QStringList &pathes)
|
||||
{
|
||||
if (m_systemLibraryPathes == pathes)
|
||||
return;
|
||||
m_systemLibraryPathes = pathes;
|
||||
toolChainUpdated();
|
||||
}
|
||||
|
||||
QStringList WinscwToolChain::systemLibraryPathes() const
|
||||
{
|
||||
return m_systemLibraryPathes;
|
||||
}
|
||||
|
||||
void WinscwToolChain::setCompilerCommand(const Utils::FileName &path)
|
||||
{
|
||||
if (m_compilerPath == path)
|
||||
return;
|
||||
|
||||
m_compilerPath = path;
|
||||
toolChainUpdated();
|
||||
}
|
||||
|
||||
Utils::FileName WinscwToolChain::compilerCommand() const
|
||||
{
|
||||
return m_compilerPath;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// ToolChainConfigWidget
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
WinscwToolChainConfigWidget::WinscwToolChainConfigWidget(WinscwToolChain *tc) :
|
||||
ProjectExplorer::ToolChainConfigWidget(tc),
|
||||
m_ui(new Ui::WinscwToolChainConfigWidget)
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
|
||||
m_ui->compilerPath->setExpectedKind(Utils::PathChooser::ExistingCommand);
|
||||
connect(m_ui->compilerPath, SIGNAL(changed(QString)),
|
||||
this, SLOT(handleCompilerPathUpdate()));
|
||||
connect(m_ui->includeEdit, SIGNAL(textChanged(QString)), this, SLOT(makeDirty()));
|
||||
connect(m_ui->libraryEdit, SIGNAL(textChanged(QString)), this, SLOT(makeDirty()));
|
||||
|
||||
discard();
|
||||
}
|
||||
|
||||
WinscwToolChainConfigWidget::~WinscwToolChainConfigWidget()
|
||||
{
|
||||
delete m_ui;
|
||||
}
|
||||
|
||||
void WinscwToolChainConfigWidget::apply()
|
||||
{
|
||||
WinscwToolChain *tc = static_cast<WinscwToolChain *>(toolChain());
|
||||
Q_ASSERT(tc);
|
||||
tc->setCompilerCommand(m_ui->compilerPath->fileName());
|
||||
tc->setSystemIncludePathes(fromNativePath(m_ui->includeEdit->text()));
|
||||
tc->setSystemLibraryPathes(fromNativePath(m_ui->libraryEdit->text()));
|
||||
}
|
||||
|
||||
void WinscwToolChainConfigWidget::discard()
|
||||
{
|
||||
WinscwToolChain *tc = static_cast<WinscwToolChain *>(toolChain());
|
||||
Q_ASSERT(tc);
|
||||
m_ui->compilerPath->setFileName(tc->compilerCommand());
|
||||
m_ui->includeEdit->setText(toNativePath(tc->systemIncludePathes()));
|
||||
m_ui->libraryEdit->setText(toNativePath(tc->systemLibraryPathes()));
|
||||
}
|
||||
|
||||
bool WinscwToolChainConfigWidget::isDirty() const
|
||||
{
|
||||
WinscwToolChain *tc = static_cast<WinscwToolChain *>(toolChain());
|
||||
Q_ASSERT(tc);
|
||||
return tc->compilerCommand() != m_ui->compilerPath->fileName()
|
||||
|| tc->systemIncludePathes() != fromNativePath(m_ui->includeEdit->text())
|
||||
|| tc->systemLibraryPathes() != fromNativePath(m_ui->libraryEdit->text());
|
||||
}
|
||||
|
||||
void WinscwToolChainConfigWidget::handleCompilerPathUpdate()
|
||||
{
|
||||
Utils::FileName path = m_ui->compilerPath->fileName();
|
||||
if (path.isEmpty())
|
||||
return;
|
||||
if (!path.toFileInfo().exists())
|
||||
return;
|
||||
m_ui->includeEdit->setText(toNativePath(detectIncludesFor(path)));
|
||||
m_ui->libraryEdit->setText(toNativePath(detectLibrariesFor(path)));
|
||||
}
|
||||
|
||||
void WinscwToolChainConfigWidget::makeDirty()
|
||||
{
|
||||
emit dirty();
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// ToolChainFactory
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
WinscwToolChainFactory::WinscwToolChainFactory() :
|
||||
ProjectExplorer::ToolChainFactory()
|
||||
{ }
|
||||
|
||||
QString WinscwToolChainFactory::displayName() const
|
||||
{
|
||||
return tr("WINSCW");
|
||||
}
|
||||
|
||||
QString WinscwToolChainFactory::id() const
|
||||
{
|
||||
return QLatin1String(Constants::WINSCW_TOOLCHAIN_ID);
|
||||
}
|
||||
|
||||
QList<ProjectExplorer::ToolChain *> WinscwToolChainFactory::autoDetect()
|
||||
{
|
||||
QList<ProjectExplorer::ToolChain *> result;
|
||||
|
||||
// Compatibility to pre-2.2:
|
||||
while (true) {
|
||||
const QString path = QtSupport::QtVersionManager::instance()->popPendingMwcUpdate();
|
||||
if (path.isNull())
|
||||
break;
|
||||
|
||||
QFileInfo fi(path + QLatin1String("/x86Build/Symbian_Tools/Command_Line_Tools/mwwinrc.exe"));
|
||||
if (fi.exists() && fi.isExecutable()) {
|
||||
WinscwToolChain *tc = new WinscwToolChain(false);
|
||||
tc->setCompilerCommand(Utils::FileName(fi));
|
||||
tc->setDisplayName(tr("WINSCW from Qt version"));
|
||||
result.append(tc);
|
||||
}
|
||||
}
|
||||
|
||||
Utils::FileName cc = Utils::FileName::fromString(Utils::Environment::systemEnvironment().searchInPath(QLatin1String("mwwinrc")));
|
||||
if (!cc.isEmpty()) {
|
||||
WinscwToolChain *tc = new WinscwToolChain(true);
|
||||
tc->setCompilerCommand(cc);
|
||||
tc->setSystemIncludePathes(detectIncludesFor(cc));
|
||||
tc->setSystemLibraryPathes(detectLibrariesFor(cc));
|
||||
result.append(tc);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
bool WinscwToolChainFactory::canCreate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
ProjectExplorer::ToolChain *WinscwToolChainFactory::create()
|
||||
{
|
||||
return new WinscwToolChain(false);
|
||||
}
|
||||
|
||||
bool WinscwToolChainFactory::canRestore(const QVariantMap &data)
|
||||
{
|
||||
return idFromMap(data).startsWith(QLatin1String(Constants::WINSCW_TOOLCHAIN_ID));
|
||||
}
|
||||
|
||||
ProjectExplorer::ToolChain *WinscwToolChainFactory::restore(const QVariantMap &data)
|
||||
{
|
||||
WinscwToolChain *tc = new WinscwToolChain(false);
|
||||
if (tc->fromMap(data))
|
||||
return tc;
|
||||
|
||||
delete tc;
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace Qt4ProjectManager
|
||||
@@ -1,149 +0,0 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
|
||||
**
|
||||
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
** If you have questions regarding the use of this file, please contact
|
||||
** Nokia at qt-info@nokia.com.
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef WINSCWTOOLCHAIN_H
|
||||
#define WINSCWTOOLCHAIN_H
|
||||
|
||||
#include <projectexplorer/toolchain.h>
|
||||
#include <projectexplorer/toolchainconfigwidget.h>
|
||||
|
||||
namespace Qt4ProjectManager {
|
||||
namespace Internal {
|
||||
namespace Ui {
|
||||
class WinscwToolChainConfigWidget;
|
||||
} // namespace Ui
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// WinscwToolChain
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
class WinscwToolChain : public ProjectExplorer::ToolChain
|
||||
{
|
||||
public:
|
||||
WinscwToolChain(const WinscwToolChain &);
|
||||
~WinscwToolChain();
|
||||
|
||||
QString type() const;
|
||||
QString typeDisplayName() const;
|
||||
ProjectExplorer::Abi targetAbi() const;
|
||||
QString legacyId() const;
|
||||
|
||||
bool isValid() const;
|
||||
|
||||
QByteArray predefinedMacros(const QStringList &list) const;
|
||||
ProjectExplorer::ToolChain::CompilerFlags compilerFlags(const QStringList &cxxflags) const;
|
||||
QList<ProjectExplorer::HeaderPath> systemHeaderPaths() const;
|
||||
void addToEnvironment(Utils::Environment &env) const;
|
||||
QString makeCommand() const;
|
||||
Utils::FileName compilerCommand() const;
|
||||
Utils::FileName debuggerCommand() const;
|
||||
QString defaultMakeTarget() const;
|
||||
ProjectExplorer::IOutputParser *outputParser() const;
|
||||
|
||||
bool operator ==(const ProjectExplorer::ToolChain &) const;
|
||||
|
||||
ProjectExplorer::ToolChainConfigWidget *configurationWidget();
|
||||
ProjectExplorer::ToolChain *clone() const;
|
||||
|
||||
QVariantMap toMap() const;
|
||||
bool fromMap(const QVariantMap &data);
|
||||
|
||||
void setSystemIncludePathes(const QStringList &);
|
||||
QStringList systemIncludePathes() const;
|
||||
|
||||
void setSystemLibraryPathes(const QStringList &);
|
||||
QStringList systemLibraryPathes() const;
|
||||
|
||||
void setCompilerCommand(const Utils::FileName &);
|
||||
|
||||
private:
|
||||
explicit WinscwToolChain(bool);
|
||||
|
||||
QStringList m_systemIncludePathes;
|
||||
QStringList m_systemLibraryPathes;
|
||||
Utils::FileName m_compilerPath;
|
||||
|
||||
friend class WinscwToolChainFactory;
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// WinscwToolChainConfigWidget
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
class WinscwToolChainConfigWidget : public ProjectExplorer::ToolChainConfigWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
WinscwToolChainConfigWidget(WinscwToolChain *);
|
||||
~WinscwToolChainConfigWidget();
|
||||
|
||||
void apply();
|
||||
void discard();
|
||||
bool isDirty() const;
|
||||
|
||||
private slots:
|
||||
void handleCompilerPathUpdate();
|
||||
void makeDirty();
|
||||
|
||||
private:
|
||||
Ui::WinscwToolChainConfigWidget *m_ui;
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// WinscwToolChainFactory
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
class WinscwToolChainFactory : public ProjectExplorer::ToolChainFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
WinscwToolChainFactory();
|
||||
|
||||
QString displayName() const;
|
||||
QString id() const;
|
||||
|
||||
QList<ProjectExplorer::ToolChain *> autoDetect();
|
||||
|
||||
bool canCreate();
|
||||
ProjectExplorer::ToolChain *create();
|
||||
|
||||
// Used by the ToolChainManager to restore user-generated tool chains
|
||||
bool canRestore(const QVariantMap &data);
|
||||
ProjectExplorer::ToolChain *restore(const QVariantMap &data);
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace Qt4ProjectManager
|
||||
|
||||
#endif // WINSCWTOOLCHAIN_H
|
||||
@@ -1,58 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Qt4ProjectManager::Internal::WinscwToolChainConfigWidget</class>
|
||||
<widget class="QWidget" name="Qt4ProjectManager::Internal::WinscwToolChainConfigWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>428</width>
|
||||
<height>95</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Compiler path:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="Utils::PathChooser" name="compilerPath"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>System include path:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="includeEdit"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>System library path:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="libraryEdit"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>Utils::PathChooser</class>
|
||||
<extends>QLineEdit</extends>
|
||||
<header>utils/pathchooser.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
@@ -762,7 +762,6 @@ BuildConfiguration *Qt4BuildConfigurationFactory::create(ProjectExplorer::Target
|
||||
(version->defaultBuildConfig() | QtSupport::BaseQtVersion::DebugBuild),
|
||||
QString(), QString(), false);
|
||||
|
||||
if (qt4Target->id() != QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) {
|
||||
//: Release build configuration. We recommend not translating it.
|
||||
QString defaultReleaseName = tr("%1 Release").arg(version->displayName());
|
||||
QString customReleaseName;
|
||||
@@ -773,7 +772,6 @@ BuildConfiguration *Qt4BuildConfigurationFactory::create(ProjectExplorer::Target
|
||||
version,
|
||||
(version->defaultBuildConfig() & ~QtSupport::BaseQtVersion::DebugBuild),
|
||||
QString(), QString(), false);
|
||||
}
|
||||
return bc;
|
||||
}
|
||||
|
||||
|
||||
@@ -147,7 +147,6 @@ QtcPlugin {
|
||||
"qt-desktop/simulatorqtversionfactory.cpp",
|
||||
"qt-desktop/simulatorqtversionfactory.h",
|
||||
"qt-s60/rvcttoolchainconfigwidget.ui",
|
||||
"qt-s60/winscwtoolchainconfigwidget.ui",
|
||||
"qt-s60/abldparser.cpp",
|
||||
"qt-s60/abldparser.h",
|
||||
"qt-s60/certificatepathchooser.cpp",
|
||||
@@ -206,18 +205,12 @@ QtcPlugin {
|
||||
"qt-s60/symbianqtversion.h",
|
||||
"qt-s60/symbianqtversionfactory.cpp",
|
||||
"qt-s60/symbianqtversionfactory.h",
|
||||
"qt-s60/winscwparser.cpp",
|
||||
"qt-s60/winscwparser.h",
|
||||
"qt-s60/winscwtoolchain.cpp",
|
||||
"qt-s60/winscwtoolchain.h",
|
||||
"qt-s60/codaruncontrol.cpp",
|
||||
"qt-s60/codaruncontrol.h",
|
||||
"qt-s60/s60deploystep.cpp",
|
||||
"qt-s60/s60deploystep.h",
|
||||
"qt-s60/s60devicedebugruncontrol.cpp",
|
||||
"qt-s60/s60devicedebugruncontrol.h",
|
||||
"qt-s60/s60emulatorrunconfiguration.cpp",
|
||||
"qt-s60/s60emulatorrunconfiguration.h",
|
||||
"qt-s60/s60manager.cpp",
|
||||
"qt-s60/s60runcontrolbase.cpp",
|
||||
"qt-s60/s60runcontrolbase.h",
|
||||
|
||||
@@ -76,7 +76,6 @@ const char QT4PROJECT_ID[] = "Qt4ProjectManager.Qt4Project";
|
||||
|
||||
// Targets
|
||||
const char DESKTOP_TARGET_ID[] = "Qt4ProjectManager.Target.DesktopTarget";
|
||||
const char S60_EMULATOR_TARGET_ID[] = "Qt4ProjectManager.Target.S60EmulatorTarget";
|
||||
const char S60_DEVICE_TARGET_ID[] = "Qt4ProjectManager.Target.S60DeviceTarget";
|
||||
const char MAEMO5_DEVICE_TARGET_ID[] = "Qt4ProjectManager.Target.MaemoDeviceTarget";
|
||||
const char HARMATTAN_DEVICE_TARGET_ID[] = "Qt4ProjectManager.Target.HarmattanDeviceTarget";
|
||||
@@ -92,7 +91,6 @@ const char SHADOWBUILD_TARGETFEATURE_ID[] = "Qt4ProjectManager.TargetFeature.Sha
|
||||
const char GCCE_TOOLCHAIN_ID[] = "Qt4ProjectManager.ToolChain.GCCE";
|
||||
const char MAEMO_TOOLCHAIN_ID[] = "Qt4ProjectManager.ToolChain.Maemo";
|
||||
const char RVCT_TOOLCHAIN_ID[] = "Qt4ProjectManager.ToolChain.RVCT";
|
||||
const char WINSCW_TOOLCHAIN_ID[] = "Qt4ProjectManager.ToolChain.WINSCW";
|
||||
|
||||
// ICONS
|
||||
const char ICON_QT_PROJECT[] = ":/qt4projectmanager/images/qt_project.png";
|
||||
|
||||
@@ -204,8 +204,7 @@ Utils::WizardProgressItem *AbstractMobileAppWizardDialog::itemOfNextGenericPage(
|
||||
|
||||
bool AbstractMobileAppWizardDialog::isSymbianTargetSelected() const
|
||||
{
|
||||
return m_targetsPage->isTargetSelected(QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
|
||||
|| m_targetsPage->isTargetSelected(QLatin1String(Constants::S60_DEVICE_TARGET_ID));
|
||||
return m_targetsPage->isTargetSelected(QLatin1String(Constants::S60_DEVICE_TARGET_ID));
|
||||
}
|
||||
|
||||
bool AbstractMobileAppWizardDialog::isFremantleTargetSelected() const
|
||||
|
||||
@@ -120,8 +120,7 @@ GuiAppParameters GuiAppWizardDialog::parameters() const
|
||||
|| isTargetSelected(QLatin1String(Constants::MEEGO_DEVICE_TARGET_ID))) {
|
||||
rc.widgetWidth = 800;
|
||||
rc.widgetHeight = 480;
|
||||
} else if (isTargetSelected(QLatin1String(Constants::S60_DEVICE_TARGET_ID)) ||
|
||||
isTargetSelected(QLatin1String(Constants::S60_EMULATOR_TARGET_ID))) {
|
||||
} else if (isTargetSelected(QLatin1String(Constants::S60_DEVICE_TARGET_ID))) {
|
||||
rc.widgetWidth = 360;
|
||||
rc.widgetHeight = 640;
|
||||
} else {
|
||||
|
||||
@@ -235,8 +235,7 @@ int LibraryWizardDialog::nextId() const
|
||||
|
||||
int next = m_modulesPageId;
|
||||
|
||||
const bool symbianTargetEnabled = isTargetSelected(QLatin1String(Constants::S60_DEVICE_TARGET_ID))
|
||||
|| isTargetSelected(QLatin1String(Constants::S60_EMULATOR_TARGET_ID));
|
||||
const bool symbianTargetEnabled = isTargetSelected(QLatin1String(Constants::S60_DEVICE_TARGET_ID));
|
||||
|
||||
// If there was no Symbian target defined we omit "Symbian specific" step
|
||||
// We also omit this step if the library type is not dll
|
||||
|
||||
Reference in New Issue
Block a user