From ca09e1fc57bef67c476b6b32f7c563d054d6ed22 Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Wed, 6 May 2009 16:13:44 +0200
Subject: [PATCH] Show relative file names in the run configuration.

---
 src/plugins/qmlprojectmanager/qmlproject.cpp | 29 ++++++++++++++++++--
 src/plugins/qmlprojectmanager/qmlproject.h   | 12 ++------
 2 files changed, 28 insertions(+), 13 deletions(-)

diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp
index 5a938b0e54d..f3406552055 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 0456fb8c39b..9d1252a994f 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:
-- 
GitLab