QGIS API Documentation  3.6.0-Noosa (5873452)
qgsmapcanvastracer.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmapcanvastracer.h
3  ---------------------
4  begin : January 2016
5  copyright : (C) 2016 by Martin Dobias
6  email : wonder dot sk at gmail dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 #ifndef QGSMAPCANVASTRACER_H
16 #define QGSMAPCANVASTRACER_H
17 
18 #include "qgstracer.h"
19 #include "qgis_gui.h"
20 
21 class QAction;
22 class QgsMapCanvas;
23 class QgsMessageBar;
24 class QgsMessageBarItem;
25 
40 class GUI_EXPORT QgsMapCanvasTracer : public QgsTracer
41 {
42  Q_OBJECT
43 
44  public:
46  explicit QgsMapCanvasTracer( QgsMapCanvas *canvas, QgsMessageBar *messageBar = nullptr );
47  ~QgsMapCanvasTracer() override;
48 
50  QAction *actionEnableTracing() const { return mActionEnableTracing; }
51 
56  void setActionEnableTracing( QAction *action ) { mActionEnableTracing = action; }
57 
62  QAction *actionEnableSnapping() const { return mActionEnableSnapping; }
63 
69  void setActionEnableSnapping( QAction *action ) { mActionEnableSnapping = action; }
70 
76  static QgsMapCanvasTracer *tracerForCanvas( QgsMapCanvas *canvas );
77 
79  void reportError( PathError err, bool addingVertex );
80 
81  protected:
83  void configure() override;
84 
85  private slots:
86  void onCurrentLayerChanged();
87 
88  private:
89  QgsMapCanvas *mCanvas = nullptr;
90  QgsMessageBar *mMessageBar = nullptr;
91  QgsMessageBarItem *mLastMessage = nullptr;
92 
93  QAction *mActionEnableTracing = nullptr;
94  QAction *mActionEnableSnapping = nullptr;
95 
96  static QHash<QgsMapCanvas *, QgsMapCanvasTracer *> sTracers;
97 };
98 
99 #endif // QGSMAPCANVASTRACER_H
virtual void configure()
Allows derived classes to setup the settings just before the tracer is initialized.
Definition: qgstracer.h:158
Utility class that construct a planar graph from the input vector layers and provides shortest path s...
Definition: qgstracer.h:43
QAction * actionEnableTracing() const
Access to action that user may use to toggle tracing on/off. May be null if no action was associated...
A bar for displaying non-blocking messages to the user.
Definition: qgsmessagebar.h:45
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:73
void setActionEnableTracing(QAction *action)
Assign "enable tracing" checkable action to the tracer.
Extension of QgsTracer that provides extra functionality:
QAction * actionEnableSnapping() const
Access to action that user may use to toggle snapping on/off.
void setActionEnableSnapping(QAction *action)
Assign "enable snapping" checkable action to the tracer.
PathError
Possible errors that may happen when calling findShortestPath()
Definition: qgstracer.h:132