void QgsVectorLayerProperties::apply() { labelingDialog->apply(); // // Set up sql subset query if applicable // grpSubset->setEnabled( true ); if ( txtSubsetSQL->toPlainText() != layer->subsetString() ) { // set the subset sql for the layer layer->setSubsetString( txtSubsetSQL->toPlainText() ); mMetadataFilled = false; } // set up the scale based layer visibility stuff.... layer->toggleScaleBasedVisibility( chkUseScaleDependentRendering->isChecked() ); layer->setMinimumScale( 1.0 / cbMinimumScale->scale() ); layer->setMaximumScale( 1.0 / cbMaximumScale->scale() ); // provider-specific options if ( layer->dataProvider() ) { if ( layer->dataProvider()->capabilities() & QgsVectorDataProvider::SetEncoding ) { layer->dataProvider()->setEncoding( cboProviderEncoding->currentText() ); } } // update the display field if ( htmlRadio->isChecked() ) { layer->setDisplayField( htmlMapTip->toPlainText() ); } if ( fieldComboRadio->isChecked() ) { layer->setDisplayField( displayFieldComboBox->currentText() ); } layer->setEditForm( leEditForm->text() ); layer->setEditFormInit( leEditFormInit->text() ); actionDialog->apply(); labelDialog->apply(); layer->enableLabels( labelCheckBox->isChecked() ); layer->setLayerName( displayName() ); for ( int i = 0; i < tblAttributes->rowCount(); i++ ) { int idx = tblAttributes->item( i, attrIdCol )->text().toInt(); QPushButton *pb = qobject_cast<QPushButton *>( tblAttributes->cellWidget( i, attrEditTypeCol ) ); if ( !pb ) continue; QgsVectorLayer::EditType editType = editTypeFromButtonText( pb->text() ); layer->setEditType( idx, editType ); switch ( editType ) { case QgsVectorLayer::ValueMap: if ( mValueMaps.contains( idx ) ) { QMap<QString, QVariant> &map = layer->valueMap( idx ); map.clear(); map = mValueMaps[idx]; } break; case QgsVectorLayer::EditRange: case QgsVectorLayer::SliderRange: case QgsVectorLayer::DialRange: if ( mRanges.contains( idx ) ) { layer->range( idx ) = mRanges[idx]; } break; case QgsVectorLayer::CheckBox: if ( mCheckedStates.contains( idx ) ) { layer->setCheckedState( idx, mCheckedStates[idx].first, mCheckedStates[idx].second ); } break; case QgsVectorLayer::ValueRelation: if ( mValueRelationData.contains( idx ) ) { layer->valueRelation( idx ) = mValueRelationData[idx]; } break; case QgsVectorLayer::LineEdit: case QgsVectorLayer::UniqueValues: case QgsVectorLayer::UniqueValuesEditable: case QgsVectorLayer::Classification: case QgsVectorLayer::FileName: case QgsVectorLayer::Enumeration: case QgsVectorLayer::Immutable: case QgsVectorLayer::Hidden: case QgsVectorLayer::TextEdit: case QgsVectorLayer::Calendar: case QgsVectorLayer::UuidGenerator: break; } } if ( layer->isUsingRendererV2() ) { QgsRendererV2PropertiesDialog* dlg = static_cast<QgsRendererV2PropertiesDialog*>( widgetStackRenderers->currentWidget() ); dlg->apply(); } else { QgsSingleSymbolDialog *sdialog = qobject_cast < QgsSingleSymbolDialog * >( widgetStackRenderers->currentWidget() ); QgsGraduatedSymbolDialog *gdialog = qobject_cast < QgsGraduatedSymbolDialog * >( widgetStackRenderers->currentWidget() ); QgsContinuousColorDialog *cdialog = qobject_cast < QgsContinuousColorDialog * >( widgetStackRenderers->currentWidget() ); QgsUniqueValueDialog* udialog = qobject_cast< QgsUniqueValueDialog * >( widgetStackRenderers->currentWidget() ); if ( sdialog ) { sdialog->apply(); } else if ( gdialog ) { gdialog->apply(); } else if ( cdialog ) { cdialog->apply(); } else if ( udialog ) { udialog->apply(); } layer->setTransparency( static_cast < unsigned int >( 255 - sliderTransparency->value() ) ); } //apply diagram settings diagramPropertiesDialog->apply(); //apply overlay dialogs for ( QList<QgsApplyDialog*>::iterator it = mOverlayDialogs.begin(); it != mOverlayDialogs.end(); ++it ) { ( *it )->apply(); } //layer title and abstract layer->setTitle( mLayerTitleLineEdit->text() ); layer->setAbstract( mLayerAbstractTextEdit->toPlainText() ); // update symbology emit refreshLegend( layer->id(), false ); //no need to delete the old one, maplayer will do it if needed layer->setCacheImage( 0 ); layer->triggerRepaint(); // notify the project we've made a change QgsProject::instance()->dirty( true ); }
void QgsVectorLayerProperties::apply() { if ( labelingDialog ) labelingDialog->apply(); // // Set up sql subset query if applicable // grpSubset->setEnabled( true ); if ( txtSubsetSQL->toPlainText() != layer->subsetString() ) { // set the subset sql for the layer layer->setSubsetString( txtSubsetSQL->toPlainText() ); mMetadataFilled = false; } // set up the scale based layer visibility stuff.... layer->toggleScaleBasedVisibility( chkUseScaleDependentRendering->isChecked() ); layer->setMinimumScale( 1.0 / cbMinimumScale->scale() ); layer->setMaximumScale( 1.0 / cbMaximumScale->scale() ); // provider-specific options if ( layer->dataProvider() ) { if ( layer->dataProvider()->capabilities() & QgsVectorDataProvider::SetEncoding ) { layer->dataProvider()->setEncoding( cboProviderEncoding->currentText() ); layer->updateFieldMap(); } } // update the display field if ( htmlRadio->isChecked() ) { layer->setDisplayField( htmlMapTip->toPlainText() ); } if ( fieldComboRadio->isChecked() ) { layer->setDisplayField( displayFieldComboBox->currentText() ); } actionDialog->apply(); if ( labelDialog ) labelDialog->apply(); layer->enableLabels( labelCheckBox->isChecked() ); layer->setLayerName( displayName() ); QSet<QString> excludeAttributesWMS, excludeAttributesWFS; // Apply fields settings mFieldsPropertiesDialog->apply(); if ( layer->isUsingRendererV2() ) { QgsRendererV2PropertiesDialog* dlg = static_cast<QgsRendererV2PropertiesDialog*>( widgetStackRenderers->currentWidget() ); dlg->apply(); } else { QgsSingleSymbolDialog *sdialog = qobject_cast < QgsSingleSymbolDialog * >( widgetStackRenderers->currentWidget() ); QgsGraduatedSymbolDialog *gdialog = qobject_cast < QgsGraduatedSymbolDialog * >( widgetStackRenderers->currentWidget() ); QgsContinuousColorDialog *cdialog = qobject_cast < QgsContinuousColorDialog * >( widgetStackRenderers->currentWidget() ); QgsUniqueValueDialog* udialog = qobject_cast< QgsUniqueValueDialog * >( widgetStackRenderers->currentWidget() ); if ( sdialog ) { sdialog->apply(); } else if ( gdialog ) { gdialog->apply(); } else if ( cdialog ) { cdialog->apply(); } else if ( udialog ) { udialog->apply(); } layer->setTransparency( static_cast < unsigned int >( 255 - sliderTransparency->value() ) ); } //apply diagram settings diagramPropertiesDialog->apply(); //apply overlay dialogs for ( QList<QgsApplyDialog*>::iterator it = mOverlayDialogs.begin(); it != mOverlayDialogs.end(); ++it ) { ( *it )->apply(); } //layer title and abstract layer->setTitle( mLayerTitleLineEdit->text() ); layer->setAbstract( mLayerAbstractTextEdit->toPlainText() ); // update symbology emit refreshLegend( layer->id(), QgsLegendItem::DontChange ); //no need to delete the old one, maplayer will do it if needed layer->setCacheImage( 0 ); layer->triggerRepaint(); // notify the project we've made a change QgsProject::instance()->dirty( true ); }