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:
Tobias Hunger
2012-04-10 16:48:16 +02:00
parent 5a01a0c157
commit 1079f5a1bf
19 changed files with 23 additions and 1508 deletions

View File

@@ -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

View File

@@ -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;

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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();
}

View File

@@ -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

View File

@@ -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));

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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",

View File

@@ -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";

View File

@@ -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

View File

@@ -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 {

View File

@@ -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