Skip to content

Commit 29c87de

Browse files
committedMay 8, 2017
[needs-docs][composer] Remove Render/Cache modes from composer maps
Make maps invalidate cache whenever layer order changes. Cache mode is now identical to Render mode, so all mode switching has been removed from composer maps. This should greatly simplify the learning curve and usability of composer maps.
1 parent c5566e7 commit 29c87de

File tree

8 files changed

+48
-176
lines changed

8 files changed

+48
-176
lines changed
 

‎doc/api_break.dox

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -640,8 +640,9 @@ and setAtlasScalingMode() instead.
640640
- setMapCanvas() was removed. This is no longer required to draw map annotations, which are instead retrieved from the composition's
641641
associated project's annotationManager()
642642
- setDrawCanvasItems() and drawCanvasItems() were renamed to setDrawAnnotations() and drawAnnotations()
643-
- setCacheUpdated(), updateCachedImage() and cache() were removed. Use invalidateCache() instead.
644-
- The Rectangle mode enum was removed. Use the reworked Cache mode instead.
643+
- setCacheUpdated(), updateCachedImage(), renderModeUpdateCachedImage() and cache() were removed. Use invalidateCache() instead.
644+
- The PreviewMode mode enums were removed. These are no longer used.
645+
- previewMode() and setPreviewMode() were removed. These are no longer required.
645646

646647

647648
QgsComposerMapGrid {#qgis_api_break_3_0_QgsComposerMapGrid}

‎python/core/composer/qgscomposermap.sip

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,6 @@ Return correct graphics item type.
3636
:rtype: int
3737
%End
3838

39-
enum PreviewMode
40-
{
41-
Cache,
42-
Render,
43-
};
44-
4539
enum AtlasScalingMode
4640
{
4741
Fixed,
@@ -203,12 +197,6 @@ Atlas preview extents are only temporary, and are regenerated whenever the atlas
203197
.. versionadded:: 3.0
204198
%End
205199

206-
PreviewMode previewMode() const;
207-
%Docstring
208-
:rtype: PreviewMode
209-
%End
210-
void setPreviewMode( PreviewMode m );
211-
212200
bool keepLayerSet() const;
213201
%Docstring
214202
Getter for flag that determines if a stored layer set should be used
@@ -575,12 +563,6 @@ Is emitted when the map has been prepared for atlas rendering, just before actua
575563
%Docstring
576564
Forces a deferred update of the cached map image on next paint.
577565
.. versionadded:: 3.0
578-
%End
579-
580-
void renderModeUpdateCachedImage();
581-
%Docstring
582-
Updates the cached map image if the map is set to Render mode
583-
.. seealso:: updateCachedImage
584566
%End
585567

586568
void updateBoundingRect();

‎src/app/composer/qgscomposermapwidget.cpp

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,6 @@ QgsComposerMapWidget::QgsComposerMapWidget( QgsComposerMap *composerMap )
6060
mYMaxLineEdit->setValidator( new QDoubleValidator( mYMaxLineEdit ) );
6161

6262
blockAllSignals( true );
63-
mPreviewModeComboBox->insertItem( 0, tr( "Cache" ) );
64-
mPreviewModeComboBox->insertItem( 1, tr( "Render" ) );
6563

6664
mCrsSelector->setOptionVisible( QgsProjectionSelectionWidget::CrsNotSet, true );
6765
mCrsSelector->setNotSetText( tr( "Use project CRS" ) );
@@ -430,35 +428,6 @@ void QgsComposerMapWidget::on_mAtlasPredefinedScaleRadio_toggled( bool checked )
430428
}
431429
}
432430

433-
void QgsComposerMapWidget::on_mPreviewModeComboBox_activated( int i )
434-
{
435-
Q_UNUSED( i );
436-
437-
if ( !mComposerMap )
438-
{
439-
return;
440-
}
441-
442-
if ( mComposerMap->isDrawing() )
443-
{
444-
return;
445-
}
446-
447-
QString comboText = mPreviewModeComboBox->currentText();
448-
if ( comboText == tr( "Render" ) )
449-
{
450-
mComposerMap->setPreviewMode( QgsComposerMap::Render );
451-
mUpdatePreviewButton->setEnabled( true );
452-
}
453-
else
454-
{
455-
mComposerMap->setPreviewMode( QgsComposerMap::Cache );
456-
mUpdatePreviewButton->setEnabled( true );
457-
}
458-
459-
mComposerMap->invalidateCache();
460-
}
461-
462431
void QgsComposerMapWidget::on_mScaleLineEdit_editingFinished()
463432
{
464433
if ( !mComposerMap )
@@ -582,12 +551,8 @@ void QgsComposerMapWidget::on_mYMaxLineEdit_editingFinished()
582551
void QgsComposerMapWidget::setGuiElementValues()
583552
{
584553
mScaleLineEdit->blockSignals( true );
585-
mPreviewModeComboBox->blockSignals( true );
586-
587554
updateGuiElements();
588-
589555
mScaleLineEdit->blockSignals( false );
590-
mPreviewModeComboBox->blockSignals( false );
591556
}
592557

593558
void QgsComposerMapWidget::updateGuiElements()
@@ -621,24 +586,6 @@ void QgsComposerMapWidget::updateGuiElements()
621586
mScaleLineEdit->setText( QString::number( mComposerMap->scale(), 'f', 10 ) );
622587
}
623588

