QGIS API Documentation 3.99.0-Master (d270888f95f)
Loading...
Searching...
No Matches
qgssettingstreenode.h
Go to the documentation of this file.
1/***************************************************************************
2 qgssettingstreenode.h
3 --------------------------------------
4 Date : December 2022
5 Copyright : (C) 2022 by Denis Rouzaud
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSSETTINGSTREENODE_H
17#define QGSSETTINGSTREENODE_H
18
19#include "qgis.h"
20#include "qgis_core.h"
21#include "qgis_sip.h"
22
23#include <QObject>
24#include <QString>
25
26using namespace Qt::StringLiterals;
27
31
47class CORE_EXPORT QgsSettingsTreeNode
48{
49
50#ifdef SIP_RUN
52 if ( dynamic_cast< QgsSettingsTreeNamedListNode * >( sipCpp ) )
53 sipType = sipType_QgsSettingsTreeNamedListNode;
54 else if ( dynamic_cast< QgsSettingsTreeNode * >( sipCpp ) )
55 sipType = sipType_QgsSettingsTreeNode;
56 else
57 sipType = NULL;
59#endif
60
61 Q_GADGET
62
63 public:
64
65 virtual ~QgsSettingsTreeNode();
66
71 static QgsSettingsTreeNode *createRootNode() SIP_SKIP;
72
78 QgsSettingsTreeNode *createChildNode( const QString &key ) SIP_THROW( QgsSettingsException ) SIP_KEEPREFERENCE;
79
85
86
89
98 void registerChildSetting( const QgsSettingsEntryBase *setting, const QString &key ) SIP_THROW( QgsSettingsException );
99
106 void unregisterChildSetting( const QgsSettingsEntryBase *setting, bool deleteSettingValues = false, const QStringList &parentsNamedItems = QStringList() );
107
109 void unregisterChildNode( QgsSettingsTreeNode *node );
110
112 QList<QgsSettingsTreeNode *> childrenNodes() const {return mChildrenNodes;}
113
115 QgsSettingsTreeNode *childNode( const QString &key ) const;
116
118 QList<const QgsSettingsEntryBase *> childrenSettings() const {return mChildrenSettings;}
119
121 const QgsSettingsEntryBase *childSetting( const QString &key ) const;
122
124 QgsSettingsTreeNode *parent() const {return mParent;}
125
127 QString key() const {return mKey;}
128
130 QString completeKey() const {return mCompleteKey;}
131
133 int namedNodesCount() const {return mNamedNodesCount;}
134
135#ifdef SIP_RUN
136 SIP_PYOBJECT __repr__();
137 % MethodCode
138 const QMetaEnum metaEnum = QMetaEnum::fromType<Qgis::SettingsTreeNodeType>();
139
140 QString str = u"<QgsSettingsTreeNode (%1): %2>"_s.arg( metaEnum.valueToKey( static_cast<int>( sipCpp->type() ) ), sipCpp->key() );
141 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
142 % End
143#endif
144
145 protected:
147 void registerChildNode( QgsSettingsTreeNode *node );
148
150
151 private:
152
159 QgsSettingsTreeNode() = default SIP_FORCE;
160
161 QgsSettingsTreeNode( const QgsSettingsTreeNode &other ) = default SIP_FORCE;
162
164 void init( QgsSettingsTreeNode *parent, const QString &key );
165
166 friend class QgsSettingsTree;
168
169 QgsSettingsTreeNode *childNodeAtKey( const QString &key );
170
171 QList<QgsSettingsTreeNode *> mChildrenNodes;
172 QList<const QgsSettingsEntryBase *> mChildrenSettings;
173 QgsSettingsTreeNode *mParent = nullptr;
174
175 QString mKey;
176 QString mCompleteKey;
177 int mNamedNodesCount = 0;
178};
179
180
181
196class CORE_EXPORT QgsSettingsTreeNamedListNode : public QgsSettingsTreeNode
197{
198 public:
199 ~QgsSettingsTreeNamedListNode() override;
200
206 QStringList items( const QStringList &parentsNamedItems = QStringList() ) const SIP_THROW( QgsSettingsException );
207
214 QStringList items( Qgis::SettingsOrigin origin, const QStringList &parentsNamedItems = QStringList() ) const SIP_THROW( QgsSettingsException );
215
216
223 void setSelectedItem( const QString &item, const QStringList &parentsNamedItems = QStringList() ) SIP_THROW( QgsSettingsException );
224
230 QString selectedItem( const QStringList &parentsNamedItems = QStringList() ) SIP_THROW( QgsSettingsException );
231
238 void deleteItem( const QString &item, const QStringList &parentsNamedItems = QStringList() ) SIP_THROW( QgsSettingsException );
239
246 void deleteAllItems( const QStringList &parentsNamedItems = QStringList() ) SIP_THROW( QgsSettingsException );
247
249 const QgsSettingsEntryString *selectedItemSetting() const {return mSelectedItemSetting.get();}
250
251 protected:
253 void initNamedList( const Qgis::SettingsTreeNodeOptions &options );
254
255 private:
257
264 QgsSettingsTreeNamedListNode() SIP_FORCE;
265
266 QgsSettingsTreeNamedListNode( const QgsSettingsTreeNamedListNode &other ) = delete;
267
269 QString completeKeyWithNamedItems( const QString &key, const QStringList &namedItems ) const;
270
271 Qgis::SettingsTreeNodeOptions mOptions;
272 std::unique_ptr<const QgsSettingsEntryString> mSelectedItemSetting;
273 QString mItemsCompleteKey;
274};
275
276#endif // QGSSETTINGSTREENODE_H
Provides global constants and enumerations for use throughout the application.
Definition qgis.h:59
SettingsTreeNodeType
Type of tree node.
Definition qgis.h:673
QFlags< SettingsTreeNodeOption > SettingsTreeNodeOptions
Definition qgis.h:690
SettingsOrigin
The setting origin describes where a setting is stored.
Definition qgis.h:4524
Represents a settings entry and provides methods for reading and writing settings values.
A string settings entry.
Custom exception class for settings related exceptions.
A named list tree node for the settings tree to help organizing and introspecting the tree.
const QgsSettingsEntryString * selectedItemSetting() const
Returns the setting used to store the selected item.
void deleteAllItems(const QStringList &parentsNamedItems=QStringList())
Deletes all items from the named list node.
void deleteItem(const QString &item, const QStringList &parentsNamedItems=QStringList())
Deletes a named item from the named list node.
QString selectedItem(const QStringList &parentsNamedItems=QStringList())
Returns the selected named item from the named list node.
void setSelectedItem(const QString &item, const QStringList &parentsNamedItems=QStringList())
Sets the selected named item from the named list node.
QStringList items(const QStringList &parentsNamedItems=QStringList()) const
Returns the list of items.
A tree node for the settings tree to help organizing and introspecting the tree.
QList< const QgsSettingsEntryBase * > childrenSettings() const
Returns the children settings.
QList< QgsSettingsTreeNode * > childrenNodes() const
Returns the children nodes.
Qgis::SettingsTreeNodeType type() const
Returns the type of node.
QgsSettingsTreeNode * createChildNode(const QString &key)
Creates a normal tree node It will return the existing child node if it exists at the given key.
Qgis::SettingsTreeNodeType mType
QString completeKey() const
Returns the complete key of the node (including its parents).
int namedNodesCount() const
Returns the number of named nodes in the complete key.
static QgsSettingsTreeNode * createRootNode()
Creates a tree root node.
QString key() const
Returns the key of the node (without its parents).
friend class QgsSettingsTreeNamedListNode
QgsSettingsTreeNode * parent() const
Returns the parent of the node or nullptr if it does not exists.
QgsSettingsTreeNamedListNode * createNamedListNode(const QString &key, const Qgis::SettingsTreeNodeOptions &options=Qgis::SettingsTreeNodeOptions())
Creates a named list tree node.
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
Definition qgis_sip.h:199
#define SIP_KEEPREFERENCE
Definition qgis_sip.h:94
#define SIP_FORCE
Definition qgis_sip.h:139
#define SIP_SKIP
Definition qgis_sip.h:134
#define SIP_THROW(name,...)
Definition qgis_sip.h:211
#define SIP_END
Definition qgis_sip.h:216