/usr/include/qgis/qgslayertreeview.h is in libqgis-dev 2.18.17+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | /***************************************************************************
qgslayertreeview.h
--------------------------------------
Date : May 2014
Copyright : (C) 2014 by Martin Dobias
Email : wonder dot sk at gmail dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef QGSLAYERTREEVIEW_H
#define QGSLAYERTREEVIEW_H
#include <QTreeView>
class QgsLayerTreeGroup;
class QgsLayerTreeLayer;
class QgsLayerTreeModel;
class QgsLayerTreeNode;
class QgsLayerTreeModelLegendNode;
class QgsLayerTreeViewDefaultActions;
class QgsLayerTreeViewMenuProvider;
class QgsMapLayer;
/**
* \ingroup gui
* The QgsLayerTreeView class extends QTreeView and provides some additional functionality
* when working with a layer tree.
*
* The view updates expanded state of layer tree nodes and also listens to changes
* to expanded states in the layer tree.
*
* The view keeps track of the current layer and emits a signal when the current layer has changed.
*
* Allows the client to specify a context menu provider with custom actions. Also it comes
* with a set of default actions that can be used when building context menu.
*
* @see QgsLayerTreeModel
* @note added in 2.4
*/
class GUI_EXPORT QgsLayerTreeView : public QTreeView
{
Q_OBJECT
public:
explicit QgsLayerTreeView( QWidget *parent = nullptr );
~QgsLayerTreeView();
//! Overridden setModel() from base class. Only QgsLayerTreeModel is an acceptable model.
virtual void setModel( QAbstractItemModel* model ) override;
//! Get access to the model casted to QgsLayerTreeModel
QgsLayerTreeModel* layerTreeModel() const;
//! Get access to the default actions that may be used with the tree view
QgsLayerTreeViewDefaultActions* defaultActions();
//! Set provider for context menu. Takes ownership of the instance
void setMenuProvider( QgsLayerTreeViewMenuProvider* menuProvider );
//! Return pointer to the context menu provider. May be null
QgsLayerTreeViewMenuProvider* menuProvider() const { return mMenuProvider; }
//! Get currently selected layer. May be null
QgsMapLayer* currentLayer() const;
//! Set currently selected layer. Null pointer will deselect any layer.
void setCurrentLayer( QgsMapLayer* layer );
//! Get current node. May be null
QgsLayerTreeNode* currentNode() const;
//! Get current group node. If a layer is current node, the function will return parent group. May be null.
QgsLayerTreeGroup* currentGroupNode() const;
/** Get current legend node. May be null if current node is not a legend node.
* @note added in QGIS 2.14
*/
QgsLayerTreeModelLegendNode* currentLegendNode() const;
//! Return list of selected nodes
//! @arg skipInternal If true, will ignore nodes which have an ancestor in the selection
QList<QgsLayerTreeNode*> selectedNodes( bool skipInternal = false ) const;
//! Return list of selected nodes filtered to just layer nodes
QList<QgsLayerTreeLayer*> selectedLayerNodes() const;
//! Get list of selected layers
QList<QgsMapLayer*> selectedLayers() const;
public slots:
//! Force refresh of layer symbology. Normally not needed as the changes of layer's renderer are monitored by the model
void refreshLayerSymbology( const QString& layerId );
//! Enhancement of QTreeView::expandAll() that also records expanded state in layer tree nodes
//! @note added in QGIS 2.18
void expandAllNodes();
//! Enhancement of QTreeView::collapseAll() that also records expanded state in layer tree nodes
//! @note added in QGIS 2.18
void collapseAllNodes();
signals:
//! Emitted when a current layer is changed
void currentLayerChanged( QgsMapLayer* layer );
protected:
void contextMenuEvent( QContextMenuEvent* event ) override;
void updateExpandedStateFromNode( QgsLayerTreeNode* node );
QgsMapLayer* layerForIndex( const QModelIndex& index ) const;
void dropEvent( QDropEvent *event ) override;
protected slots:
void modelRowsInserted( const QModelIndex& index, int start, int end );
void modelRowsRemoved();
void updateExpandedStateToNode( const QModelIndex& index );
void onCurrentChanged();
void onExpandedChanged( QgsLayerTreeNode* node, bool expanded );
void onModelReset();
protected:
//! helper class with default actions. Lazily initialized.
QgsLayerTreeViewDefaultActions* mDefaultActions;
//! Context menu provider. Owned by the view.
QgsLayerTreeViewMenuProvider* mMenuProvider;
//! Keeps track of current layer ID (to check when to emit signal about change of current layer)
QString mCurrentLayerID;
};
/** \ingroup gui
* Implementation of this interface can be implemented to allow QgsLayerTreeView
* instance to provide custom context menus (opened upon right-click).
*
* @see QgsLayerTreeView
* @note added in 2.4
*/
class GUI_EXPORT QgsLayerTreeViewMenuProvider
{
public:
virtual ~QgsLayerTreeViewMenuProvider() {}
//! Return a newly created menu instance (or null pointer on error)
virtual QMenu* createContextMenu() = 0;
};
#endif // QGSLAYERTREEVIEW_H
|