Skip to content
Permalink
Browse files
Allow labels to be toggled in map views
Another step toward feature parity with overview panel
  • Loading branch information
nyalldawson committed Mar 28, 2017
1 parent 456fdc4 commit 5b9dc9dca576893de3405e212a517118020a98da
@@ -25,6 +25,7 @@ class QgsMapCanvas : QGraphicsView
void setCurrentLayer( QgsMapLayer *layer );
const QgsMapSettings &mapSettings() const /KeepReference/;
void setDestinationCrs( const QgsCoordinateReferenceSystem &crs );
void setMapSettingsFlags( QgsMapSettings::Flags flags );
const QgsLabelingResults *labelingResults() const;
void setCachingEnabled( bool enabled );
bool isCachingEnabled() const;
@@ -11851,6 +11851,7 @@ void QgisApp::writeProject( QDomDocument &doc )
node.setAttribute( QStringLiteral( "showExtent" ), w->isMainCanvasExtentVisible() );
node.setAttribute( QStringLiteral( "scaleSynced" ), w->isViewScaleSynchronized() );
node.setAttribute( QStringLiteral( "scaleFactor" ), w->scaleFactor() );
node.setAttribute( QStringLiteral( "showLabels" ), w->labelsVisible() );
mapViewNode.appendChild( node );
}
qgisNode.appendChild( mapViewNode );
@@ -11890,6 +11891,7 @@ void QgisApp::readProject( const QDomDocument &doc )
bool showExtent = elementNode.attribute( QStringLiteral( "showExtent" ), QStringLiteral( "0" ) ).toInt();
bool scaleSynced = elementNode.attribute( QStringLiteral( "scaleSynced" ), QStringLiteral( "0" ) ).toInt();
double scaleFactor = elementNode.attribute( QStringLiteral( "scaleFactor" ), QStringLiteral( "1" ) ).toDouble();
bool showLabels = elementNode.attribute( QStringLiteral( "showLabels" ), QStringLiteral( "1" ) ).toInt();
Qt::DockWidgetArea area = static_cast< Qt::DockWidgetArea >( elementNode.attribute( QStringLiteral( "area" ), QString::number( Qt::RightDockWidgetArea ) ).toInt() );

QgsMapCanvasDockWidget *mapCanvasDock = createNewMapCanvasDock( mapName, floating, QRect( x, y, w, h ), area );
@@ -11901,6 +11903,7 @@ void QgisApp::readProject( const QDomDocument &doc )
mapCanvasDock->setScaleFactor( scaleFactor );
mapCanvasDock->setViewScaleSynchronized( scaleSynced );
mapCanvasDock->setMainCanvasExtentVisible( showExtent );
mapCanvasDock->setLabelsVisible( showLabels );
}
}
}
@@ -105,6 +105,7 @@ QgsMapCanvasDockWidget::QgsMapCanvasDockWidget( const QString &name, QWidget *pa
settingsMenu->addAction( mActionShowAnnotations );
settingsMenu->addAction( mActionShowCursor );
settingsMenu->addAction( mActionShowExtent );
settingsMenu->addAction( mActionShowLabels );
settingsMenu->addSeparator();
settingsMenu->addAction( mActionSetCrs );
settingsMenu->addAction( mActionRename );
@@ -118,6 +119,8 @@ QgsMapCanvasDockWidget::QgsMapCanvasDockWidget( const QString &name, QWidget *pa
connect( mActionShowCursor, &QAction::toggled, this, [ = ]( bool checked ) { mXyMarker->setVisible( checked ); } );
mActionShowExtent->setChecked( false );
connect( mActionShowExtent, &QAction::toggled, this, [ = ]( bool checked ) { mExtentRubberBand->setVisible( checked ); updateExtentRect(); } );
mActionShowLabels->setChecked( true );
connect( mActionShowLabels, &QAction::toggled, this, &QgsMapCanvasDockWidget::showLabels );

mScaleCombo = settingsAction->scaleCombo();
mRotationEdit = settingsAction->rotationSpinBox();
@@ -273,6 +276,16 @@ bool QgsMapCanvasDockWidget::isViewScaleSynchronized() const
return mSyncScaleCheckBox->isChecked();
}

void QgsMapCanvasDockWidget::setLabelsVisible( bool enabled )
{
mActionShowLabels->setChecked( enabled );
}

bool QgsMapCanvasDockWidget::labelsVisible() const
{
return mActionShowLabels->isChecked();
}

double QgsMapCanvasDockWidget::scaleFactor() const
{
return mScaleFactorWidget->value();
@@ -446,6 +459,16 @@ void QgsMapCanvasDockWidget::updateExtentRect()
mExtentRubberBand->setToGeometry( g, nullptr );
}

void QgsMapCanvasDockWidget::showLabels( bool show )
{
QgsMapSettings::Flags flags = mMapCanvas->mapSettings().flags();
if ( show )
flags = flags | QgsMapSettings::DrawLabeling;
else
flags = flags & ~QgsMapSettings::DrawLabeling;
mMapCanvas->setMapSettingsFlags( flags );
}

QgsMapSettingsAction::QgsMapSettingsAction( QWidget *parent )
: QWidgetAction( parent )
{
@@ -118,6 +118,18 @@ class APP_EXPORT QgsMapCanvasDockWidget : public QgsDockWidget, private Ui::QgsM
*/
bool isViewScaleSynchronized() const;

/**
* Sets whether labels should be rendered in the view.
* @see labelsVisible()
*/
void setLabelsVisible( bool enabled );

/**
* Returns whether labels are rendered in the view.
* @see setLabelsVisible()
*/
bool labelsVisible() const;

signals:

void renameTriggered();
@@ -136,6 +148,8 @@ class APP_EXPORT QgsMapCanvasDockWidget : public QgsDockWidget, private Ui::QgsM
void syncMarker( const QgsPoint &p );
void mapScaleChanged();
void updateExtentRect();
void showLabels( bool show );


private:

@@ -385,6 +385,13 @@ void QgsMapCanvas::setDestinationCrs( const QgsCoordinateReferenceSystem &crs )
emit destinationCrsChanged();
}

void QgsMapCanvas::setMapSettingsFlags( QgsMapSettings::Flags flags )
{
mSettings.setFlags( flags );
clearCache();
refresh();
}

const QgsLabelingResults *QgsMapCanvas::labelingResults() const
{
return mLabelingResults;
@@ -108,6 +108,12 @@ class GUI_EXPORT QgsMapCanvas : public QGraphicsView
//! @note added in 2.4
void setDestinationCrs( const QgsCoordinateReferenceSystem &crs );

/**
* Resets the \a flags for the canvas' map settings.
* @note added in QGIS 3.0
*/
void setMapSettingsFlags( QgsMapSettings::Flags flags );

//! Get access to the labeling results (may be null)
//! @note added in 2.4
const QgsLabelingResults *labelingResults() const;
@@ -159,6 +159,14 @@
<string>Show Main Canvas Extent</string>
</property>
</action>
<action name="mActionShowLabels">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Show Labels</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>

0 comments on commit 5b9dc9d

Please sign in to comment.