|
25 | 25 | #include "qgsfeatureiterator.h"
|
26 | 26 | #include "qgsvectorlayer.h"
|
27 | 27 | #include "qgssettings.h"
|
| 28 | +#include "qgsproject.h" |
| 29 | +#include "qgsrelationmanager.h" |
| 30 | +#include "qgsrelation.h" |
28 | 31 |
|
29 | 32 | #include <QMenu>
|
30 | 33 | #include <QFile>
|
@@ -440,6 +443,26 @@ void QgsExpressionBuilderWidget::loadRecent( const QString &collection )
|
440 | 443 | }
|
441 | 444 | }
|
442 | 445 |
|
| 446 | +void QgsExpressionBuilderWidget::loadLayers() |
| 447 | +{ |
| 448 | + QMap<QString, QgsMapLayer *> layers = QgsProject::instance()->mapLayers(); |
| 449 | + QMap<QString, QgsMapLayer *>::const_iterator layerIt = layers.constBegin(); |
| 450 | + for ( ; layerIt != layers.constEnd(); ++layerIt ) |
| 451 | + { |
| 452 | + registerItemForAllGroups( QStringList() << tr( "Map Layers" ), layerIt.value()->name(), QStringLiteral( "'%1'" ).arg( layerIt.key() ), formatLayerHelp( layerIt.value() ) ); |
| 453 | + } |
| 454 | +} |
| 455 | + |
| 456 | +void QgsExpressionBuilderWidget::loadRelations() |
| 457 | +{ |
| 458 | + QMap<QString, QgsRelation> relations = QgsProject::instance()->relationManager()->relations(); |
| 459 | + QMap<QString, QgsRelation>::const_iterator relIt = relations.constBegin(); |
| 460 | + for ( ; relIt != relations.constEnd(); ++relIt ) |
| 461 | + { |
| 462 | + registerItemForAllGroups( QStringList() << tr( "Relations" ), relIt->name(), QStringLiteral( "'%1'" ).arg( relIt->id() ), formatRelationHelp( relIt.value() ) ); |
| 463 | + } |
| 464 | +} |
| 465 | + |
443 | 466 | void QgsExpressionBuilderWidget::updateFunctionTree()
|
444 | 467 | {
|
445 | 468 | mModel->clear();
|
@@ -495,6 +518,12 @@ void QgsExpressionBuilderWidget::updateFunctionTree()
|
495 | 518 | registerItemForAllGroups( func->groups(), func->name(), ' ' + name + ' ', func->helpText() );
|
496 | 519 | }
|
497 | 520 |
|
| 521 | + // load relation names |
| 522 | + loadRelations(); |
| 523 | + |
| 524 | + // load layer IDs |
| 525 | + loadLayers(); |
| 526 | + |
498 | 527 | loadExpressionContext();
|
499 | 528 | }
|
500 | 529 |
|
@@ -614,6 +643,20 @@ void QgsExpressionBuilderWidget::registerItemForAllGroups( const QStringList &gr
|
614 | 643 | }
|
615 | 644 | }
|
616 | 645 |
|
| 646 | +QString QgsExpressionBuilderWidget::formatRelationHelp( const QgsRelation &relation ) const |
| 647 | +{ |
| 648 | + QString text = QStringLiteral( "<p>%1</p>" ).arg( tr( "Inserts the relation ID for the relation named '%1'." ).arg( relation.name() ) ); |
| 649 | + text.append( QStringLiteral( "<p>%1</p>" ).arg( tr( "Current value: '%1'" ).arg( relation.id() ) ) ); |
| 650 | + return text; |
| 651 | +} |
| 652 | + |
| 653 | +QString QgsExpressionBuilderWidget::formatLayerHelp( const QgsMapLayer *layer ) const |
| 654 | +{ |
| 655 | + QString text = QStringLiteral( "<p>%1</p>" ).arg( tr( "Inserts the layer ID for the layer named '%1'." ).arg( layer->name() ) ); |
| 656 | + text.append( QStringLiteral( "<p>%1</p>" ).arg( tr( "Current value: '%1'" ).arg( layer->id() ) ) ); |
| 657 | + return text; |
| 658 | +} |
| 659 | + |
617 | 660 | void QgsExpressionBuilderWidget::showEvent( QShowEvent *e )
|
618 | 661 | {
|
619 | 662 | QWidget::showEvent( e );
|
|
0 commit comments