aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cppeditor/cppincludehierarchy.h
diff options
context:
space:
mode:
authorPrzemyslaw Gorszkowski <pgorszkowski@gmail.com>2013-08-13 22:58:38 +0200
committerNikolai Kosjar <nikolai.kosjar@digia.com>2013-10-01 13:12:04 +0200
commita3eaed4c51af007e4aea5d1b1f24fbf8ba38c4cb (patch)
tree8fd4082a9b804faa42822626d905484eabf8c040 /src/plugins/cppeditor/cppincludehierarchy.h
parent8c79d5bc23e4b555625dfa368ca9f74e6d14540b (diff)
CppEditor: introduce include hierarchy
Based on type hierarchy. Added to context menu ('Open Include Hierarchy') Shortcut(Ctrl+Shift+I) 'Include Hierarchy' contains: FileName for which 'Include Hierarchy' is done Includes(which files are included by current file - tree hierarchy) Included by(which files include current file - tree hierarchy) It is possible to open/goto each file by clicking on specific item. Additionally for 'Included by' files it goes to the line where is include directive for current file. Change-Id: I549b1ed64e4c9f6955f60d00efb12950a3259f81 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Diffstat (limited to 'src/plugins/cppeditor/cppincludehierarchy.h')
-rw-r--r--src/plugins/cppeditor/cppincludehierarchy.h119
1 files changed, 119 insertions, 0 deletions
diff --git a/src/plugins/cppeditor/cppincludehierarchy.h b/src/plugins/cppeditor/cppincludehierarchy.h
new file mode 100644
index 0000000000..fd8d31cbde
--- /dev/null
+++ b/src/plugins/cppeditor/cppincludehierarchy.h
@@ -0,0 +1,119 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Przemyslaw Gorszkowski <pgorszkowski@gmail.com>
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** 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, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+#ifndef CPPINCLUDEHIERARCHY_H
+#define CPPINCLUDEHIERARCHY_H
+
+#include <coreplugin/inavigationwidgetfactory.h>
+
+#include <QString>
+#include <QStackedWidget>
+#include <QWidget>
+
+QT_BEGIN_NAMESPACE
+class QStandardItemModel;
+class QStandardItem;
+class QModelIndex;
+class QLabel;
+QT_END_NAMESPACE
+
+namespace Core {
+class IEditor;
+}
+
+namespace Utils {
+class AnnotatedItemDelegate;
+class FileName;
+}
+
+namespace CppEditor {
+namespace Internal {
+
+class CPPEditorWidget;
+class CppInclude;
+class CppIncludeLabel;
+class CppIncludeHierarchyModel;
+class CppIncludeHierarchyTreeView;
+
+class CppIncludeHierarchyWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ CppIncludeHierarchyWidget();
+ virtual ~CppIncludeHierarchyWidget();
+
+public slots:
+ void perform();
+
+private slots:
+ void onItemClicked(const QModelIndex &index);
+
+private:
+ void showNoIncludeHierarchyLabel();
+ void showIncludeHierarchy();
+
+ CPPEditorWidget *m_cppEditor;
+ CppIncludeHierarchyTreeView *m_treeView;
+ CppIncludeHierarchyModel *m_model;
+ Utils::AnnotatedItemDelegate *m_delegate;
+ CppIncludeLabel *m_inspectedFile;
+ QLabel *m_includeHierarchyInfoLabel;
+};
+
+// @todo: Pretty much the same design as the OutlineWidgetStack. Maybe we can generalize the
+// outline factory so that it works for different widgets that support the same editor.
+class CppIncludeHierarchyStackedWidget : public QStackedWidget
+{
+ Q_OBJECT
+public:
+ CppIncludeHierarchyStackedWidget(QWidget *parent = 0);
+ virtual ~CppIncludeHierarchyStackedWidget();
+
+private:
+ CppIncludeHierarchyWidget *m_typeHiearchyWidgetInstance;
+};
+
+class CppIncludeHierarchyFactory : public Core::INavigationWidgetFactory
+{
+ Q_OBJECT
+public:
+ CppIncludeHierarchyFactory();
+ virtual ~CppIncludeHierarchyFactory();
+
+ QString displayName() const;
+ int priority() const;
+ Core::Id id() const;
+ QKeySequence activationSequence() const;
+ Core::NavigationView createWidget();
+};
+
+} // namespace Internal
+} // namespace CppEditor
+
+#endif // CPPINCLUDEHIERARCHY_H