92 void displayWarning(
const QString &message );
100 void hideButtonBox();
108 void showButtonBox();
116 void disconnectButtonBox();
166 bool eventFilter( QObject *
object, QEvent *event )
override;
187 QString aggregateFilter()
const;
201 bool needsGeometry()
const;
282 void changeAttribute(
const QString &field,
const QVariant &value,
const QString &hintText = QString() );
289 void changeGeometry(
const QgsGeometry &geometry );
314 bool saveWithDetails( QString *error
SIP_OUT =
nullptr );
329 void refreshFeature();
340 void parentFormValueChanged(
const QString &attribute,
const QVariant &newValue );
343 void onAttributeChanged(
const QVariant &value,
const QVariantList &additionalFieldValues );
344 void onAttributeAdded(
int idx );
345 void onAttributeDeleted(
int idx );
346 void onRelatedFeaturesChanged();
347 void onUpdatedFields();
349 void preventFeatureRefresh();
350 void synchronizeState();
351 void layerSelectionChanged();
354 bool saveMultiEdits();
355 void resetMultiEdit(
bool promptToSave =
false );
356 void multiEditMessageClicked(
const QString &link );
358 void filterAndTriggered();
359 void filterOrTriggered();
360 void filterTriggered();
364 void searchSetSelection();
365 void searchAddToSelection();
366 void searchRemoveFromSelection();
367 void searchIntersectSelection();
378 bool fieldIsEditable(
int fieldIndex )
const;
382 void updateFieldDependencies();
388 void setMultiEditFeatureIdsRelations(
const QgsFeatureIds &fids );
392 QWidget *widget =
nullptr;
396 bool labelOnTop =
false;
397 bool labelAlignRight =
false;
398 bool showLabel =
true;
408 void createWrappers();
409 void afterWidgetInit();
411 void scanForEqualAttributes(
QgsFeatureIterator &fit, QSet<int> &mixedValueFields, QHash<int, QVariant> &fieldSharedValues )
const;
414 bool saveEdits( QString *error );
419 void updateValuesDependencies(
const int originIdx );
420 void updateValuesDependenciesDefaultValues(
const int originIdx );
421 void updateValuesDependenciesVirtualFields(
const int originIdx );
422 void updateValuesDependenciesParent();
423 void updateRelatedLayerFields();
425 void clearMultiEditMessages();
426 void pushSelectedFeaturesMessage();
429 QString createFilterExpression()
const;
434 void updateAllConstraints();
436 void updateContainersVisibility();
439 void updateEditableState();
440 bool currentFormValuesFeature(
QgsFeature &feature );
441 bool currentFormValidConstraints( QStringList &invalidFields, QStringList &descriptions )
const;
442 bool currentFormValidHardConstraints( QStringList &invalidFields, QStringList &descriptions )
const;
452 bool mOwnsMessageBar;
455 QList<QgsWidgetWrapper *> mWidgets;
457 std::unique_ptr<QgsExpressionContextScope> mExtraContextScope;
458 QDialogButtonBox *mButtonBox =
nullptr;
459 QWidget *mSearchButtonBox =
nullptr;
460 QList<QgsAttributeFormInterface *> mInterfaces;
461 QMultiMap<int, QgsAttributeFormEditorWidget *> mFormEditorWidgets;
462 QList<QgsAttributeFormWidget *> mFormWidgets;
463 QMap<const QgsVectorLayerJoinInfo *, QgsFeature> mJoinedFeatures;
464 QMap<QLabel *, QgsProperty> mLabelDataDefinedProperties;
465 QMap<QWidget *, QgsProperty> mEditableDataDefinedProperties;
466 bool mValuesInitialized =
false;
468 bool mIsSettingFeature =
false;
470 bool mValidConstraints =
true;
473 struct ContainerInformation
476 : tabWidget( tabWidget )
478 , expression( expression )
482 ContainerInformation( QWidget *widget,
const QgsExpression &expression )
484 , expression( expression )
488 ContainerInformation( QWidget *widget,
const QgsExpression &visibilityExpression,
bool collapsed,
const QgsExpression &collapsedExpression )
490 , expression( visibilityExpression )
492 , isCollapsed( collapsed )
493 , collapsedExpression( collapsedExpression )
498 QWidget *widget =
nullptr;
501 bool isCollapsed =
false;
507 void registerContainerInformation( ContainerInformation *info );
511 void reloadIcon(
const QString &file,
const QString &tooltip, QSvgWidget *sw );
514 QVector<ContainerInformation *> mContainerVisibilityCollapsedInformation;
515 QMap<QString, QVector<ContainerInformation *>> mContainerInformationDependency;
518 static int sFormCounter;
520 QString mPyFormVarName;
526 bool mPreventFeatureRefresh;
528 bool mIsSettingMultiEditFeatures;
531 bool mUnsavedMultiEditChanges;
533 QString mEditCommandMessage;
537 QMap<QWidget *, QSvgWidget *> mIconMap;
543 QMultiMap<int, QgsWidgetWrapper *> mDefaultValueDependencies;
549 QMultiMap<int, QgsWidgetWrapper *> mVirtualFieldsDependencies;
554 QSet<QgsEditorWidgetWrapper *> mRelatedLayerFieldsDependencies;
556 QSet<QgsEditorWidgetWrapper *> mParentDependencies;
559 QList<int> mAlreadyUpdatedFields;
561 bool mNeedsGeometry =
false;
563 friend class TestQgsDualView;
564 friend class TestQgsAttributeForm;
565 friend class TestQgsValueRelationWidgetWrapper;
Contains context information for attribute editor widgets.
Single scope for storing variables and functions for use within a QgsExpressionContext.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...