QGIS API Documentation
3.38.0-Grenoble (exported)
Loading...
Searching...
No Matches
src
gui
settings
qgssettingseditorwidgetregistry.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgssettingseditorwidgetregistry.cpp
3
---------------------
4
begin : April 2023
5
copyright : (C) 2023 by Denis Rouzaud
6
email :
[email protected]
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
#include "
qgssettingseditorwidgetregistry.h
"
17
18
#include "
qgis.h
"
19
#include "
qgslogger.h
"
20
#include "
qgssettingseditorwidgetwrapper.h
"
21
#include "
qgssettingseditorwidgetwrapperimpl.h
"
22
#include "
qgssettingsenumflageditorwidgetwrapper.h
"
23
#include "
qgssettingsentry.h
"
24
25
#if defined( HAVE_QTSERIALPORT )
26
#include <QSerialPort>
27
#endif
28
29
30
QgsSettingsEditorWidgetRegistry::QgsSettingsEditorWidgetRegistry
()
31
{
32
addWrapper
(
new
QgsSettingsStringEditorWidgetWrapper
() );
33
addWrapper
(
new
QgsSettingsBoolEditorWidgetWrapper
() );
34
addWrapper
(
new
QgsSettingsIntegerEditorWidgetWrapper
() );
35
addWrapper
(
new
QgsSettingsDoubleEditorWidgetWrapper
() );
36
addWrapper
(
new
QgsSettingsColorEditorWidgetWrapper
() );
37
38
// enum
39
#if defined( HAVE_QTSERIALPORT )
40
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<QSerialPort::DataBits>
() );
41
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<QSerialPort::FlowControl>
() );
42
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<QSerialPort::Parity>
() );
43
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<QSerialPort::StopBits>
() );
44
#endif
45
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::CaptureTechnique>
() );
46
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::DpiMode>
() );
47
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::EndCapStyle>
() );
48
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::GpsConnectionType>
() );
49
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::GpsInformationComponent>
() );
50
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::JoinStyle>
() );
51
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::MapRecenteringMode>
() );
52
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::MapToolUnit>
() );
53
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::SnappingMode>
() );
54
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::SnappingType>
() );
55
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::TilePixelRatio>
() );
56
57
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::VectorSimplificationAlgorithm>
() );
58
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::VectorRenderingSimplificationFlags>
() );
59
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qt::TimeSpec>
() );
60
61
// flags
62
addWrapper
(
new
QgsSettingsFlagsEditorWidgetWrapper<Qgis::GpsInformationComponent, Qgis::GpsInformationComponents>
() );
63
64
}
65
66
QgsSettingsEditorWidgetRegistry::~QgsSettingsEditorWidgetRegistry
()
67
{
68
qDeleteAll( mWrappers );
69
}
70
71
bool
QgsSettingsEditorWidgetRegistry::addWrapper
(
QgsSettingsEditorWidgetWrapper
*wrapper )
72
{
73
if
( mWrappers.contains( wrapper->
id
() ) )
74
{
75
QgsDebugMsgLevel
( QString(
"Settings editor widget registry already contains a wrapper with id '%1'"
).arg( wrapper->
id
() ), 2 );
76
delete
wrapper;
77
return
false
;
78
}
79
80
mWrappers.insert( wrapper->
id
(), wrapper );
81
return
true
;
82
}
83
84
QgsSettingsEditorWidgetWrapper
*
QgsSettingsEditorWidgetRegistry::createWrapper
(
const
QString &
id
, QObject *parent )
const
85
{
86
QgsSettingsEditorWidgetWrapper
*wrapper = mWrappers.value(
id
);
87
if
( wrapper )
88
{
89
return
wrapper->
createWrapper
( parent );
90
}
91
else
92
{
93
QgsDebugError
( QStringLiteral(
"Setting factory was not found for '%1', returning the default string factory"
).arg(
id
) );
94
return
nullptr
;
95
}
96
}
97
98
QWidget *
QgsSettingsEditorWidgetRegistry::createEditor
(
const
QgsSettingsEntryBase
*setting,
const
QStringList &dynamicKeyPartList, QWidget *parent )
const
99
{
100
QgsSettingsEditorWidgetWrapper
*eww =
createWrapper
( setting->
typeId
(), parent );
101
if
( eww )
102
return
eww->
createEditor
( setting, dynamicKeyPartList, parent );
103
else
104
return
nullptr
;
105
}
QgsSettingsBoolEditorWidgetWrapper
This class is a factory of editor for boolean settings.
Definition
qgssettingseditorwidgetwrapperimpl.h:151
QgsSettingsColorEditorWidgetWrapper
This class is a factory of editor for color settings.
Definition
qgssettingseditorwidgetwrapperimpl.h:228
QgsSettingsDoubleEditorWidgetWrapper
This class is a factory of editor for double settings.
Definition
qgssettingseditorwidgetwrapperimpl.h:202
QgsSettingsEditorWidgetRegistry::QgsSettingsEditorWidgetRegistry
QgsSettingsEditorWidgetRegistry()
Constructor.
Definition
qgssettingseditorwidgetregistry.cpp:30
QgsSettingsEditorWidgetRegistry::createEditor
QWidget * createEditor(const QgsSettingsEntryBase *setting, const QStringList &dynamicKeyPartList, QWidget *parent=nullptr) const
Creates an editor widget for the given setting using the corresponding registered wrapper.
Definition
qgssettingseditorwidgetregistry.cpp:98
QgsSettingsEditorWidgetRegistry::addWrapper
bool addWrapper(QgsSettingsEditorWidgetWrapper *wrapper)
Adds an editor widget wrapper to the registry If an editor widget with same id already exists,...
Definition
qgssettingseditorwidgetregistry.cpp:71
QgsSettingsEditorWidgetRegistry::createWrapper
QgsSettingsEditorWidgetWrapper * createWrapper(const QString &id, QObject *parent) const
Returns a new instance of the editor widget for the given id.
Definition
qgssettingseditorwidgetregistry.cpp:84
QgsSettingsEditorWidgetRegistry::~QgsSettingsEditorWidgetRegistry
~QgsSettingsEditorWidgetRegistry()
Definition
qgssettingseditorwidgetregistry.cpp:66
QgsSettingsEditorWidgetWrapper
Base class for settings editor wrappers.
Definition
qgssettingseditorwidgetwrapper.h:33
QgsSettingsEditorWidgetWrapper::createWrapper
virtual QgsSettingsEditorWidgetWrapper * createWrapper(QObject *parent=nullptr) const =0
Creates a new instance of the editor wrapper so it can be configured for a widget and a setting.
QgsSettingsEditorWidgetWrapper::createEditor
QWidget * createEditor(const QgsSettingsEntryBase *setting, const QStringList &dynamicKeyPartList=QStringList(), QWidget *parent=nullptr)
Creates the editor widget for the given setting.
Definition
qgssettingseditorwidgetwrapper.cpp:41
QgsSettingsEditorWidgetWrapper::id
virtual QString id() const =0
This id of the type of settings it handles.
QgsSettingsEntryBase
Represent settings entry and provides methods for reading and writing settings values.
Definition
qgssettingsentry.h:45
QgsSettingsEntryBase::typeId
virtual QString typeId() const
Returns the id of the type of settings This can be re-implemented in a custom implementation of a set...
Definition
qgssettingsentry.cpp:47
QgsSettingsEnumEditorWidgetWrapper
This class is a factory of editor for enum settings.
Definition
qgssettingsenumflageditorwidgetwrapper.h:140
QgsSettingsFlagsEditorWidgetWrapper
This class is a factory of editor for flags settings.
Definition
qgssettingsenumflageditorwidgetwrapper.h:39
QgsSettingsIntegerEditorWidgetWrapper
This class is a factory of editor for integer settings.
Definition
qgssettingseditorwidgetwrapperimpl.h:176
QgsSettingsStringEditorWidgetWrapper
This class is a factory of editor for string settings.
Definition
qgssettingseditorwidgetwrapperimpl.h:126
qgis.h
qgslogger.h
QgsDebugMsgLevel
#define QgsDebugMsgLevel(str, level)
Definition
qgslogger.h:39
QgsDebugError
#define QgsDebugError(str)
Definition
qgslogger.h:38
qgssettingseditorwidgetregistry.h
qgssettingseditorwidgetwrapper.h
qgssettingseditorwidgetwrapperimpl.h
qgssettingsentry.h
qgssettingsenumflageditorwidgetwrapper.h
Generated on Thu Jun 27 2024 20:32:18 for QGIS API Documentation by
1.9.8