1 /**************************************************************************
3 ** This file is part of Qt Creator
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
7 ** Author: Nicolas Arnaud-Cormos, KDAB (nicolas.arnaud-cormos@kdab.com)
9 ** Contact: Nokia Corporation (qt-info@nokia.com)
11 ** No Commercial Usage
13 ** This file contains pre-release code and may not be distributed.
14 ** You may use this file in accordance with the terms and conditions
15 ** contained in the Technology Preview License Agreement accompanying
18 ** GNU Lesser General Public License Usage
20 ** Alternatively, this file may be used under the terms of the GNU Lesser
21 ** General Public License version 2.1 as published by the Free Software
22 ** Foundation and appearing in the file LICENSE.LGPL included in the
23 ** packaging of this file. Please review the following information to
24 ** ensure the GNU Lesser General Public License version 2.1 requirements
25 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
27 ** In addition, as a special exception, Nokia gives you certain additional
28 ** rights. These rights are described in the Nokia Qt LGPL Exception
29 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
31 ** If you have questions regarding the use of this file, please contact
32 ** Nokia at qt-info@nokia.com.
34 **************************************************************************/
36 #ifndef MEMCHECKTOOL_H
37 #define MEMCHECKTOOL_H
39 #include <analyzerbase/ianalyzertool.h>
41 #include <QtGui/QSortFilterProxyModel>
42 #include <QtCore/QSharedPointer>
55 namespace XmlProtocol {
62 class AnalyzerSettings;
64 class MemCheckOutputPaneAdapter;
65 class MemcheckErrorView;
68 class MemcheckErrorFilterProxyModel : public QSortFilterProxyModel
72 MemcheckErrorFilterProxyModel(QObject *parent = 0);
75 void setAcceptedKinds(const QList<int> &acceptedKinds);
76 void setFilterExternalIssues(bool filter);
79 bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
81 QList<int> m_acceptedKinds;
82 bool m_filterExternalIssues;
85 class MemcheckTool : public IAnalyzerTool
89 explicit MemcheckTool(QObject *parent = 0);
92 QString displayName() const;
93 ToolMode mode() const;
95 void initialize(ExtensionSystem::IPlugin *plugin);
97 virtual IAnalyzerOutputPaneAdapter *outputPaneAdapter();
98 IAnalyzerEngine *createEngine(ProjectExplorer::RunConfiguration *runConfiguration);
100 // For the output pane adapter.
101 MemcheckErrorView *ensurePaneErrorView();
102 QWidget *createPaneToolBarWidget();
103 void clearErrorView();
106 void settingsDestroyed(QObject *settings);
107 void maybeActiveRunConfigurationChanged();
109 void engineStarting(const IAnalyzerEngine *engine);
110 void parserError(const Valgrind::XmlProtocol::Error &error);
111 void internalParserError(const QString &errorString);
112 void updateErrorFilter();
113 void suppressionActionTriggered();
115 QMenu *filterMenu() const;
118 AnalyzerSettings *m_settings;
120 FrameFinder *m_frameFinder;
121 Valgrind::XmlProtocol::ErrorListModel *m_errorModel;
122 MemcheckErrorFilterProxyModel *m_errorProxyModel;
123 MemcheckErrorView *m_errorView;
125 QList<QAction *> m_errorFilterActions;
126 QAction *m_filterProjectAction;
127 QList<QAction *> m_suppressionActions;
128 QAction *m_suppressionSeparator;
129 MemCheckOutputPaneAdapter *m_outputPaneAdapter;
132 } // namespace Internal
133 } // namespace Analyzer
135 #endif // MEMCHECKTOOL_H