void QgsVectorLayerProperties::editingToggled() { if ( !layer->isEditable() ) loadRows(); updateButtons(); }
void QgsVectorLayerProperties::on_mButtonAddJoin_clicked() { QgsAddJoinDialog d( layer ); if ( d.exec() == QDialog::Accepted ) { QgsVectorJoinInfo info; info.targetField = d.targetField(); info.joinLayerId = d.joinedLayerId(); info.joinField = d.joinField(); info.memoryCache = d.cacheInMemory(); if ( layer ) { //create attribute index if possible if ( d.createAttributeIndex() ) { QgsVectorLayer* joinLayer = qobject_cast<QgsVectorLayer*>( QgsMapLayerRegistry::instance()->mapLayer( info.joinLayerId ) ); if ( joinLayer ) { joinLayer->dataProvider()->createAttributeIndex( info.joinField ); } } layer->addJoin( info ); loadRows(); //update attribute tab addJoinToTreeWidget( info ); pbnQueryBuilder->setEnabled( layer && layer->dataProvider() && layer->dataProvider()->supportsSubsetString() && !layer->isEditable() && layer->vectorJoins().size() < 1 ); } } }
void QgsVectorLayerProperties::on_mButtonRemoveJoin_clicked() { QTreeWidgetItem* currentJoinItem = mJoinTreeWidget->currentItem(); if ( !layer || !currentJoinItem ) { return; } layer->removeJoin( currentJoinItem->data( 0, Qt::UserRole ).toString() ); loadRows(); mJoinTreeWidget->takeTopLevelItem( mJoinTreeWidget->indexOfTopLevelItem( currentJoinItem ) ); pbnQueryBuilder->setEnabled( layer && layer->dataProvider() && layer->dataProvider()->supportsSubsetString() && !layer->isEditable() && layer->vectorJoins().size() < 1 ); }
//! @note in raster props, this method is called sync() void QgsVectorLayerProperties::reset( void ) { QObject::disconnect( tblAttributes, SIGNAL( cellChanged( int, int ) ), this, SLOT( on_tblAttributes_cellChanged( int, int ) ) ); // populate the general information txtDisplayName->setText( layer->name() ); pbnQueryBuilder->setWhatsThis( tr( "This button opens the query " "builder and allows you to create a subset of features to display on " "the map canvas rather than displaying all features in the layer" ) ); txtSubsetSQL->setWhatsThis( tr( "The query used to limit the features in the " "layer is shown here. To enter or modify the query, click on the Query Builder button" ) ); //see if we are dealing with a pg layer here grpSubset->setEnabled( true ); txtSubsetSQL->setText( layer->subsetString() ); // if the user is allowed to type an adhoc query, the app will crash if the query // is bad. For this reason, the sql box is disabled and the query must be built // using the query builder, either by typing it in by hand or using the buttons, etc // on the builder. If the ability to enter a query directly into the box is required, // a mechanism to check it must be implemented. txtSubsetSQL->setEnabled( false ); pbnQueryBuilder->setEnabled( layer && layer->dataProvider() && layer->dataProvider()->supportsSubsetString() && !layer->isEditable() && layer->vectorJoins().size() < 1 ); if ( layer->isEditable() ) { pbnQueryBuilder->setToolTip( tr( "Stop editing mode to enable this." ) ); } //get field list for display field combo const QgsFieldMap& myFields = layer->pendingFields(); for ( QgsFieldMap::const_iterator it = myFields.begin(); it != myFields.end(); ++it ) { displayFieldComboBox->addItem( it->name() ); fieldComboBox->addItem( it->name() ); } setDisplayField( layer-> displayField() ); // set up the scale based layer visibility stuff.... chkUseScaleDependentRendering->setChecked( layer->hasScaleBasedVisibility() ); bool projectScales = QgsProject::instance()->readBoolEntry( "Scales", "/useProjectScales" ); if ( projectScales ) { QStringList scalesList = QgsProject::instance()->readListEntry( "Scales", "/ScalesList" ); cbMinimumScale->updateScales( scalesList ); cbMaximumScale->updateScales( scalesList ); } cbMinimumScale->setScale( 1.0 / layer->minimumScale() ); cbMaximumScale->setScale( 1.0 / layer->maximumScale() ); // symbology initialization if ( legendtypecombobox->count() == 0 ) { legendtypecombobox->addItem( tr( "Single Symbol" ) ); if ( myFields.size() > 0 ) { legendtypecombobox->addItem( tr( "Graduated Symbol" ) ); legendtypecombobox->addItem( tr( "Continuous Color" ) ); legendtypecombobox->addItem( tr( "Unique Value" ) ); } } // load appropriate symbology page (V1 or V2) updateSymbologyPage(); // reset fields in label dialog layer->label()->setFields( layer->pendingFields() ); actionDialog->init(); if ( layer->hasGeometryType() ) { labelDialog->init(); } labelCheckBox->setChecked( layer->hasLabelsEnabled() ); labelOptionsFrame->setEnabled( layer->hasLabelsEnabled() ); //set the transparency slider sliderTransparency->setValue( 255 - layer->getTransparency() ); //update the transparency percentage label sliderTransparency_valueChanged( 255 - layer->getTransparency() ); loadRows(); QObject::connect( tblAttributes, SIGNAL( cellChanged( int, int ) ), this, SLOT( on_tblAttributes_cellChanged( int, int ) ) ); QObject::connect( labelCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( enableLabelOptions( bool ) ) ); } // reset()
//! @note in raster props, this method is called sync() void QgsVectorLayerProperties::reset( void ) { // populate the general information txtDisplayName->setText( layer->name() ); pbnQueryBuilder->setWhatsThis( tr( "This button opens the PostgreSQL query " "builder and allows you to create a subset of features to display on " "the map canvas rather than displaying all features in the layer" ) ); txtSubsetSQL->setWhatsThis( tr( "The query used to limit the features in the " "layer is shown here. This is currently only supported for PostgreSQL " "layers. To enter or modify the query, click on the Query Builder button" ) ); //see if we are dealing with a pg layer here if ( layer->providerType() == "postgres" ) { grpSubset->setEnabled( true ); txtSubsetSQL->setText( layer->subsetString() ); // if the user is allowed to type an adhoc query, the app will crash if the query // is bad. For this reason, the sql box is disabled and the query must be built // using the query builder, either by typing it in by hand or using the buttons, etc // on the builder. If the ability to enter a query directly into the box is required, // a mechanism to check it must be implemented. txtSubsetSQL->setEnabled( false ); pbnQueryBuilder->setEnabled( true ); } else { grpSubset->setEnabled( false ); } //get field list for display field combo const QgsFieldMap& myFields = layer->pendingFields(); for ( QgsFieldMap::const_iterator it = myFields.begin(); it != myFields.end(); ++it ) { displayFieldComboBox->addItem( it->name() ); } displayFieldComboBox->setCurrentIndex( displayFieldComboBox->findText( layer->displayField() ) ); // set up the scale based layer visibility stuff.... chkUseScaleDependentRendering->setChecked( layer->hasScaleBasedVisibility() ); spinMinimumScale->setValue(( int )layer->minimumScale() ); spinMaximumScale->setValue(( int )layer->maximumScale() ); // symbology initialization if ( legendtypecombobox->count() == 0 ) { legendtypecombobox->addItem( tr( "Single Symbol" ) ); if ( myFields.size() > 0 ) { legendtypecombobox->addItem( tr( "Graduated Symbol" ) ); legendtypecombobox->addItem( tr( "Continuous Color" ) ); legendtypecombobox->addItem( tr( "Unique Value" ) ); } } //find out the type of renderer in the vectorlayer, create a dialog with these settings and add it to the form delete mRendererDialog; mRendererDialog = 0; QString rtype = layer->renderer()->name(); if ( rtype == "Single Symbol" ) { mRendererDialog = new QgsSingleSymbolDialog( layer ); legendtypecombobox->setCurrentIndex( 0 ); } else if ( rtype == "Graduated Symbol" ) { mRendererDialog = new QgsGraduatedSymbolDialog( layer ); legendtypecombobox->setCurrentIndex( 1 ); } else if ( rtype == "Continuous Color" ) { mRendererDialog = new QgsContinuousColorDialog( layer ); legendtypecombobox->setCurrentIndex( 2 ); } else if ( rtype == "Unique Value" ) { mRendererDialog = new QgsUniqueValueDialog( layer ); legendtypecombobox->setCurrentIndex( 3 ); } if ( mRendererDialog ) { widgetStackRenderers->addWidget( mRendererDialog ); widgetStackRenderers->setCurrentWidget( mRendererDialog ); } QObject::connect( legendtypecombobox, SIGNAL( activated( const QString & ) ), this, SLOT( alterLayerDialog( const QString & ) ) ); // reset fields in label dialog layer->label()->setFields( layer->pendingFields() ); //set the metadata contents QString myStyle = QgsApplication::reportStyleSheet(); teMetadata->clear(); teMetadata->document()->setDefaultStyleSheet( myStyle ); teMetadata->setHtml( metadata() ); actionDialog->init(); labelDialog->init(); labelCheckBox->setChecked( layer->hasLabelsEnabled() ); labelOptionsFrame->setEnabled ( layer->hasLabelsEnabled() ); //set the transparency slider sliderTransparency->setValue( 255 - layer->getTransparency() ); //update the transparency percentage label sliderTransparency_valueChanged( 255 - layer->getTransparency() ); loadRows(); } // reset()