95 void displayWarning(
const QString &message );
103 void hideButtonBox();
111 void showButtonBox();
119 void disconnectButtonBox();
171 bool eventFilter( QObject *
object, QEvent *event )
override;
195 QString aggregateFilter()
const;
209 bool needsGeometry()
const;
295 void changeAttribute(
const QString &field,
const QVariant &value,
const QString &hintText = QString() );
302 void changeGeometry(
const QgsGeometry &geometry );
327 bool saveWithDetails( QString *error
SIP_OUT =
nullptr );
343 void refreshFeature();
354 void parentFormValueChanged(
const QString &attribute,
const QVariant &newValue );
357 void onAttributeChanged(
const QVariant &value,
const QVariantList &additionalFieldValues );
358 void onAttributeAdded(
int idx );
359 void onAttributeDeleted(
int idx );
360 void onRelatedFeaturesChanged();
361 void onUpdatedFields();
362 void onConstraintStatusChanged(
const QString &constraint,
364 void preventFeatureRefresh();
365 void synchronizeState();
366 void layerSelectionChanged();
369 bool saveMultiEdits();
370 void resetMultiEdit(
bool promptToSave =
false );
371 void multiEditMessageClicked(
const QString &link );
373 void filterAndTriggered();
374 void filterOrTriggered();
375 void filterTriggered();
379 void searchSetSelection();
380 void searchAddToSelection();
381 void searchRemoveFromSelection();
382 void searchIntersectSelection();
393 bool fieldIsEditable(
int fieldIndex )
const;
397 void updateFieldDependencies();
402 void setMultiEditFeatureIdsRelations(
const QgsFeatureIds &fids );
406 QWidget *widget =
nullptr;
410 bool labelOnTop =
false;
411 bool labelAlignRight =
false;
412 bool showLabel =
true;
422 void createWrappers();
423 void afterWidgetInit();
425 void scanForEqualAttributes(
QgsFeatureIterator &fit, QSet< int > &mixedValueFields, QHash< int, QVariant > &fieldSharedValues )
const;
428 bool saveEdits( QString *error );
433 void updateValuesDependencies(
const int originIdx );
434 void updateValuesDependenciesDefaultValues(
const int originIdx );
435 void updateValuesDependenciesVirtualFields(
const int originIdx );
436 void updateRelatedLayerFields();
438 void clearMultiEditMessages();
439 void pushSelectedFeaturesMessage();
442 QString createFilterExpression()
const;
447 void updateAllConstraints();
449 void updateContainersVisibility();
452 void updateEditableState();
453 bool currentFormValuesFeature(
QgsFeature &feature );
454 bool currentFormValidConstraints( QStringList &invalidFields, QStringList &descriptions )
const;
455 bool currentFormValidHardConstraints( QStringList &invalidFields, QStringList &descriptions )
const;
465 bool mOwnsMessageBar;
468 QList<QgsWidgetWrapper *> mWidgets;
470 std::unique_ptr<QgsExpressionContextScope> mExtraContextScope;
471 QDialogButtonBox *mButtonBox =
nullptr;
472 QWidget *mSearchButtonBox =
nullptr;
473 QList<QgsAttributeFormInterface *> mInterfaces;
474 QMultiMap< int, QgsAttributeFormEditorWidget * > mFormEditorWidgets;
475 QList< QgsAttributeFormWidget *> mFormWidgets;
476 QMap<const QgsVectorLayerJoinInfo *, QgsFeature> mJoinedFeatures;
477 QMap<QLabel *, QgsProperty> mLabelDataDefinedProperties;
478 QMap<QWidget *, QgsProperty> mEditableDataDefinedProperties;
479 bool mValuesInitialized =
false;
481 bool mIsSettingFeature =
false;
483 bool mValidConstraints =
true;
486 struct ContainerInformation
489 : tabWidget( tabWidget )
491 , expression( expression )
495 ContainerInformation( QWidget *widget,
const QgsExpression &expression )
497 , expression( expression )
501 ContainerInformation( QWidget *widget,
const QgsExpression &visibilityExpression,
bool collapsed,
const QgsExpression &collapsedExpression )
503 , expression( visibilityExpression )
505 , isCollapsed( collapsed )
506 , collapsedExpression( collapsedExpression )
511 QWidget *widget =
nullptr;
514 bool isCollapsed =
false;
520 void registerContainerInformation( ContainerInformation *info );
524 void reloadIcon(
const QString &file,
const QString &tooltip, QSvgWidget *sw );
527 QVector<ContainerInformation *> mContainerVisibilityCollapsedInformation;
528 QMap<QString, QVector<ContainerInformation *> > mContainerInformationDependency;
531 static int sFormCounter;
533 QString mPyFormVarName;
539 bool mPreventFeatureRefresh;
541 bool mIsSettingMultiEditFeatures;
544 bool mUnsavedMultiEditChanges;
546 QString mEditCommandMessage;
550 QMap<QWidget *, QSvgWidget *> mIconMap;
556 QMultiMap<int, QgsWidgetWrapper *> mDefaultValueDependencies;
562 QMultiMap<int, QgsWidgetWrapper *> mVirtualFieldsDependencies;
567 QSet<QgsEditorWidgetWrapper *> mRelatedLayerFieldsDependencies;
570 QList<int> mAlreadyUpdatedFields;
572 bool mNeedsGeometry =
false;
574 friend class TestQgsDualView;
575 friend class TestQgsAttributeForm;
This class 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...