forked from qt-creator/qt-creator
Listening Qml syntax errors in Tasks window
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
38
src/plugins/qmlprojectmanager/qmltaskmanager.cpp
Normal file
38
src/plugins/qmlprojectmanager/qmltaskmanager.cpp
Normal 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
|
||||
29
src/plugins/qmlprojectmanager/qmltaskmanager.h
Normal file
29
src/plugins/qmlprojectmanager/qmltaskmanager.h
Normal 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
|
||||
Reference in New Issue
Block a user