Skip to content

Commit a59b54e

Browse files
committedJun 9, 2014
re-add support for top labeled editor widgets in default forms (fixes #10431)
1 parent 4ff233e commit a59b54e

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed
 

‎src/app/qgsfieldsproperties.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,9 +407,11 @@ void QgsFieldsProperties::attributeTypeDialog()
407407
if ( index == -1 )
408408
return;
409409

410-
411410
QgsAttributeTypeDialog attributeTypeDialog( mLayer, index );
412411

412+
attributeTypeDialog.setFieldEditable( cfg.mEditable );
413+
attributeTypeDialog.setLabelOnTop( cfg.mLabelOnTop );
414+
413415
attributeTypeDialog.setWidgetV2Config( cfg.mEditorWidgetV2Config );
414416
attributeTypeDialog.setWidgetV2Type( cfg.mEditorWidgetV2Type );
415417

@@ -737,6 +739,9 @@ void QgsFieldsProperties::apply()
737739
int idx = mFieldsList->item( i, attrIdCol )->text().toInt();
738740
FieldConfig cfg = configForRow( i );
739741

742+
mLayer->setFieldEditable( i, cfg.mEditable );
743+
mLayer->setLabelOnTop( i, cfg.mLabelOnTop );
744+
740745
mLayer->setEditorWidgetV2( idx, cfg.mEditorWidgetV2Type );
741746
mLayer->setEditorWidgetV2Config( idx, cfg.mEditorWidgetV2Config );
742747

‎src/gui/qgsattributeform.cpp

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -349,10 +349,11 @@ void QgsAttributeForm::init()
349349
if ( !formWidget )
350350
{
351351
formWidget = new QWidget( this );
352-
QFormLayout* formLayout = new QFormLayout( formWidget );
353-
formWidget->setLayout( formLayout );
352+
QGridLayout* gridLayout = new QGridLayout( formWidget );
353+
formWidget->setLayout( gridLayout );
354354
layout()->addWidget( formWidget );
355355

356+
int row = 0;
356357
Q_FOREACH( const QgsField& field, mLayer->pendingFields().toList() )
357358
{
358359
int idx = mLayer->fieldNameIndex( field.name() );
@@ -361,25 +362,33 @@ void QgsAttributeForm::init()
361362

362363
const QString widgetType = mLayer->editorWidgetV2( idx );
363364
const QgsEditorWidgetConfig widgetConfig = mLayer->editorWidgetV2Config( idx );
365+
bool labelOnTop = mLayer->labelOnTop( idx );
364366

365367
// This will also create the widget
368+
QWidget *l = new QLabel( fieldName );
366369
QgsEditorWidgetWrapper* eww = QgsEditorWidgetRegistry::instance()->create( widgetType, mLayer, idx, widgetConfig, 0, this, mContext );
370+
QWidget *w = eww ? eww->widget() : new QLabel( QString( "<p style=\"color: red; font-style: italic;\">Failed to create widget with type '%1'</p>" ).arg( widgetType ) );
371+
367372
if ( eww )
368-
{
369373
mWidgets.append( eww );
370-
formLayout->addRow( new QLabel( fieldName ), eww->widget() );
374+
375+
if ( labelOnTop )
376+
{
377+
gridLayout->addWidget( l, row++, 0, 1, 2 );
378+
gridLayout->addWidget( w, row++, 0, 1, 2 );
371379
}
372380
else
373381
{
374-
formLayout->addRow( new QLabel( fieldName ), new QLabel( QString( "<p style=\"color: red; font-style: italic;\">Failed to create widget with type '%1'</p>" ).arg( widgetType ) ) );
382+
gridLayout->addWidget( l, row, 0 );
383+
gridLayout->addWidget( w, row++, 1 );
375384
}
376385
}
377386

378387
Q_FOREACH( const QgsRelation& rel, QgsProject::instance()->relationManager()->referencedRelations( mLayer ) )
379388
{
380389
QgsRelationWidgetWrapper* rww = new QgsRelationWidgetWrapper( mLayer, rel, 0, this );
381390
rww->setContext( mContext );
382-
formLayout->addRow( rww->widget() );
391+
gridLayout->addWidget( rww->widget(), row++, 0, 1, 2 );
383392
mWidgets.append( rww );
384393
}
385394
}
@@ -472,7 +481,7 @@ void QgsAttributeForm::initPython()
472481
}
473482
}
474483

475-
QWidget* QgsAttributeForm::createWidgetFromDef( const QgsAttributeEditorElement* widgetDef, QWidget* parent, QgsVectorLayer* vl, QgsAttributeEditorContext& context, QString& labelText, bool& labelOnTop )
484+
QWidget* QgsAttributeForm::createWidgetFromDef( const QgsAttributeEditorElement *widgetDef, QWidget *parent, QgsVectorLayer *vl, QgsAttributeEditorContext &context, QString &labelText, bool &labelOnTop )
476485
{
477486
QWidget *newWidget = 0;
478487

@@ -548,7 +557,7 @@ QWidget* QgsAttributeForm::createWidgetFromDef( const QgsAttributeEditorElement*
548557
bool labelOnTop;
549558
QWidget* editor = createWidgetFromDef( childDef, myContainer, vl, context, labelText, labelOnTop );
550559

551-
if ( labelText == QString::null )
560+
if ( labelText.isNull() )
552561
{
553562
gbLayout->addWidget( editor, index, 0, 1, 2 );
554563
}

0 commit comments

Comments
 (0)
Please sign in to comment.