QGIS API Documentation
3.41.0-Master (3440c17df1d)
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
QgsSettingsStringLineEditWrapper
() );
33
addWrapper
(
new
QgsSettingsBoolCheckBoxWrapper
() );
34
addWrapper
(
new
QgsSettingsIntegerSpinBoxWrapper
() );
35
addWrapper
(
new
QgsSettingsDoubleSpinBoxWrapper
() );
36
addWrapper
(
new
QgsSettingsColorButtonWrapper
() );
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
void
QgsSettingsEditorWidgetRegistry::addWrapperForSetting
(
QgsSettingsEditorWidgetWrapper
*wrapper,
const
QgsSettingsEntryBase
*setting )
85
{
86
mSpecificWrappers.insert( setting, wrapper );
87
}
88
89
QgsSettingsEditorWidgetWrapper
*
QgsSettingsEditorWidgetRegistry::createWrapper
(
const
QString &
id
, QObject *parent )
const
90
{
91
QgsSettingsEditorWidgetWrapper
*wrapper = mWrappers.value(
id
);
92
if
( wrapper )
93
{
94
return
wrapper->
createWrapper
( parent );
95
}
96
else
97
{
98
QgsDebugError
( QStringLiteral(
"Setting factory was not found for '%1', returning the default string factory"
).arg(
id
) );
99
return
nullptr
;
100
}
101
}
102
103
QWidget *
QgsSettingsEditorWidgetRegistry::createEditor
(
const
QgsSettingsEntryBase
*setting,
const
QStringList &dynamicKeyPartList, QWidget *parent )
const
104
{
105
if
( mSpecificWrappers.contains( setting ) )
106
{
107
return
mSpecificWrappers.value( setting )->createEditor( setting, dynamicKeyPartList, parent );
108
}
109
QgsSettingsEditorWidgetWrapper
*eww =
createWrapper
( setting->
typeId
(), parent );
110
if
( eww )
111
return
eww->
createEditor
( setting, dynamicKeyPartList, parent );
112
else
113
return
nullptr
;
114
}
QgsSettingsBoolCheckBoxWrapper
This class is a factory of editor for boolean settings with a checkbox.
Definition
qgssettingseditorwidgetwrapperimpl.h:205
QgsSettingsColorButtonWrapper
This class is a factory of editor for color settings with a color button.
Definition
qgssettingseditorwidgetwrapperimpl.h:300
QgsSettingsDoubleSpinBoxWrapper
This class is a factory of editor for double settings with a double spin box.
Definition
qgssettingseditorwidgetwrapperimpl.h:268
QgsSettingsEditorWidgetRegistry::QgsSettingsEditorWidgetRegistry
QgsSettingsEditorWidgetRegistry()
Constructor.
Definition
qgssettingseditorwidgetregistry.cpp:30
QgsSettingsEditorWidgetRegistry::addWrapperForSetting
void addWrapperForSetting(QgsSettingsEditorWidgetWrapper *wrapper, const QgsSettingsEntryBase *setting)
Adds an editor widget wrapper for a specific setting to the registry.
Definition
qgssettingseditorwidgetregistry.cpp:84
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:103
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:89
QgsSettingsEditorWidgetRegistry::~QgsSettingsEditorWidgetRegistry
~QgsSettingsEditorWidgetRegistry()
Definition
qgssettingseditorwidgetregistry.cpp:66
QgsSettingsEditorWidgetWrapper
Base class for settings editor wrappers.
Definition
qgssettingseditorwidgetwrapper.h:35
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:43
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:149
QgsSettingsFlagsEditorWidgetWrapper
This class is a factory of editor for flags settings.
Definition
qgssettingsenumflageditorwidgetwrapper.h:39
QgsSettingsIntegerSpinBoxWrapper
This class is a factory of editor for integer settings with a spin box.
Definition
qgssettingseditorwidgetwrapperimpl.h:236
QgsSettingsStringLineEditWrapper
This class is a factory of editor for string settings with a line edit.
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 Sat Nov 23 2024 09:26:05 for QGIS API Documentation by
1.9.8