debuggerplugin.h 4.03 KB
Newer Older
1
/**************************************************************************
con's avatar
con committed
2
3
4
**
** This file is part of Qt Creator
**
hjk's avatar
hjk committed
5
** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
con's avatar
con committed
6
**
7
** Contact: Nokia Corporation (qt-info@nokia.com)
con's avatar
con committed
8
**
9
** Commercial Usage
10
**
11
12
13
14
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
15
**
16
** GNU Lesser General Public License Usage
17
**
18
19
20
21
22
23
** 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.
24
**
25
** If you are unsure which license is appropriate for your use, please
hjk's avatar
hjk committed
26
** contact the sales department at http://qt.nokia.com/contact.
con's avatar
con committed
27
**
28
**************************************************************************/
hjk's avatar
hjk committed
29

con's avatar
con committed
30
31
32
#ifndef DEBUGGERPLUGIN_H
#define DEBUGGERPLUGIN_H

33
#include "debugger_global.h"
con's avatar
con committed
34

35
#include <extensionsystem/iplugin.h>
con's avatar
con committed
36
37

QT_BEGIN_NAMESPACE
38
39
40
class QAbstractItemView;
class QIcon;
class QMessageBox;
con's avatar
con committed
41
42
QT_END_NAMESPACE

43
44
namespace CPlusPlus {
class Snapshot;
45
46
}

47
48
namespace ProjectExplorer {
class RunControl;
49
}
con's avatar
con committed
50
51

namespace Debugger {
52

53
54
55
class DebuggerPluginPrivate;
class DebuggerRunControl;
class DebuggerStartParameters;
56

con's avatar
con committed
57
namespace Internal {
58
59
60
class DebuggerEngine;
class DebuggerListener;
}
con's avatar
con committed
61

62
class DEBUGGER_EXPORT DebuggerPlugin : public ExtensionSystem::IPlugin
con's avatar
con committed
63
64
65
66
67
68
69
{
    Q_OBJECT

public:
    DebuggerPlugin();
    ~DebuggerPlugin();

70
    static DebuggerPlugin *instance();
71
72

    QVariant configValue(const QString &name) const;
73
74
75
    QVariant sessionValue(const QString &name);
    void setSessionValue(const QString &name, const QVariant &value);
    void setConfigValue(const QString &name, const QVariant &value);
con's avatar
con committed
76

77
78
    void resetLocation();
    void gotoLocation(const QString &fileName, int lineNumber, bool setMarker);
con's avatar
con committed
79
80
    void activatePreviousMode();
    void activateDebugMode();
81
    void openTextEditor(const QString &titlePattern, const QString &contents);
82

83
84
    void readSettings();
    void writeSettings() const;
con's avatar
con committed
85

86
    static DebuggerRunControl *createDebugger(const DebuggerStartParameters &sp);
87
    static void startDebugger(ProjectExplorer::RunControl *runControl);
88

89
90
    QMessageBox *showMessageBox(int icon, const QString &title,
        const QString &text, int buttons = 0);
hjk's avatar
hjk committed
91

92
    const CPlusPlus::Snapshot &cppCodeModelSnapshot() const;
93

94
95
96
97
98
99
100
101
102
103
    QIcon locationMarkIcon() const;
    int state() const;  // Last reported state of last active engine.
    bool isReverseDebugging() const;
    void createNewDock(QWidget *widget);
    void runControlStarted(DebuggerRunControl *runControl);
    void runControlFinished(DebuggerRunControl *runControl);

    // This contains per-session data like breakpoints and watched
    // expression. It serves as a template for new engine instantiations.
    Internal::DebuggerEngine *sessionTemplate();
104
    void updateState(Internal::DebuggerEngine *engine);
105

106
107
    bool isRegisterViewVisible() const;

108
109
110
111
112
113
114
115
116
117
public slots:
    void exitDebugger();  // FIXME: remove
    void clearCppCodeModelSnapshot();
    void ensureLogVisible();

    // void runTest(const QString &fileName);
    void showMessage(const QString &msg, int channel, int timeout = -1);

signals:
    void stateChanged(int);
118

con's avatar
con committed
119
private:
120
121
122
123
124
125
126
127
128
129
130
131
132
    friend class Internal::DebuggerEngine;
    friend class Internal::DebuggerListener
;
    bool initialize(const QStringList &arguments, QString *errorMessage);
    void aboutToShutdown();
    void extensionsInitialized();
    void remoteCommand(const QStringList &options, const QStringList &arguments);

    QWidget *mainWindow() const;

private:
    friend class DebuggerPluginPrivate;
    DebuggerPluginPrivate *d;
con's avatar
con committed
133
134
135
136
137
};

} // namespace Debugger

#endif // DEBUGGERPLUGIN_H