diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 5a938b0e54d1248f0282811fbb4c81ff7ca34c23..f3406552055e57c3c52b0c571c43845eaccc677e 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -132,6 +132,11 @@ QmlProject::~QmlProject() delete m_rootNode; } +QDir QmlProject::projectDir() const +{ + return QFileInfo(file()->fileName()).dir(); +} + QString QmlProject::filesFileName() const { return m_fileName; } @@ -421,11 +426,29 @@ QString QmlApplicationRunConfiguration::dumperLibrary() const QWidget *QmlApplicationRunConfiguration::configurationWidget() { + QWidget *config = new QWidget; + QFormLayout *form = new QFormLayout(config); + QComboBox *combo = new QComboBox; combo->addItem(tr("<Current File>")); connect(combo, SIGNAL(activated(QString)), this, SLOT(setMainScript(QString))); - combo->addItems(m_project->files()); - return combo; + + QDir projectDir = m_project->projectDir(); + QStringList files; + + foreach (const QString &fn, m_project->files()) { + QFileInfo fileInfo(fn); + if (fileInfo.suffix() != QLatin1String("qml")) + continue; + + files.append(projectDir.relativeFilePath(fn)); + } + + combo->addItems(files); + + form->addRow(tr("Main QML Script:"), combo); + + return config; } QString QmlApplicationRunConfiguration::mainScript() const @@ -437,7 +460,7 @@ QString QmlApplicationRunConfiguration::mainScript() const } } - return m_scriptFile; + return m_project->projectDir().absoluteFilePath(m_scriptFile); } void QmlApplicationRunConfiguration::setMainScript(const QString &scriptFile) diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h index 0456fb8c39bd412479eed8a0fa23e487289d6a2b..9d1252a994f0d29bdacacefd01f102dbe0a21242 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.h +++ b/src/plugins/qmlprojectmanager/qmlproject.h @@ -39,16 +39,7 @@ #include <projectexplorer/applicationrunconfiguration.h> #include <coreplugin/ifile.h> -QT_BEGIN_NAMESPACE -class QPushButton; -class QStringListModel; -QT_END_NAMESPACE - -namespace Core { -namespace Utils { -class PathChooser; -} -} +#include <QtCore/QDir> namespace QmlProjectManager { namespace Internal { @@ -96,6 +87,7 @@ public: void refresh(RefreshOptions options); + QDir projectDir() const; QStringList files() const; protected: