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, SIGNAL( changed() ), mDataDefineRestorer.data(), SLOT( restore() ) ); connect( layerProp, SIGNAL( changed() ), this, SLOT( updateLayerPreview() ) ); // This connection when layer type is changed connect( layerProp, SIGNAL( changeLayer( QgsSymbolLayer* ) ), this, SLOT( changeLayer( QgsSymbolLayer* ) ) ); connectChildPanel( layerProp ); }
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(); }
Q_FOREACH ( QgsPanelWidget* widget, panels ) { connectChildPanel( widget ); }