void QgsGraduatedSymbolRendererWidget::changeRangeSymbol( int rangeIdx ) { const QgsRendererRange &range = mRenderer->ranges()[rangeIdx]; std::unique_ptr< QgsSymbol > newSymbol( range.symbol()->clone() ); QgsPanelWidget *panel = QgsPanelWidget::findParentPanel( this ); if ( panel && panel->dockMode() ) { // bit tricky here - the widget doesn't take ownership of the symbol. So we need it to last for the duration of the // panel's existence. Accordingly, just kinda give it ownership here, and clean up in cleanUpSymbolSelector QgsSymbolSelectorWidget *dlg = new QgsSymbolSelectorWidget( newSymbol.release(), mStyle, mLayer, panel ); dlg->setContext( mContext ); dlg->setPanelTitle( range.label() ); connect( dlg, &QgsPanelWidget::widgetChanged, this, &QgsGraduatedSymbolRendererWidget::updateSymbolsFromWidget ); connect( dlg, &QgsPanelWidget::panelAccepted, this, &QgsGraduatedSymbolRendererWidget::cleanUpSymbolSelector ); openPanel( dlg ); } else { QgsSymbolSelectorDialog dlg( newSymbol.get(), mStyle, mLayer, panel ); dlg.setContext( mContext ); if ( !dlg.exec() || !newSymbol ) { return; } mGraduatedSymbol = std::move( newSymbol ); applyChangeToSymbol(); } }
void QgsGraduatedSymbolRendererWidget::changeGraduatedSymbol() { QgsPanelWidget *panel = QgsPanelWidget::findParentPanel( this ); std::unique_ptr< QgsSymbol > newSymbol( mGraduatedSymbol->clone() ); if ( panel && panel->dockMode() ) { QgsSymbolSelectorWidget *dlg = new QgsSymbolSelectorWidget( newSymbol.release(), mStyle, mLayer, panel ); dlg->setContext( mContext ); connect( dlg, &QgsPanelWidget::widgetChanged, this, &QgsGraduatedSymbolRendererWidget::updateSymbolsFromWidget ); connect( dlg, &QgsPanelWidget::panelAccepted, this, &QgsGraduatedSymbolRendererWidget::cleanUpSymbolSelector ); connect( dlg, &QgsPanelWidget::panelAccepted, this, &QgsGraduatedSymbolRendererWidget::updateGraduatedSymbolIcon ); panel->openPanel( dlg ); } else { QgsSymbolSelectorDialog dlg( newSymbol.get(), mStyle, mLayer, panel ); if ( !dlg.exec() || !newSymbol ) { return; } mGraduatedSymbol = std::move( newSymbol ); updateGraduatedSymbolIcon(); applyChangeToSymbol(); } }
void QgsComposerArrowWidget::mLineStyleButton_clicked() { if ( !mArrow ) { return; } // use the atlas coverage layer, if any QgsVectorLayer *coverageLayer = atlasCoverageLayer(); QgsLineSymbol *newSymbol = mArrow->lineSymbol()->clone(); QgsExpressionContext context = mArrow->createExpressionContext(); QgsSymbolSelectorWidget *d = new QgsSymbolSelectorWidget( newSymbol, QgsStyle::defaultStyle(), coverageLayer, nullptr ); QgsSymbolWidgetContext symbolContext; symbolContext.setExpressionContext( &context ); d->setContext( symbolContext ); connect( d, &QgsPanelWidget::widgetChanged, this, &QgsComposerArrowWidget::updateLineStyleFromWidget ); connect( d, &QgsPanelWidget::panelAccepted, this, &QgsComposerArrowWidget::cleanUpLineStyleSelector ); openPanel( d ); mArrow->beginCommand( tr( "Arrow line style changed" ) ); }
void QgsComposerPolygonWidget::on_mPolygonStyleButton_clicked() { if ( !mComposerPolygon ) { return; } // use the atlas coverage layer, if any QgsVectorLayer* coverageLayer = atlasCoverageLayer(); QgsFillSymbol* newSymbol = mComposerPolygon->polygonStyleSymbol()->clone(); QgsExpressionContext context = mComposerPolygon->createExpressionContext(); QgsSymbolSelectorWidget* d = new QgsSymbolSelectorWidget( newSymbol, QgsStyle::defaultStyle(), coverageLayer, nullptr ); QgsSymbolWidgetContext symbolContext; symbolContext.setExpressionContext( &context ); d->setContext( symbolContext ); connect( d, SIGNAL( widgetChanged() ), this, SLOT( updateStyleFromWidget() ) ); connect( d, SIGNAL( panelAccepted( QgsPanelWidget* ) ), this, SLOT( cleanUpStyleSelector( QgsPanelWidget* ) ) ); openPanel( d ); mComposerPolygon->beginCommand( tr( "Polygon style changed" ) ); }
void QgsComposerMapGridWidget::on_mGridMarkerStyleButton_clicked() { if ( !mComposerMapGrid || !mComposerMap ) { return; } // use the atlas coverage layer, if any QgsVectorLayer* coverageLayer = atlasCoverageLayer(); QgsMarkerSymbol* newSymbol = static_cast<QgsMarkerSymbol*>( mComposerMapGrid->markerSymbol()->clone() ); QgsExpressionContext context = mComposerMap->createExpressionContext(); QgsSymbolSelectorWidget* d = new QgsSymbolSelectorWidget( newSymbol, QgsStyle::defaultStyle(), coverageLayer, nullptr ); QgsSymbolWidgetContext symbolContext; symbolContext.setExpressionContext( &context ); d->setContext( symbolContext ); connect( d, SIGNAL( widgetChanged() ), this, SLOT( updateGridMarkerStyleFromWidget() ) ); connect( d, SIGNAL( panelAccepted( QgsPanelWidget* ) ), this, SLOT( cleanUpGridMarkerStyleSelector( QgsPanelWidget* ) ) ); openPanel( d ); mComposerMap->beginCommand( tr( "Grid markers style changed" ) ); }
void QgsPointDisplacementRendererWidget::on_mCenterSymbolPushButton_clicked() { if ( !mRenderer || !mRenderer->centerSymbol() ) { return; } QgsMarkerSymbol* markerSymbol = mRenderer->centerSymbol()->clone(); QgsSymbolSelectorWidget* dlg = new QgsSymbolSelectorWidget( markerSymbol, QgsStyle::defaultStyle(), mLayer, this ); dlg->setPanelTitle( tr( "Center symbol" ) ); QgsSymbolWidgetContext context = mContext; QgsExpressionContextScope scope; scope.addVariable( QgsExpressionContextScope::StaticVariable( QgsExpressionContext::EXPR_CLUSTER_COLOR, "", true ) ); scope.addVariable( QgsExpressionContextScope::StaticVariable( QgsExpressionContext::EXPR_CLUSTER_SIZE, 0, true ) ); QList< QgsExpressionContextScope > scopes = context.additionalExpressionContextScopes(); scopes << scope; context.setAdditionalExpressionContextScopes( scopes ); dlg->setContext( context ); connect( dlg, SIGNAL( widgetChanged() ), this, SLOT( updateCenterSymbolFromWidget() ) ); connect( dlg, SIGNAL( panelAccepted( QgsPanelWidget* ) ), this, SLOT( cleanUpSymbolSelector( QgsPanelWidget* ) ) ); openPanel( dlg ); }