|
1 |
| -// QMap<QgsPalLayerSettings::DataDefinedProperties, QgsDataDefined*> is implemented as a Python dictionary. |
2 |
| -%MappedType QMap<QgsPalLayerSettings::DataDefinedProperties, QgsDataDefined*> /DocType="dict-of-QgsPalLayerSettings.DataDefinedProperties-QgsDataDefined*"/ |
3 |
| -{ |
4 |
| -%TypeHeaderCode |
5 |
| -#include <qmap.h> |
6 |
| -#include <qgspallabeling.h> |
7 |
| -#include <qgsdatadefined.h> |
8 |
| -%End |
9 |
| -%ConvertFromTypeCode |
10 |
| - // Create the dictionary. |
11 |
| - PyObject *d = PyDict_New(); |
12 |
| - if (!d) |
13 |
| - return NULL; |
14 |
| - // Set the dictionary elements. |
15 |
| - QMap<QgsPalLayerSettings::DataDefinedProperties, QgsDataDefined*>::const_iterator i = sipCpp->constBegin(); |
16 |
| - while (i != sipCpp->constEnd()) |
17 |
| - { |
18 |
| - QgsDataDefined *t = i.value(); |
19 |
| - PyObject *kobj = sipConvertFromEnum(i.key(), sipType_QgsPalLayerSettings_DataDefinedProperties); |
20 |
| - PyObject *tobj = sipConvertFromType(t, sipType_QgsDataDefined, sipTransferObj); |
21 |
| - if (kobj == NULL || tobj == NULL || PyDict_SetItem(d, kobj, tobj) < 0) |
22 |
| - { |
23 |
| - Py_DECREF(d); |
24 |
| - if (kobj) |
25 |
| - { |
26 |
| - Py_DECREF(kobj); |
27 |
| - } |
28 |
| - if (tobj) |
29 |
| - { |
30 |
| - Py_DECREF(tobj); |
31 |
| - } |
32 |
| - else |
33 |
| - { |
34 |
| - delete t; |
35 |
| - } |
36 |
| - return NULL; |
37 |
| - } |
38 |
| - Py_DECREF(kobj); |
39 |
| - Py_DECREF(tobj); |
40 |
| - ++i; |
41 |
| - } |
42 |
| - return d; |
43 |
| -%End |
44 |
| -%ConvertToTypeCode |
45 |
| - PyObject *kobj, *tobj; |
46 |
| - SIP_SSIZE_T i = 0; |
47 |
| - // Check the type if that is all that is required. |
48 |
| - if (sipIsErr == NULL) |
49 |
| - { |
50 |
| - if (!PyDict_Check(sipPy)) |
51 |
| - return 0; |
52 |
| - while (PyDict_Next(sipPy, &i, &kobj, &tobj)) |
53 |
| - if (!sipCanConvertToType(tobj, sipType_QgsDataDefined, SIP_NOT_NONE)) |
54 |
| - return 0; |
55 |
| - return 1; |
56 |
| - } |
57 |
| - QMap<QgsPalLayerSettings::DataDefinedProperties, QgsDataDefined*> *qm = new QMap<QgsPalLayerSettings::DataDefinedProperties, QgsDataDefined*>; |
58 |
| - |
59 |
| - while (PyDict_Next(sipPy, &i, &kobj, &tobj)) |
60 |
| - { |
61 |
| - int state, k = SIPLong_AsLong(kobj); |
62 |
| - QgsDataDefined *t = reinterpret_cast<QgsDataDefined *>(sipConvertToType(tobj, sipType_QgsDataDefined, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); |
63 |
| - |
64 |
| - if (*sipIsErr) |
65 |
| - { |
66 |
| - sipReleaseType(t, sipType_QgsDataDefined, state); |
67 |
| - delete qm; |
68 |
| - return 0; |
69 |
| - } |
70 |
| - qm->insert(QgsPalLayerSettings::DataDefinedProperties(k), t); |
71 |
| - sipReleaseType(t, sipType_QgsDataDefined, state); |
72 |
| - } |
73 |
| - |
74 |
| - *sipCppPtr = qm; |
75 |
| - |
76 |
| - return sipGetState(sipTransferObj); |
77 |
| -%End |
78 |
| -}; |
79 |
| - |
80 |
| - |
81 | 1 | class QgsLabelPosition
|
82 | 2 | {
|
83 | 3 | %TypeHeaderCode
|
@@ -239,7 +159,7 @@ class QgsPalLayerSettings
|
239 | 159 | };
|
240 | 160 |
|
241 | 161 | // update mDataDefinedNames QMap in constructor when adding/deleting enum value
|
242 |
| - enum DataDefinedProperties |
| 162 | + enum Property |
243 | 163 | {
|
244 | 164 | // text style
|
245 | 165 | Size,
|
@@ -507,67 +427,24 @@ class QgsPalLayerSettings
|
507 | 427 | */
|
508 | 428 | QDomElement writeXml( QDomDocument& doc );
|
509 | 429 |
|
510 |
| - /** Get a data defined property pointer |
511 |
| - * @note helpful for Python access |
512 |
| - */ |
513 |
| - QgsDataDefined* dataDefinedProperty( QgsPalLayerSettings::DataDefinedProperties p ); |
514 |
| - |
515 |
| - /** Set a property as data defined |
516 |
| - * @note helpful for Python access |
517 |
| - */ |
518 |
| - void setDataDefinedProperty( QgsPalLayerSettings::DataDefinedProperties p, |
519 |
| - bool active, bool useExpr, const QString& expr, const QString& field ); |
520 |
| - |
521 |
| - /** Set a property to static instead data defined */ |
522 |
| - void removeDataDefinedProperty( QgsPalLayerSettings::DataDefinedProperties p ); |
523 |
| - |
524 |
| - /** Clear all data-defined properties |
525 |
| - * @note added in QGIS 2.12 |
526 |
| - */ |
527 |
| - void removeAllDataDefinedProperties(); |
528 |
| - |
529 |
| - /** Convert old property value to new one as delimited values |
530 |
| - * @note not available in python bindings; as temporary solution until refactoring of project settings |
531 |
| - */ |
532 |
| - QString updateDataDefinedString( const QString& value ); |
533 |
| - |
534 |
| - /** Get property value as separate values split into Qmap |
535 |
| - * @note not available in python bindings |
536 |
| - */ |
537 |
| - QMap<QString, QString> dataDefinedMap( QgsPalLayerSettings::DataDefinedProperties p ) const; |
538 |
| - |
539 |
| - /** Get data defined property value from expression string or attribute field name |
540 |
| - * @returns value inside QVariant |
541 |
| - * @note not available in python bindings |
542 |
| - */ |
543 |
| - //QVariant dataDefinedValue( QgsPalLayerSettings::DataDefinedProperties p, QgsFeature& f, const QgsFields& fields, |
544 |
| - // const QgsExpressionContext* context = 0 ) const; |
545 |
| - |
546 |
| - /** Get data defined property value from expression string or attribute field name |
547 |
| - * @returns true/false whether result is null or invalid |
548 |
| - * @note not available in python bindings |
549 |
| - */ |
550 |
| - //bool dataDefinedEvaluate( QgsPalLayerSettings::DataDefinedProperties p, QVariant& exprVal, const QgsExpressionContext* context = 0 ) const; |
551 |
| - |
552 |
| - /** Whether data definition is active |
553 |
| - */ |
554 |
| - bool dataDefinedIsActive( QgsPalLayerSettings::DataDefinedProperties p ) const; |
555 |
| - |
556 |
| - /** Whether data definition is set to use an expression |
| 430 | + /** Returns a reference to the label's property collection, used for data defined overrides. |
| 431 | + * @note added in QGIS 3.0 |
| 432 | + * @see setProperties() |
557 | 433 | */
|
558 |
| - bool dataDefinedUseExpression( QgsPalLayerSettings::DataDefinedProperties p ) const; |
| 434 | + QgsPropertyCollection& properties(); |
559 | 435 |
|
560 |
| - /** Map of current data defined properties |
561 |
| - * |
562 |
| - * Pointers to QgsDataDefined should never be null, the pointers are owned by this class |
| 436 | + /** Returns a reference to the label's property collection, used for data defined overrides. |
| 437 | + * @note added in QGIS 3.0 |
| 438 | + * @see setProperties() |
563 | 439 | */
|
564 |
| - QMap< QgsPalLayerSettings::DataDefinedProperties, QgsDataDefined* > dataDefinedProperties; |
| 440 | + //const QgsPropertyCollection& properties() const { return mProperties; } |
565 | 441 |
|
566 |
| - /** Map of data defined enum to names and old-style indecies |
567 |
| - * The QPair contains a new string for layer property key, and a reference to old-style numeric key (< QGIS 2.0) |
568 |
| - * @note not available in python bindings; |
| 442 | + /** Sets the label's property collection, used for data defined overrides. |
| 443 | + * @param collection property collection. Existing properties will be replaced. |
| 444 | + * @note added in QGIS 3.0 |
| 445 | + * @see properties() |
569 | 446 | */
|
570 |
| - // QMap<QgsPalLayerSettings::DataDefinedProperties, QPair<QString, int> > dataDefinedNames() const; |
| 447 | + void setProperties( const QgsPropertyCollection& collection ); |
571 | 448 |
|
572 | 449 | /** Returns the label text formatting settings, e.g., font settings, buffer settings, etc.
|
573 | 450 | * @see setFormat()
|
@@ -737,23 +614,23 @@ class QgsPalLabeling
|
737 | 614 | protected:
|
738 | 615 | // update temporary QgsPalLayerSettings with any data defined text style values
|
739 | 616 | void dataDefinedTextStyle( QgsPalLayerSettings& tmpLyr,
|
740 |
| - const QMap< QgsPalLayerSettings::DataDefinedProperties, QVariant >& ddValues ); |
| 617 | + const QMap< QgsPalLayerSettings::Property, QVariant >& ddValues ); |
741 | 618 |
|
742 | 619 | // update temporary QgsPalLayerSettings with any data defined text formatting values
|
743 | 620 | void dataDefinedTextFormatting( QgsPalLayerSettings& tmpLyr,
|
744 |
| - const QMap< QgsPalLayerSettings::DataDefinedProperties, QVariant >& ddValues ); |
| 621 | + const QMap< QgsPalLayerSettings::Property, QVariant >& ddValues ); |
745 | 622 |
|
746 | 623 | // update temporary QgsPalLayerSettings with any data defined text buffer values
|
747 | 624 | void dataDefinedTextBuffer( QgsPalLayerSettings& tmpLyr,
|
748 |
| - const QMap< QgsPalLayerSettings::DataDefinedProperties, QVariant >& ddValues ); |
| 625 | + const QMap< QgsPalLayerSettings::Property, QVariant >& ddValues ); |
749 | 626 |
|
750 | 627 | // update temporary QgsPalLayerSettings with any data defined shape background values
|
751 | 628 | void dataDefinedShapeBackground( QgsPalLayerSettings& tmpLyr,
|
752 |
| - const QMap< QgsPalLayerSettings::DataDefinedProperties, QVariant >& ddValues ); |
| 629 | + const QMap< QgsPalLayerSettings::Property, QVariant >& ddValues ); |
753 | 630 |
|
754 | 631 | // update temporary QgsPalLayerSettings with any data defined drop shadow values
|
755 | 632 | void dataDefinedDropShadow( QgsPalLayerSettings& tmpLyr,
|
756 |
| - const QMap< QgsPalLayerSettings::DataDefinedProperties, QVariant >& ddValues ); |
| 633 | + const QMap< QgsPalLayerSettings::Property, QVariant >& ddValues ); |
757 | 634 |
|
758 | 635 | void deleteTemporaryData();
|
759 | 636 |
|
|
0 commit comments