624-
//preview mode
625-
QgsComposerMap::PreviewMode previewMode = mComposerMap->previewMode();
626-
int index = -1;
627-
if ( previewMode == QgsComposerMap::Render )
628-
{
629-
index = mPreviewModeComboBox->findText( tr( "Render" ) );
630-
mUpdatePreviewButton->setEnabled( true );
631-
}
632-
else
633-
{
634-
index = mPreviewModeComboBox->findText( tr( "Cache" ) );
635-
mUpdatePreviewButton->setEnabled( true );
636-
}
637-
if ( index != -1 )
638-
{
639-
mPreviewModeComboBox->setCurrentIndex( index );
640-
}
641-
642589
//composer map extent
643590
QgsRectangle composerMapExtent = *( mComposerMap->currentMapExtent() );
644591
mXMinLineEdit->setText( QString::number( composerMapExtent.xMinimum(), 'f', 3 ) );

‎src/app/composer/qgscomposermapwidget.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ class QgsComposerMapWidget: public QgsComposerItemBaseWidget, private Ui::QgsCom
3737
virtual ~QgsComposerMapWidget();
3838

3939
public slots:
40-
void on_mPreviewModeComboBox_activated( int i );
4140
void on_mScaleLineEdit_editingFinished();
4241
void on_mSetToMapCanvasExtentButton_clicked();
4342
void on_mViewExtentInCanvasButton_clicked();

‎src/core/composer/qgscomposermap.cpp

Lines changed: 9 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "qgscomposermapoverview.h"
2121
#include "qgscomposition.h"
2222
#include "qgscomposerutils.h"
23+
#include "qgslayertree.h"
2324
#include "qgslogger.h"
2425
#include "qgsmaprenderercustompainterjob.h"
2526
#include "qgsmaplayerlistutils.h"
@@ -491,14 +492,6 @@ bool QgsComposerMap::shouldDrawPart( PartType part ) const
491492
return true; // for Layer
492493
}
493494

494-
void QgsComposerMap::renderModeUpdateCachedImage()
495-
{
496-
if ( mPreviewMode == Render )
497-
{
498-
invalidateCache();
499-
}
500-
}
501-
502495
QList<QgsMapLayer *> QgsComposerMap::layersToRender( const QgsExpressionContext *context ) const
503496
{
504497
QgsExpressionContext scopedContext = createExpressionContext();
@@ -899,12 +892,6 @@ void QgsComposerMap::setNewScale( double scaleDenominator, bool forceUpdate )
899892
emit extentChanged();
900893
}
901894

