QGIS API Documentation  2.14.11-Essen
qgscomposerview.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgscomposerview.h
3  -------------------
4  begin : January 2005
5  copyright : (C) 2005 by Radim Blazek
6  email : blazek@itc.it
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 #ifndef QGSCOMPOSERVIEW_H
18 #define QGSCOMPOSERVIEW_H
19 
20 #include <QGraphicsView>
22 #include "qgsprevieweffect.h" // for QgsPreviewEffect::PreviewMode
23 
24 class QDomDocument;
25 class QDomElement;
26 class QKeyEvent;
27 class QMainWindow;
28 class QMouseEvent;
29 class QgsComposition;
30 class QgsComposerArrow;
31 class QgsComposerItem;
32 class QgsComposerLabel;
33 class QgsComposerLegend;
34 class QgsComposerMap;
35 class QgsComposerPicture;
36 class QgsComposerRuler;
38 class QgsComposerShape;
40 
47 class GUI_EXPORT QgsComposerView: public QGraphicsView
48 {
49  Q_OBJECT
50 
51  public:
52 
54  enum Tool
55  {
56  Select = 0, // Select/Move item
57  AddArrow, // add arrow
59  AddMap, // add new map
60  AddLegend, // add vector legend
61  AddLabel, // add label
62  AddScalebar, // add scalebar
63  AddPicture, // add raster/vector picture
67  AddTable, // add attribute table
69  MoveItemContent, // move content of item (e.g. content of map)
70  Pan,
71  Zoom
72  };
73 
75  {
77  ClipboardModeCopy
78  };
79 
80  enum PasteMode
81  {
84  PasteModeInPlace
85  };
86 
88  {
91  ActiveUntilMouseRelease
92  };
93 
94  QgsComposerView( QWidget* parent = nullptr, const char* name = nullptr, const Qt::WindowFlags& f = nullptr );
95 
97  void groupItems();
98 
100  void ungroupItems();
101 
103  void copyItems( ClipboardMode mode );
104 
106  void pasteItems( PasteMode mode );
107 
109  void deleteSelectedItems();
110 
112  void selectAll();
113 
115  void selectNone();
116 
118  void selectInvert();
119 
120  QgsComposerView::Tool currentTool() const {return mCurrentTool;}
121  void setCurrentTool( QgsComposerView::Tool t );
122 
126  void setComposition( QgsComposition* c );
127 
129  QgsComposition* composition();
130 
132  QMainWindow* composerWindow();
133 
134  void setPaintingEnabled( bool enabled ) { mPaintingEnabled = enabled; }
135  bool paintingEnabled() const { return mPaintingEnabled; }
136 
138  void updateRulers();
139 
140  void setHorizontalRuler( QgsComposerRuler* r ) { mHorizontalRuler = r; }
141  void setVerticalRuler( QgsComposerRuler* r ) { mVerticalRuler = r; }
142 
144  void setZoomLevel( double zoomLevel );
145 
151  void scaleSafe( double scale );
152 
158  void setPreviewModeEnabled( bool enabled );
165  void setPreviewMode( QgsPreviewEffect::PreviewMode mode );
166 
167  protected:
168  void mousePressEvent( QMouseEvent* ) override;
169  void mouseReleaseEvent( QMouseEvent* ) override;
170  void mouseMoveEvent( QMouseEvent* ) override;
171  void mouseDoubleClickEvent( QMouseEvent* e ) override;
172 
173  void keyPressEvent( QKeyEvent * e ) override;
174  void keyReleaseEvent( QKeyEvent * e ) override;
175 
176  void wheelEvent( QWheelEvent* event ) override;
177 
178  void paintEvent( QPaintEvent* event ) override;
179 
180  void hideEvent( QHideEvent* e ) override;
181  void showEvent( QShowEvent* e ) override;
182 
183  void resizeEvent( QResizeEvent* event ) override;
184  void scrollContentsBy( int dx, int dy ) override;
185 
186  private:
188  QgsComposerView::Tool mCurrentTool;
190  QgsComposerView::Tool mPreviousTool;
191 
193  QGraphicsRectItem* mRubberBandItem;
195  QGraphicsLineItem* mRubberBandLineItem;
197  QgsComposerItem* mMoveContentItem;
199  QPointF mMoveContentStartPos;
201  QPointF mRubberBandStartPos;
202 
204  bool mMarqueeSelect;
206  bool mMarqueeZoom;
208  QgsComposerView::ToolStatus mTemporaryZoomStatus;
209 
210  bool mPaintingEnabled;
211 
212  QgsComposerRuler* mHorizontalRuler;
213  QgsComposerRuler* mVerticalRuler;
214 
216  void addShape( Tool currentTool );
217 
219  bool mToolPanning;
221  bool mMousePanning;
223  bool mKeyPanning;
224 
226  bool mMovingItemContent;
227 
228  QPoint mMouseLastXY;
229  QPoint mMouseCurrentXY;
230  QPoint mMousePressStartPos;
231 
232  QgsPreviewEffect* mPreviewEffect;
233 
235  QCursor defaultCursorForTool( Tool currentTool );
236 
238  void wheelZoom( QWheelEvent * event );
240  void updateRubberBandRect( QPointF & pos, const bool constrainSquare = false, const bool fromCenter = false );
242  void updateRubberBandLine( QPointF pos, const bool constrainAngles = false );
244  void removeRubberBand();
245 
247  void startMarqueeSelect( QPointF & scenePoint );
249  void endMarqueeSelect( QMouseEvent* e );
251  void startMarqueeZoom( QPointF & scenePoint );
253  void endMarqueeZoom( QMouseEvent* e );
254 
255  //void connectAddRemoveCommandSignals( QgsAddRemoveItemCommand* c );
256 
257  signals:
259  void selectedItemChanged( QgsComposerItem* selected );
261  void itemRemoved( QgsComposerItem* );
264  void actionFinished();
266  void cursorPosChanged( QPointF );
268  void zoomLevelChanged();
269 
271  void composerViewShow( QgsComposerView* );
273  void composerViewHide( QgsComposerView* );
274 
276  void compositionSet( QgsComposition* );
277 };
278 
279 #endif
virtual void mouseMoveEvent(QMouseEvent *event)
A scale bar item that can be added to a map composition.
bool paintingEnabled() const
virtual void keyReleaseEvent(QKeyEvent *event)
An item that draws an arrow between to points.
virtual void showEvent(QShowEvent *event)
void setPaintingEnabled(bool enabled)
A item that forms part of a map composition.
virtual void mouseReleaseEvent(QMouseEvent *event)
A table that displays attributes from a vector layer.
void setVerticalRuler(QgsComposerRuler *r)
A graphics effect which can be applied to a widget to simulate various printing and color blindness m...
A composer class that displays svg files or raster format (jpg, png, ...)
virtual void hideEvent(QHideEvent *event)
Widget to display the composer items.
virtual void keyPressEvent(QKeyEvent *event)
Graphics scene for map printing.
Object representing map window.
virtual void mousePressEvent(QMouseEvent *event)
Tool
Current tool.
A class to show paper scale and the current cursor position.
virtual void paintEvent(QPaintEvent *event)
A composer items that draws common shapes (ellipse, triangle, rectangle)
void setHorizontalRuler(QgsComposerRuler *r)
A label that can be placed onto a map composition.
typedef WindowFlags
QgsComposerView::Tool currentTool() const
virtual void mouseDoubleClickEvent(QMouseEvent *event)
A legend that can be placed onto a map composition.
virtual void wheelEvent(QWheelEvent *event)
virtual void scrollContentsBy(int dx, int dy)
virtual void resizeEvent(QResizeEvent *event)