Files
qt-creator/src/plugins/cppeditor/cppoutline.h

76 lines
1.7 KiB
C
Raw Normal View History

2010-07-08 11:26:33 +02:00
#ifndef CPPOUTLINE_H
#define CPPOUTLINE_H
#include "cppeditor.h"
#include <utils/navigationtreeview.h>
2010-07-08 11:26:33 +02:00
#include <texteditor/ioutlinewidget.h>
#include <QtGui/QSortFilterProxyModel>
#include <QtGui/QTreeView>
namespace CppEditor {
namespace Internal {
class CppOutlineTreeView : public Utils::NavigationTreeView
2010-07-08 11:26:33 +02:00
{
Q_OBJECT
public:
CppOutlineTreeView(QWidget *parent);
void contextMenuEvent(QContextMenuEvent *event);
2010-07-08 11:26:33 +02:00
};
class CppOutlineFilterModel : public QSortFilterProxyModel
{
Q_OBJECT
public:
CppOutlineFilterModel(CPlusPlus::OverviewModel *sourceModel, QObject *parent);
2010-07-08 11:26:33 +02:00
// QSortFilterProxyModel
bool filterAcceptsRow(int sourceRow,
const QModelIndex &sourceParent) const;
private:
CPlusPlus::OverviewModel *m_sourceModel;
2010-07-08 11:26:33 +02:00
};
class CppOutlineWidget : public TextEditor::IOutlineWidget
{
Q_OBJECT
public:
CppOutlineWidget(CPPEditor *editor);
// IOutlineWidget
virtual QList<QAction*> filterMenuActions() const;
2010-07-08 11:26:33 +02:00
virtual void setCursorSynchronization(bool syncWithCursor);
private slots:
void modelUpdated();
void updateSelectionInTree(const QModelIndex &index);
2010-07-08 11:26:33 +02:00
void updateSelectionInText(const QItemSelection &selection);
private:
bool syncCursor();
private:
CPPEditor *m_editor;
CppOutlineTreeView *m_treeView;
CPlusPlus::OverviewModel *m_model;
CppOutlineFilterModel *m_proxyModel;
bool m_enableCursorSync;
bool m_blockCursorSync;
};
class CppOutlineWidgetFactory : public TextEditor::IOutlineWidgetFactory
{
Q_OBJECT
public:
bool supportsEditor(Core::IEditor *editor) const;
TextEditor::IOutlineWidget *createWidget(Core::IEditor *editor);
};
} // namespace Internal
} // namespace CppEditor
#endif // CPPOUTLINE_H