Listening Qml syntax errors in Tasks window

This commit is contained in:
Kai Koehne
2009-11-11 10:10:00 +01:00
parent a475761384
commit 925c686d85
14 changed files with 113 additions and 19 deletions

View File

@@ -49,6 +49,8 @@ const char *const PROJECT_KIND = "QML";
const char *const FILES_EDITOR = ".qmlproject Editor";
const char *const FILES_MIMETYPE = QMLMIMETYPE;
const char *const TASK_CATEGORY_QML = "Task.Category.Qml";
} // namespace Constants
} // namespace QmlProjectManager

View File

@@ -10,6 +10,7 @@ HEADERS = qmlproject.h \
qmlprojectwizard.h \
qmlnewprojectwizard.h \
qmlprojectfileseditor.h \
qmltaskmanager.h \
qmlmakestep.h
SOURCES = qmlproject.cpp \
qmlprojectplugin.cpp \
@@ -18,6 +19,7 @@ SOURCES = qmlproject.cpp \
qmlprojectwizard.cpp \
qmlnewprojectwizard.cpp \
qmlprojectfileseditor.cpp \
qmltaskmanager.cpp \
qmlmakestep.cpp
RESOURCES += qmlproject.qrc

View File

@@ -35,19 +35,26 @@
#include "qmlprojectfileseditor.h"
#include "qmlproject.h"
#include "qmlmakestep.h"
#include "qmltaskmanager.h"
#include <extensionsystem/pluginmanager.h>
#include <coreplugin/icore.h>
#include <coreplugin/mimedatabase.h>
#include <texteditor/texteditoractionhandler.h>
#include <projectexplorer/taskwindow.h>
#include <qmleditor/qmlmodelmanagerinterface.h>
#include <QtCore/QtPlugin>
using namespace QmlProjectManager;
using namespace QmlProjectManager::Internal;
QmlProjectPlugin::QmlProjectPlugin()
: m_projectFilesEditorFactory(0)
QmlProjectPlugin::QmlProjectPlugin() :
m_projectFilesEditorFactory(0),
m_qmlTaskManager(0)
{ }
QmlProjectPlugin::~QmlProjectPlugin()
@@ -76,6 +83,8 @@ bool QmlProjectPlugin::initialize(const QStringList &, QString *errorMessage)
m_projectFilesEditorFactory = new ProjectFilesFactory(manager, actionHandler);
addObject(m_projectFilesEditorFactory);
m_qmlTaskManager = new QmlTaskManager(this);
addAutoReleasedObject(manager);
addAutoReleasedObject(new QmlRunConfigurationFactory);
addAutoReleasedObject(new QmlNewProjectWizard);
@@ -86,6 +95,15 @@ bool QmlProjectPlugin::initialize(const QStringList &, QString *errorMessage)
}
void QmlProjectPlugin::extensionsInitialized()
{ }
{
ExtensionSystem::PluginManager *pluginManager = ExtensionSystem::PluginManager::instance();
ProjectExplorer::TaskWindow *taskWindow = pluginManager->getObject<ProjectExplorer::TaskWindow>();
m_qmlTaskManager->setTaskWindow(taskWindow);
QmlEditor::QmlModelManagerInterface *modelManager = pluginManager->getObject<QmlEditor::QmlModelManagerInterface>();
Q_ASSERT(modelManager);
connect(modelManager, SIGNAL(documentUpdated(QmlEditor::QmlDocument::Ptr)),
m_qmlTaskManager, SLOT(documentUpdated(QmlEditor::QmlDocument::Ptr)));
}
Q_EXPORT_PLUGIN(QmlProjectPlugin)

View File

@@ -38,6 +38,7 @@ namespace QmlProjectManager {
namespace Internal {
class ProjectFilesFactory;
class QmlTaskManager;
class QmlProjectPlugin: public ExtensionSystem::IPlugin
{
@@ -52,6 +53,7 @@ public:
private:
ProjectFilesFactory *m_projectFilesEditorFactory;
QmlTaskManager *m_qmlTaskManager;
};
} // namespace Internal

View File

@@ -0,0 +1,38 @@
#include "qmltaskmanager.h"
#include "qmlprojectconstants.h"
#include <QDebug>
namespace QmlProjectManager {
namespace Internal {
QmlTaskManager::QmlTaskManager(QObject *parent) :
QObject(parent),
m_taskWindow(0)
{
}
void QmlTaskManager::setTaskWindow(ProjectExplorer::TaskWindow *taskWindow)
{
Q_ASSERT(taskWindow);
m_taskWindow = taskWindow;
m_taskWindow->addCategory(Constants::TASK_CATEGORY_QML, "Qml");
}
void QmlTaskManager::documentUpdated(QmlEditor::QmlDocument::Ptr doc)
{
m_taskWindow->clearTasks(Constants::TASK_CATEGORY_QML);
foreach (const QmlJS::DiagnosticMessage &msg, doc->diagnosticMessages()) {
ProjectExplorer::TaskWindow::TaskType type
= msg.isError() ? ProjectExplorer::TaskWindow::Error
: ProjectExplorer::TaskWindow::Warning;
ProjectExplorer::TaskWindow::Task task(type, msg.message, doc->fileName(), msg.loc.startLine,
Constants::TASK_CATEGORY_QML);
m_taskWindow->addTask(task);
}
}
} // Internal
} // QmlEditor

View File

@@ -0,0 +1,29 @@
#ifndef QMLTASKMANAGER_H
#define QMLTASKMANAGER_H
#include <projectexplorer/taskwindow.h>
#include <qmleditor/qmldocument.h>
#include <QtCore/QObject>
namespace QmlProjectManager {
namespace Internal {
class QmlTaskManager : public QObject
{
Q_OBJECT
public:
QmlTaskManager(QObject *parent = 0);
void setTaskWindow(ProjectExplorer::TaskWindow *taskWindow);
public slots:
void documentUpdated(QmlEditor::QmlDocument::Ptr doc);
private:
ProjectExplorer::TaskWindow *m_taskWindow;
};
} // Internal
} // QmlProjectManager
#endif // QMLTASKMANAGER_H