File indexing completed on 2024-05-05 04:40:57

0001 /*
0002     SPDX-FileCopyrightText: 2006-2007 Andreas Pakulat <apaku@gmx.de>
0003     SPDX-FileCopyrightText: 2007 Dukju Ahn <dukjuahn@gmail.com>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef KDEVPLATFORM_PLUGIN_STANDARDOUTPUTVIEW_H
0009 #define KDEVPLATFORM_PLUGIN_STANDARDOUTPUTVIEW_H
0010 
0011 #include <outputview/ioutputview.h>
0012 #include <interfaces/iplugin.h>
0013 #include <QVariantList>
0014 
0015 template <typename T> class QList;
0016 class QAbstractItemModel;
0017 class QString;
0018 class QModelIndex;
0019 class QAbstractItemDelegate;
0020 class OutputWidget;
0021 class ToolViewData;
0022 
0023 /**
0024 @author Andreas Pakulat
0025 */
0026 
0027 namespace Sublime
0028 {
0029 class View;
0030 }
0031 
0032 class StandardOutputView : public KDevelop::IPlugin, public KDevelop::IOutputView
0033 {
0034     Q_OBJECT
0035     Q_INTERFACES( KDevelop::IOutputView )
0036 
0037 public:
0038     explicit StandardOutputView(QObject *parent = nullptr, const QVariantList &args = QVariantList());
0039     ~StandardOutputView() override;
0040 
0041     int standardToolView( KDevelop::IOutputView::StandardToolView view ) override;
0042     int registerToolView(const QByteArray& configSubgroupName, const QString& title,
0043                          KDevelop::IOutputView::ViewType type = KDevelop::IOutputView::OneView,
0044                          const QIcon& icon = QIcon(), KDevelop::IOutputView::Options option = ShowItemsButton,
0045                          const QList<QAction*>& actionList = QList<QAction*>()) override;
0046 
0047     int registerOutputInToolView( int toolViewId, const QString& title,
0048                                   KDevelop::IOutputView::Behaviours behaviour
0049                                     = KDevelop::IOutputView::AllowUserClose ) override;
0050 
0051     void raiseOutput( int id ) override;
0052 
0053     void setModel( int outputId, QAbstractItemModel* model ) override;
0054     void setDelegate( int outputId, QAbstractItemDelegate* delegate ) override;
0055 
0056     OutputWidget* outputWidgetForId( int outputId ) const;
0057 
0058     void removeToolView(int toolViewId) override;
0059     void removeOutput( int outputId ) override;
0060 
0061     void scrollOutputTo( int outputId, const QModelIndex& idx ) override;
0062     void setTitle(int outputId, const QString& title) override;
0063 
0064 public Q_SLOTS:
0065     void removeSublimeView( Sublime::View* );
0066 
0067 Q_SIGNALS:
0068     void activated( const QModelIndex& );
0069     void outputRemoved(int toolViewId, int outputId);
0070     void toolViewRemoved(int toolViewId);
0071 
0072 private:
0073     QMap<int, ToolViewData*> m_toolViews;
0074     QList<int> m_ids;
0075     QMap<KDevelop::IOutputView::StandardToolView, int> m_standardViews;
0076 };
0077 
0078 #endif // KDEVPLATFORM_PLUGIN_STANDARDOUTPUTVIEW_H
0079