QgsSingleSymbolRendererWidget::QgsSingleSymbolRendererWidget( QgsVectorLayer* layer, QgsStyle* style, QgsFeatureRenderer* renderer ) : QgsRendererWidget( layer, style ) , mRenderer( nullptr ) { // try to recognize the previous renderer // (null renderer means "no previous renderer") if ( renderer ) { mRenderer = QgsSingleSymbolRenderer::convertFromRenderer( renderer ); } if ( !mRenderer ) { QgsSymbol* symbol = QgsSymbol::defaultSymbol( mLayer->geometryType() ); mRenderer = new QgsSingleSymbolRenderer( symbol ); } // load symbol from it mSingleSymbol = mRenderer->symbol()->clone(); // setup ui mSelector = new QgsSymbolSelectorWidget( mSingleSymbol, mStyle, mLayer, nullptr ); connect( mSelector, SIGNAL( symbolModified() ), this, SLOT( changeSingleSymbol() ) ); connect( mSelector, SIGNAL( showPanel( QgsPanelWidget* ) ), this, SLOT( openPanel( QgsPanelWidget* ) ) ); QVBoxLayout* layout = new QVBoxLayout( this ); layout->setContentsMargins( 0, 0, 0, 0 ); layout->addWidget( mSelector ); // advanced actions - data defined rendering QMenu* advMenu = mSelector->advancedMenu(); advMenu->addAction( tr( "Symbol levels..." ), this, SLOT( showSymbolLevels() ) ); }
QgsSingleSymbolRendererV2Widget::QgsSingleSymbolRendererV2Widget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer ) : QgsRendererV2Widget( layer, style ) , mRenderer( NULL ) { // try to recognize the previous renderer // (null renderer means "no previous renderer") if ( renderer ) { mRenderer = QgsSingleSymbolRendererV2::convertFromRenderer( renderer ); } if ( !mRenderer ) { QgsSymbolV2* symbol = QgsSymbolV2::defaultSymbol( mLayer->geometryType() ); mRenderer = new QgsSingleSymbolRendererV2( symbol ); } // load symbol from it mSingleSymbol = mRenderer->symbol()->clone(); // setup ui setupUi( this ); mHtmlLineEdit->setToolTip( QgsRendererV2Widget::htmlToolTip() ); mSelector = new QgsSymbolV2SelectorDialog( mSingleSymbol, mStyle, mLayer, NULL, true ); connect( mSelector, SIGNAL( symbolModified() ), this, SLOT( changeSingleSymbol() ) ); mVerticalLayout->addWidget( mSelector ); mHtmlLineEdit->setText( mRenderer->html() ); mWMSLegendSettingsGroupBox->setCollapsed( true ); // advanced actions - data defined rendering QMenu* advMenu = mSelector->advancedMenu(); advMenu->addAction( tr( "Symbol levels..." ), this, SLOT( showSymbolLevels() ) ); mDataDefinedMenus = new QgsRendererV2DataDefinedMenus( advMenu, mLayer, mRenderer->rotationField(), mRenderer->sizeScaleField(), mRenderer->scaleMethod() ); connect( mDataDefinedMenus, SIGNAL( rotationFieldChanged( QString ) ), this, SLOT( rotationFieldChanged( QString ) ) ); connect( mDataDefinedMenus, SIGNAL( sizeScaleFieldChanged( QString ) ), this, SLOT( sizeScaleFieldChanged( QString ) ) ); connect( mDataDefinedMenus, SIGNAL( scaleMethodChanged( QgsSymbolV2::ScaleMethod ) ), this, SLOT( scaleMethodChanged( QgsSymbolV2::ScaleMethod ) ) ); //add legend symbol icon to button if ( mRenderer->legendSymbol() ) { QIcon icon = QgsSymbolLayerV2Utils::symbolPreviewIcon( mRenderer->legendSymbol(), mLegendIconButton->iconSize() ); mLegendIconButton->setIcon( icon ); } }
QgsSingleSymbolRendererV2Widget::QgsSingleSymbolRendererV2Widget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer ) : QgsRendererV2Widget( layer, style ) { // try to recognize the previous renderer // (null renderer means "no previous renderer") if ( !renderer || renderer->type() != "singleSymbol" ) { // we're not going to use it - so let's delete the renderer delete renderer; // some default options QgsSymbolV2* symbol = QgsSymbolV2::defaultSymbol( mLayer->geometryType() ); mRenderer = new QgsSingleSymbolRendererV2( symbol ); } else { mRenderer = static_cast<QgsSingleSymbolRendererV2*>( renderer ); } // load symbol from it mSingleSymbol = mRenderer->symbol()->clone(); // setup ui mSelector = new QgsSymbolV2SelectorDialog( mSingleSymbol, mStyle, mLayer, NULL, true ); connect( mSelector, SIGNAL( symbolModified() ), this, SLOT( changeSingleSymbol() ) ); QVBoxLayout* layout = new QVBoxLayout; layout->addWidget( mSelector ); setLayout( layout ); // advanced actions - data defined rendering QMenu* advMenu = mSelector->advancedMenu(); advMenu->addAction( tr( "Symbol levels..." ), this, SLOT( showSymbolLevels() ) ); mDataDefinedMenus = new QgsRendererV2DataDefinedMenus( advMenu, mLayer->pendingFields(), mRenderer->rotationField(), mRenderer->sizeScaleField(), mRenderer->scaleMethod() ); connect( mDataDefinedMenus, SIGNAL( rotationFieldChanged( QString ) ), this, SLOT( rotationFieldChanged( QString ) ) ); connect( mDataDefinedMenus, SIGNAL( sizeScaleFieldChanged( QString ) ), this, SLOT( sizeScaleFieldChanged( QString ) ) ); connect( mDataDefinedMenus, SIGNAL( scaleMethodChanged( QgsSymbolV2::ScaleMethod ) ), this, SLOT( scaleMethodChanged( QgsSymbolV2::ScaleMethod ) ) ); }