mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-23 00:05:43 -04:00
Run clang-tidy modernize-use-override to remove all the redundant virtual keywords from overridden methods, and add some missing overrides. Another benefit is that this has also added the overrides on destructors, which will cause a build failure if a base class is missing a virtual destructor.
99 lines
3.4 KiB
C++
99 lines
3.4 KiB
C++
/***************************************************************************
|
|
qgsmaptoolpinlabels.h
|
|
--------------------
|
|
begin : 2012-07-12
|
|
copyright : (C) 2012 by Larry Shaffer
|
|
email : larrys at dakotacarto 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 QGSMAPTOOLPINLABELS_H
|
|
#define QGSMAPTOOLPINLABELS_H
|
|
|
|
#include "qgsmaptoollabel.h"
|
|
#include "qgis_app.h"
|
|
|
|
class QgsRubberBand;
|
|
class QgsLabelPosition;
|
|
|
|
//! A map tool for pinning (writing to attribute table) and unpinning labelpositions and rotation
|
|
class APP_EXPORT QgsMapToolPinLabels: public QgsMapToolLabel
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
QgsMapToolPinLabels( QgsMapCanvas *canvas );
|
|
~QgsMapToolPinLabels() override;
|
|
|
|
//! Overridden mouse move event
|
|
void canvasMoveEvent( QgsMapMouseEvent *e ) override;
|
|
|
|
//! Overridden mouse press event
|
|
void canvasPressEvent( QgsMapMouseEvent *e ) override;
|
|
|
|
//! Overridden mouse release event
|
|
void canvasReleaseEvent( QgsMapMouseEvent *e ) override;
|
|
|
|
bool isShowingPinned() const { return mShowPinned; }
|
|
void setShowingPinned( bool showing ) { mShowPinned = showing; }
|
|
|
|
//! Called when Show Pinned Labels tool is toggled, via its qgisapp.cpp slot
|
|
void showPinnedLabels( bool show );
|
|
|
|
//! Remove rectangles from around pinned labels
|
|
void removePinnedHighlights();
|
|
|
|
public slots:
|
|
|
|
//! Update pinned label highlights on layer edit mode change
|
|
void updatePinnedLabels();
|
|
|
|
//! Render highlight rectangles around pinned labels
|
|
void highlightPinnedLabels();
|
|
|
|
protected:
|
|
|
|
//! Mapping of feature ids of layers that have been highlighted
|
|
QMap<QString, QgsRubberBand *> mHighlights;
|
|
|
|
//! Flag to indicate a map canvas drag operation is taking place
|
|
bool mDragging;
|
|
//! Flag to indicate whether to draw the highlight for pinned labels
|
|
bool mShowPinned;
|
|
|
|
//! Stores actual select rect
|
|
QRect mSelectRect;
|
|
|
|
//! Stores selection marquee
|
|
QgsRubberBand *mRubberBand = nullptr;
|
|
|
|
private:
|
|
|
|
//! Highlights a given label relative to whether its pinned and editable
|
|
void highlightLabel( const QgsLabelPosition &labelpos,
|
|
const QString &id,
|
|
const QColor &color );
|
|
|
|
//! Select valid labels to pin or unpin
|
|
void pinUnpinLabels( const QgsRectangle &ext, QMouseEvent *e );
|
|
|
|
//! Pin or unpin current label relative to whether its editable
|
|
bool pinUnpinCurrentLabel( bool pin );
|
|
|
|
//! Pin or unpin diagram relative to whether its editable
|
|
bool pinUnpinCurrentDiagram( bool pin );
|
|
|
|
//! Pin or unpin current feature (diagram or label)
|
|
bool pinUnpinCurrentFeature( bool pin );
|
|
};
|
|
|
|
#endif // QGSMAPTOOLPINLABELS_H
|