QGIS API Documentation 3.39.0-Master (47f7b3a4989)
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 "qgshelp.h"
21#include "qgsnumericformat.h"
22#include <QDialogButtonBox>
23
25 : QgsPanelWidget( parent )
26{
27 setupUi( this );
28
29 mDirectionComboBox->addItem( tr( "Maximum on Top" ), QgsColorRampLegendNodeSettings::MinimumToMaximum );
30 mDirectionComboBox->addItem( tr( "Minimum on Top" ), QgsColorRampLegendNodeSettings::MaximumToMinimum );
31
32 mOrientationComboBox->addItem( tr( "Vertical" ), Qt::Vertical );
33 mOrientationComboBox->addItem( tr( "Horizontal" ), Qt::Horizontal );
34
35 if ( capabilities.testFlag( Capability::DefaultMinimum ) )
36 {
37 mMinLabelLineEdit->setPlaceholderText( tr( "Default" ) );
38 }
39 else
40 {
41 mMinLabelLineEdit->setShowClearButton( false );
42 }
43 if ( capabilities.testFlag( Capability::DefaultMinimum ) )
44 {
45 mMaxLabelLineEdit->setPlaceholderText( tr( "Default" ) );
46 }
47 else
48 {
49 mMaxLabelLineEdit->setShowClearButton( false );
50 }
51
52 mFontButton->setShowNullFormat( true );
53 mFontButton->setNoFormatString( tr( "Default" ) );
54
55 connect( mUseContinuousLegendCheckBox, &QCheckBox::stateChanged, this, [ = ]( bool checked )
56 {
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 {
132 mSettings.setNumericFormat( widget->format() );
133 onChanged();
134 } );
135 openPanel( widget );
136 return;
137}
138
139void QgsColorRampLegendNodeWidget::onOrientationChanged()
140{
141 switch ( static_cast< Qt::Orientation >( mOrientationComboBox->currentData().toInt() ) )
142 {
143 case Qt::Vertical:
144 mDirectionComboBox->setItemText( 0, tr( "Maximum on Top" ) );
145 mDirectionComboBox->setItemText( 1, tr( "Minimum on Top" ) );
146 break;
147
148 case Qt::Horizontal:
149 mDirectionComboBox->setItemText( 0, tr( "Maximum on Right" ) );
150 mDirectionComboBox->setItemText( 1, tr( "Minimum on Right" ) );
151 break;
152 }
153
154 onChanged();
155}
156
157void QgsColorRampLegendNodeWidget::onChanged()
158{
159 if ( mBlockSignals )
160 return;
161
162 emit widgetChanged();
163}
164
165//
166// QgsColorRampLegendNodeDialog
167//
168
170 : QDialog( parent )
171{
172 QVBoxLayout *vLayout = new QVBoxLayout();
173 mWidget = new QgsColorRampLegendNodeWidget( nullptr, capabilities );
174 vLayout->addWidget( mWidget );
175 mButtonBox = new QDialogButtonBox( QDialogButtonBox::Cancel | QDialogButtonBox::Help | QDialogButtonBox::Ok, Qt::Horizontal );
176 connect( mButtonBox, &QDialogButtonBox::accepted, this, &QDialog::accept );
177 connect( mButtonBox, &QDialogButtonBox::rejected, this, &QDialog::reject );
178 connect( mButtonBox, &QDialogButtonBox::helpRequested, this, [ = ]
179 {
180 QgsHelp::openHelp( QStringLiteral( "working_with_raster/raster_properties.html#raster-legend-settings" ) );
181 } );
182 connect( mWidget, &QgsPanelWidget::panelAccepted, this, &QDialog::reject );
183 vLayout->addWidget( mButtonBox );
184 setLayout( vLayout );
185 setWindowTitle( tr( "Legend Node Settings" ) );
186
187 mWidget->setSettings( settings );
188}
189
194
196{
197 return mButtonBox;
198}
199
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.