void QgsAttributeTypeDialog::setEditorWidgetType( const QString &type ) { mWidgetTypeComboBox->setCurrentIndex( mWidgetTypeComboBox->findData( type ) ); if ( mEditorConfigWidgets.contains( type ) ) { stackedWidget->setCurrentWidget( mEditorConfigWidgets[type] ); } else { QgsEditorConfigWidget *cfgWdg = QgsGui::editorWidgetRegistry()->createConfigWidget( type, mLayer, mFieldIdx, this ); if ( cfgWdg ) { cfgWdg->setConfig( mWidgetConfig ); stackedWidget->addWidget( cfgWdg ); stackedWidget->setCurrentWidget( cfgWdg ); mEditorConfigWidgets.insert( type, cfgWdg ); connect( cfgWdg, &QgsEditorConfigWidget::changed, this, &QgsAttributeTypeDialog::defaultExpressionChanged ); } else { QgsDebugMsg( "Oops, couldn't create editor widget config dialog..." ); } } //update default expression preview defaultExpressionChanged(); }
void QgsAttributeTypeDialog::setWidgetType( const QString& type ) { for ( int i = 0; i < selectionListWidget->count(); i++ ) { QListWidgetItem* item = selectionListWidget->item( i ); if ( item->data( Qt::UserRole ).toString() == type ) { selectionListWidget->setCurrentItem( item ); break; } } if ( mEditorConfigWidgets.contains( type ) ) { stackedWidget->setCurrentWidget( mEditorConfigWidgets[type] ); } else { QgsEditorConfigWidget* cfgWdg = QgsEditorWidgetRegistry::instance()->createConfigWidget( type, mLayer, mFieldIdx, this ); if ( cfgWdg ) { cfgWdg->setConfig( mWidgetConfig ); stackedWidget->addWidget( cfgWdg ); stackedWidget->setCurrentWidget( cfgWdg ); mEditorConfigWidgets.insert( type, cfgWdg ); connect( cfgWdg, SIGNAL( changed() ), this, SLOT( defaultExpressionChanged() ) ); } else { QgsDebugMsg( "Oops, couldn't create editor widget config dialog..." ); } } //update default expression preview defaultExpressionChanged(); }
QgsAttributeTypeDialog::QgsAttributeTypeDialog( QgsVectorLayer *vl, int fieldIdx ) : QDialog() , mLayer( vl ) , mFieldIdx( fieldIdx ) { setupUi( this ); setWindowTitle( tr( "Edit Widget Properties - %1 (%2)" ).arg( vl->fields().at( fieldIdx ).name(), vl->name() ) ); QMapIterator<QString, QgsEditorWidgetFactory*> it( QgsEditorWidgetRegistry::instance()->factories() ); while ( it.hasNext() ) { it.next(); QListWidgetItem* item = new QListWidgetItem( selectionListWidget ); item->setText( it.value()->name() ); item->setData( Qt::UserRole, it.key() ); if ( !it.value()->supportsField( vl, fieldIdx ) ) item->setFlags( item->flags() & ~Qt::ItemIsEnabled ); selectionListWidget->addItem( item ); } // Set required list width based on content + twice the border width selectionListWidget->setMinimumWidth( selectionListWidget->sizeHintForColumn( 0 ) + 2 ); selectionListWidget->setMaximumWidth( selectionListWidget->sizeHintForColumn( 0 ) + 2 ); if ( vl->fields().fieldOrigin( fieldIdx ) == QgsFields::OriginJoin || vl->fields().fieldOrigin( fieldIdx ) == QgsFields::OriginExpression ) { isFieldEditableCheckBox->setEnabled( false ); } connect( mExpressionWidget, SIGNAL( expressionChanged( QString ) ), this, SLOT( defaultExpressionChanged() ) ); QSettings settings; restoreGeometry( settings.value( "/Windows/QgsAttributeTypeDialog/geometry" ).toByteArray() ); constraintExpressionWidget->setLayer( vl ); }