QGIS API Documentation 3.41.0-Master (57ec4277f5e)
Loading...
Searching...
No Matches
qgscolorramplegendnodewidget.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgscolorramplegendnodewidget.h
3 -----------------------
4 begin : December 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#include "moc_qgscolorramplegendnodewidget.cpp"
20#include "qgshelp.h"
22#include "qgsnumericformat.h"
23#include <QDialogButtonBox>
24
26 : QgsPanelWidget( parent )
27{
28 setupUi( this );
29
30 mDirectionComboBox->addItem( tr( "Maximum on Top" ), QgsColorRampLegendNodeSettings::MinimumToMaximum );
31 mDirectionComboBox->addItem( tr( "Minimum on Top" ), QgsColorRampLegendNodeSettings::MaximumToMinimum );
32
33 mOrientationComboBox->addItem( tr( "Vertical" ), Qt::Vertical );
34 mOrientationComboBox->addItem( tr( "Horizontal" ), Qt::Horizontal );
35
36 if ( capabilities.testFlag( Capability::DefaultMinimum ) )
37 {
38 mMinLabelLineEdit->setPlaceholderText( tr( "Default" ) );
39 }
40 else
41 {
42 mMinLabelLineEdit->setShowClearButton( false );
43 }
44 if ( capabilities.testFlag( Capability::DefaultMinimum ) )
45 {
46 mMaxLabelLineEdit->setPlaceholderText( tr( "Default" ) );
47 }
48 else
49 {
50 mMaxLabelLineEdit->setShowClearButton( false );
51 }
52
53 mFontButton->setShowNullFormat( true );
54 mFontButton->setNoFormatString( tr( "Default" ) );
55
56 connect( mUseContinuousLegendCheckBox, &QCheckBox::stateChanged, this, [=]( bool checked ) {
57 mLayoutGroup->setEnabled( checked );
58 mLabelsGroup->setEnabled( checked );
59 onChanged();
60 } );
61
62 connect( mMinLabelLineEdit, &QLineEdit::textChanged, this, &QgsColorRampLegendNodeWidget::onChanged );
63 connect( mMaxLabelLineEdit, &QLineEdit::textChanged, this, &QgsColorRampLegendNodeWidget::onChanged );
64 connect( mPrefixLineEdit, &QLineEdit::textChanged, this, &QgsColorRampLegendNodeWidget::onChanged );
65 connect( mSuffixLineEdit, &QLineEdit::textChanged, this, &QgsColorRampLegendNodeWidget::onChanged );
66 connect( mDirectionComboBox, qOverload<int>( &QComboBox::currentIndexChanged ), this, &QgsColorRampLegendNodeWidget::onChanged );
67 connect( mOrientationComboBox, qOverload<int>( &QComboBox::currentIndexChanged ), this, &QgsColorRampLegendNodeWidget::onOrientationChanged );
68 connect( mNumberFormatPushButton, &QPushButton::clicked, this, &QgsColorRampLegendNodeWidget::changeNumberFormat );
69 connect( mFontButton, &QgsFontButton::changed, this, &QgsColorRampLegendNodeWidget::onChanged );
70
71 if ( !capabilities.testFlag( Capability::Prefix ) )
72 {
73 mPrefixLineEdit->hide();
74 mPrefixLabel->hide();
75 }
76 if ( !capabilities.testFlag( Capability::Suffix ) )
77 {
78 mSuffixLineEdit->hide();
79 mSuffixLabel->hide();
80 }
81 if ( !capabilities.testFlag( Capability::NumberFormat ) )
82 {
83 mNumberFormatPushButton->hide();
84 mNumberFormatLabel->hide();
85 }
86}
87
89{
91 settings.setUseContinuousLegend( mUseContinuousLegendCheckBox->isChecked() );
92 settings.setDirection( static_cast<QgsColorRampLegendNodeSettings::Direction>( mDirectionComboBox->currentData().toInt() ) );
93 settings.setOrientation( static_cast<Qt::Orientation>( mOrientationComboBox->currentData().toInt() ) );
94 settings.setMinimumLabel( mMinLabelLineEdit->text() );
95 settings.setMaximumLabel( mMaxLabelLineEdit->text() );
96 settings.setPrefix( mPrefixLineEdit->text() );
97 settings.setSuffix( mSuffixLineEdit->text() );
99 settings.setTextFormat( mFontButton->textFormat() );
100 return settings;
101}
102
104{
105 mBlockSignals = true;
106
107 mSettings = settings;
108 mUseContinuousLegendCheckBox->setChecked( settings.useContinuousLegend() );
109 mMinLabelLineEdit->setText( settings.minimumLabel() );
110 mMaxLabelLineEdit->setText( settings.maximumLabel() );
111 mPrefixLineEdit->setText( settings.prefix() );
112 mSuffixLineEdit->setText( settings.suffix() );
113 mDirectionComboBox->setCurrentIndex( mDirectionComboBox->findData( settings.direction() ) );
114 mOrientationComboBox->setCurrentIndex( mOrientationComboBox->findData( settings.orientation() ) );
115 mFontButton->setTextFormat( settings.textFormat() );
116 onOrientationChanged();
117 mBlockSignals = false;
118}
119
121{
122 mUseContinuousLegendCheckBox->setVisible( visible );
123}
124
125void QgsColorRampLegendNodeWidget::changeNumberFormat()
126{
128 widget->setPanelTitle( tr( "Number Format" ) );
129 widget->setFormat( mSettings.numericFormat() );
130 connect( widget, &QgsNumericFormatSelectorWidget::changed, this, [=] {
131 mSettings.setNumericFormat( widget->format() );
132 onChanged();
133 } );
134 openPanel( widget );
135 return;
136}
137
138void QgsColorRampLegendNodeWidget::onOrientationChanged()
139{
140 switch ( static_cast<Qt::Orientation>( mOrientationComboBox->currentData().toInt() ) )
141 {
142 case Qt::Vertical:
143 mDirectionComboBox->setItemText( 0, tr( "Maximum on Top" ) );
144 mDirectionComboBox->setItemText( 1, tr( "Minimum on Top" ) );
145 break;
146
147 case Qt::Horizontal:
148 mDirectionComboBox->setItemText( 0, tr( "Maximum on Right" ) );
149 mDirectionComboBox->setItemText( 1, tr( "Minimum on Right" ) );
150 break;
151 }
152
153 onChanged();
154}
155
156void QgsColorRampLegendNodeWidget::onChanged()
157{
158 if ( mBlockSignals )
159 return;
160
161 emit widgetChanged();
162}
163
164//
165// QgsColorRampLegendNodeDialog
166//
167
169 : QDialog( parent )
170{
171 QVBoxLayout *vLayout = new QVBoxLayout();
172 mWidget = new QgsColorRampLegendNodeWidget( nullptr, capabilities );
173 vLayout->addWidget( mWidget );
174 mButtonBox = new QDialogButtonBox( QDialogButtonBox::Cancel | QDialogButtonBox::Help | QDialogButtonBox::Ok, Qt::Horizontal );
175 connect( mButtonBox, &QDialogButtonBox::accepted, this, &QDialog::accept );
176 connect( mButtonBox, &QDialogButtonBox::rejected, this, &QDialog::reject );
177 connect( mButtonBox, &QDialogButtonBox::helpRequested, this, [=] {
178 QgsHelp::openHelp( QStringLiteral( "working_with_raster/raster_properties.html#raster-legend-settings" ) );
179 } );
180 connect( mWidget, &QgsPanelWidget::panelAccepted, this, &QDialog::reject );
181 vLayout->addWidget( mButtonBox );
182 setLayout( vLayout );
183 setWindowTitle( tr( "Legend Node Settings" ) );
184
185 mWidget->setSettings( settings );
186}
187
192
194{
195 return mButtonBox;
196}
197
void setUseContinuousRampCheckBoxVisibility(bool visible)
Sets visibility for the "Use Continuous Legend" checkbox in the legend settings dialog to visible.
QgsColorRampLegendNodeDialog(const QgsColorRampLegendNodeSettings &settings, QWidget *parent SIP_TRANSFERTHIS=nullptr, QgsColorRampLegendNodeWidget::Capabilities capabilities=QgsColorRampLegendNodeWidget::Capability::AllCapabilities)
Constructor for QgsColorRampLegendNodeDialog, initially showing the specified settings.
QDialogButtonBox * buttonBox() const
Returns a reference to the dialog's button box.
QgsColorRampLegendNodeSettings settings() const
Returns the legend node settings as defined by the dialog.
Settings for a color ramp legend node.
void setDirection(QgsColorRampLegendNodeSettings::Direction direction)
Sets the direction of the ramp.
void setMaximumLabel(const QString &label)
Sets the label for the maximum value on the ramp.
void setNumericFormat(QgsNumericFormat *format)
Sets the numeric format used for numbers in the scalebar.
bool useContinuousLegend() const
Returns true if a continuous gradient legend will be used.
const QgsNumericFormat * numericFormat() const
Returns the numeric format used for numbers in the scalebar.
QString maximumLabel() const
Returns the label for the maximum value on the ramp.
QString suffix() const
Returns the suffix to show after legend text.
void setPrefix(const QString &prefix)
Sets the prefix to show before legend text.
void setUseContinuousLegend(bool useContinuousLegend)
Sets the flag to use a continuous gradient legend to useContinuousLegend.
void setOrientation(Qt::Orientation orientation)
Sets the ramp orientation (i.e.
@ MaximumToMinimum
Maximum value on bottom, minimum value on top.
@ MinimumToMaximum
Minimum value on bottom, maximum value on top.
void setSuffix(const QString &suffix)
Sets the suffix to show after legend text.
QString prefix() const
Returns the prefix to show before legend text.
Qt::Orientation orientation() const
Returns the ramp orientation (i.e.
QgsColorRampLegendNodeSettings::Direction direction() const
Returns the direction of the ramp.
QgsTextFormat textFormat() const
Returns the text format used to render text in the legend item.
void setMinimumLabel(const QString &label)
Sets the label for the minimum value on the ramp.
void setTextFormat(const QgsTextFormat &format)
Sets the text format used to render text in the legend item.
QString minimumLabel() const
Returns the label for the minimum value on the ramp.
A widget for properties relating to a QgsColorRampLegendNode (QgsColorRampLegendNodeSettings).
QFlags< Capability > Capabilities
Capabilities to expose in the widget.
@ Suffix
Allow editing legend suffix.
@ DefaultMinimum
Allow resetting minimum label to default.
@ NumberFormat
Allow editing number format.
@ Prefix
Allow editing legend prefix.
QgsColorRampLegendNodeSettings settings() const
Returns the legend node settings as defined by the widget.
void setSettings(const QgsColorRampLegendNodeSettings &settings)
Sets the settings to show in the widget.
QgsColorRampLegendNodeWidget(QWidget *parent=nullptr, QgsColorRampLegendNodeWidget::Capabilities capabilities=QgsColorRampLegendNodeWidget::Capability::AllCapabilities)
Constructor for QgsColorRampLegendNodeWidget, with the specified parent widget.
void setUseContinuousRampCheckBoxVisibility(bool visible)
Sets visibility for the "Use Continuous Legend" checkbox to visible.
void changed()
Emitted when the widget's text format settings are changed.
static void openHelp(const QString &key)
Opens help topic for the given help key using default system web browser.
Definition qgshelp.cpp:39
A widget which allows choice of numeric formats and the properties of them.
QgsNumericFormat * format() const
Returns a new format object representing the settings currently configured in the widget.
void changed()
Emitted whenever the format configured55 in the widget is changed.
void setFormat(const QgsNumericFormat *format)
Sets the format to show in the widget.
virtual QgsNumericFormat * clone() const =0
Clones the format, returning a new object.
Base class for any widget that can be shown as a inline panel.
void openPanel(QgsPanelWidget *panel)
Open a panel or dialog depending on dock mode setting If dock mode is true this method will emit the ...
void panelAccepted(QgsPanelWidget *panel)
Emitted when the panel is accepted by the user.
void widgetChanged()
Emitted when the widget state changes.
void setPanelTitle(const QString &panelTitle)
Set the title of the panel when shown in the interface.