Skip to content

Commit 8bc4576

Browse files
committed
[FEATURE] Add metadata to QGIS projects
Allows for detailed metadata to be set in project properties, including abstracts, keywords, contact details, links, etc. Developed for Arpa Piemonte (Dipartimento Tematico Geologia e Dissesto) within ERIKUS project
1 parent f4ed93e commit 8bc4576

File tree

5 files changed

+85
-33
lines changed

5 files changed

+85
-33
lines changed

src/app/qgsprojectproperties.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
#include "qgstablewidgetitem.h"
5656
#include "qgslayertree.h"
5757
#include "qgsprintlayout.h"
58-
58+
#include "qgsmetadatawidget.h"
5959
#include "qgsmessagelog.h"
6060

6161
//qt includes
@@ -75,6 +75,10 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa
7575
, mEllipsoidIndex( 0 )
7676
{
7777
setupUi( this );
78+
79+
mMetadataWidget = new QgsMetadataWidget();
80+
mMetadataPage->layout()->addWidget( mMetadataWidget );
81+
7882
connect( pbnAddScale, &QToolButton::clicked, this, &QgsProjectProperties::pbnAddScale_clicked );
7983
connect( pbnRemoveScale, &QToolButton::clicked, this, &QgsProjectProperties::pbnRemoveScale_clicked );
8084
connect( pbnImportScales, &QToolButton::clicked, this, &QgsProjectProperties::pbnImportScales_clicked );
@@ -818,6 +822,10 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa
818822
mVariableEditor->reloadContext();
819823
mVariableEditor->setEditableScopeIndex( 1 );
820824

825+
// metadata
826+
mMetadataWidget->setMode( QgsMetadataWidget::ProjectMetadata );
827+
mMetadataWidget->setMetadata( &QgsProject::instance()->metadata() );
828+
821829
projectionSelectorInitialized();
822830
restoreOptionsBaseUi();
823831
restoreState();
@@ -866,6 +874,8 @@ void QgsProjectProperties::apply()
866874
QgsCoordinateTransformContext transformContext = mDatumTransformTableWidget->transformContext();
867875
QgsProject::instance()->setTransformContext( transformContext );
868876

877+
mMetadataWidget->acceptMetadata();
878+
869879
// Set the project title
870880
QgsProject::instance()->setTitle( title() );
871881
QgsProject::instance()->setPresetHomePath( QDir::fromNativeSeparators( mProjectHomeLineEdit->text() ) );

src/app/qgsprojectproperties.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class QgsRelationManagerDialog;
3030
class QgsStyle;
3131
class QgsExpressionContext;
3232
class QgsLayerTreeGroup;
33+
class QgsMetadataWidget;
3334

3435
/**
3536
* Dialog to set project level properties
@@ -173,6 +174,7 @@ class APP_EXPORT QgsProjectProperties : public QgsOptionsDialogBase, private Ui:
173174
QgsRelationManagerDialog *mRelationManagerDlg = nullptr;
174175
QgsMapCanvas *mMapCanvas = nullptr;
175176
QgsStyle *mStyle = nullptr;
177+
QgsMetadataWidget *mMetadataWidget = nullptr;
176178

177179
QgsCoordinateReferenceSystem mCrs;
178180

src/gui/qgsmetadatawidget.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,9 +161,9 @@ void QgsMetadataWidget::setMetadata( const QgsAbstractMetadataBase *metadata )
161161
if ( !metadata )
162162
return;
163163

164-
if ( dynamic_cast< const QgsLayerMetadata * >( metadata ) )
164+
if ( dynamic_cast< const QgsLayerMetadata * >( metadata ) && mMode != LayerMetadata )
165165
setMode( LayerMetadata );
166-
else if ( dynamic_cast< const QgsProjectMetadata * >( metadata ) )
166+
else if ( dynamic_cast< const QgsProjectMetadata * >( metadata ) && mMode != ProjectMetadata )
167167
setMode( ProjectMetadata );
168168

169169
mMetadata.reset( metadata->clone() );

src/ui/qgsmetadatawidget.ui

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<x>0</x>
88
<y>0</y>
99
<width>804</width>
10-
<height>697</height>
10+
<height>668</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">

src/ui/qgsprojectpropertiesbase.ui

Lines changed: 69 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,15 @@
104104
<normaloff>:/images/themes/default/propertyicons/general.svg</normaloff>:/images/themes/default/propertyicons/general.svg</iconset>
105105
</property>
106106
</item>
107+
<item>
108+
<property name="text">
109+
<string>Metadata</string>
110+
</property>
111+
<property name="icon">
112+
<iconset resource="../../images/images.qrc">
113+
<normaloff>:/images/themes/default/propertyicons/editmetadata.svg</normaloff>:/images/themes/default/propertyicons/editmetadata.svg</iconset>
114+
</property>
115+
</item>
107116
<item>
108117
<property name="text">
109118
<string>CRS</string>
@@ -268,8 +277,8 @@
268277
<rect>
269278
<x>0</x>
270279
<y>0</y>
271-
<width>565</width>
272-
<height>699</height>
280+
<width>685</width>
281+
<height>778</height>
273282
</rect>
274283
</property>
275284
<layout class="QVBoxLayout" name="verticalLayout_8">
@@ -810,6 +819,9 @@
810819
</item>
811820
</layout>
812821
</widget>
822+
<widget class="QWidget" name="mMetadataPage">
823+
<layout class="QVBoxLayout" name="verticalLayout_19"/>
824+
</widget>
813825
<widget class="QWidget" name="mProjOptsCRS">
814826
<layout class="QVBoxLayout" name="verticalLayout_5">
815827
<property name="leftMargin">
@@ -837,8 +849,8 @@
837849
<rect>
838850
<x>0</x>
839851
<y>0</y>
840-
<width>676</width>
841-
<height>764</height>
852+
<width>579</width>
853+
<height>170</height>
842854
</rect>
843855
</property>
844856
<layout class="QVBoxLayout" name="verticalLayout_7">
@@ -912,8 +924,8 @@
912924
<rect>
913925
<x>0</x>
914926
<y>0</y>
915-
<width>269</width>
916-
<height>605</height>
927+
<width>284</width>
928+
<height>573</height>
917929
</rect>
918930
</property>
919931
<layout class="QVBoxLayout" name="verticalLayout_12">
@@ -922,7 +934,7 @@
922934
<property name="title">
923935
<string>Default symbols</string>
924936
</property>
925-
<property name="syncGroup">
937+
<property name="syncGroup" stdset="0">
926938
<string notr="true">projstyles</string>
927939
</property>
928940
<layout class="QGridLayout" name="gridLayout_11">
@@ -1149,7 +1161,7 @@
11491161
<property name="title">
11501162
<string>Options</string>
11511163
</property>
1152-
<property name="syncGroup">
1164+
<property name="syncGroup" stdset="0">
11531165
<string notr="true">projstyles</string>
11541166
</property>
11551167
<layout class="QVBoxLayout" name="verticalLayout_18">
@@ -1163,7 +1175,7 @@
11631175
</widget>
11641176
</item>
11651177
<item>
1166-
<widget class="QgsOpacityWidget" name="mDefaultOpacityWidget">
1178+
<widget class="QgsOpacityWidget" name="mDefaultOpacityWidget" native="true">
11671179
<property name="focusPolicy">
11681180
<enum>Qt::StrongFocus</enum>
11691181
</property>
@@ -1350,8 +1362,8 @@
13501362
<rect>
13511363
<x>0</x>
13521364
<y>0</y>
1353-
<width>676</width>
1354-
<height>764</height>
1365+
<width>136</width>
1366+
<height>100</height>
13551367
</rect>
13561368
</property>
13571369
<layout class="QVBoxLayout" name="verticalLayout_10">
@@ -1506,8 +1518,8 @@
15061518
<rect>
15071519
<x>0</x>
15081520
<y>0</y>
1509-
<width>156</width>
1510-
<height>59</height>
1521+
<width>165</width>
1522+
<height>57</height>
15111523
</rect>
15121524
</property>
15131525
<layout class="QVBoxLayout" name="verticalLayout_17">
@@ -1568,8 +1580,8 @@
15681580
<rect>
15691581
<x>0</x>
15701582
<y>0</y>
1571-
<width>598</width>
1572-
<height>2363</height>
1583+
<width>624</width>
1584+
<height>2451</height>
15731585
</rect>
15741586
</property>
15751587
<layout class="QVBoxLayout" name="verticalLayout_13">
@@ -1590,13 +1602,13 @@
15901602
<property name="checked">
15911603
<bool>false</bool>
15921604
</property>
1593-
<property name="collapsed">
1605+
<property name="collapsed" stdset="0">
15941606
<bool>false</bool>
15951607
</property>
1596-
<property name="syncGroup">
1608+
<property name="syncGroup" stdset="0">
15971609
<string notr="true">projowsserver</string>
15981610
</property>
1599-
<property name="saveCollapsedState">
1611+
<property name="saveCollapsedState" stdset="0">
16001612
<bool>true</bool>
16011613
</property>
16021614
<layout class="QGridLayout" name="gridLayout_6">
@@ -1833,7 +1845,7 @@
18331845
<property name="title">
18341846
<string>WMS capabilities</string>
18351847
</property>
1836-
<property name="syncGroup">
1848+
<property name="syncGroup" stdset="0">
18371849
<string notr="true">projowsserver</string>
18381850
</property>
18391851
<layout class="QGridLayout" name="gridLayout_13">
@@ -1848,10 +1860,10 @@
18481860
<property name="checked">
18491861
<bool>false</bool>
18501862
</property>
1851-
<property name="collapsed">
1863+
<property name="collapsed" stdset="0">
18521864
<bool>false</bool>
18531865
</property>
1854-
<property name="saveCollapsedState">
1866+
<property name="saveCollapsedState" stdset="0">
18551867
<bool>true</bool>
18561868
</property>
18571869
<layout class="QGridLayout" name="gridLayout_4">
@@ -1957,10 +1969,10 @@
19571969
<property name="checked">
19581970
<bool>false</bool>
19591971
</property>
1960-
<property name="collapsed">
1972+
<property name="collapsed" stdset="0">
19611973
<bool>false</bool>
19621974
</property>
1963-
<property name="saveCollapsedState">
1975+
<property name="saveCollapsedState" stdset="0">
19641976
<bool>true</bool>
19651977
</property>
19661978
<layout class="QGridLayout" name="gridLayout_10">
@@ -2022,10 +2034,10 @@
20222034
<property name="checked">
20232035
<bool>false</bool>
20242036
</property>
2025-
<property name="collapsed">
2037+
<property name="collapsed" stdset="0">
20262038
<bool>false</bool>
20272039
</property>
2028-
<property name="saveCollapsedState">
2040+
<property name="saveCollapsedState" stdset="0">
20292041
<bool>true</bool>
20302042
</property>
20312043
<layout class="QGridLayout" name="gridLayout">
@@ -2087,10 +2099,10 @@
20872099
<property name="checked">
20882100
<bool>false</bool>
20892101
</property>
2090-
<property name="collapsed">
2102+
<property name="collapsed" stdset="0">
20912103
<bool>false</bool>
20922104
</property>
2093-
<property name="saveCollapsedState">
2105+
<property name="saveCollapsedState" stdset="0">
20942106
<bool>true</bool>
20952107
</property>
20962108
<layout class="QGridLayout" name="gridLayout_5">
@@ -2418,7 +2430,7 @@
24182430
<property name="title">
24192431
<string>WFS capabilities (also influences DXF export)</string>
24202432
</property>
2421-
<property name="syncGroup">
2433+
<property name="syncGroup" stdset="0">
24222434
<string notr="true">projowsserver</string>
24232435
</property>
24242436
<layout class="QGridLayout" name="gridLayout_8">
@@ -2504,7 +2516,7 @@
25042516
<property name="title">
25052517
<string>WCS capabilities</string>
25062518
</property>
2507-
<property name="syncGroup">
2519+
<property name="syncGroup" stdset="0">
25082520
<string notr="true">projowsserver</string>
25092521
</property>
25102522
<layout class="QGridLayout" name="gridLayout_9">
@@ -2869,6 +2881,34 @@
28692881
</tabstops>
28702882
<resources>
28712883
<include location="../../images/images.qrc"/>
2884+
<include location="../../images/images.qrc"/>
2885+
<include location="../../images/images.qrc"/>
2886+
<include location="../../images/images.qrc"/>
2887+
<include location="../../images/images.qrc"/>
2888+
<include location="../../images/images.qrc"/>
2889+
<include location="../../images/images.qrc"/>
2890+
<include location="../../images/images.qrc"/>
2891+
<include location="../../images/images.qrc"/>
2892+
<include location="../../images/images.qrc"/>
2893+
<include location="../../images/images.qrc"/>
2894+
<include location="../../images/images.qrc"/>
2895+
<include location="../../images/images.qrc"/>
2896+
<include location="../../images/images.qrc"/>
2897+
<include location="../../images/images.qrc"/>
2898+
<include location="../../images/images.qrc"/>
2899+
<include location="../../images/images.qrc"/>
2900+
<include location="../../images/images.qrc"/>
2901+
<include location="../../images/images.qrc"/>
2902+
<include location="../../images/images.qrc"/>
2903+
<include location="../../images/images.qrc"/>
2904+
<include location="../../images/images.qrc"/>
2905+
<include location="../../images/images.qrc"/>
2906+
<include location="../../images/images.qrc"/>
2907+
<include location="../../images/images.qrc"/>
2908+
<include location="../../images/images.qrc"/>
2909+
<include location="../../images/images.qrc"/>
2910+
<include location="../../images/images.qrc"/>
2911+
<include location="../../images/images.qrc"/>
28722912
</resources>
28732913
<connections>
28742914
<connection>

0 commit comments

Comments
 (0)