aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmlprojectmanager/qmlproject.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <[email protected]>2009-05-07 12:27:52 +0200
committerRoberto Raggi <[email protected]>2009-05-07 12:27:52 +0200
commitb191f154865c69f4265c2a5519b21ba1b69d930a (patch)
treef5cf72bd267a1eb4995a66f1af4b4db1033a3785 /src/plugins/qmlprojectmanager/qmlproject.cpp
parentabafbb7a1e7b326c3ee03df4400b1c3c2289079c (diff)
Implemented the run configration factory and removed some obsoleted code.
Diffstat (limited to 'src/plugins/qmlprojectmanager/qmlproject.cpp')
-rw-r--r--src/plugins/qmlprojectmanager/qmlproject.cpp198
1 files changed, 102 insertions, 96 deletions
diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp
index c24a2cca90c..5b6521715bf 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.cpp
+++ b/src/plugins/qmlprojectmanager/qmlproject.cpp
@@ -39,6 +39,7 @@
#include <coreplugin/editormanager/editormanager.h>
#include <utils/synchronousprocess.h>
+#include <utils/pathchooser.h>
#include <QtCore/QtDebug>
#include <QtCore/QDir>
@@ -49,62 +50,10 @@
#include <QtGui/QFormLayout>
#include <QtGui/QMainWindow>
#include <QtGui/QComboBox>
-#include <QtGui/QStringListModel>
-#include <QtGui/QListWidget>
-#include <QtGui/QPushButton>
using namespace QmlProjectManager;
using namespace QmlProjectManager::Internal;
-namespace {
-
-/**
- * An editable string list model. New strings can be added by editing the entry
- * called "<new>", displayed at the end.
- */
-class ListModel: public QStringListModel
-{
-public:
- ListModel(QObject *parent)
- : QStringListModel(parent) {}
-
- virtual ~ListModel() {}
-
- virtual int rowCount(const QModelIndex &parent) const
- { return 1 + QStringListModel::rowCount(parent); }
-
- virtual Qt::ItemFlags flags(const QModelIndex &index) const
- { return QStringListModel::flags(index) | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled; }
-
- virtual QModelIndex index(int row, int column, const QModelIndex &parent) const
- {
- if (row == stringList().size())
- return createIndex(row, column);
-
- return QStringListModel::index(row, column, parent);
- }
-
- virtual QVariant data(const QModelIndex &index, int role) const
- {
- if (role == Qt::DisplayRole || role == Qt::EditRole) {
- if (index.row() == stringList().size())
- return QCoreApplication::translate("QmlProject", "<new>");
- }
-
- return QStringListModel::data(index, role);
- }
-
- virtual bool setData(const QModelIndex &index, const QVariant &value, int role)
- {
- if (role == Qt::EditRole && index.row() == stringList().size())
- insertRow(index.row(), QModelIndex());
-
- return QStringListModel::setData(index, value, role);
- }
-};
-
-} // end of anonymous namespace
-
////////////////////////////////////////////////////////////////////////////////////
// QmlProject
////////////////////////////////////////////////////////////////////////////////////
@@ -120,9 +69,6 @@ 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()
@@ -254,7 +200,7 @@ QString QmlProject::buildDirectory(const QString &) const
ProjectExplorer::BuildStepConfigWidget *QmlProject::createConfigWidget()
{
- return new QmlBuildSettingsWidget(this);
+ return 0;
}
QList<ProjectExplorer::BuildStepConfigWidget*> QmlProject::subConfigWidgets()
@@ -291,6 +237,11 @@ void QmlProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsReader &
{
Project::restoreSettingsImpl(reader);
+ if (runConfigurations().isEmpty()) {
+ QSharedPointer<QmlRunConfiguration> runConf(new QmlRunConfiguration(this));
+ addRunConfiguration(runConf);
+ }
+
refresh(Everything);
}
@@ -300,25 +251,6 @@ void QmlProject::saveSettingsImpl(ProjectExplorer::PersistentSettingsWriter &wri
}
////////////////////////////////////////////////////////////////////////////////////
-// QmlBuildSettingsWidget
-////////////////////////////////////////////////////////////////////////////////////
-
-QmlBuildSettingsWidget::QmlBuildSettingsWidget(QmlProject *project)
- : m_project(project)
-{
-}
-
-QmlBuildSettingsWidget::~QmlBuildSettingsWidget()
-{ }
-
-QString QmlBuildSettingsWidget::displayName() const
-{ return tr("QML Manager"); }
-
-void QmlBuildSettingsWidget::init(const QString &)
-{
-}
-
-////////////////////////////////////////////////////////////////////////////////////
// QmlProjectFile
////////////////////////////////////////////////////////////////////////////////////
@@ -375,40 +307,42 @@ void QmlProjectFile::modified(ReloadBehavior *)
{
}
-QmlApplicationRunConfiguration::QmlApplicationRunConfiguration(QmlProject *pro)
+QmlRunConfiguration::QmlRunConfiguration(QmlProject *pro)
: ProjectExplorer::ApplicationRunConfiguration(pro),
- m_project(pro)
+ m_project(pro),
+ m_type(Constants::QMLRUNCONFIGURATION)
{
setName(tr("QML Viewer"));
+
+ m_qmlViewer = Core::Utils::SynchronousProcess::locateBinary(QLatin1String("qmlviewer"));
}
-QmlApplicationRunConfiguration::~QmlApplicationRunConfiguration()
+QmlRunConfiguration::~QmlRunConfiguration()
{
}
-QString QmlApplicationRunConfiguration::type() const
+QString QmlRunConfiguration::type() const
{
- return QLatin1String("QmlProject.QmlApplicationRunConfiguration");
+ return m_type;
}
-QString QmlApplicationRunConfiguration::executable() const
+QString QmlRunConfiguration::executable() const
{
- const QString executable = Core::Utils::SynchronousProcess::locateBinary(QLatin1String("qmlviewer"));
- return executable;
+ return m_qmlViewer;
}
-QmlApplicationRunConfiguration::RunMode QmlApplicationRunConfiguration::runMode() const
+QmlRunConfiguration::RunMode QmlRunConfiguration::runMode() const
{
return Gui;
}
-QString QmlApplicationRunConfiguration::workingDirectory() const
+QString QmlRunConfiguration::workingDirectory() const
{
QFileInfo projectFile(m_project->file()->fileName());
return projectFile.filePath();
}
-QStringList QmlApplicationRunConfiguration::commandLineArguments() const
+QStringList QmlRunConfiguration::commandLineArguments() const
{
QStringList args;
@@ -419,44 +353,60 @@ QStringList QmlApplicationRunConfiguration::commandLineArguments() const
return args;
}
-ProjectExplorer::Environment QmlApplicationRunConfiguration::environment() const
+ProjectExplorer::Environment QmlRunConfiguration::environment() const
{
return ProjectExplorer::Environment::systemEnvironment();
}
-QString QmlApplicationRunConfiguration::dumperLibrary() const
+QString QmlRunConfiguration::dumperLibrary() const
{
return QString();
}
-QWidget *QmlApplicationRunConfiguration::configurationWidget()
+QWidget *QmlRunConfiguration::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)));
QDir projectDir = m_project->projectDir();
QStringList files;
+ files.append(tr("<Current File>"));
+
+ int currentIndex = -1;
+
foreach (const QString &fn, m_project->files()) {
QFileInfo fileInfo(fn);
if (fileInfo.suffix() != QLatin1String("qml"))
continue;
- files.append(projectDir.relativeFilePath(fn));
+ QString fileName = projectDir.relativeFilePath(fn);
+ if (fileName == m_scriptFile)
+ currentIndex = files.size();
+
+ files.append(fileName);
}
combo->addItems(files);
+ if (currentIndex != -1)
+ combo->setCurrentIndex(currentIndex);
+
+ connect(combo, SIGNAL(activated(QString)), this, SLOT(setMainScript(QString)));
+ Core::Utils::PathChooser *qmlViewer = new Core::Utils::PathChooser;
+ qmlViewer->setExpectedKind(Core::Utils::PathChooser::Command);
+ qmlViewer->setPath(executable());
+ connect(qmlViewer, SIGNAL(changed()), this, SLOT(onQmlViewerChanged()));
+
+ form->addRow(tr("QML Viewer"), qmlViewer);
form->addRow(tr("Main QML File:"), combo);
return config;
}
-QString QmlApplicationRunConfiguration::mainScript() const
+QString QmlRunConfiguration::mainScript() const
{
if (m_scriptFile.isEmpty() || m_scriptFile == tr("<Current File>")) {
Core::EditorManager *editorManager = Core::ICore::instance()->editorManager();
@@ -468,17 +418,73 @@ QString QmlApplicationRunConfiguration::mainScript() const
return m_project->projectDir().absoluteFilePath(m_scriptFile);
}
-void QmlApplicationRunConfiguration::setMainScript(const QString &scriptFile)
+void QmlRunConfiguration::setMainScript(const QString &scriptFile)
{
m_scriptFile = scriptFile;
}
-void QmlApplicationRunConfiguration::save(ProjectExplorer::PersistentSettingsWriter &writer) const
+void QmlRunConfiguration::onQmlViewerChanged()
+{
+ if (Core::Utils::PathChooser *chooser = qobject_cast<Core::Utils::PathChooser *>(sender())) {
+ m_qmlViewer = chooser->path();
+ }
+}
+
+void QmlRunConfiguration::save(ProjectExplorer::PersistentSettingsWriter &writer) const
{
ProjectExplorer::ApplicationRunConfiguration::save(writer);
+
+ writer.saveValue(QLatin1String("qmlviewer"), m_qmlViewer);
+ writer.saveValue(QLatin1String("mainscript"), m_scriptFile);
}
-void QmlApplicationRunConfiguration::restore(const ProjectExplorer::PersistentSettingsReader &reader)
+void QmlRunConfiguration::restore(const ProjectExplorer::PersistentSettingsReader &reader)
{
ProjectExplorer::ApplicationRunConfiguration::restore(reader);
+
+ m_qmlViewer = reader.restoreValue(QLatin1String("qmlviewer")).toString();
+ m_scriptFile = reader.restoreValue(QLatin1String("mainscript")).toString();
+
+ if (m_qmlViewer.isEmpty())
+ m_qmlViewer = Core::Utils::SynchronousProcess::locateBinary(QLatin1String("qmlviewer"));
+
+ if (m_scriptFile.isEmpty())
+ m_scriptFile = tr("<Current File>");
+}
+
+QmlRunConfigurationFactory::QmlRunConfigurationFactory()
+ : m_type(Constants::QMLRUNCONFIGURATION)
+{
+}
+
+QmlRunConfigurationFactory::~QmlRunConfigurationFactory()
+{
+}
+
+bool QmlRunConfigurationFactory::canCreate(const QString &type) const
+{
+ if (type.startsWith(m_type))
+ return true;
+
+ return false;
+}
+
+QStringList QmlRunConfigurationFactory::canCreate(ProjectExplorer::Project *) const
+{
+ return QStringList();
}
+
+QString QmlRunConfigurationFactory::nameForType(const QString &type) const
+{
+ return type;
+}
+
+QSharedPointer<ProjectExplorer::RunConfiguration> QmlRunConfigurationFactory::create(ProjectExplorer::Project *project,
+ const QString &)
+{
+ QmlProject *pro = qobject_cast<QmlProject *>(project);
+ QSharedPointer<ProjectExplorer::RunConfiguration> rc(new QmlRunConfiguration(pro));
+ return rc;
+}
+
+