QGIS API Documentation
3.14.0-Pi (9f7028fd23)
|
Go to the documentation of this file.
40 #include <QMessageBox>
42 static bool _initRenderer(
const QString &name,
QgsRendererWidgetFunc f,
const QString &iconName = QString() )
54 if ( !iconName.isEmpty() )
63 static void _initRendererWidgetFunctions()
65 static bool sInitialized =
false;
90 mLayerRenderingGroupBox->setSettingGroup( QStringLiteral(
"layerRenderingGroupBox" ) );
96 layout()->setContentsMargins( 0, 0, 0, 0 );
100 _initRendererWidgetFunctions();
104 const auto constRenderers = renderers;
105 for (
const QString &name : constRenderers )
111 cboRenderers->setCurrentIndex( -1 );
117 connect( checkboxEnableOrderBy, &QAbstractButton::toggled, btnOrderBy, &QWidget::setEnabled );
118 connect( btnOrderBy, &QAbstractButton::clicked,
this, &QgsRendererPropertiesDialog::showOrderByDialog );
122 QList<QWidget *> widgets;
123 widgets << mOpacityWidget
125 << checkboxEnableOrderBy
126 << mBlendModeComboBox
127 << mFeatureBlendComboBox
136 const auto constWidgets = widgets;
137 for ( QWidget *widget : constWidgets )
141 connect( w, SIGNAL( changed ),
this, slot );
145 connect( w, SIGNAL( fieldChanged( QString ) ),
this, slot );
147 else if (
QgsOpacityWidget *w = qobject_cast<QgsOpacityWidget *>( widget ) )
149 connect( w, SIGNAL( opacityChanged(
double ) ),
this, slot );
151 else if ( QComboBox *w = qobject_cast<QComboBox *>( widget ) )
153 connect( w, SIGNAL( currentIndexChanged(
int ) ),
this, slot );
155 else if ( QSpinBox *w = qobject_cast<QSpinBox *>( widget ) )
157 connect( w, SIGNAL( valueChanged(
int ) ),
this, slot );
159 else if ( QDoubleSpinBox *w = qobject_cast<QDoubleSpinBox *>( widget ) )
161 connect( w, SIGNAL( valueChanged(
double ) ),
this, slot );
163 else if (
QgsColorButton *w = qobject_cast<QgsColorButton *>( widget ) )
165 connect( w, SIGNAL( colorChanged( QColor ) ),
this, slot );
167 else if ( QCheckBox *w = qobject_cast<QCheckBox *>( widget ) )
169 connect( w, SIGNAL( toggled(
bool ) ),
this, slot );
171 else if ( QLineEdit *w = qobject_cast<QLineEdit *>( widget ) )
173 connect( w, SIGNAL( textEdited( QString ) ),
this, slot );
174 connect( w, SIGNAL( textChanged( QString ) ),
this, slot );
178 connect( w, SIGNAL( changed() ),
this, slot );
211 mDockMode = dockMode;
212 mEffectWidget->setDockMode( dockMode );
220 if ( cboRenderers->currentIndex() == -1 )
222 QgsDebugMsg( QStringLiteral(
"No current item -- this should never happen!" ) );
226 QString rendererName = cboRenderers->currentData().toString();
279 stackedWidget->setCurrentWidget( pageNoWidget );
326 QDialog *dlg =
new QDialog();
327 QString key = QStringLiteral(
"/UI/paneldialog/%1" ).arg( panel->
panelTitle() );
329 dlg->restoreGeometry( settings.
value( key ).toByteArray() );
331 dlg->setLayout(
new QVBoxLayout() );
332 dlg->layout()->addWidget( panel );
333 QDialogButtonBox *buttonBox =
new QDialogButtonBox( QDialogButtonBox::Ok );
334 connect( buttonBox, &QDialogButtonBox::accepted, dlg, &QDialog::accept );
335 dlg->layout()->addWidget( buttonBox );
337 settings.
setValue( key, dlg->saveGeometry() );
342 void QgsRendererPropertiesDialog::syncToLayer()
370 checkboxEnableOrderBy->setChecked(
true );
374 btnOrderBy->setEnabled(
false );
375 checkboxEnableOrderBy->setChecked(
false );
383 int rendererIdx = cboRenderers->findData( rendererName );
384 cboRenderers->setCurrentIndex( rendererIdx );
387 Q_ASSERT( rendererIdx != -1 &&
"there must be a renderer!" );
392 void QgsRendererPropertiesDialog::showOrderByDialog()
407 checkboxEnableOrderBy->setChecked( orderByEnabled );
410 void QgsRendererPropertiesDialog::updateUIState(
bool hidden )
412 mLayerRenderingGroupBox->setHidden( hidden );
413 cboRenderers->setHidden( hidden );
420 if ( !isWindow() && e->key() == Qt::Key_Escape )
426 QDialog::keyPressEvent( e );
void setRenderer(QgsFeatureRenderer *r)
Sets renderer which will be invoked to represent this layer.
~QgsRendererPropertiesDialog() override
void showPanel(QgsPanelWidget *panel)
Emit when you require a panel to be show in the interface.
QgsFeatureRequest::OrderBy mOrderBy
QgsMapCanvas * mapCanvas() const
Returns the map canvas associated with the widget.
static QgsRendererRegistry * rendererRegistry()
Returns the application's renderer registry, used for managing vector layer renderers.
QPainter::CompositionMode featureBlendMode() const
Returns the current blending mode for features.
void apply()
Apply the changes from the dialog to the layer.
QgsPaintEffect * mPaintEffect
static QIcon getThemeIcon(const QString &name)
Helper to get a theme icon.
QVariant value(const QString &key, const QVariant &defaultValue=QVariant(), Section section=NoSection) const
Returns the value for setting key.
void setOrderByEnabled(bool enabled)
Sets whether custom ordering should be applied before features are processed by this renderer.
#define QgsDebugMsgLevel(str, level)
QPainter::CompositionMode blendMode() const
Returns the current blending mode for a layer.
void setDockMode(bool dockMode)
Set the widget in dock mode which tells the widget to emit panel widgets and not open dialogs.
void setBlendMode(QPainter::CompositionMode blendMode)
Set the blending mode used for rendering a layer.
void setMapCanvas(QgsMapCanvas *canvas)
Sets the map canvas associated with the dialog.
void rendererChanged()
called when user changes renderer type
void setMapCanvas(QgsMapCanvas *canvas)
Sets the map canvas associated with the widget.
QgsFeatureRequest::OrderBy orderBy() const
Gets the order in which features shall be processed by this renderer.
QgsRendererWidget * mActiveWidget
static void enableAutoGeometryRestore(QWidget *widget, const QString &key=QString())
Register the widget to allow its position to be automatically saved and restored when open and closed...
void setMessageBar(QgsMessageBar *bar)
Sets the message bar associated with the widget.
QgsRendererWidget *(* QgsRendererWidgetFunc)(QgsVectorLayer *, QgsStyle *, QgsFeatureRenderer *)
void layerVariablesChanged()
Emitted when expression context variables on the associated vector layers have been changed.
virtual QgsFeatureRenderer * clone() const =0
Create a deep copy of this renderer.
virtual QgsPaintEffect * clone() const =0
Duplicates an effect by creating a deep copy of the effect.
QgsRendererPropertiesDialog(QgsVectorLayer *layer, QgsStyle *style, bool embedded=false, QWidget *parent=nullptr)
Constructor for QgsRendererPropertiesDialog.
void setValue(const QString &key, const QVariant &value, QgsSettings::Section section=QgsSettings::NoSection)
Sets the value of setting key to value.
void onOK()
Apply and accept the changes for the dialog.
QStringList renderersList(QgsRendererAbstractMetadata::LayerTypes layerTypes=QgsRendererAbstractMetadata::All) const
Returns a list of available renderers.
QgsMessageBar * mMessageBar
void widgetChanged()
Emitted when something on the widget has changed.
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 keyPressEvent(QKeyEvent *event) override
bool orderByEnabled() const
Returns whether custom ordering will be applied before features are processed by this renderer.
void setPaintEffect(QgsPaintEffect *effect)
Sets the current paint effect for the renderer.
void setOrderBy(const QgsFeatureRequest::OrderBy &orderBy)
Define the order in which features shall be processed by this renderer.
QgsMessageBar * messageBar() const
Returns the message bar associated with the widget.
QgsPaintEffect * paintEffect() const
Returns the current paint effect for the renderer.
void setContext(const QgsSymbolWidgetContext &context)
Sets the context in which the dialog is shown, e.g., the associated map canvas and expression context...
QgsRendererAbstractMetadata * rendererMetadata(const QString &rendererName)
Returns the metadata for a specified renderer.
void setOpacity(double opacity)
Sets the opacity for the vector layer, where opacity is a value between 0 (totally transparent) and 1...
QgsMapCanvas * mMapCanvas
void setFeatureBlendMode(QPainter::CompositionMode blendMode)
Sets the blending mode used for rendering each feature.
QgsFeatureRenderer * renderer()
Returns renderer.
void connectValueChanged(const QList< QWidget * > &widgets, const char *slot)
Connect the given slot to the value changed event for the set of widgets Each widget is checked for t...