mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-15 00:04:00 -04:00
Give symbol widgets optional access to a map canvas
This allows symbol widgets to fetch properties from the main map canvas, for instance fetching the current scale from the map.
This commit is contained in:
parent
60cce74913
commit
a62c6a917a
@ -15,6 +15,13 @@ class QgsLayerPropertiesWidget : QWidget
|
|||||||
*/
|
*/
|
||||||
QgsExpressionContext* expressionContext() const;
|
QgsExpressionContext* expressionContext() const;
|
||||||
|
|
||||||
|
/** Sets the map canvas associated with the widget. This allows the widget to retrieve the current
|
||||||
|
* map scale and other properties from the canvas.
|
||||||
|
* @param canvas map canvas
|
||||||
|
* @note added in QGIS 2.12
|
||||||
|
*/
|
||||||
|
virtual void setMapCanvas( QgsMapCanvas* canvas );
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void layerTypeChanged();
|
void layerTypeChanged();
|
||||||
void emitSignalChanged();
|
void emitSignalChanged();
|
||||||
|
@ -9,4 +9,5 @@ class QgsPointDisplacementRendererWidget: QgsRendererV2Widget
|
|||||||
~QgsPointDisplacementRendererWidget();
|
~QgsPointDisplacementRendererWidget();
|
||||||
|
|
||||||
QgsFeatureRendererV2* renderer();
|
QgsFeatureRendererV2* renderer();
|
||||||
|
void setMapCanvas( QgsMapCanvas* canvas );
|
||||||
};
|
};
|
||||||
|
@ -6,6 +6,14 @@ class QgsRendererV2PropertiesDialog : QDialog
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
QgsRendererV2PropertiesDialog( QgsVectorLayer* layer, QgsStyleV2* style, bool embedded = false );
|
QgsRendererV2PropertiesDialog( QgsVectorLayer* layer, QgsStyleV2* style, bool embedded = false );
|
||||||
|
~QgsRendererV2PropertiesDialog();
|
||||||
|
|
||||||
|
/** Sets the map canvas associated with the dialog. This allows the widget to retrieve the current
|
||||||
|
* map scale and other properties from the canvas.
|
||||||
|
* @param canvas map canvas
|
||||||
|
* @note added in QGIS 2.12
|
||||||
|
*/
|
||||||
|
void setMapCanvas( QgsMapCanvas* canvas );
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
//! called when user changes renderer type
|
//! called when user changes renderer type
|
||||||
|
@ -15,6 +15,13 @@ class QgsRendererV2Widget : QWidget
|
|||||||
//! show a dialog with renderer's symbol level settings
|
//! show a dialog with renderer's symbol level settings
|
||||||
void showSymbolLevelsDialog( QgsFeatureRendererV2* r );
|
void showSymbolLevelsDialog( QgsFeatureRendererV2* r );
|
||||||
|
|
||||||
|
/** Sets the map canvas associated with the widget. This allows the widget to retrieve the current
|
||||||
|
* map scale and other properties from the canvas.
|
||||||
|
* @param canvas map canvas
|
||||||
|
* @note added in QGIS 2.12
|
||||||
|
*/
|
||||||
|
virtual void setMapCanvas( QgsMapCanvas* canvas );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** Subclasses may provide the capability of changing multiple symbols at once by implementing the following two methods
|
/** Subclasses may provide the capability of changing multiple symbols at once by implementing the following two methods
|
||||||
and by connecting the slot contextMenuViewCategories(const QPoint&)*/
|
and by connecting the slot contextMenuViewCategories(const QPoint&)*/
|
||||||
|
@ -106,7 +106,7 @@ class QgsRendererRulePropsDialog : QDialog
|
|||||||
%End
|
%End
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QgsRendererRulePropsDialog( QgsRuleBasedRendererV2::Rule* rule, QgsVectorLayer* layer, QgsStyleV2* style, QWidget* parent /TransferThis/ = 0 );
|
QgsRendererRulePropsDialog( QgsRuleBasedRendererV2::Rule* rule, QgsVectorLayer* layer, QgsStyleV2* style, QWidget* parent /TransferThis/ = 0, QgsMapCanvas* mapCanvas = 0 );
|
||||||
~QgsRendererRulePropsDialog();
|
~QgsRendererRulePropsDialog();
|
||||||
|
|
||||||
QgsRuleBasedRendererV2::Rule* rule();
|
QgsRuleBasedRendererV2::Rule* rule();
|
||||||
|
@ -11,6 +11,8 @@ class QgsSingleSymbolRendererV2Widget : QgsRendererV2Widget
|
|||||||
|
|
||||||
virtual QgsFeatureRendererV2* renderer();
|
virtual QgsFeatureRendererV2* renderer();
|
||||||
|
|
||||||
|
virtual void setMapCanvas( QgsMapCanvas* canvas );
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void changeSingleSymbol();
|
void changeSingleSymbol();
|
||||||
|
|
||||||
|
@ -20,6 +20,13 @@ class QgsSymbolLayerV2Widget : QWidget
|
|||||||
*/
|
*/
|
||||||
QgsExpressionContext* expressionContext() const;
|
QgsExpressionContext* expressionContext() const;
|
||||||
|
|
||||||
|
/** Sets the map canvas associated with the widget. This allows the widget to retrieve the current
|
||||||
|
* map scale and other properties from the canvas.
|
||||||
|
* @param canvas map canvas
|
||||||
|
* @note added in QGIS 2.12
|
||||||
|
*/
|
||||||
|
virtual void setMapCanvas( QgsMapCanvas* canvas );
|
||||||
|
|
||||||
/** Returns the vector layer associated with the widget.
|
/** Returns the vector layer associated with the widget.
|
||||||
* @note added in QGIS 2.12
|
* @note added in QGIS 2.12
|
||||||
*/
|
*/
|
||||||
|
@ -14,6 +14,13 @@ class QgsSymbolsListWidget : QWidget
|
|||||||
*/
|
*/
|
||||||
QgsExpressionContext* expressionContext() const;
|
QgsExpressionContext* expressionContext() const;
|
||||||
|
|
||||||
|
/** Sets the map canvas associated with the widget. This allows the widget to retrieve the current
|
||||||
|
* map scale and other properties from the canvas.
|
||||||
|
* @param canvas map canvas
|
||||||
|
* @note added in QGIS 2.12
|
||||||
|
*/
|
||||||
|
virtual void setMapCanvas( QgsMapCanvas* canvas );
|
||||||
|
|
||||||
/** Returns the vector layer associated with the widget.
|
/** Returns the vector layer associated with the widget.
|
||||||
* @note added in QGIS 2.12
|
* @note added in QGIS 2.12
|
||||||
*/
|
*/
|
||||||
|
@ -27,6 +27,13 @@ class QgsSymbolV2SelectorDialog : QDialog
|
|||||||
*/
|
*/
|
||||||
QgsExpressionContext* expressionContext() const;
|
QgsExpressionContext* expressionContext() const;
|
||||||
|
|
||||||
|
/** Sets the map canvas associated with the dialog. This allows the widget to retrieve the current
|
||||||
|
* map scale and other properties from the canvas.
|
||||||
|
* @param canvas map canvas
|
||||||
|
* @note added in QGIS 2.12
|
||||||
|
*/
|
||||||
|
void setMapCanvas( QgsMapCanvas* canvas );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//! Reimplements dialog keyPress event so we can ignore it
|
//! Reimplements dialog keyPress event so we can ignore it
|
||||||
void keyPressEvent( QKeyEvent * event );
|
void keyPressEvent( QKeyEvent * event );
|
||||||
|
@ -1237,6 +1237,7 @@ void QgsVectorLayerProperties::updateSymbologyPage()
|
|||||||
if ( layer->rendererV2() )
|
if ( layer->rendererV2() )
|
||||||
{
|
{
|
||||||
mRendererDialog = new QgsRendererV2PropertiesDialog( layer, QgsStyleV2::defaultStyle(), true );
|
mRendererDialog = new QgsRendererV2PropertiesDialog( layer, QgsStyleV2::defaultStyle(), true );
|
||||||
|
mRendererDialog->setMapCanvas( QgisApp::instance()->mapCanvas() );
|
||||||
|
|
||||||
// display the menu to choose the output format (fix #5136)
|
// display the menu to choose the output format (fix #5136)
|
||||||
mActionSaveStyleAs->setText( tr( "Save Style" ) );
|
mActionSaveStyleAs->setText( tr( "Save Style" ) );
|
||||||
|
@ -40,6 +40,7 @@ class QgsVectorLayer;
|
|||||||
class QgsLabelingGui;
|
class QgsLabelingGui;
|
||||||
class QgsDiagramProperties;
|
class QgsDiagramProperties;
|
||||||
class QgsFieldsProperties;
|
class QgsFieldsProperties;
|
||||||
|
class QgsRendererV2PropertiesDialog;
|
||||||
|
|
||||||
class APP_EXPORT QgsVectorLayerProperties : public QgsOptionsDialogBase, private Ui::QgsVectorLayerPropertiesBase
|
class APP_EXPORT QgsVectorLayerProperties : public QgsOptionsDialogBase, private Ui::QgsVectorLayerPropertiesBase
|
||||||
{
|
{
|
||||||
@ -164,7 +165,7 @@ class APP_EXPORT QgsVectorLayerProperties : public QgsOptionsDialogBase, private
|
|||||||
QAction* mActionSaveStyleAs;
|
QAction* mActionSaveStyleAs;
|
||||||
|
|
||||||
/** Renderer dialog which is shown*/
|
/** Renderer dialog which is shown*/
|
||||||
QDialog* mRendererDialog;
|
QgsRendererV2PropertiesDialog* mRendererDialog;
|
||||||
/** Labeling dialog. If apply is pressed, options are applied to vector's QgsLabel */
|
/** Labeling dialog. If apply is pressed, options are applied to vector's QgsLabel */
|
||||||
QgsLabelingGui* labelingDialog;
|
QgsLabelingGui* labelingDialog;
|
||||||
/** Label dialog. If apply is pressed, options are applied to vector's QgsLabel */
|
/** Label dialog. If apply is pressed, options are applied to vector's QgsLabel */
|
||||||
|
@ -522,6 +522,7 @@ void QgsCategorizedSymbolRendererV2Widget::changeSelectedSymbols()
|
|||||||
{
|
{
|
||||||
QgsSymbolV2* newSymbol = mCategorizedSymbol->clone();
|
QgsSymbolV2* newSymbol = mCategorizedSymbol->clone();
|
||||||
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
|
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
|
||||||
|
dlg.setMapCanvas( mMapCanvas );
|
||||||
if ( !dlg.exec() )
|
if ( !dlg.exec() )
|
||||||
{
|
{
|
||||||
delete newSymbol;
|
delete newSymbol;
|
||||||
@ -555,6 +556,7 @@ void QgsCategorizedSymbolRendererV2Widget::changeCategorizedSymbol()
|
|||||||
QgsSymbolV2* newSymbol = mCategorizedSymbol->clone();
|
QgsSymbolV2* newSymbol = mCategorizedSymbol->clone();
|
||||||
|
|
||||||
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
|
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
|
||||||
|
dlg.setMapCanvas( mMapCanvas );
|
||||||
if ( !dlg.exec() )
|
if ( !dlg.exec() )
|
||||||
{
|
{
|
||||||
delete newSymbol;
|
delete newSymbol;
|
||||||
@ -605,6 +607,7 @@ void QgsCategorizedSymbolRendererV2Widget::changeCategorySymbol()
|
|||||||
}
|
}
|
||||||
|
|
||||||
QgsSymbolV2SelectorDialog dlg( symbol, mStyle, mLayer, this );
|
QgsSymbolV2SelectorDialog dlg( symbol, mStyle, mLayer, this );
|
||||||
|
dlg.setMapCanvas( mMapCanvas );
|
||||||
if ( !dlg.exec() )
|
if ( !dlg.exec() )
|
||||||
{
|
{
|
||||||
delete symbol;
|
delete symbol;
|
||||||
|
@ -773,6 +773,7 @@ void QgsGraduatedSymbolRendererV2Widget::changeGraduatedSymbol()
|
|||||||
QgsSymbolV2* newSymbol = mGraduatedSymbol->clone();
|
QgsSymbolV2* newSymbol = mGraduatedSymbol->clone();
|
||||||
|
|
||||||
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
|
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
|
||||||
|
dlg.setMapCanvas( mMapCanvas );
|
||||||
if ( !dlg.exec() )
|
if ( !dlg.exec() )
|
||||||
{
|
{
|
||||||
delete newSymbol;
|
delete newSymbol;
|
||||||
@ -860,6 +861,7 @@ void QgsGraduatedSymbolRendererV2Widget::changeSelectedSymbols()
|
|||||||
{
|
{
|
||||||
QgsSymbolV2* newSymbol = mGraduatedSymbol->clone();
|
QgsSymbolV2* newSymbol = mGraduatedSymbol->clone();
|
||||||
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
|
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
|
||||||
|
dlg.setMapCanvas( mMapCanvas );
|
||||||
if ( !dlg.exec() )
|
if ( !dlg.exec() )
|
||||||
{
|
{
|
||||||
delete newSymbol;
|
delete newSymbol;
|
||||||
@ -885,6 +887,7 @@ void QgsGraduatedSymbolRendererV2Widget::changeRangeSymbol( int rangeIdx )
|
|||||||
QgsSymbolV2* newSymbol = mRenderer->ranges()[rangeIdx].symbol()->clone();
|
QgsSymbolV2* newSymbol = mRenderer->ranges()[rangeIdx].symbol()->clone();
|
||||||
|
|
||||||
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
|
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
|
||||||
|
dlg.setMapCanvas( mMapCanvas );
|
||||||
if ( !dlg.exec() )
|
if ( !dlg.exec() )
|
||||||
{
|
{
|
||||||
delete newSymbol;
|
delete newSymbol;
|
||||||
|
@ -120,6 +120,12 @@ QgsFeatureRendererV2* QgsHeatmapRendererWidget::renderer()
|
|||||||
return mRenderer;
|
return mRenderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsHeatmapRendererWidget::setMapCanvas( QgsMapCanvas* canvas )
|
||||||
|
{
|
||||||
|
QgsRendererV2Widget::setMapCanvas( canvas );
|
||||||
|
mRadiusUnitWidget->setMapCanvas( canvas );
|
||||||
|
}
|
||||||
|
|
||||||
void QgsHeatmapRendererWidget::applyColorRamp()
|
void QgsHeatmapRendererWidget::applyColorRamp()
|
||||||
{
|
{
|
||||||
if ( !mRenderer )
|
if ( !mRenderer )
|
||||||
|
@ -43,6 +43,8 @@ class GUI_EXPORT QgsHeatmapRendererWidget : public QgsRendererV2Widget, private
|
|||||||
/** @returns the current feature renderer */
|
/** @returns the current feature renderer */
|
||||||
virtual QgsFeatureRendererV2* renderer() override;
|
virtual QgsFeatureRendererV2* renderer() override;
|
||||||
|
|
||||||
|
void setMapCanvas( QgsMapCanvas* canvas ) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QgsHeatmapRenderer* mRenderer;
|
QgsHeatmapRenderer* mRenderer;
|
||||||
|
|
||||||
|
@ -111,6 +111,12 @@ QgsFeatureRendererV2* QgsInvertedPolygonRendererWidget::renderer()
|
|||||||
return mRenderer.data();
|
return mRenderer.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsInvertedPolygonRendererWidget::setMapCanvas( QgsMapCanvas* canvas )
|
||||||
|
{
|
||||||
|
QgsRendererV2Widget::setMapCanvas( canvas );
|
||||||
|
mEmbeddedRendererWidget->setMapCanvas( canvas );
|
||||||
|
}
|
||||||
|
|
||||||
void QgsInvertedPolygonRendererWidget::on_mRendererComboBox_currentIndexChanged( int index )
|
void QgsInvertedPolygonRendererWidget::on_mRendererComboBox_currentIndexChanged( int index )
|
||||||
{
|
{
|
||||||
QString rendererId = mRendererComboBox->itemData( index ).toString();
|
QString rendererId = mRendererComboBox->itemData( index ).toString();
|
||||||
@ -118,6 +124,7 @@ void QgsInvertedPolygonRendererWidget::on_mRendererComboBox_currentIndexChanged(
|
|||||||
if ( m )
|
if ( m )
|
||||||
{
|
{
|
||||||
mEmbeddedRendererWidget.reset( m->createRendererWidget( mLayer, mStyle, const_cast<QgsFeatureRendererV2*>( mRenderer->embeddedRenderer() )->clone() ) );
|
mEmbeddedRendererWidget.reset( m->createRendererWidget( mLayer, mStyle, const_cast<QgsFeatureRendererV2*>( mRenderer->embeddedRenderer() )->clone() ) );
|
||||||
|
mEmbeddedRendererWidget->setMapCanvas( mMapCanvas );
|
||||||
|
|
||||||
if ( mLayout->count() > 2 )
|
if ( mLayout->count() > 2 )
|
||||||
{
|
{
|
||||||
|
@ -47,6 +47,7 @@ class GUI_EXPORT QgsInvertedPolygonRendererWidget : public QgsRendererV2Widget,
|
|||||||
|
|
||||||
/** @returns the current feature renderer */
|
/** @returns the current feature renderer */
|
||||||
virtual QgsFeatureRendererV2* renderer() override;
|
virtual QgsFeatureRendererV2* renderer() override;
|
||||||
|
void setMapCanvas( QgsMapCanvas* canvas ) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** The mask renderer */
|
/** The mask renderer */
|
||||||
|
@ -83,6 +83,7 @@ static void _initWidgetFunctions()
|
|||||||
QgsLayerPropertiesWidget::QgsLayerPropertiesWidget( QgsSymbolLayerV2* layer, const QgsSymbolV2* symbol, const QgsVectorLayer* vl, QWidget* parent )
|
QgsLayerPropertiesWidget::QgsLayerPropertiesWidget( QgsSymbolLayerV2* layer, const QgsSymbolV2* symbol, const QgsVectorLayer* vl, QWidget* parent )
|
||||||
: QWidget( parent )
|
: QWidget( parent )
|
||||||
, mPresetExpressionContext( 0 )
|
, mPresetExpressionContext( 0 )
|
||||||
|
, mMapCanvas( 0 )
|
||||||
{
|
{
|
||||||
|
|
||||||
mLayer = layer;
|
mLayer = layer;
|
||||||
@ -116,6 +117,14 @@ QgsLayerPropertiesWidget::QgsLayerPropertiesWidget( QgsSymbolLayerV2* layer, con
|
|||||||
mEffectWidget->setPaintEffect( mLayer->paintEffect() );
|
mEffectWidget->setPaintEffect( mLayer->paintEffect() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsLayerPropertiesWidget::setMapCanvas( QgsMapCanvas *canvas )
|
||||||
|
{
|
||||||
|
mMapCanvas = canvas;
|
||||||
|
QgsSymbolLayerV2Widget* w = dynamic_cast< QgsSymbolLayerV2Widget* >( stackedWidget->currentWidget() );
|
||||||
|
if ( w )
|
||||||
|
w->setMapCanvas( mMapCanvas );
|
||||||
|
}
|
||||||
|
|
||||||
void QgsLayerPropertiesWidget::setExpressionContext( QgsExpressionContext *context )
|
void QgsLayerPropertiesWidget::setExpressionContext( QgsExpressionContext *context )
|
||||||
{
|
{
|
||||||
mPresetExpressionContext = context;
|
mPresetExpressionContext = context;
|
||||||
@ -165,6 +174,8 @@ void QgsLayerPropertiesWidget::updateSymbolLayerWidget( QgsSymbolLayerV2* layer
|
|||||||
{
|
{
|
||||||
w->setSymbolLayer( layer );
|
w->setSymbolLayer( layer );
|
||||||
w->setExpressionContext( mPresetExpressionContext );
|
w->setExpressionContext( mPresetExpressionContext );
|
||||||
|
if ( mMapCanvas )
|
||||||
|
w->setMapCanvas( mMapCanvas );
|
||||||
stackedWidget->addWidget( w );
|
stackedWidget->addWidget( w );
|
||||||
stackedWidget->setCurrentWidget( w );
|
stackedWidget->setCurrentWidget( w );
|
||||||
// start receiving updates from widget
|
// start receiving updates from widget
|
||||||
|
@ -22,6 +22,7 @@ class QgsSymbolV2;
|
|||||||
class QgsSymbolLayerV2;
|
class QgsSymbolLayerV2;
|
||||||
class QgsSymbolLayerV2Widget;
|
class QgsSymbolLayerV2Widget;
|
||||||
class QgsVectorLayer;
|
class QgsVectorLayer;
|
||||||
|
class QgsMapCanvas;
|
||||||
|
|
||||||
class SymbolLayerItem;
|
class SymbolLayerItem;
|
||||||
|
|
||||||
@ -44,6 +45,13 @@ class GUI_EXPORT QgsLayerPropertiesWidget : public QWidget, private Ui::LayerPro
|
|||||||
*/
|
*/
|
||||||
QgsExpressionContext* expressionContext() const { return mPresetExpressionContext; }
|
QgsExpressionContext* expressionContext() const { return mPresetExpressionContext; }
|
||||||
|
|
||||||
|
/** Sets the map canvas associated with the widget. This allows the widget to retrieve the current
|
||||||
|
* map scale and other properties from the canvas.
|
||||||
|
* @param canvas map canvas
|
||||||
|
* @note added in QGIS 2.12
|
||||||
|
*/
|
||||||
|
virtual void setMapCanvas( QgsMapCanvas* canvas );
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void layerTypeChanged();
|
void layerTypeChanged();
|
||||||
void emitSignalChanged();
|
void emitSignalChanged();
|
||||||
@ -74,6 +82,8 @@ class GUI_EXPORT QgsLayerPropertiesWidget : public QWidget, private Ui::LayerPro
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QgsExpressionContext* mPresetExpressionContext;
|
QgsExpressionContext* mPresetExpressionContext;
|
||||||
|
QgsMapCanvas* mMapCanvas;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //QGSLAYERPROPERTIESWIDGET_H
|
#endif //QGSLAYERPROPERTIESWIDGET_H
|
||||||
|
@ -160,6 +160,13 @@ QgsFeatureRendererV2* QgsPointDisplacementRendererWidget::renderer()
|
|||||||
return mRenderer;
|
return mRenderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsPointDisplacementRendererWidget::setMapCanvas( QgsMapCanvas* canvas )
|
||||||
|
{
|
||||||
|
QgsRendererV2Widget::setMapCanvas( canvas );
|
||||||
|
mDistanceUnitWidget->setMapCanvas( canvas );
|
||||||
|
mEmbeddedRendererWidget->setMapCanvas( canvas );
|
||||||
|
}
|
||||||
|
|
||||||
void QgsPointDisplacementRendererWidget::on_mLabelFieldComboBox_currentIndexChanged( const QString& text )
|
void QgsPointDisplacementRendererWidget::on_mLabelFieldComboBox_currentIndexChanged( const QString& text )
|
||||||
{
|
{
|
||||||
if ( mRenderer )
|
if ( mRenderer )
|
||||||
@ -183,6 +190,7 @@ void QgsPointDisplacementRendererWidget::on_mRendererComboBox_currentIndexChange
|
|||||||
{
|
{
|
||||||
delete mEmbeddedRendererWidget;
|
delete mEmbeddedRendererWidget;
|
||||||
mEmbeddedRendererWidget = m->createRendererWidget( mLayer, mStyle, mRenderer->embeddedRenderer()->clone() );
|
mEmbeddedRendererWidget = m->createRendererWidget( mLayer, mStyle, mRenderer->embeddedRenderer()->clone() );
|
||||||
|
mEmbeddedRendererWidget->setMapCanvas( mMapCanvas );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -332,6 +340,7 @@ void QgsPointDisplacementRendererWidget::on_mCenterSymbolPushButton_clicked()
|
|||||||
}
|
}
|
||||||
QgsMarkerSymbolV2* markerSymbol = dynamic_cast<QgsMarkerSymbolV2*>( mRenderer->centerSymbol()->clone() );
|
QgsMarkerSymbolV2* markerSymbol = dynamic_cast<QgsMarkerSymbolV2*>( mRenderer->centerSymbol()->clone() );
|
||||||
QgsSymbolV2SelectorDialog dlg( markerSymbol, QgsStyleV2::defaultStyle(), mLayer, this );
|
QgsSymbolV2SelectorDialog dlg( markerSymbol, QgsStyleV2::defaultStyle(), mLayer, this );
|
||||||
|
dlg.setMapCanvas( mMapCanvas );
|
||||||
if ( dlg.exec() == QDialog::Rejected )
|
if ( dlg.exec() == QDialog::Rejected )
|
||||||
{
|
{
|
||||||
delete markerSymbol;
|
delete markerSymbol;
|
||||||
|
@ -32,6 +32,7 @@ class GUI_EXPORT QgsPointDisplacementRendererWidget: public QgsRendererV2Widget,
|
|||||||
~QgsPointDisplacementRendererWidget();
|
~QgsPointDisplacementRendererWidget();
|
||||||
|
|
||||||
QgsFeatureRendererV2* renderer() override;
|
QgsFeatureRendererV2* renderer() override;
|
||||||
|
void setMapCanvas( QgsMapCanvas* canvas ) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QgsPointDisplacementRenderer* mRenderer;
|
QgsPointDisplacementRenderer* mRenderer;
|
||||||
|
@ -78,6 +78,7 @@ QgsRendererV2PropertiesDialog::QgsRendererV2PropertiesDialog( QgsVectorLayer* la
|
|||||||
, mStyle( style )
|
, mStyle( style )
|
||||||
, mActiveWidget( NULL )
|
, mActiveWidget( NULL )
|
||||||
, mPaintEffect( 0 )
|
, mPaintEffect( 0 )
|
||||||
|
, mMapCanvas( 0 )
|
||||||
{
|
{
|
||||||
setupUi( this );
|
setupUi( this );
|
||||||
|
|
||||||
@ -149,6 +150,13 @@ QgsRendererV2PropertiesDialog::~QgsRendererV2PropertiesDialog()
|
|||||||
delete mPaintEffect;
|
delete mPaintEffect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsRendererV2PropertiesDialog::setMapCanvas( QgsMapCanvas* canvas )
|
||||||
|
{
|
||||||
|
mMapCanvas = canvas;
|
||||||
|
if ( mActiveWidget )
|
||||||
|
mActiveWidget->setMapCanvas( mMapCanvas );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void QgsRendererV2PropertiesDialog::rendererChanged()
|
void QgsRendererV2PropertiesDialog::rendererChanged()
|
||||||
{
|
{
|
||||||
@ -193,6 +201,8 @@ void QgsRendererV2PropertiesDialog::rendererChanged()
|
|||||||
mActiveWidget = w;
|
mActiveWidget = w;
|
||||||
stackedWidget->addWidget( mActiveWidget );
|
stackedWidget->addWidget( mActiveWidget );
|
||||||
stackedWidget->setCurrentWidget( mActiveWidget );
|
stackedWidget->setCurrentWidget( mActiveWidget );
|
||||||
|
if ( mMapCanvas )
|
||||||
|
mActiveWidget->setMapCanvas( mMapCanvas );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -28,6 +28,7 @@ class QgsStyleV2;
|
|||||||
class QgsSymbolV2;
|
class QgsSymbolV2;
|
||||||
class QgsPaintEffect;
|
class QgsPaintEffect;
|
||||||
class QgsRendererV2Widget;
|
class QgsRendererV2Widget;
|
||||||
|
class QgsMapCanvas;
|
||||||
|
|
||||||
class GUI_EXPORT QgsRendererV2PropertiesDialog : public QDialog, private Ui::QgsRendererV2PropsDialogBase
|
class GUI_EXPORT QgsRendererV2PropertiesDialog : public QDialog, private Ui::QgsRendererV2PropsDialogBase
|
||||||
{
|
{
|
||||||
@ -37,6 +38,13 @@ class GUI_EXPORT QgsRendererV2PropertiesDialog : public QDialog, private Ui::Qgs
|
|||||||
QgsRendererV2PropertiesDialog( QgsVectorLayer* layer, QgsStyleV2* style, bool embedded = false );
|
QgsRendererV2PropertiesDialog( QgsVectorLayer* layer, QgsStyleV2* style, bool embedded = false );
|
||||||
~QgsRendererV2PropertiesDialog();
|
~QgsRendererV2PropertiesDialog();
|
||||||
|
|
||||||
|
/** Sets the map canvas associated with the dialog. This allows the widget to retrieve the current
|
||||||
|
* map scale and other properties from the canvas.
|
||||||
|
* @param canvas map canvas
|
||||||
|
* @note added in QGIS 2.12
|
||||||
|
*/
|
||||||
|
void setMapCanvas( QgsMapCanvas* canvas );
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
//! called when user changes renderer type
|
//! called when user changes renderer type
|
||||||
void rendererChanged();
|
void rendererChanged();
|
||||||
@ -56,6 +64,8 @@ class GUI_EXPORT QgsRendererV2PropertiesDialog : public QDialog, private Ui::Qgs
|
|||||||
QgsRendererV2Widget* mActiveWidget;
|
QgsRendererV2Widget* mActiveWidget;
|
||||||
|
|
||||||
QgsPaintEffect* mPaintEffect;
|
QgsPaintEffect* mPaintEffect;
|
||||||
|
|
||||||
|
QgsMapCanvas* mMapCanvas;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -24,7 +24,10 @@
|
|||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
|
|
||||||
QgsRendererV2Widget::QgsRendererV2Widget( QgsVectorLayer* layer, QgsStyleV2* style )
|
QgsRendererV2Widget::QgsRendererV2Widget( QgsVectorLayer* layer, QgsStyleV2* style )
|
||||||
: QWidget(), mLayer( layer ), mStyle( style )
|
: QWidget()
|
||||||
|
, mLayer( layer )
|
||||||
|
, mStyle( style )
|
||||||
|
, mMapCanvas( 0 )
|
||||||
{
|
{
|
||||||
contextMenu = new QMenu( tr( "Renderer Options" ), this );
|
contextMenu = new QMenu( tr( "Renderer Options" ), this );
|
||||||
|
|
||||||
@ -207,6 +210,11 @@ void QgsRendererV2Widget::showSymbolLevelsDialog( QgsFeatureRendererV2* r )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsRendererV2Widget::setMapCanvas( QgsMapCanvas *canvas )
|
||||||
|
{
|
||||||
|
mMapCanvas = canvas;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////
|
////////////
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ class QgsVectorLayer;
|
|||||||
class QgsStyleV2;
|
class QgsStyleV2;
|
||||||
class QgsFeatureRendererV2;
|
class QgsFeatureRendererV2;
|
||||||
class QgsSymbolV2SelectorDialog;
|
class QgsSymbolV2SelectorDialog;
|
||||||
|
class QgsMapCanvas;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Base class for renderer settings widgets
|
Base class for renderer settings widgets
|
||||||
@ -50,12 +50,20 @@ class GUI_EXPORT QgsRendererV2Widget : public QWidget
|
|||||||
//! show a dialog with renderer's symbol level settings
|
//! show a dialog with renderer's symbol level settings
|
||||||
void showSymbolLevelsDialog( QgsFeatureRendererV2* r );
|
void showSymbolLevelsDialog( QgsFeatureRendererV2* r );
|
||||||
|
|
||||||
|
/** Sets the map canvas associated with the widget. This allows the widget to retrieve the current
|
||||||
|
* map scale and other properties from the canvas.
|
||||||
|
* @param canvas map canvas
|
||||||
|
* @note added in QGIS 2.12
|
||||||
|
*/
|
||||||
|
virtual void setMapCanvas( QgsMapCanvas* canvas );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QgsVectorLayer* mLayer;
|
QgsVectorLayer* mLayer;
|
||||||
QgsStyleV2* mStyle;
|
QgsStyleV2* mStyle;
|
||||||
QMenu* contextMenu;
|
QMenu* contextMenu;
|
||||||
QAction* mCopyAction;
|
QAction* mCopyAction;
|
||||||
QAction* mPasteAction;
|
QAction* mPasteAction;
|
||||||
|
QgsMapCanvas* mMapCanvas;
|
||||||
|
|
||||||
/** Subclasses may provide the capability of changing multiple symbols at once by implementing the following two methods
|
/** Subclasses may provide the capability of changing multiple symbols at once by implementing the following two methods
|
||||||
and by connecting the slot contextMenuViewCategories(const QPoint&)*/
|
and by connecting the slot contextMenuViewCategories(const QPoint&)*/
|
||||||
|
@ -129,7 +129,7 @@ void QgsRuleBasedRendererV2Widget::addRule()
|
|||||||
QgsSymbolV2* s = QgsSymbolV2::defaultSymbol( mLayer->geometryType() );
|
QgsSymbolV2* s = QgsSymbolV2::defaultSymbol( mLayer->geometryType() );
|
||||||
QgsRuleBasedRendererV2::Rule* newrule = new QgsRuleBasedRendererV2::Rule( s );
|
QgsRuleBasedRendererV2::Rule* newrule = new QgsRuleBasedRendererV2::Rule( s );
|
||||||
|
|
||||||
QgsRendererRulePropsDialog dlg( newrule, mLayer, mStyle, this );
|
QgsRendererRulePropsDialog dlg( newrule, mLayer, mStyle, this, mMapCanvas );
|
||||||
if ( dlg.exec() )
|
if ( dlg.exec() )
|
||||||
{
|
{
|
||||||
QgsRuleBasedRendererV2::Rule* current = currentRule();
|
QgsRuleBasedRendererV2::Rule* current = currentRule();
|
||||||
@ -173,7 +173,7 @@ void QgsRuleBasedRendererV2Widget::editRule( const QModelIndex& index )
|
|||||||
return;
|
return;
|
||||||
QgsRuleBasedRendererV2::Rule* rule = mModel->ruleForIndex( index );
|
QgsRuleBasedRendererV2::Rule* rule = mModel->ruleForIndex( index );
|
||||||
|
|
||||||
QgsRendererRulePropsDialog dlg( rule, mLayer, mStyle, this );
|
QgsRendererRulePropsDialog dlg( rule, mLayer, mStyle, this, mMapCanvas );
|
||||||
if ( dlg.exec() )
|
if ( dlg.exec() )
|
||||||
{
|
{
|
||||||
// model should know about the change and emit dataChanged signal for the view
|
// model should know about the change and emit dataChanged signal for the view
|
||||||
@ -256,6 +256,7 @@ void QgsRuleBasedRendererV2Widget::refineRuleCategoriesGui( const QModelIndexLis
|
|||||||
dlg.setWindowTitle( tr( "Refine a rule to categories" ) );
|
dlg.setWindowTitle( tr( "Refine a rule to categories" ) );
|
||||||
QVBoxLayout* l = new QVBoxLayout();
|
QVBoxLayout* l = new QVBoxLayout();
|
||||||
QgsCategorizedSymbolRendererV2Widget* w = new QgsCategorizedSymbolRendererV2Widget( mLayer, mStyle, NULL );
|
QgsCategorizedSymbolRendererV2Widget* w = new QgsCategorizedSymbolRendererV2Widget( mLayer, mStyle, NULL );
|
||||||
|
w->setMapCanvas( mMapCanvas );
|
||||||
l->addWidget( w );
|
l->addWidget( w );
|
||||||
QDialogButtonBox* bb = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
|
QDialogButtonBox* bb = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
|
||||||
l->addWidget( bb );
|
l->addWidget( bb );
|
||||||
@ -286,6 +287,7 @@ void QgsRuleBasedRendererV2Widget::refineRuleRangesGui( const QModelIndexList& i
|
|||||||
dlg.setWindowTitle( tr( "Refine a rule to ranges" ) );
|
dlg.setWindowTitle( tr( "Refine a rule to ranges" ) );
|
||||||
QVBoxLayout* l = new QVBoxLayout();
|
QVBoxLayout* l = new QVBoxLayout();
|
||||||
QgsGraduatedSymbolRendererV2Widget* w = new QgsGraduatedSymbolRendererV2Widget( mLayer, mStyle, NULL );
|
QgsGraduatedSymbolRendererV2Widget* w = new QgsGraduatedSymbolRendererV2Widget( mLayer, mStyle, NULL );
|
||||||
|
w->setMapCanvas( mMapCanvas );
|
||||||
l->addWidget( w );
|
l->addWidget( w );
|
||||||
QDialogButtonBox* bb = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
|
QDialogButtonBox* bb = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
|
||||||
l->addWidget( bb );
|
l->addWidget( bb );
|
||||||
@ -571,8 +573,8 @@ void QgsRuleBasedRendererV2Widget::countFeatures()
|
|||||||
|
|
||||||
///////////
|
///////////
|
||||||
|
|
||||||
QgsRendererRulePropsDialog::QgsRendererRulePropsDialog( QgsRuleBasedRendererV2::Rule* rule, QgsVectorLayer* layer, QgsStyleV2* style, QWidget* parent )
|
QgsRendererRulePropsDialog::QgsRendererRulePropsDialog( QgsRuleBasedRendererV2::Rule* rule, QgsVectorLayer* layer, QgsStyleV2* style, QWidget* parent , QgsMapCanvas* mapCanvas )
|
||||||
: QDialog( parent ), mRule( rule ), mLayer( layer ), mSymbolSelector( NULL ), mSymbol( NULL )
|
: QDialog( parent ), mRule( rule ), mLayer( layer ), mSymbolSelector( NULL ), mSymbol( NULL ), mMapCanvas( mapCanvas )
|
||||||
{
|
{
|
||||||
setupUi( this );
|
setupUi( this );
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
@ -597,6 +599,7 @@ QgsRendererRulePropsDialog::QgsRendererRulePropsDialog( QgsRuleBasedRendererV2::
|
|||||||
if ( rule->scaleMaxDenom() > 0 )
|
if ( rule->scaleMaxDenom() > 0 )
|
||||||
mScaleRangeWidget->setMinimumScale( 1.0 / rule->scaleMaxDenom() );
|
mScaleRangeWidget->setMinimumScale( 1.0 / rule->scaleMaxDenom() );
|
||||||
}
|
}
|
||||||
|
mScaleRangeWidget->setMapCanvas( mMapCanvas );
|
||||||
|
|
||||||
if ( mRule->symbol() )
|
if ( mRule->symbol() )
|
||||||
{
|
{
|
||||||
@ -610,6 +613,7 @@ QgsRendererRulePropsDialog::QgsRendererRulePropsDialog( QgsRuleBasedRendererV2::
|
|||||||
}
|
}
|
||||||
|
|
||||||
mSymbolSelector = new QgsSymbolV2SelectorDialog( mSymbol, style, mLayer, this, true );
|
mSymbolSelector = new QgsSymbolV2SelectorDialog( mSymbol, style, mLayer, this, true );
|
||||||
|
mSymbolSelector->setMapCanvas( mMapCanvas );
|
||||||
QVBoxLayout* l = new QVBoxLayout;
|
QVBoxLayout* l = new QVBoxLayout;
|
||||||
l->addWidget( mSymbolSelector );
|
l->addWidget( mSymbolSelector );
|
||||||
groupSymbol->setLayout( l );
|
groupSymbol->setLayout( l );
|
||||||
|
@ -167,7 +167,7 @@ class GUI_EXPORT QgsRendererRulePropsDialog : public QDialog, private Ui::QgsRen
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QgsRendererRulePropsDialog( QgsRuleBasedRendererV2::Rule* rule, QgsVectorLayer* layer, QgsStyleV2* style, QWidget* parent = 0 );
|
QgsRendererRulePropsDialog( QgsRuleBasedRendererV2::Rule* rule, QgsVectorLayer* layer, QgsStyleV2* style, QWidget* parent = 0, QgsMapCanvas* mapCanvas = 0 );
|
||||||
~QgsRendererRulePropsDialog();
|
~QgsRendererRulePropsDialog();
|
||||||
|
|
||||||
QgsRuleBasedRendererV2::Rule* rule() { return mRule; }
|
QgsRuleBasedRendererV2::Rule* rule() { return mRule; }
|
||||||
@ -183,6 +183,8 @@ class GUI_EXPORT QgsRendererRulePropsDialog : public QDialog, private Ui::QgsRen
|
|||||||
|
|
||||||
QgsSymbolV2SelectorDialog* mSymbolSelector;
|
QgsSymbolV2SelectorDialog* mSymbolSelector;
|
||||||
QgsSymbolV2* mSymbol; // a clone of original symbol
|
QgsSymbolV2* mSymbol; // a clone of original symbol
|
||||||
|
|
||||||
|
QgsMapCanvas* mMapCanvas;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -80,6 +80,12 @@ QgsFeatureRendererV2* QgsSingleSymbolRendererV2Widget::renderer()
|
|||||||
return mRenderer;
|
return mRenderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsSingleSymbolRendererV2Widget::setMapCanvas( QgsMapCanvas* canvas )
|
||||||
|
{
|
||||||
|
QgsRendererV2Widget::setMapCanvas( canvas );
|
||||||
|
mSelector->setMapCanvas( canvas );
|
||||||
|
}
|
||||||
|
|
||||||
void QgsSingleSymbolRendererV2Widget::changeSingleSymbol()
|
void QgsSingleSymbolRendererV2Widget::changeSingleSymbol()
|
||||||
{
|
{
|
||||||
// update symbol from the GUI
|
// update symbol from the GUI
|
||||||
|
@ -34,6 +34,9 @@ class GUI_EXPORT QgsSingleSymbolRendererV2Widget : public QgsRendererV2Widget
|
|||||||
|
|
||||||
virtual QgsFeatureRendererV2* renderer() override;
|
virtual QgsFeatureRendererV2* renderer() override;
|
||||||
|
|
||||||
|
|
||||||
|
virtual void setMapCanvas( QgsMapCanvas* canvas ) override;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void changeSingleSymbol();
|
void changeSingleSymbol();
|
||||||
|
|
||||||
|
@ -68,6 +68,15 @@ static QgsExpressionContext _getExpressionContext( const void* context )
|
|||||||
return expContext;
|
return expContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsSymbolLayerV2Widget::setMapCanvas( QgsMapCanvas *canvas )
|
||||||
|
{
|
||||||
|
mMapCanvas = canvas;
|
||||||
|
Q_FOREACH ( QgsUnitSelectionWidget* unitWidget, findChildren<QgsUnitSelectionWidget*>() )
|
||||||
|
{
|
||||||
|
unitWidget->setMapCanvas( mMapCanvas );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void QgsSymbolLayerV2Widget::registerDataDefinedButton( QgsDataDefinedButton * button, const QString & propertyName, QgsDataDefinedButton::DataType type, const QString & description )
|
void QgsSymbolLayerV2Widget::registerDataDefinedButton( QgsDataDefinedButton * button, const QString & propertyName, QgsDataDefinedButton::DataType type, const QString & description )
|
||||||
{
|
{
|
||||||
const QgsDataDefined* dd = symbolLayer()->getDataDefinedProperty( propertyName );
|
const QgsDataDefined* dd = symbolLayer()->getDataDefinedProperty( propertyName );
|
||||||
|
@ -23,13 +23,14 @@
|
|||||||
|
|
||||||
class QgsSymbolLayerV2;
|
class QgsSymbolLayerV2;
|
||||||
class QgsVectorLayer;
|
class QgsVectorLayer;
|
||||||
|
class QgsMapCanvas;
|
||||||
|
|
||||||
class GUI_EXPORT QgsSymbolLayerV2Widget : public QWidget
|
class GUI_EXPORT QgsSymbolLayerV2Widget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QgsSymbolLayerV2Widget( QWidget* parent, const QgsVectorLayer* vl = 0 ) : QWidget( parent ), mVectorLayer( vl ), mPresetExpressionContext( 0 ) {}
|
QgsSymbolLayerV2Widget( QWidget* parent, const QgsVectorLayer* vl = 0 ) : QWidget( parent ), mVectorLayer( vl ), mPresetExpressionContext( 0 ), mMapCanvas( 0 ) {}
|
||||||
virtual ~QgsSymbolLayerV2Widget() {}
|
virtual ~QgsSymbolLayerV2Widget() {}
|
||||||
|
|
||||||
virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) = 0;
|
virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) = 0;
|
||||||
@ -43,6 +44,13 @@ class GUI_EXPORT QgsSymbolLayerV2Widget : public QWidget
|
|||||||
*/
|
*/
|
||||||
QgsExpressionContext* expressionContext() const { return mPresetExpressionContext; }
|
QgsExpressionContext* expressionContext() const { return mPresetExpressionContext; }
|
||||||
|
|
||||||
|
/** Sets the map canvas associated with the widget. This allows the widget to retrieve the current
|
||||||
|
* map scale and other properties from the canvas.
|
||||||
|
* @param canvas map canvas
|
||||||
|
* @note added in QGIS 2.12
|
||||||
|
*/
|
||||||
|
virtual void setMapCanvas( QgsMapCanvas* canvas );
|
||||||
|
|
||||||
/** Returns the vector layer associated with the widget.
|
/** Returns the vector layer associated with the widget.
|
||||||
* @note added in QGIS 2.12
|
* @note added in QGIS 2.12
|
||||||
*/
|
*/
|
||||||
@ -66,6 +74,8 @@ class GUI_EXPORT QgsSymbolLayerV2Widget : public QWidget
|
|||||||
//! Optional preset expression context
|
//! Optional preset expression context
|
||||||
QgsExpressionContext* mPresetExpressionContext;
|
QgsExpressionContext* mPresetExpressionContext;
|
||||||
|
|
||||||
|
QgsMapCanvas* mMapCanvas;
|
||||||
|
|
||||||
void registerDataDefinedButton( QgsDataDefinedButton * button, const QString & propertyName, QgsDataDefinedButton::DataType type, const QString & description );
|
void registerDataDefinedButton( QgsDataDefinedButton * button, const QString & propertyName, QgsDataDefinedButton::DataType type, const QString & description );
|
||||||
|
|
||||||
/** Get label for data defined entry.
|
/** Get label for data defined entry.
|
||||||
|
@ -117,6 +117,14 @@ QgsSymbolsListWidget::QgsSymbolsListWidget( QgsSymbolV2* symbol, QgsStyleV2* sty
|
|||||||
btnColor->setContext( "symbology" );
|
btnColor->setContext( "symbology" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsSymbolsListWidget::setMapCanvas( QgsMapCanvas* canvas )
|
||||||
|
{
|
||||||
|
Q_FOREACH ( QgsUnitSelectionWidget* unitWidget, findChildren<QgsUnitSelectionWidget*>() )
|
||||||
|
{
|
||||||
|
unitWidget->setMapCanvas( canvas );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void QgsSymbolsListWidget::setExpressionContext( QgsExpressionContext *context )
|
void QgsSymbolsListWidget::setExpressionContext( QgsExpressionContext *context )
|
||||||
{
|
{
|
||||||
mPresetExpressionContext = context;
|
mPresetExpressionContext = context;
|
||||||
|
@ -40,6 +40,13 @@ class GUI_EXPORT QgsSymbolsListWidget : public QWidget, private Ui::SymbolsListW
|
|||||||
*/
|
*/
|
||||||
QgsExpressionContext* expressionContext() const { return mPresetExpressionContext; }
|
QgsExpressionContext* expressionContext() const { return mPresetExpressionContext; }
|
||||||
|
|
||||||
|
/** Sets the map canvas associated with the widget. This allows the widget to retrieve the current
|
||||||
|
* map scale and other properties from the canvas.
|
||||||
|
* @param canvas map canvas
|
||||||
|
* @note added in QGIS 2.12
|
||||||
|
*/
|
||||||
|
virtual void setMapCanvas( QgsMapCanvas* canvas );
|
||||||
|
|
||||||
/** Returns the vector layer associated with the widget.
|
/** Returns the vector layer associated with the widget.
|
||||||
* @note added in QGIS 2.12
|
* @note added in QGIS 2.12
|
||||||
*/
|
*/
|
||||||
|
@ -205,7 +205,10 @@ class SymbolLayerItem : public QStandardItem
|
|||||||
//////////
|
//////////
|
||||||
|
|
||||||
QgsSymbolV2SelectorDialog::QgsSymbolV2SelectorDialog( QgsSymbolV2* symbol, QgsStyleV2* style, const QgsVectorLayer* vl, QWidget* parent, bool embedded )
|
QgsSymbolV2SelectorDialog::QgsSymbolV2SelectorDialog( QgsSymbolV2* symbol, QgsStyleV2* style, const QgsVectorLayer* vl, QWidget* parent, bool embedded )
|
||||||
: QDialog( parent ), mAdvancedMenu( NULL ), mVectorLayer( vl )
|
: QDialog( parent )
|
||||||
|
, mAdvancedMenu( NULL )
|
||||||
|
, mVectorLayer( vl )
|
||||||
|
, mMapCanvas( 0 )
|
||||||
{
|
{
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
setWindowModality( Qt::WindowModal );
|
setWindowModality( Qt::WindowModal );
|
||||||
@ -287,6 +290,20 @@ void QgsSymbolV2SelectorDialog::setExpressionContext( QgsExpressionContext *cont
|
|||||||
updatePreview();
|
updatePreview();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsSymbolV2SelectorDialog::setMapCanvas( QgsMapCanvas *canvas )
|
||||||
|
{
|
||||||
|
mMapCanvas = canvas;
|
||||||
|
|
||||||
|
QWidget* widget = stackedWidget->currentWidget();
|
||||||
|
QgsLayerPropertiesWidget* layerProp = dynamic_cast< QgsLayerPropertiesWidget* >( widget );
|
||||||
|
QgsSymbolsListWidget* listWidget = dynamic_cast< QgsSymbolsListWidget* >( widget );
|
||||||
|
|
||||||
|
if ( layerProp )
|
||||||
|
layerProp->setMapCanvas( canvas );
|
||||||
|
if ( listWidget )
|
||||||
|
listWidget->setMapCanvas( canvas );
|
||||||
|
}
|
||||||
|
|
||||||
void QgsSymbolV2SelectorDialog::loadSymbol( QgsSymbolV2* symbol, SymbolLayerItem* parent )
|
void QgsSymbolV2SelectorDialog::loadSymbol( QgsSymbolV2* symbol, SymbolLayerItem* parent )
|
||||||
{
|
{
|
||||||
SymbolLayerItem* symbolItem = new SymbolLayerItem( symbol );
|
SymbolLayerItem* symbolItem = new SymbolLayerItem( symbol );
|
||||||
@ -399,6 +416,7 @@ void QgsSymbolV2SelectorDialog::layerChanged()
|
|||||||
mDataDefineRestorer.reset( new DataDefinedRestorer( parent->symbol(), currentItem->layer() ) );
|
mDataDefineRestorer.reset( new DataDefinedRestorer( parent->symbol(), currentItem->layer() ) );
|
||||||
QgsLayerPropertiesWidget *layerProp = new QgsLayerPropertiesWidget( currentItem->layer(), parent->symbol(), mVectorLayer );
|
QgsLayerPropertiesWidget *layerProp = new QgsLayerPropertiesWidget( currentItem->layer(), parent->symbol(), mVectorLayer );
|
||||||
layerProp->setExpressionContext( mPresetExpressionContext.data() );
|
layerProp->setExpressionContext( mPresetExpressionContext.data() );
|
||||||
|
layerProp->setMapCanvas( mMapCanvas );
|
||||||
setWidget( layerProp );
|
setWidget( layerProp );
|
||||||
connect( layerProp, SIGNAL( changed() ), mDataDefineRestorer.data(), SLOT( restore() ) );
|
connect( layerProp, SIGNAL( changed() ), mDataDefineRestorer.data(), SLOT( restore() ) );
|
||||||
connect( layerProp, SIGNAL( changed() ), this, SLOT( updateLayerPreview() ) );
|
connect( layerProp, SIGNAL( changed() ), this, SLOT( updateLayerPreview() ) );
|
||||||
@ -413,6 +431,7 @@ void QgsSymbolV2SelectorDialog::layerChanged()
|
|||||||
// Now populate symbols of that type using the symbols list widget:
|
// Now populate symbols of that type using the symbols list widget:
|
||||||
QgsSymbolsListWidget *symbolsList = new QgsSymbolsListWidget( currentItem->symbol(), mStyle, mAdvancedMenu, this, mVectorLayer );
|
QgsSymbolsListWidget *symbolsList = new QgsSymbolsListWidget( currentItem->symbol(), mStyle, mAdvancedMenu, this, mVectorLayer );
|
||||||
symbolsList->setExpressionContext( mPresetExpressionContext.data() );
|
symbolsList->setExpressionContext( mPresetExpressionContext.data() );
|
||||||
|
symbolsList->setMapCanvas( mMapCanvas );
|
||||||
|
|
||||||
setWidget( symbolsList );
|
setWidget( symbolsList );
|
||||||
connect( symbolsList, SIGNAL( changed() ), this, SLOT( symbolChanged() ) );
|
connect( symbolsList, SIGNAL( changed() ), this, SLOT( symbolChanged() ) );
|
||||||
|
@ -39,6 +39,8 @@ class QgsLineSymbolV2;
|
|||||||
class QgsMarkerSymbolLayerV2;
|
class QgsMarkerSymbolLayerV2;
|
||||||
class QgsLineSymbolLayerV2;
|
class QgsLineSymbolLayerV2;
|
||||||
|
|
||||||
|
class QgsMapCanvas;
|
||||||
|
|
||||||
class DataDefinedRestorer: public QObject
|
class DataDefinedRestorer: public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -93,6 +95,13 @@ class GUI_EXPORT QgsSymbolV2SelectorDialog : public QDialog, private Ui::QgsSymb
|
|||||||
*/
|
*/
|
||||||
QgsExpressionContext* expressionContext() const { return mPresetExpressionContext.data(); }
|
QgsExpressionContext* expressionContext() const { return mPresetExpressionContext.data(); }
|
||||||
|
|
||||||
|
/** Sets the map canvas associated with the dialog. This allows the widget to retrieve the current
|
||||||
|
* map scale and other properties from the canvas.
|
||||||
|
* @param canvas map canvas
|
||||||
|
* @note added in QGIS 2.12
|
||||||
|
*/
|
||||||
|
void setMapCanvas( QgsMapCanvas* canvas );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//! Reimplements dialog keyPress event so we can ignore it
|
//! Reimplements dialog keyPress event so we can ignore it
|
||||||
void keyPressEvent( QKeyEvent * event ) override;
|
void keyPressEvent( QKeyEvent * event ) override;
|
||||||
@ -150,6 +159,8 @@ class GUI_EXPORT QgsSymbolV2SelectorDialog : public QDialog, private Ui::QgsSymb
|
|||||||
private:
|
private:
|
||||||
QScopedPointer<DataDefinedRestorer> mDataDefineRestorer;
|
QScopedPointer<DataDefinedRestorer> mDataDefineRestorer;
|
||||||
QScopedPointer< QgsExpressionContext > mPresetExpressionContext;
|
QScopedPointer< QgsExpressionContext > mPresetExpressionContext;
|
||||||
|
|
||||||
|
QgsMapCanvas* mMapCanvas;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -33,7 +33,7 @@ from PyQt4.QtCore import qDebug
|
|||||||
# DON'T RAISE THIS THRESHOLD!!!
|
# DON'T RAISE THIS THRESHOLD!!!
|
||||||
# (changes which lower this threshold are welcomed though!)
|
# (changes which lower this threshold are welcomed though!)
|
||||||
|
|
||||||
ACCEPTABLE_MISSING_DOCS = 4038
|
ACCEPTABLE_MISSING_DOCS = 4036
|
||||||
|
|
||||||
|
|
||||||
def elemIsDocumentableClass(elem):
|
def elemIsDocumentableClass(elem):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user