QGIS API Documentation 3.99.0-Master (21b3aa880ba)
Loading...
Searching...
No Matches
qgsnumericformatguiregistry.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsnumericformatguiregistry.cpp
3 -------------------------------
4 begin : January 2020
5 copyright : (C) 2020 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
19
20#include "qgis.h"
22
24class QgsBasicNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
25{
26 public:
27 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
28 {
29 return new QgsBasicNumericFormatWidget( format );
30 }
31};
32
33class QgsBearingNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
34{
35 public:
36 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
37 {
38 return new QgsBearingNumericFormatWidget( format );
39 }
40};
41
42class QgsGeographicCoordinateNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
43{
44 public:
45 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
46 {
47 return new QgsGeographicCoordinateNumericFormatWidget( format );
48 }
49};
50
51class QgsCurrencyNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
52{
53 public:
54 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
55 {
56 return new QgsCurrencyNumericFormatWidget( format );
57 }
58};
59
60class QgsPercentageNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
61{
62 public:
63 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
64 {
65 return new QgsPercentageNumericFormatWidget( format );
66 }
67};
68
69class QgsScientificNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
70{
71 public:
72 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
73 {
74 return new QgsScientificNumericFormatWidget( format );
75 }
76};
77
78class QgsFractionNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
79{
80 public:
81 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
82 {
83 return new QgsFractionNumericFormatWidget( format );
84 }
85};
86
87class QgsExpressionBasedNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
88{
89 public:
90 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
91 {
92 return new QgsExpressionBasedNumericFormatWidget( format );
93 }
94};
95
97
99{
100 addFormatConfigurationWidgetFactory( QStringLiteral( "basic" ), new QgsBasicNumericFormatConfigurationWidgetFactory() );
101 addFormatConfigurationWidgetFactory( QStringLiteral( "bearing" ), new QgsBearingNumericFormatConfigurationWidgetFactory() );
102 addFormatConfigurationWidgetFactory( QStringLiteral( "currency" ), new QgsCurrencyNumericFormatConfigurationWidgetFactory() );
103 addFormatConfigurationWidgetFactory( QStringLiteral( "percentage" ), new QgsPercentageNumericFormatConfigurationWidgetFactory() );
104 addFormatConfigurationWidgetFactory( QStringLiteral( "scientific" ), new QgsScientificNumericFormatConfigurationWidgetFactory() );
105 addFormatConfigurationWidgetFactory( QStringLiteral( "fraction" ), new QgsFractionNumericFormatConfigurationWidgetFactory() );
106 addFormatConfigurationWidgetFactory( QStringLiteral( "geographiccoordinate" ), new QgsGeographicCoordinateNumericFormatConfigurationWidgetFactory() );
107 addFormatConfigurationWidgetFactory( QStringLiteral( "expression" ), new QgsExpressionBasedNumericFormatConfigurationWidgetFactory() );
108}
109
111{
112 qDeleteAll( mFormatConfigurationWidgetFactories );
113}
114
116{
117 mFormatConfigurationWidgetFactories.insert( id, factory );
118}
119
121{
122 delete mFormatConfigurationWidgetFactories.value( id );
123 mFormatConfigurationWidgetFactories.remove( id );
124}
125
127{
128 if ( !format )
129 return nullptr;
130
131 auto it = mFormatConfigurationWidgetFactories.constFind( format->id() );
132 if ( it == mFormatConfigurationWidgetFactories.constEnd() )
133 return nullptr;
134
135 return it.value()->create( format );
136}
Interface base class for factories for numeric format configuration widgets.
virtual QgsNumericFormatWidget * create(const QgsNumericFormat *format) const =0
Create a new configuration widget for a format.
QgsNumericFormatWidget * formatConfigurationWidget(const QgsNumericFormat *format) const
Returns a new configuration widget for an format.
void addFormatConfigurationWidgetFactory(const QString &id, QgsNumericFormatConfigurationWidgetFactory *factory)
Add a new configuration widget factory for customizing a numeric format with the specified id.
void removeFormatConfigurationWidgetFactory(const QString &id)
Removes the configuration widget factory for customizing numeric formats with the specified id.
Base class for widgets which allow control over the properties of QgsNumericFormat subclasses.
Abstract base class for numeric formatters, which allow for formatting a numeric value for display.
virtual QString id() const =0
Returns a unique id for this numeric format.