qtdeclarative/src/declarative/debugger/qjsdebugservice_p.h

100 lines
2.6 KiB
C
Raw Normal View History

Moved the QML Observer Service and related functionality into Qt This code was previously developed as part of Qt Creator in share/qtcreator/qml/qmljsdebugger/ Moving it into Qt will allow us to simplify the setup required before you can debug QML applications. To avoid adding too much weight to the QtDeclarative module, a declarativeobserver plugin was introduced that contains the QDeclarativeViewObserver and related classes. The QDeclarativeObserverService is just a stub service that loads this plugin once a QML debugging client connects. The plugin implements the QDeclarativeObserverInterface A QJSDebugService was separated out of QJSDebuggerAgent, so that the service can be active while the agent is instantiated lazily. Each QDeclarativeEngine adds itself to the QJSDebugService. Currently only the first one is used when instantiating the agent. QDeclarativeObserverService is hooked into QDeclarativeView, with the view registering itself to the service, allowing the QDeclarativeViewObserver to be created for the view once somebody connects to the service. Again, only the first view is used at the moment. Change-Id: Ib50579c6d24361c2b39528e5556410d3446c2e90 Reviewed-by: Martin Jones Reviewed-by: Michael Brasser (cherry picked from commit 35faeb205843c4f0b921d2b878d2d24962c64664) Fixups squashed into this one: (cherry picked from commit 0abf1dd99eeb252ae10c9f3cd99b64ee0b4d6e72) (cherry picked from commit 894515429397be20670806825099b4b9896d50d6) (cherry picked from commit 7d9f03c87e0e096934583a36340de5446e1d0520) Conflicts: src/plugins/qmltooling/qmltooling.pro src/plugins/qmltooling/tcpserver/qtcpserverconnection.cpp
2011-03-25 12:36:16 +00:00
/****************************************************************************
**
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtDeclarative module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
** contained in the Technology Preview License Agreement accompanying
** this package.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.
**
**
**
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QJSDEBUGSERVICE_P_H
#define QJSDEBUGSERVICE_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QtCore/QPointer>
#include "private/qdeclarativedebugservice_p.h"
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class QDeclarativeEngine;
class QJSDebuggerAgent;
class QJSDebugService : public QDeclarativeDebugService
{
Q_OBJECT
public:
QJSDebugService(QObject *parent = 0);
~QJSDebugService();
static QJSDebugService *instance();
void addEngine(QDeclarativeEngine *);
void removeEngine(QDeclarativeEngine *);
protected:
void statusChanged(Status status);
void messageReceived(const QByteArray &);
private Q_SLOTS:
void executionStopped(bool becauseOfException,
const QString &exception);
private:
QList<QDeclarativeEngine *> m_engines;
QPointer<QJSDebuggerAgent> m_agent;
};
QT_END_NAMESPACE
QT_END_HEADER
#endif // QJSDEBUGSERVICE_P_H