QGIS/python/gui/layertree/qgslayertreeview.sip
Nyall Dawson 881074b194 Boost coverage of SIP bindings
Now all classes and members are either exposed to bindings or marked
as "not available in Python bindings" in the docs.

Drop test thresholds to 0. Now it should be much easier to determine
what missing members have been added which are causing test
failures.
2016-01-05 11:16:15 +11:00

118 lines
3.9 KiB
Plaintext

/**
* 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 QgsLayerTreeView : QTreeView
{
%TypeHeaderCode
#include <qgslayertreeview.h>
%End
%ConvertToSubClassCode
if (sipCpp->inherits("QgsLayerTreeView"))
sipType = sipType_QgsLayerTreeView;
else
sipType = 0;
%End
public:
explicit QgsLayerTreeView( QWidget *parent /TransferThis/ = 0 );
~QgsLayerTreeView();
//! Overridden setModel() from base class. Only QgsLayerTreeModel is an acceptable model.
virtual void setModel( QAbstractItemModel* model );
//! 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 /Transfer/ );
//! Return pointer to the context menu provider. May be null
QgsLayerTreeViewMenuProvider* menuProvider() const;
//! 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 );
signals:
//! Emitted when a current layer is changed
void currentLayerChanged( QgsMapLayer* layer );
protected:
void contextMenuEvent( QContextMenuEvent* event );
void updateExpandedStateFromNode( QgsLayerTreeNode* node );
QgsMapLayer* layerForIndex( const QModelIndex& index ) const;
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();
};
/**
* 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 QgsLayerTreeViewMenuProvider
{
%TypeHeaderCode
#include <qgslayertreeview.h>
%End
public:
virtual ~QgsLayerTreeViewMenuProvider();
//! Return a newly created menu instance (or null pointer on error)
virtual QMenu* createContextMenu() = 0 /Factory/;
};