mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-13 00:03:09 -04:00
[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.
This commit is contained in:
parent
c5566e72c0
commit
29c87de679
@ -640,8 +640,9 @@ and setAtlasScalingMode() instead.
|
||||
- setMapCanvas() was removed. This is no longer required to draw map annotations, which are instead retrieved from the composition's
|
||||
associated project's annotationManager()
|
||||
- setDrawCanvasItems() and drawCanvasItems() were renamed to setDrawAnnotations() and drawAnnotations()
|
||||
- setCacheUpdated(), updateCachedImage() and cache() were removed. Use invalidateCache() instead.
|
||||
- The Rectangle mode enum was removed. Use the reworked Cache mode instead.
|
||||
- setCacheUpdated(), updateCachedImage(), renderModeUpdateCachedImage() and cache() were removed. Use invalidateCache() instead.
|
||||
- The PreviewMode mode enums were removed. These are no longer used.
|
||||
- previewMode() and setPreviewMode() were removed. These are no longer required.
|
||||
|
||||
|
||||
QgsComposerMapGrid {#qgis_api_break_3_0_QgsComposerMapGrid}
|
||||
|
@ -36,12 +36,6 @@ Return correct graphics item type.
|
||||
:rtype: int
|
||||
%End
|
||||
|
||||
enum PreviewMode
|
||||
{
|
||||
Cache,
|
||||
Render,
|
||||
};
|
||||
|
||||
enum AtlasScalingMode
|
||||
{
|
||||
Fixed,
|
||||
@ -203,12 +197,6 @@ Atlas preview extents are only temporary, and are regenerated whenever the atlas
|
||||
.. versionadded:: 3.0
|
||||
%End
|
||||
|
||||
PreviewMode previewMode() const;
|
||||
%Docstring
|
||||
:rtype: PreviewMode
|
||||
%End
|
||||
void setPreviewMode( PreviewMode m );
|
||||
|
||||
bool keepLayerSet() const;
|
||||
%Docstring
|
||||
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
|
||||
%Docstring
|
||||
Forces a deferred update of the cached map image on next paint.
|
||||
.. versionadded:: 3.0
|
||||
%End
|
||||
|
||||
void renderModeUpdateCachedImage();
|
||||
%Docstring
|
||||
Updates the cached map image if the map is set to Render mode
|
||||
.. seealso:: updateCachedImage
|
||||
%End
|
||||
|
||||
void updateBoundingRect();
|
||||
|
@ -60,8 +60,6 @@ QgsComposerMapWidget::QgsComposerMapWidget( QgsComposerMap *composerMap )
|
||||
mYMaxLineEdit->setValidator( new QDoubleValidator( mYMaxLineEdit ) );
|
||||
|
||||
blockAllSignals( true );
|
||||
mPreviewModeComboBox->insertItem( 0, tr( "Cache" ) );
|
||||
mPreviewModeComboBox->insertItem( 1, tr( "Render" ) );
|
||||
|
||||
mCrsSelector->setOptionVisible( QgsProjectionSelectionWidget::CrsNotSet, true );
|
||||
mCrsSelector->setNotSetText( tr( "Use project CRS" ) );
|
||||
@ -430,35 +428,6 @@ void QgsComposerMapWidget::on_mAtlasPredefinedScaleRadio_toggled( bool checked )
|
||||
}
|
||||
}
|
||||
|
||||
void QgsComposerMapWidget::on_mPreviewModeComboBox_activated( int i )
|
||||
{
|
||||
Q_UNUSED( i );
|
||||
|
||||
if ( !mComposerMap )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( mComposerMap->isDrawing() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
QString comboText = mPreviewModeComboBox->currentText();
|
||||
if ( comboText == tr( "Render" ) )
|
||||
{
|
||||
mComposerMap->setPreviewMode( QgsComposerMap::Render );
|
||||
mUpdatePreviewButton->setEnabled( true );
|
||||
}
|
||||
else
|
||||
{
|
||||
mComposerMap->setPreviewMode( QgsComposerMap::Cache );
|
||||
mUpdatePreviewButton->setEnabled( true );
|
||||
}
|
||||
|
||||
mComposerMap->invalidateCache();
|
||||
}
|
||||
|
||||
void QgsComposerMapWidget::on_mScaleLineEdit_editingFinished()
|
||||
{
|
||||
if ( !mComposerMap )
|
||||
@ -582,12 +551,8 @@ void QgsComposerMapWidget::on_mYMaxLineEdit_editingFinished()
|
||||
void QgsComposerMapWidget::setGuiElementValues()
|
||||
{
|
||||
mScaleLineEdit->blockSignals( true );
|
||||
mPreviewModeComboBox->blockSignals( true );
|
||||
|
||||
updateGuiElements();
|
||||
|
||||
mScaleLineEdit->blockSignals( false );
|
||||
mPreviewModeComboBox->blockSignals( false );
|
||||
}
|
||||
|
||||
void QgsComposerMapWidget::updateGuiElements()
|
||||
@ -621,24 +586,6 @@ void QgsComposerMapWidget::updateGuiElements()
|
||||
mScaleLineEdit->setText( QString::number( mComposerMap->scale(), 'f', 10 ) );
|
||||
}
|
||||
|
||||
//preview mode
|
||||
QgsComposerMap::PreviewMode previewMode = mComposerMap->previewMode();
|
||||
int index = -1;
|
||||
if ( previewMode == QgsComposerMap::Render )
|
||||
{
|
||||
index = mPreviewModeComboBox->findText( tr( "Render" ) );
|
||||
mUpdatePreviewButton->setEnabled( true );
|
||||
}
|
||||
else
|
||||
{
|
||||
index = mPreviewModeComboBox->findText( tr( "Cache" ) );
|
||||
mUpdatePreviewButton->setEnabled( true );
|
||||
}
|
||||
if ( index != -1 )
|
||||
{
|
||||
mPreviewModeComboBox->setCurrentIndex( index );
|
||||
}
|
||||
|
||||
//composer map extent
|
||||
QgsRectangle composerMapExtent = *( mComposerMap->currentMapExtent() );
|
||||
mXMinLineEdit->setText( QString::number( composerMapExtent.xMinimum(), 'f', 3 ) );
|
||||
|
@ -37,7 +37,6 @@ class QgsComposerMapWidget: public QgsComposerItemBaseWidget, private Ui::QgsCom
|
||||
virtual ~QgsComposerMapWidget();
|
||||
|
||||
public slots:
|
||||
void on_mPreviewModeComboBox_activated( int i );
|
||||
void on_mScaleLineEdit_editingFinished();
|
||||
void on_mSetToMapCanvasExtentButton_clicked();
|
||||
void on_mViewExtentInCanvasButton_clicked();
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "qgscomposermapoverview.h"
|
||||
#include "qgscomposition.h"
|
||||
#include "qgscomposerutils.h"
|
||||
#include "qgslayertree.h"
|
||||
#include "qgslogger.h"
|
||||
#include "qgsmaprenderercustompainterjob.h"
|
||||
#include "qgsmaplayerlistutils.h"
|
||||
@ -491,14 +492,6 @@ bool QgsComposerMap::shouldDrawPart( PartType part ) const
|
||||
return true; // for Layer
|
||||
}
|
||||
|
||||
void QgsComposerMap::renderModeUpdateCachedImage()
|
||||
{
|
||||
if ( mPreviewMode == Render )
|
||||
{
|
||||
invalidateCache();
|
||||
}
|
||||
}
|
||||
|
||||
QList<QgsMapLayer *> QgsComposerMap::layersToRender( const QgsExpressionContext *context ) const
|
||||
{
|
||||
QgsExpressionContext scopedContext = createExpressionContext();
|
||||
@ -899,12 +892,6 @@ void QgsComposerMap::setNewScale( double scaleDenominator, bool forceUpdate )
|
||||
emit extentChanged();
|
||||
}
|
||||
|
||||
void QgsComposerMap::setPreviewMode( PreviewMode m )
|
||||
{
|
||||
mPreviewMode = m;
|
||||
emit itemChanged();
|
||||
}
|
||||
|
||||
void QgsComposerMap::setOffset( double xOffset, double yOffset )
|
||||
{
|
||||
mXOffset = xOffset;
|
||||
@ -1140,8 +1127,14 @@ void QgsComposerMap::connectUpdateSlot()
|
||||
connect( project, static_cast < void ( QgsProject::* )( const QList<QgsMapLayer *>& layers ) > ( &QgsProject::layersWillBeRemoved ),
|
||||
this, &QgsComposerMap::layersAboutToBeRemoved );
|
||||
// redraws the map AFTER layers are removed
|
||||
connect( project, &QgsProject::layersRemoved, this, &QgsComposerMap::renderModeUpdateCachedImage );
|
||||
connect( project, &QgsProject::legendLayersAdded, this, &QgsComposerMap::renderModeUpdateCachedImage );
|
||||
connect( project->layerTreeRoot(), &QgsLayerTree::layerOrderChanged, this, [ = ]
|
||||
{
|
||||
if ( layers().isEmpty() )
|
||||
{
|
||||
//using project layers, and layer order has changed
|
||||
invalidateCache();
|
||||
}
|
||||
} );
|
||||
|
||||
connect( project, &QgsProject::crsChanged, this, [ = ]
|
||||
{
|
||||
@ -1166,20 +1159,6 @@ bool QgsComposerMap::writeXml( QDomElement &elem, QDomDocument &doc ) const
|
||||
QDomElement composerMapElem = doc.createElement( QStringLiteral( "ComposerMap" ) );
|
||||
composerMapElem.setAttribute( QStringLiteral( "id" ), mId );
|
||||
|
||||
//previewMode
|
||||
if ( mPreviewMode == Cache )
|
||||
{
|
||||
composerMapElem.setAttribute( QStringLiteral( "previewMode" ), QStringLiteral( "Cache" ) );
|
||||
}
|
||||
else if ( mPreviewMode == Render )
|
||||
{
|
||||
composerMapElem.setAttribute( QStringLiteral( "previewMode" ), QStringLiteral( "Render" ) );
|
||||
}
|
||||
else //rectangle
|
||||
{
|
||||
composerMapElem.setAttribute( QStringLiteral( "previewMode" ), QStringLiteral( "Rectangle" ) );
|
||||
}
|
||||
|
||||
if ( mKeepLayerSet )
|
||||
{
|
||||
composerMapElem.setAttribute( QStringLiteral( "keepLayerSet" ), QStringLiteral( "true" ) );
|
||||
@ -1299,17 +1278,6 @@ bool QgsComposerMap::readXml( const QDomElement &itemElem, const QDomDocument &d
|
||||
updateToolTip();
|
||||
}
|
||||
|
||||
//previewMode
|
||||
QString previewMode = itemElem.attribute( QStringLiteral( "previewMode" ) );
|
||||
if ( previewMode == QLatin1String( "Render" ) )
|
||||
{
|
||||
mPreviewMode = Render;
|
||||
}
|
||||
else
|
||||
{
|
||||
mPreviewMode = Cache;
|
||||
}
|
||||
|
||||
//extent
|
||||
QDomNodeList extentNodeList = itemElem.elementsByTagName( QStringLiteral( "Extent" ) );
|
||||
if ( !extentNodeList.isEmpty() )
|
||||
|
@ -64,13 +64,6 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
|
||||
//! Return correct graphics item type.
|
||||
virtual int type() const override { return ComposerMap; }
|
||||
|
||||
//! \brief Preview style
|
||||
enum PreviewMode
|
||||
{
|
||||
Cache = 0, // Use raster cache
|
||||
Render, // Render the map
|
||||
};
|
||||
|
||||
/** Scaling modes used for the serial rendering (atlas)
|
||||
*/
|
||||
enum AtlasScalingMode
|
||||
@ -205,9 +198,6 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
|
||||
*/
|
||||
void setCrs( const QgsCoordinateReferenceSystem &crs );
|
||||
|
||||
PreviewMode previewMode() const {return mPreviewMode;}
|
||||
void setPreviewMode( PreviewMode m );
|
||||
|
||||
/**
|
||||
* Getter for flag that determines if a stored layer set should be used
|
||||
* 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
|
||||
*/
|
||||
void invalidateCache();
|
||||
|
||||
/** Updates the cached map image if the map is set to Render mode
|
||||
* \see updateCachedImage
|
||||
*/
|
||||
void renderModeUpdateCachedImage();
|
||||
|
||||
//! Updates the bounding rect of this item. Call this function before doing any changes related to annotation out of the map rectangle
|
||||
void updateBoundingRect();
|
||||
|
||||
@ -528,9 +513,6 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
|
||||
//! True if cached map image must be recreated
|
||||
bool mCacheInvalidated = true;
|
||||
|
||||
//! \brief Preview style
|
||||
PreviewMode mPreviewMode = QgsComposerMap::Cache;
|
||||
|
||||
//! \brief Number of layers when cache was created
|
||||
int mNumCachedLayers;
|
||||
|
||||
|
@ -23,7 +23,16 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@ -55,8 +64,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>366</width>
|
||||
<height>1241</height>
|
||||
<width>368</width>
|
||||
<height>1340</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
@ -81,28 +90,10 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_5">
|
||||
<item row="1" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="mScaleLineEdit">
|
||||
<property name="inputMask">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QgsPropertyOverrideButton" name="mScaleDDBtn">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="mMapRotationLabel">
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="mMapRotationLabel_2">
|
||||
<property name="text">
|
||||
<string>Map rotation</string>
|
||||
<string>CRS</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -134,22 +125,19 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item row="1" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||
<item>
|
||||
<widget class="QComboBox" name="mPreviewModeComboBox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
<widget class="QLineEdit" name="mScaleLineEdit">
|
||||
<property name="inputMask">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="mUpdatePreviewButton">
|
||||
<widget class="QgsPropertyOverrideButton" name="mScaleDDBtn">
|
||||
<property name="text">
|
||||
<string>Update preview</string>
|
||||
<string>...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -165,13 +153,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="mMapRotationLabel_2">
|
||||
<property name="text">
|
||||
<string>CRS</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QgsProjectionSelectionWidget" name="mCrsSelector" native="true">
|
||||
<property name="focusPolicy">
|
||||
@ -179,6 +160,20 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="mMapRotationLabel">
|
||||
<property name="text">
|
||||
<string>Map rotation</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="mUpdatePreviewButton">
|
||||
<property name="text">
|
||||
<string>Update preview</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
@ -826,7 +821,6 @@
|
||||
<tabstops>
|
||||
<tabstop>scrollArea</tabstop>
|
||||
<tabstop>groupBox</tabstop>
|
||||
<tabstop>mPreviewModeComboBox</tabstop>
|
||||
<tabstop>mUpdatePreviewButton</tabstop>
|
||||
<tabstop>mScaleLineEdit</tabstop>
|
||||
<tabstop>mScaleDDBtn</tabstop>
|
||||
|
@ -119,7 +119,6 @@ class TestComposerBase(TestQgsPalLabeling):
|
||||
# add map as small graphics item first, then set its scene QRectF later
|
||||
self._cmap = QgsComposerMap(self._c, 10, 10, 10, 10)
|
||||
""":type: QgsComposerMap"""
|
||||
self._cmap.setPreviewMode(QgsComposerMap.Render)
|
||||
self._cmap.setFrameEnabled(False)
|
||||
self._cmap.setLayers(self._TestMapSettings.layers())
|
||||
self._c.addComposerMap(self._cmap)
|
||||
|
Loading…
x
Reference in New Issue
Block a user