QGIS API Documentation  2.18.21-Las Palmas (9fba24a)
qgscomposermultiframe.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgscomposermultiframe.h
3  ------------------------------------------------------------
4  begin : July 2012
5  copyright : (C) 2012 by Marco Hugentobler
6  email : marco dot hugentobler at sourcepole dot ch
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 
16 #ifndef QGSCOMPOSERMULTIFRAME_H
17 #define QGSCOMPOSERMULTIFRAME_H
18 
19 #include "qgscomposerobject.h"
20 #include <QObject>
21 #include <QSizeF>
22 #include <QPointF>
23 
24 class QgsComposerFrame;
25 class QgsComposerItem;
26 class QgsComposition;
27 class QDomDocument;
28 class QDomElement;
29 class QRectF;
30 class QPainter;
31 
39 class CORE_EXPORT QgsComposerMultiFrame: public QgsComposerObject
40 {
41  Q_OBJECT
42 
43  public:
44 
48  {
49  UseExistingFrames = 0,
52  RepeatUntilFinished
54  };
55 
60  QgsComposerMultiFrame( QgsComposition* c, bool createUndoCommands );
61 
62  virtual ~QgsComposerMultiFrame();
63 
67  virtual QSizeF totalSize() const = 0;
68 
79  virtual QSizeF fixedFrameSize( const int frameIndex = -1 ) const { Q_UNUSED( frameIndex ); return QSizeF( 0, 0 ); }
80 
91  virtual QSizeF minFrameSize( const int frameIndex = -1 ) const { Q_UNUSED( frameIndex ); return QSizeF( 0, 0 ); }
92 
98  Q_DECL_DEPRECATED virtual void render( QPainter* p, const QRectF& renderExtent );
99 
106  virtual void render( QPainter* painter, const QRectF& renderExtent, const int frameIndex );
107 
113  virtual void addFrame( QgsComposerFrame* frame, bool recalcFrameSizes = true ) = 0;
114 
121  virtual double findNearbyPageBreak( double yPos ) { return yPos; }
122 
130  void removeFrame( int i, const bool removeEmptyPages = false );
131 
135  void deleteFrames();
136 
141  void setResizeMode( ResizeMode mode );
142 
147  ResizeMode resizeMode() const { return mResizeMode; }
148 
156  virtual bool writeXML( QDomElement& elem, QDomDocument & doc, bool ignoreFrames = false ) const = 0;
157 
165  bool _writeXML( QDomElement& elem, QDomDocument& doc, bool ignoreFrames = false ) const;
166 
174  virtual bool readXML( const QDomElement& itemElem, const QDomDocument& doc, bool ignoreFrames = false ) = 0;
175 
183  bool _readXML( const QDomElement& itemElem, const QDomDocument& doc, bool ignoreFrames = false );
184 
189 
194  bool createUndoCommands() const { return mCreateUndoCommands; }
195 
200  void setCreateUndoCommands( bool enabled ) { mCreateUndoCommands = enabled; }
201 
205  int frameCount() const { return mFrameItems.size(); }
206 
212  QgsComposerFrame* frame( int i ) const;
213 
220  int frameIndex( QgsComposerFrame *frame ) const;
221 
230  QgsComposerFrame* createNewFrame( QgsComposerFrame* currentFrame, QPointF pos, QSizeF size );
231 
236  virtual QString displayName() const;
237 
238  public slots:
239 
242  void update();
243 
250  virtual void recalculateFrameSizes();
251 
260  void recalculateFrameRects();
261 
262  signals:
263 
267  void changed();
268 
272  void contentsChanged();
273 
274  protected:
275 
277 
279 
282 
283  protected slots:
284 
288  void handleFrameRemoval( QgsComposerItem* item );
289 
292  void handlePageChange();
293 
294  private:
295  QgsComposerMultiFrame(); //forbidden
296 
297  bool mIsRecalculatingSize;
298 };
299 
300 #endif // QGSCOMPOSERMULTIFRAME_H
ResizeMode
Specifies the behaviour for creating new frames to fit the multiframe&#39;s content.
A base class for objects which belong to a map composition.
virtual double findNearbyPageBreak(double yPos)
Finds the optimal position to break a frame at.
A item that forms part of a map composition.
void setCreateUndoCommands(bool enabled)
Sets whether undo commands should be created for interactions with the multiframe.
virtual bool writeXML(QDomElement &elem, QDomDocument &doc) const
Stores item state in DOM element.
bool createUndoCommands() const
Returns whether undo commands should be created for interactions with the multiframe.
Abstract base class for composer items with the ability to distribute the content to several frames (...
QList< QgsComposerFrame * > mFrameItems
bool mCreateUndoCommands
True: creates QgsMultiFrameCommands on internal changes (e.g.
Graphics scene for map printing.
Frame item for a composer multiframe item.
QgsComposition * mComposition
virtual QSizeF minFrameSize(const int frameIndex=-1) const
Returns the minimum size for a frames, if desired.
int frameCount() const
Returns the number of frames associated with this multiframe.
virtual bool readXML(const QDomElement &itemElem, const QDomDocument &doc)
Sets item state from DOM element.
QgsComposition * composition()
Returns the parent composition for the multiframe.
virtual QSizeF fixedFrameSize(const int frameIndex=-1) const
Returns the fixed size for a frame, if desired.
ResizeMode resizeMode() const
Returns the resize mode for the multiframe.