Hi Even
On 22/04/16 14:38, Even Rouault wrote:
Hi,
I'm trying to understand the abstraction of QgsEditorWidgetWrapper.
1) Semantics question
Am I right that there's no guarantee (and that's actually intended) that the
following pseudo-code is true :
setValue(v)
assert value() == v
It should in theory either return the same value or an invalid QVariant
which should be interpreted by the outside world as "no change". But I
admit that I doubt that all widgets effectively follow this rule.
For example in the QgsValueRelationWidgetWrapper(), value() returns the value
of the value column of the referenced layer, which corresponds to the key
provided to setValue().
And that's value() that is used when displaying the attribute table in table
view mode.
So this value() method is more a displayValue(), right ? And setValue() would
be setRawValue() / setSourceValue() ?
value() should return the real/raw value. Returning the display value is
wrong.
2) Implementation of QgsRelationReferenceWidgetWrapper.
The value() method in that case actually returns the foreign key set by
setValue(). Is that intended ? To have similar behaviour as
QgsValueRelationWidgetWrapper, one could rather expect value() to return the
evaluation of the display expression, no ?
If the current behaviour is intended, is there something in the abstraction of
QgsEditorWidgetWrapper that could return the evaluation of the display
expression for a QgsRelationReferenceWidgetWrapper ?
For this there is QgsEditorWidgetFactory::representString
https://qgis.org/api/classQgsEditorWidgetFactory.html#a6805c62cc859478b4d4715b3819ce24f
Matthias
Thanks
Even
_______________________________________________
Qgis-developer mailing list
[email protected]
List info: http://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: http://lists.osgeo.org/mailman/listinfo/qgis-developer