#include "abstractviewinspector.h"
#include "abstracttool.h"
+#include "qqmlinspectorservice.h"
#include <QtCore/QDebug>
#include <QtQml/QQmlEngine>
#include <QtQml/QQmlComponent>
#include <QtCore/private/qabstractanimation_p.h>
-#include <QtQml/private/qqmlinspectorservice_p.h>
#include <QtQml/private/qqmldebugconnector_p.h>
#include <QtQml/private/qqmlcontext_p.h>
--- /dev/null
+TARGET = qmldbg_inspector
+QT += qml-private quick-private core-private gui-private
+
+PLUGIN_TYPE = qmltooling
+PLUGIN_CLASS_NAME = QQmlInspectorServiceFactory
+load(qt_plugin)
+
+INCLUDEPATH *= $$PWD $$PWD/../shared
+
+SOURCES += \
+ $$PWD/qtquick2plugin.cpp \
+ $$PWD/highlight.cpp \
+ $$PWD/qquickviewinspector.cpp \
+ $$PWD/abstracttool.cpp \
+ $$PWD/abstractviewinspector.cpp \
+ $$PWD/inspecttool.cpp \
+ $$PWD/qqmlinspectorservice.cpp
+
+HEADERS += \
+ $$PWD/qtquick2plugin.h \
+ $$PWD/highlight.h \
+ $$PWD/qquickviewinspector.h \
+ $$PWD/qqmlinspectorservice.h \
+ $$PWD/abstracttool.h \
+ $$PWD/abstractviewinspector.h \
+ $$PWD/qqmlinspectorinterface.h \
+ $$PWD/inspecttool.h
+
+OTHER_FILES += \
+ qqmlinspectorservice.json
QT_BEGIN_NAMESPACE
-
-class Q_QML_PRIVATE_EXPORT QQmlInspectorInterface
+class QQmlInspectorInterface
{
public:
QQmlInspectorInterface() {}
virtual void clientMessage(const QByteArray &message) = 0;
};
-#define QQmlInspectorInterface_iid "org.qt-project.Qt.QQmlInspectorInterface"
-
-Q_DECLARE_INTERFACE(QQmlInspectorInterface, QQmlInspectorInterface_iid)
-
QT_END_NAMESPACE
#endif // QQMLINSPECTORINTERFACE_H
**
****************************************************************************/
-#include "qqmlinspectorservice_p.h"
-#include "qqmlinspectorinterface_p.h"
+#include "qqmlinspectorservice.h"
+#include "qqmlinspectorinterface.h"
+#include "qtquick2plugin.h"
#include <private/qqmlglobal_p.h>
#include <QtCore/QDir>
#include <QtCore/QPluginLoader>
-#ifndef QT_NO_LIBRARY
-// print detailed information about loading of plugins
-DEFINE_BOOL_CONFIG_OPTION(qmlDebugVerbose, QML_DEBUGGER_VERBOSE)
-#endif
-
QT_BEGIN_NAMESPACE
-Q_GLOBAL_STATIC(QQmlInspectorServiceImpl, serviceInstance)
-
-QQmlInspectorServiceImpl::QQmlInspectorServiceImpl(): QQmlInspectorService(1),
- m_currentInspectorPlugin(0)
-{
-}
-
-QQmlInspectorServiceImpl *QQmlInspectorServiceImpl::instance()
+QQmlInspectorServiceImpl::QQmlInspectorServiceImpl(QObject *parent):
+ QQmlInspectorService(1, parent), m_currentInspectorPlugin(0)
{
- return serviceInstance();
}
void QQmlInspectorServiceImpl::addView(QObject *view)
void QQmlInspectorServiceImpl::loadInspectorPlugins()
{
-#ifndef QT_NO_LIBRARY
- QStringList pluginCandidates;
- const QStringList paths = QCoreApplication::libraryPaths();
- foreach (const QString &libPath, paths) {
- const QDir dir(libPath + QLatin1String("/qmltooling"));
- if (dir.exists())
- foreach (const QString &pluginPath, dir.entryList(QDir::Files))
- pluginCandidates << dir.absoluteFilePath(pluginPath);
- }
-
- foreach (const QString &pluginPath, pluginCandidates) {
- if (qmlDebugVerbose())
- qDebug() << "QQmlInspector: Trying to load plugin " << pluginPath << "...";
-
- QPluginLoader loader(pluginPath);
- if (loader.metaData()[QLatin1String("IID")] !=
- QLatin1String("org.qt-project.Qt.QQmlInspectorInterface"))
- continue;
-
- if (!loader.load()) {
- if (qmlDebugVerbose())
- qDebug() << "QQmlInspector: Error while loading: " << loader.errorString();
-
- continue;
- }
+ m_inspectorPlugins << new QmlJSDebugger::QtQuick2Plugin;
+}
- QQmlInspectorInterface *inspector =
- qobject_cast<QQmlInspectorInterface*>(loader.instance());
- if (inspector) {
- if (qmlDebugVerbose())
- qDebug() << "QQmlInspector: Plugin successfully loaded.";
- m_inspectorPlugins << inspector;
- } else {
- if (qmlDebugVerbose())
- qDebug() << "QQmlInspector: Plugin does not implement interface QQmlInspectorInterface.";
-
- loader.unload();
- }
- }
-#endif
+QQmlDebugService *QQmlInspectorServiceFactory::create(const QString &key)
+{
+ return key == QQmlInspectorServiceImpl::s_key ? new QQmlInspectorServiceImpl(this) : 0;
}
QT_END_NAMESPACE
// We mean it.
//
-#include "qqmldebugservice_p.h"
-#include "qqmldebugserviceinterfaces_p.h"
+#include <private/qqmldebugserviceinterfaces_p.h>
+#include <private/qqmldebugservicefactory_p.h>
#include <QtQml/qtqmlglobal.h>
#include <QtCore/QList>
class QQmlInspectorInterface;
-class Q_QML_PRIVATE_EXPORT QQmlInspectorServiceImpl : public QQmlInspectorService
+class QQmlInspectorServiceImpl : public QQmlInspectorService
{
Q_OBJECT
public:
- QQmlInspectorServiceImpl();
- static QQmlInspectorServiceImpl *instance();
+ QQmlInspectorServiceImpl(QObject *parent = 0);
void addView(QObject *);
void removeView(QObject *);
private:
friend class QmlJSDebugger::AbstractViewInspector;
+ friend class QQmlInspectorServiceFactory;
void loadInspectorPlugins();
QList<QObject*> m_views;
QList<QQmlInspectorInterface*> m_inspectorPlugins;
};
+class QQmlInspectorServiceFactory : public QQmlDebugServiceFactory
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID QQmlDebugServiceFactory_iid FILE "qqmlinspectorservice.json")
+public:
+ QQmlDebugService *create(const QString &key);
+};
+
QT_END_NAMESPACE
#endif // QQMLINSPECTORSERVICE_H
--- /dev/null
+{
+ "Keys": [ "QmlInspector" ]
+}
#include "qtquick2plugin.h"
#include "qquickviewinspector.h"
+#include "qqmlinspectorservice.h"
#include <QtCore/qplugin.h>
-#include <QtQml/private/qqmlinspectorservice_p.h>
#include <QtQuick/QQuickView>
QT_BEGIN_NAMESPACE
#define QTQUICK2PLUGINPLUGIN_H
#include <QtCore/QPointer>
-#include <QtQml/private/qqmlinspectorinterface_p.h>
+#include "qqmlinspectorinterface.h"
QT_BEGIN_NAMESPACE
{
Q_OBJECT
Q_DISABLE_COPY(QtQuick2Plugin)
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlInspectorInterface")
- Q_INTERFACES(QQmlInspectorInterface)
public:
QtQuick2Plugin();
+++ /dev/null
-TARGET = qmldbg_qtquick2
-QT += qml-private quick-private core-private gui-private
-
-PLUGIN_TYPE = qmltooling
-PLUGIN_CLASS_NAME = QtQuick2Plugin
-load(qt_plugin)
-
-INCLUDEPATH *= $$PWD $$PWD/../shared
-
-SOURCES += \
- qtquick2plugin.cpp \
- highlight.cpp \
- qquickviewinspector.cpp \
- ../shared/abstracttool.cpp \
- ../shared/abstractviewinspector.cpp \
- inspecttool.cpp
-
-HEADERS += \
- qtquick2plugin.h \
- highlight.h \
- qquickviewinspector.h \
- ../shared/abstracttool.h \
- ../shared/abstractviewinspector.h \
- inspecttool.h
-
-OTHER_FILES += qtquick2plugin.json
qmldbg_server \
qmldbg_tcp
-qtHaveModule(quick): SUBDIRS += qmldbg_qtquick2
+qtHaveModule(quick): SUBDIRS += qmldbg_inspector
$$PWD/qqmldebugservice.cpp \
$$PWD/qqmldebugserviceinterfaces.cpp \
$$PWD/qqmlprofilerservice.cpp \
- $$PWD/qqmlinspectorservice.cpp \
$$PWD/qqmlenginedebugservice.cpp \
$$PWD/qdebugmessageservice.cpp \
$$PWD/qv4debugservice.cpp \
$$PWD/qqmlprofilerservice_p.h \
$$PWD/qqmldebugserviceinterfaces_p.h \
$$PWD/qqmldebugstatesdelegate_p.h \
- $$PWD/qqmlinspectorservice_p.h \
- $$PWD/qqmlinspectorinterface_p.h \
$$PWD/qqmlenginedebugservice_p.h \
$$PWD/qqmldebug.h \
$$PWD/qdebugmessageservice_p.h \
#include "qdebugmessageservice_p.h"
#include "qqmlenginecontrolservice_p.h"
#include "qqmlenginedebugservice_p.h"
-#include "qqmlinspectorservice_p.h"
#include "qqmlprofilerservice_p.h"
#include "qv4debugservice_p.h"
#include "qqmldebugservicefactory_p.h"
Q_QML_IMPORT_DEBUG_PLUGIN(QQmlDebugServerFactory)
Q_QML_DEBUG_PLUGIN_LOADER(QQmlDebugService)
+Q_QML_IMPORT_DEBUG_PLUGIN(QQmlInspectorServiceFactory)
+
struct QQmlDebugConnectorParams {
QString pluginKey;
QString arguments;
QQmlProfilerServiceImpl::instance();
QDebugMessageService::instance();
QQmlEngineControlService::instance();
- QQmlInspectorServiceImpl::instance();
foreach (const QJsonObject &object, metaDataForQQmlDebugService()) {
foreach (const QJsonValue &key, object.value(QLatin1String("MetaData")).toObject()