QGIS API Documentation
3.36.0-Maidenhead (09951dc0acf)
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
#include "
qgsvectorsimplifymethod.h
"
26
27
28
#if defined( HAVE_QTSERIALPORT )
29
#include <QSerialPort>
30
#endif
31
32
33
QgsSettingsEditorWidgetRegistry::QgsSettingsEditorWidgetRegistry
()
34
{
35
addWrapper
(
new
QgsSettingsStringEditorWidgetWrapper
() );
36
addWrapper
(
new
QgsSettingsBoolEditorWidgetWrapper
() );
37
addWrapper
(
new
QgsSettingsIntegerEditorWidgetWrapper
() );
38
addWrapper
(
new
QgsSettingsDoubleEditorWidgetWrapper
() );
39
addWrapper
(
new
QgsSettingsColorEditorWidgetWrapper
() );
40
41
// enum
42
#if defined( HAVE_QTSERIALPORT )
43
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<QSerialPort::DataBits>
() );
44
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<QSerialPort::FlowControl>
() );
45
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<QSerialPort::Parity>
() );
46
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<QSerialPort::StopBits>
() );
47
#endif
48
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::CaptureTechnique>
() );
49
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::DpiMode>
() );
50
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::EndCapStyle>
() );
51
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::GpsConnectionType>
() );
52
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::GpsInformationComponent>
() );
53
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::JoinStyle>
() );
54
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::MapRecenteringMode>
() );
55
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::MapToolUnit>
() );
56
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::SnappingMode>
() );
57
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::SnappingType>
() );
58
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qgis::TilePixelRatio>
() );
59
60
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<QgsVectorSimplifyMethod::SimplifyAlgorithm>
() );
61
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<QgsVectorSimplifyMethod::SimplifyHints>
() );
62
addWrapper
(
new
QgsSettingsEnumEditorWidgetWrapper<Qt::TimeSpec>
() );
63
64
// flags
65
addWrapper
(
new
QgsSettingsFlagsEditorWidgetWrapper<Qgis::GpsInformationComponent, Qgis::GpsInformationComponents>
() );
66
67
}
68
69
QgsSettingsEditorWidgetRegistry::~QgsSettingsEditorWidgetRegistry
()
70
{
71
qDeleteAll( mWrappers );
72
}
73
74
bool
QgsSettingsEditorWidgetRegistry::addWrapper
(
QgsSettingsEditorWidgetWrapper
*wrapper )
75
{
76
if
( mWrappers.contains( wrapper->
id
() ) )
77
{
78
QgsDebugMsgLevel
( QString(
"Settings editor widget registry already contains a wrapper with id '%1'"
).arg( wrapper->
id
() ), 2 );
79
delete
wrapper;
80
return
false
;
81
}
82
83
mWrappers.insert( wrapper->
id
(), wrapper );
84
return
true
;
85
}
86
87
QgsSettingsEditorWidgetWrapper
*
QgsSettingsEditorWidgetRegistry::createWrapper
(
const
QString &
id
, QObject *parent )
const
88
{
89
QgsSettingsEditorWidgetWrapper
*wrapper = mWrappers.value(
id
);
90
if
( wrapper )
91
{
92
return
wrapper->
createWrapper
( parent );
93
}
94
else
95
{
96
QgsDebugError
( QStringLiteral(
"Setting factory was not found for '%1', returning the default string factory"
).arg(
id
) );
97
return
nullptr
;
98
}
99
}
100
101
QWidget *
QgsSettingsEditorWidgetRegistry::createEditor
(
const
QgsSettingsEntryBase
*setting,
const
QStringList &dynamicKeyPartList, QWidget *parent )
const
102
{
103
QgsSettingsEditorWidgetWrapper
*eww =
createWrapper
( setting->
typeId
(), parent );
104
if
( eww )
105
return
eww->
createEditor
( setting, dynamicKeyPartList, parent );
106
else
107
return
nullptr
;
108
}
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:33
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:101
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:74
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:87
QgsSettingsEditorWidgetRegistry::~QgsSettingsEditorWidgetRegistry
~QgsSettingsEditorWidgetRegistry()
Definition
qgssettingseditorwidgetregistry.cpp:69
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
qgsvectorsimplifymethod.h
Generated on Mon Feb 26 2024 10:02:44 for QGIS API Documentation by
1.9.8