void QgsSymbolV2PropertiesDialog::layerChanged() { updateUi(); // get layer info QgsSymbolLayerV2* layer = currentLayer(); if ( layer == NULL ) return; // update layer type combo box int idx = cboLayerType->findData( layer->layerType() ); cboLayerType->setCurrentIndex( idx ); updateSymbolLayerWidget( layer ); updateLockButton(); }
void QgsSymbolSelectorWidget::layerChanged() { updateUi(); SymbolLayerItem *currentItem = static_cast<SymbolLayerItem *>( model->itemFromIndex( layersTree->currentIndex() ) ); if ( !currentItem ) return; if ( currentItem->isLayer() ) { SymbolLayerItem *parent = static_cast<SymbolLayerItem *>( currentItem->parent() ); mDataDefineRestorer.reset( new DataDefinedRestorer( parent->symbol(), currentItem->layer() ) ); QgsLayerPropertiesWidget *layerProp = new QgsLayerPropertiesWidget( currentItem->layer(), parent->symbol(), mVectorLayer ); layerProp->setDockMode( this->dockMode() ); layerProp->setContext( mContext ); setWidget( layerProp ); connect( layerProp, &QgsLayerPropertiesWidget::changed, mDataDefineRestorer.get(), &DataDefinedRestorer::restore ); connect( layerProp, &QgsLayerPropertiesWidget::changed, this, &QgsSymbolSelectorWidget::updateLayerPreview ); // This connection when layer type is changed connect( layerProp, &QgsLayerPropertiesWidget::changeLayer, this, &QgsSymbolSelectorWidget::changeLayer ); connectChildPanel( layerProp ); } else { mDataDefineRestorer.reset(); // then it must be a symbol currentItem->symbol()->setLayer( mVectorLayer ); // Now populate symbols of that type using the symbols list widget: QgsSymbolsListWidget *symbolsList = new QgsSymbolsListWidget( currentItem->symbol(), mStyle, mAdvancedMenu, this, mVectorLayer ); symbolsList->setContext( mContext ); setWidget( symbolsList ); connect( symbolsList, &QgsSymbolsListWidget::changed, this, &QgsSymbolSelectorWidget::symbolChanged ); } updateLockButton(); }