902-
void QgsComposerMap::setPreviewMode( PreviewMode m )
903-
{
904-
mPreviewMode = m;
905-
emit itemChanged();
906-
}
907-
908895
void QgsComposerMap::setOffset( double xOffset, double yOffset )
909896
{
910897
mXOffset = xOffset;
@@ -1140,8 +1127,14 @@ void QgsComposerMap::connectUpdateSlot()
11401127
connect( project, static_cast < void ( QgsProject::* )( const QList<QgsMapLayer *>& layers ) > ( &QgsProject::layersWillBeRemoved ),
11411128
this, &QgsComposerMap::layersAboutToBeRemoved );
11421129
// redraws the map AFTER layers are removed
1143-
connect( project, &QgsProject::layersRemoved, this, &QgsComposerMap::renderModeUpdateCachedImage );
1144-
connect( project, &QgsProject::legendLayersAdded, this, &QgsComposerMap::renderModeUpdateCachedImage );
1130+
connect( project->layerTreeRoot(), &QgsLayerTree::layerOrderChanged, this, [ = ]
1131+
{
1132+
if ( layers().isEmpty() )
1133+
{
1134+
//using project layers, and layer order has changed
1135+
invalidateCache();
1136+
}
1137+
} );
11451138

11461139
connect( project, &QgsProject::crsChanged, this, [ = ]
11471140
{
@@ -1166,20 +1159,6 @@ bool QgsComposerMap::writeXml( QDomElement &elem, QDomDocument &doc ) const
11661159
QDomElement composerMapElem = doc.createElement( QStringLiteral( "ComposerMap" ) );
11671160
composerMapElem.setAttribute( QStringLiteral( "id" ), mId );
11681161

1169-
//previewMode
1170-
if ( mPreviewMode == Cache )
1171-
{
1172-
composerMapElem.setAttribute( QStringLiteral( "previewMode" ), QStringLiteral( "Cache" ) );
1173-
}
1174-
else if ( mPreviewMode == Render )
1175-
{
1176-
composerMapElem.setAttribute( QStringLiteral( "previewMode" ), QStringLiteral( "Render" ) );
1177-
}
1178-
else //rectangle
1179-
{
1180-
composerMapElem.setAttribute( QStringLiteral( "previewMode" ), QStringLiteral( "Rectangle" ) );
1181-
}
1182-
11831162
if ( mKeepLayerSet )
11841163
{
11851164
composerMapElem.setAttribute( QStringLiteral( "keepLayerSet" ), QStringLiteral( "true" ) );
@@ -1299,17 +1278,6 @@ bool QgsComposerMap::readXml( const QDomElement &itemElem, const QDomDocument &d
12991278
updateToolTip();
13001279
}
13011280

1302-
//previewMode
1303-
QString previewMode = itemElem.attribute( QStringLiteral( "previewMode" ) );
1304-
if ( previewMode == QLatin1String( "Render" ) )
1305-
{
1306-
mPreviewMode = Render;
1307-
}
1308-
else
1309-
{
1310-
mPreviewMode = Cache;
1311-
}
1312-
13131281
//extent
13141282
QDomNodeList extentNodeList = itemElem.elementsByTagName( QStringLiteral( "Extent" ) );
13151283
if ( !extentNodeList.isEmpty() )

‎src/core/composer/qgscomposermap.h

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,6 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
6464
//! Return correct graphics item type.
6565
virtual int type() const override { return ComposerMap; }
6666

67-
//! \brief Preview style
68-
enum PreviewMode
69-
{
70-
Cache = 0, // Use raster cache
71-
Render, // Render the map
72-
};
73-
7467
/** Scaling modes used for the serial rendering (atlas)
7568
*/
7669
enum AtlasScalingMode
@@ -205,9 +198,6 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
205198
*/
206199
void setCrs( const QgsCoordinateReferenceSystem &crs );
207200

208-
PreviewMode previewMode() const {return mPreviewMode;}
209-
void setPreviewMode( PreviewMode m );
210-
211201
/**
212202
* Getter for flag that determines if a stored layer set should be used
213203
* or the current layer set of the QGIS map canvas. This is just a GUI flag,
@@ -478,11 +468,6 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
478468
*/
479469
void invalidateCache();
480470

481-
/** Updates the cached map image if the map is set to Render mode
482-
* \see updateCachedImage
483-
*/
484-
void renderModeUpdateCachedImage();
485-
486471
//! Updates the bounding rect of this item. Call this function before doing any changes related to annotation out of the map rectangle
487472
void updateBoundingRect();
488473

@@ -528,9 +513,6 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
528513
//! True if cached map image must be recreated
529514
bool mCacheInvalidated = true;
530515

531-
//! \brief Preview style
532-
PreviewMode mPreviewMode = QgsComposerMap::Cache;
533-
534516
//! \brief Number of layers when cache was created
535517
int mNumCachedLayers;
536518

‎src/ui/composer/qgscomposermapwidgetbase.ui

Lines changed: 36 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,16 @@
2323
<property name="spacing">
2424
<number>0</number>
2525
</property>
26-
<property name="margin">
26+
<property name="leftMargin">
27+
<number>0</number>
28+
</property>
29+
<property name="topMargin">
30+
<number>0</number>
31+
</property>
32+
<property name="rightMargin">
33+
<number>0</number>
34+
</property>
35+
<property name="bottomMargin">
2736
<number>0</number>
2837
</property>
2938
<item>
@@ -55,8 +64,8 @@
5564
<rect>
5665
<x>0</x>
5766
<y>0</y>
58-
<width>366</width>
59-
<height>1241</height>
67+
<width>368</width>
68+
<height>1340</height>
6069
</rect>
6170
</property>
6271
<property name="sizePolicy">
@@ -81,28 +90,10 @@
8190
<bool>false</bool>
8291
</property>
8392
<layout class="QGridLayout" name="gridLayout_5">
84-
<item row="1" column="1">
85-
<layout class="QHBoxLayout" name="horizontalLayout_6">
86-
<item>
87-
<widget class="QLineEdit" name="mScaleLineEdit">
88-
<property name="inputMask">
89-
<string/>
90-
</property>
91-
</widget>
92-
</item>
93-
<item>
94-
<widget class="QgsPropertyOverrideButton" name="mScaleDDBtn">
95-
<property name="text">
96-
<string>...</string>
97-
</property>
98-
</widget>
99-
</item>
100-
</layout>
101-
</item>
102-
<item row="2" column="0">
103-
<widget class="QLabel" name="mMapRotationLabel">
93+
<item row="3" column="0">
94+
<widget class="QLabel" name="mMapRotationLabel_2">
10495
<property name="text">
105-
<string>Map rotation</string>
96+
<string>CRS</string>
10697
</property>
10798
</widget>
10899
</item>
@@ -134,22 +125,19 @@
134125
</property>
135126
</widget>
136127
</item>
137-
<item row="0" column="0" colspan="2">
138-
<layout class="QHBoxLayout" name="horizontalLayout_2">
128+
<item row="1" column="1">
129+
<layout class="QHBoxLayout" name="horizontalLayout_6">
139130
<item>
140-
<widget class="QComboBox" name="mPreviewModeComboBox">
141-
<property name="sizePolicy">
142-
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
143-
<horstretch>0</horstretch>
144-
<verstretch>0</verstretch>
145-
</sizepolicy>
131+
<widget class="QLineEdit" name="mScaleLineEdit">
132+
<property name="inputMask">
133+
<string/>
146134
</property>
147135
</widget>
148136
</item>
149137
<item>
150-
<widget class="QPushButton" name="mUpdatePreviewButton">
138+
<widget class="QgsPropertyOverrideButton" name="mScaleDDBtn">
151139
<property name="text">
152-
<string>Update preview</string>
140+
<string>...</string>
153141
</property>
154142
</widget>
155143
</item>
@@ -165,20 +153,27 @@
165153
</property>
166154
</widget>
167155
</item>
168-
<item row="3" column="0">
169-
<widget class="QLabel" name="mMapRotationLabel_2">
170-
<property name="text">
171-
<string>CRS</string>
172-
</property>
173-
</widget>
174-
</item>
175156
<item row="3" column="1">
176157
<widget class="QgsProjectionSelectionWidget" name="mCrsSelector" native="true">
177158
<property name="focusPolicy">
178159
<enum>Qt::StrongFocus</enum>
179160
</property>
180161
</widget>
181162
</item>
163+
<item row="2" column="0">
164+
<widget class="QLabel" name="mMapRotationLabel">
165+
<property name="text">
166+
<string>Map rotation</string>
167+
</property>
168+
</widget>
169+
</item>
170+
<item row="0" column="0" colspan="2">
171+
<widget class="QPushButton" name="mUpdatePreviewButton">
172+
<property name="text">
173+
<string>Update preview</string>
174+
</property>
175+
</widget>
176+
</item>
182177
</layout>
183178
</widget>
184179
</item>
@@ -826,7 +821,6 @@
826821
<tabstops>
827822
<tabstop>scrollArea</tabstop>
828823
<tabstop>groupBox</tabstop>
829-
<tabstop>mPreviewModeComboBox</tabstop>
830824
<tabstop>mUpdatePreviewButton</tabstop>
831825
<tabstop>mScaleLineEdit</tabstop>
832826
<tabstop>mScaleDDBtn</tabstop>

‎tests/src/python/test_qgspallabeling_composer.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ def _set_up_composition(self, width, height, dpi, engine_settings):
119119
# add map as small graphics item first, then set its scene QRectF later
120120
self._cmap = QgsComposerMap(self._c, 10, 10, 10, 10)
121121
""":type: QgsComposerMap"""
122-
self._cmap.setPreviewMode(QgsComposerMap.Render)
123122
self._cmap.setFrameEnabled(False)
124123
self._cmap.setLayers(self._TestMapSettings.layers())
125124
self._c.addComposerMap(self._cmap)

0 commit comments

Comments
 (0)
Please sign in to comment.