From 8a97b540129bcf3ce3077e68ab8dbe3deb27d6a5 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Mon, 4 May 2009 13:38:03 +0200 Subject: [PATCH] Initial implementation of ApplicationRunConfiguration for QML projects. --- src/plugins/qmlprojectmanager/qmlproject.cpp | 100 ++++++++++++++++++- src/plugins/qmlprojectmanager/qmlproject.h | 31 ++++++ 2 files changed, 128 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 9595e539e5d..de619bc953d 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -36,6 +36,7 @@ #include <utils/pathchooser.h> #include <utils/qtcassert.h> #include <coreplugin/icore.h> +#include <coreplugin/editormanager/editormanager.h> #include <QtCore/QtDebug> #include <QtCore/QDir> @@ -120,6 +121,9 @@ QmlProject::QmlProject(Manager *manager, const QString &fileName) m_rootNode = new QmlProjectNode(this, m_file); m_manager->registerProject(this); + + QSharedPointer<QmlApplicationRunConfiguration> runConf(new QmlApplicationRunConfiguration(this)); + addRunConfiguration(runConf); } QmlProject::~QmlProject() @@ -257,9 +261,9 @@ QList<ProjectExplorer::BuildStepConfigWidget*> QmlProject::subConfigWidgets() return QList<ProjectExplorer::BuildStepConfigWidget*>(); } - void QmlProject::newBuildConfiguration(const QString &) - { - } +void QmlProject::newBuildConfiguration(const QString &) +{ +} QmlProjectNode *QmlProject::rootProjectNode() const { @@ -383,3 +387,93 @@ bool QmlProjectFile::isSaveAsAllowed() const void QmlProjectFile::modified(ReloadBehavior *) { } + +QmlApplicationRunConfiguration::QmlApplicationRunConfiguration(QmlProject *pro) + : ProjectExplorer::ApplicationRunConfiguration(pro), + m_project(pro) +{ +} + +QmlApplicationRunConfiguration::~QmlApplicationRunConfiguration() +{ +} + +QString QmlApplicationRunConfiguration::type() const +{ + return tr("QML Viewer"); +} + +QString QmlApplicationRunConfiguration::executable() const +{ + QString executable("/Users/raggi/Projects/qt/kinetic/bin/qmlviewer.app"); + return executable; +} + +QmlApplicationRunConfiguration::RunMode QmlApplicationRunConfiguration::runMode() const +{ + return Gui; +} + +QString QmlApplicationRunConfiguration::workingDirectory() const +{ + QFileInfo projectFile(m_project->file()->fileName()); + return projectFile.filePath(); +} + +QStringList QmlApplicationRunConfiguration::commandLineArguments() const +{ + QStringList args; + + const QString s = mainScript(); + if (! s.isEmpty()) + args.append(s); + + return args; +} + +ProjectExplorer::Environment QmlApplicationRunConfiguration::environment() const +{ + ProjectExplorer::Environment env; + return env; +} + +QString QmlApplicationRunConfiguration::dumperLibrary() const +{ + return QString(); +} + +QWidget *QmlApplicationRunConfiguration::configurationWidget() +{ + 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; +} + +QString QmlApplicationRunConfiguration::mainScript() const +{ + if (m_scriptFile.isEmpty() || m_scriptFile == tr("<Current File>")) { + Core::EditorManager *editorManager = Core::ICore::instance()->editorManager(); + if (Core::IEditor *editor = editorManager->currentEditor()) { + return editor->file()->fileName(); + } + } + + return m_scriptFile; +} + +void QmlApplicationRunConfiguration::setMainScript(const QString &scriptFile) +{ + m_scriptFile = scriptFile; +} + +void QmlApplicationRunConfiguration::save(ProjectExplorer::PersistentSettingsWriter &writer) const +{ + ProjectExplorer::ApplicationRunConfiguration::save(writer); +} + +void QmlApplicationRunConfiguration::restore(const ProjectExplorer::PersistentSettingsReader &reader) +{ + ProjectExplorer::ApplicationRunConfiguration::restore(reader); +} diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h index 7429a68c055..f53611af209 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.h +++ b/src/plugins/qmlprojectmanager/qmlproject.h @@ -36,6 +36,7 @@ #include <projectexplorer/project.h> #include <projectexplorer/projectnodes.h> #include <projectexplorer/buildstep.h> +#include <projectexplorer/applicationrunconfiguration.h> #include <coreplugin/ifile.h> QT_BEGIN_NAMESPACE @@ -163,6 +164,36 @@ private: QString m_buildConfiguration; }; +class QmlApplicationRunConfiguration : public ProjectExplorer::ApplicationRunConfiguration +{ + Q_OBJECT +public: + QmlApplicationRunConfiguration(QmlProject *pro); + virtual ~QmlApplicationRunConfiguration(); + + virtual QString type() const; + virtual QString executable() const; + virtual RunMode runMode() const; + virtual QString workingDirectory() const; + virtual QStringList commandLineArguments() const; + virtual ProjectExplorer::Environment environment() const; + virtual QString dumperLibrary() const; + virtual QWidget *configurationWidget(); + + virtual void save(ProjectExplorer::PersistentSettingsWriter &writer) const; + virtual void restore(const ProjectExplorer::PersistentSettingsReader &reader); + +private Q_SLOTS: + void setMainScript(const QString &scriptFile); + +private: + QString mainScript() const; + +private: + QmlProject *m_project; + QString m_scriptFile; +}; + } // namespace Internal } // namespace QmlProjectManager -- GitLab