QGIS API Documentation 3.99.0-Master (26c88405ac0)
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
28
44class CORE_EXPORT QgsSettingsTreeNode
45{
46
47#ifdef SIP_RUN
49 if ( dynamic_cast< QgsSettingsTreeNamedListNode * >( sipCpp ) )
50 sipType = sipType_QgsSettingsTreeNamedListNode;
51 else if ( dynamic_cast< QgsSettingsTreeNode * >( sipCpp ) )
52 sipType = sipType_QgsSettingsTreeNode;
53 else
54 sipType = NULL;
56#endif
57
58 Q_GADGET
59
60 public:
61
62 virtual ~QgsSettingsTreeNode();
63
68 static QgsSettingsTreeNode *createRootNode() SIP_SKIP;
69
75 QgsSettingsTreeNode *createChildNode( const QString &key ) SIP_THROW( QgsSettingsException ) SIP_KEEPREFERENCE;
76
82
83
86
95 void registerChildSetting( const QgsSettingsEntryBase *setting, const QString &key ) SIP_THROW( QgsSettingsException );
96
103 void unregisterChildSetting( const QgsSettingsEntryBase *setting, bool deleteSettingValues = false, const QStringList &parentsNamedItems = QStringList() );
104
106 void unregisterChildNode( QgsSettingsTreeNode *node );
107
109 QList<QgsSettingsTreeNode *> childrenNodes() const {return mChildrenNodes;}
110
112 QgsSettingsTreeNode *childNode( const QString &key ) const;
113
115 QList<const QgsSettingsEntryBase *> childrenSettings() const {return mChildrenSettings;}
116
118 const QgsSettingsEntryBase *childSetting( const QString &key ) const;
119
121 QgsSettingsTreeNode *parent() const {return mParent;}
122
124 QString key() const {return mKey;}
125
127 QString completeKey() const {return mCompleteKey;}
128
130 int namedNodesCount() const {return mNamedNodesCount;}
131
132#ifdef SIP_RUN
133 SIP_PYOBJECT __repr__();
134 % MethodCode
135 const QMetaEnum metaEnum = QMetaEnum::fromType<Qgis::SettingsTreeNodeType>();
136
137 QString str = QStringLiteral( "<QgsSettingsTreeNode (%1): %2>" ).arg( metaEnum.valueToKey( static_cast<int>( sipCpp->type() ) ), sipCpp->key() );
138 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
139 % End
140#endif
141
142 protected:
144 void registerChildNode( QgsSettingsTreeNode *node );
145
147
148 private:
149
156 QgsSettingsTreeNode() = default SIP_FORCE;
157
158 QgsSettingsTreeNode( const QgsSettingsTreeNode &other ) = default SIP_FORCE;
159
161 void init( QgsSettingsTreeNode *parent, const QString &key );
162
163 friend class QgsSettingsTree;
165
166 QgsSettingsTreeNode *childNodeAtKey( const QString &key );
167
168 QList<QgsSettingsTreeNode *> mChildrenNodes;
169 QList<const QgsSettingsEntryBase *> mChildrenSettings;
170 QgsSettingsTreeNode *mParent = nullptr;
171
172 QString mKey;
173 QString mCompleteKey;
174 int mNamedNodesCount = 0;
175};
176
177
178
193class CORE_EXPORT QgsSettingsTreeNamedListNode : public QgsSettingsTreeNode
194{
195 public:
196 ~QgsSettingsTreeNamedListNode() override;
197
203 QStringList items( const QStringList &parentsNamedItems = QStringList() ) const SIP_THROW( QgsSettingsException );
204
211 QStringList items( Qgis::SettingsOrigin origin, const QStringList &parentsNamedItems = QStringList() ) const SIP_THROW( QgsSettingsException );
212
213
220 void setSelectedItem( const QString &item, const QStringList &parentsNamedItems = QStringList() ) SIP_THROW( QgsSettingsException );
221
227 QString selectedItem( const QStringList &parentsNamedItems = QStringList() ) SIP_THROW( QgsSettingsException );
228
235 void deleteItem( const QString &item, const QStringList &parentsNamedItems = QStringList() ) SIP_THROW( QgsSettingsException );
236
243 void deleteAllItems( const QStringList &parentsNamedItems = QStringList() ) SIP_THROW( QgsSettingsException );
244
246 const QgsSettingsEntryString *selectedItemSetting() const {return mSelectedItemSetting.get();}
247
248 protected:
250 void initNamedList( const Qgis::SettingsTreeNodeOptions &options );
251
252 private:
254
261 QgsSettingsTreeNamedListNode() SIP_FORCE;
262
263 QgsSettingsTreeNamedListNode( const QgsSettingsTreeNamedListNode &other ) = delete;
264
266 QString completeKeyWithNamedItems( const QString &key, const QStringList &namedItems ) const;
267
268 Qgis::SettingsTreeNodeOptions mOptions;
269 std::unique_ptr<const QgsSettingsEntryString> mSelectedItemSetting;
270 QString mItemsCompleteKey;
271};
272
273#endif // QGSSETTINGSTREENODE_H
Provides global constants and enumerations for use throughout the application.
Definition qgis.h:56
SettingsTreeNodeType
Type of tree node.
Definition qgis.h:654
QFlags< SettingsTreeNodeOption > SettingsTreeNodeOptions
Definition qgis.h:671
SettingsOrigin
The setting origin describes where a setting is stored.
Definition qgis.h:4465
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