void QgsFieldCalculator::on_mOutputFieldTypeComboBox_activated( int index ) { mOutputFieldWidthSpinBox->setMinimum( mOutputFieldTypeComboBox->itemData( index, Qt::UserRole + 2 ).toInt() ); mOutputFieldWidthSpinBox->setMaximum( mOutputFieldTypeComboBox->itemData( index, Qt::UserRole + 3 ).toInt() ); mOutputFieldWidthSpinBox->setEnabled( mOutputFieldWidthSpinBox->minimum() < mOutputFieldWidthSpinBox->maximum() ); if ( mOutputFieldWidthSpinBox->value() < mOutputFieldWidthSpinBox->minimum() ) mOutputFieldWidthSpinBox->setValue( mOutputFieldWidthSpinBox->minimum() ); if ( mOutputFieldWidthSpinBox->value() > mOutputFieldWidthSpinBox->maximum() ) mOutputFieldWidthSpinBox->setValue( mOutputFieldWidthSpinBox->maximum() ); setPrecisionMinMax(); }
void QgsAddAttrDialog::on_mTypeBox_currentIndexChanged( int idx ) { mTypeName->setText( mTypeBox->itemData( idx, Qt::UserRole + 1 ).toString() ); mLength->setMinimum( mTypeBox->itemData( idx, Qt::UserRole + 2 ).toInt() ); mLength->setMaximum( mTypeBox->itemData( idx, Qt::UserRole + 3 ).toInt() ); mLength->setVisible( mLength->minimum() < mLength->maximum() ); mLengthLabel->setVisible( mLength->minimum() < mLength->maximum() ); if ( mLength->value() < mLength->minimum() ) mLength->setValue( mLength->minimum() ); if ( mLength->value() > mLength->maximum() ) mLength->setValue( mLength->maximum() ); setPrecisionMinMax(); }
void QgsAddAttrDialog::on_mLength_editingFinished() { setPrecisionMinMax(); }
QgsFieldCalculator::QgsFieldCalculator( QgsVectorLayer* vl, QWidget* parent ) : QDialog( parent ) , mVectorLayer( vl ) , mAttributeId( -1 ) { setupUi( this ); if ( !vl ) return; QgsExpressionContext expContext; expContext << QgsExpressionContextUtils::globalScope() << QgsExpressionContextUtils::projectScope() << QgsExpressionContextUtils::layerScope( mVectorLayer ); expContext.lastScope()->setVariable( "row_number", 1 ); expContext.setHighlightedVariables( QStringList() << "row_number" ); builder->setLayer( vl ); builder->loadFieldNames(); builder->setExpressionContext( expContext ); populateFields(); populateOutputFieldTypes(); connect( builder, SIGNAL( expressionParsed( bool ) ), this, SLOT( setOkButtonState() ) ); connect( mOutputFieldWidthSpinBox, SIGNAL( editingFinished() ), this, SLOT( setPrecisionMinMax() ) ); QgsDistanceArea myDa; myDa.setSourceCrs( vl->crs().srsid() ); myDa.setEllipsoidalMode( QgisApp::instance()->mapCanvas()->mapSettings().hasCrsTransformEnabled() ); myDa.setEllipsoid( QgsProject::instance()->readEntry( "Measure", "/Ellipsoid", GEO_NONE ) ); builder->setGeomCalculator( myDa ); //default values for field width and precision mOutputFieldWidthSpinBox->setValue( 10 ); mOutputFieldPrecisionSpinBox->setValue( 3 ); setPrecisionMinMax(); if ( vl->providerType() == "ogr" && vl->storageType() == "ESRI Shapefile" ) { mOutputFieldNameLineEdit->setMaxLength( 10 ); } if ( !( vl->dataProvider()->capabilities() & QgsVectorDataProvider::AddAttributes ) ) { mCreateVirtualFieldCheckbox->setChecked( true ); mCreateVirtualFieldCheckbox->setEnabled( false ); mOnlyVirtualFieldsInfoLabel->setVisible( true ); mInfoIcon->setVisible( true ); } else { mOnlyVirtualFieldsInfoLabel->setVisible( false ); mInfoIcon->setVisible( false ); } if ( !( vl->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeAttributeValues ) ) { mUpdateExistingGroupBox->setEnabled( false ); mCreateVirtualFieldCheckbox->setChecked( true ); mCreateVirtualFieldCheckbox->setEnabled( false ); } Q_ASSERT( mNewFieldGroupBox->isEnabled() || mUpdateExistingGroupBox->isEnabled() ); if ( mNewFieldGroupBox->isEnabled() ) { mNewFieldGroupBox->setChecked( true ); } else { mNewFieldGroupBox->setToolTip( tr( "Not available for layer" ) ); mUpdateExistingGroupBox->setChecked( true ); mUpdateExistingGroupBox->setCheckable( false ); } if ( mUpdateExistingGroupBox->isEnabled() ) { mUpdateExistingGroupBox->setChecked( !mNewFieldGroupBox->isEnabled() ); } else { mUpdateExistingGroupBox->setToolTip( tr( "Not available for layer" ) ); mNewFieldGroupBox->setChecked( true ); mNewFieldGroupBox->setCheckable( false ); } if (( mNewFieldGroupBox->isChecked() && mCreateVirtualFieldCheckbox->isChecked() ) || mVectorLayer->isEditable() ) { mEditModeAutoTurnOnLabel->setVisible( false ); mInfoIcon->setVisible( false ); } else { mInfoIcon->setVisible( true ); } bool hasselection = vl->selectedFeatureCount() > 0; mOnlyUpdateSelectedCheckBox->setChecked( hasselection ); mOnlyUpdateSelectedCheckBox->setEnabled( hasselection ); mOnlyUpdateSelectedCheckBox->setText( tr( "Only update %1 selected features" ).arg( vl->selectedFeatureCount() ) ); builder->loadRecent( "fieldcalc" ); mInfoIcon->setPixmap( style()->standardPixmap( QStyle::SP_MessageBoxInformation ) ); setOkButtonState(); QSettings settings; restoreGeometry( settings.value( "/Windows/QgsFieldCalculator/geometry" ).toByteArray() ); }