class QgsMapToolIdentify : QgsMapTool { %TypeHeaderCode #include %End public: enum IdentifyMode { DefaultQgsSetting = -1, ActiveLayer, TopDownStopAtFirst, TopDownAll, LayerSelection }; enum LayerType { AllLayers = -1, VectorLayer, RasterLayer }; struct IdentifyResult { IdentifyResult(); IdentifyResult( QgsMapLayer * layer, QgsFeature feature, QMap< QString, QString > derivedAttributes ); IdentifyResult( QgsMapLayer * layer, QString label, QMap< QString, QString > attributes, QMap< QString, QString > derivedAttributes ); IdentifyResult( QgsMapLayer * layer, QString label, QgsFields fields, QgsFeature feature, QMap< QString, QString > derivedAttributes ); QgsMapLayer* mLayer; QString mLabel; QgsFields mFields; QgsFeature mFeature; QMap< QString, QString > mAttributes; QMap< QString, QString > mDerivedAttributes; QMap< QString, QVariant > mParams; }; //! constructor QgsMapToolIdentify( QgsMapCanvas * canvas ); virtual ~QgsMapToolIdentify(); //! Overridden mouse move event virtual void canvasMoveEvent( QMouseEvent * e ); //! Overridden mouse press event virtual void canvasPressEvent( QMouseEvent * e ); //! Overridden mouse release event virtual void canvasReleaseEvent( QMouseEvent * e ); virtual void activate(); virtual void deactivate(); /** Performs the identification. @param x x coordinates of mouseEvent @param y y coordinates of mouseEvent @param layerList Performs the identification within the given list of layers. Default value is an empty list, i.e. uses all the layers. @param mode Identification mode. Can use Qgis default settings or a defined mode. Default mode is DefaultQgsSetting. @return a list of IdentifyResult*/ QList identify( int x, int y, QList layerList = QList(), IdentifyMode mode = DefaultQgsSetting ); /** Performs the identification. To avoid beeing forced to specify IdentifyMode with a list of layers this has been made private and two publics methods are offered @param x x coordinates of mouseEvent @param y y coordinates of mouseEvent @param mode Identification mode. Can use Qgis default settings or a defined mode. @param layerType Only performs identification in a certain type of layers (raster, vector). Default value is AllLayers. @return a list of IdentifyResult*/ QList identify( int x, int y, IdentifyMode mode, LayerType layerType = AllLayers ); public slots: void formatChanged( QgsRasterLayer *layer ); signals: void identifyProgress( int, int ); void identifyMessage( QString ); void changedRasterResults( QList& ); };