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 widgetChanged()
Emitted when something on the widget has changed. 
 
This is a dialog to build and manage a list of order by clauses. 
 
void onOK()
Apply and accept the changes for the dialog. 
 
QgsRendererWidget * mActiveWidget
 
void setRenderer(QgsFeatureRenderer *r)
Sets renderer which will be invoked to represent this layer. 
 
void setOrderBy(const QgsFeatureRequest::OrderBy &orderBy)
Set the order by to manage. 
 
void apply()
Apply the changes from the dialog to the layer. 
 
void setDockMode(bool dockMode)
Set the widget in dock mode which tells the widget to emit panel widgets and not open dialogs...
 
void openPanel(QgsPanelWidget *panel)
Open a panel or dialog depending on dock mode setting If dock mode is true this method will emit the ...
 
This class is a composition of two QSettings instances: 
 
~QgsRendererPropertiesDialog() override
 
QVariant value(const QString &key, const QVariant &defaultValue=QVariant(), Section section=NoSection) const
Returns the value for setting key. 
 
QgsFeatureRequest::OrderBy orderBy() const
Gets the order in which features shall be processed by this renderer. 
 
void setFeatureBlendMode(QPainter::CompositionMode blendMode)
Sets the blending mode used for rendering each feature. 
 
QgsMapCanvas * mMapCanvas
 
static QIcon getThemeIcon(const QString &name)
Helper to get a theme icon. 
 
void setMapCanvas(QgsMapCanvas *canvas)
Sets the map canvas associated with the dialog. 
 
QStringList renderersList(QgsRendererAbstractMetadata::LayerTypes layerTypes=QgsRendererAbstractMetadata::All) const
Returns a list of available renderers. 
 
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 widget. 
 
Map canvas is a class for displaying all GIS data types on a canvas. 
 
virtual QgsPaintEffect * clone() const =0
Duplicates an effect by creating a deep copy of the effect. 
 
void setMessageBar(QgsMessageBar *bar)
Sets the message bar associated with the widget. 
 
void setPaintEffect(QgsPaintEffect *effect)
Sets the current paint effect for the renderer. 
 
QgsPaintEffect * paintEffect() const
Returns the current paint effect for the renderer. 
 
#define QgsDebugMsgLevel(str, level)
 
Contains settings which reflect the context in which a symbol (or renderer) widget is shown...
 
void setContext(const QgsSymbolWidgetContext &context)
Sets the context in which the dialog is shown, e.g., the associated map canvas and expression context...
 
void layerVariablesChanged()
Emitted when expression context variables on the associated vector layers have been changed...
 
QgsRendererWidget *(* QgsRendererWidgetFunc)(QgsVectorLayer *, QgsStyle *, QgsFeatureRenderer *)
 
QgsPaintEffect * mPaintEffect
 
QgsRendererAbstractMetadata * rendererMetadata(const QString &rendererName)
Returns the metadata for a specified renderer. 
 
QgsFeatureRenderer * renderer()
Returns renderer. 
 
bool orderByEnabled() const
Returns whether custom ordering will be applied before features are processed by this renderer...
 
QPainter::CompositionMode featureBlendMode() const
Returns the current blending mode for features. 
 
void setOrderBy(const QgsFeatureRequest::OrderBy &orderBy)
Define the order in which features shall be processed by this renderer. 
 
void showPanel(QgsPanelWidget *panel)
Emit when you require a panel to be show in the interface. 
 
QgsFeatureRequest::OrderBy mOrderBy
 
void keyPressEvent(QKeyEvent *event) override
 
QgsMapCanvas * mapCanvas() const
Returns the map canvas associated with the widget. 
 
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...
 
void setValue(const QString &key, const QVariant &value, QgsSettings::Section section=QgsSettings::NoSection)
Sets the value of setting key to value. 
 
void rendererChanged()
called when user changes renderer type 
 
QgsMessageBar * mMessageBar
 
QgsMessageBar * messageBar() const
Returns the message bar associated with the widget. 
 
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...
 
QgsRendererPropertiesDialog(QgsVectorLayer *layer, QgsStyle *style, bool embedded=false, QWidget *parent=nullptr)
Constructor for QgsRendererPropertiesDialog. 
 
QgsFeatureRequest::OrderBy orderBy()
Gets the order by defined in the dialog. 
 
Represents a vector layer which manages a vector based data sets. 
 
void setOrderByEnabled(bool enabled)
Sets whether custom ordering should be applied before features are processed by this renderer...
 
static QgsRendererRegistry * rendererRegistry()
Returns the application's renderer registry, used for managing vector layer renderers. 
 
virtual QgsFeatureRenderer * clone() const =0
Create a deep copy of this renderer. 
 
Represents a list of OrderByClauses, with the most important first and the least important last...
 
QPainter::CompositionMode blendMode() const
Returns the current blending mode for a layer. 
 
void setOpacity(double opacity)
Sets the opacity for the vector layer, where opacity is a value between 0 (totally transparent) and 1...