QGIS/python/gui/auto_generated/symbology/qgsrulebasedrendererwidget.sip.in
Nyall Dawson f3f4c17c5f Use a safer approach to update renderers after symbol levels are changed
Instead of directly changing the renderer in place in the symbol levels
widget, we delegate responsibility for handling the changes to symbol
levels to the parent QgsRendererWidget subclass. This allows us to
implement different logic in the various subclasses which correctly
handle how that particular widget subclass should update any internal
symbol references and ultimately update the renderer.

Fixes instability and crashes after editing symbol levels.

Fixes #42671
2021-05-26 11:50:44 +10:00

269 lines
7.0 KiB
Plaintext

/************************************************************************
* This file has been generated automatically from *
* *
* src/gui/symbology/qgsrulebasedrendererwidget.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/
class QgsRuleBasedRendererModel : QAbstractItemModel
{
%Docstring(signature="appended")
Tree model for the rules:
(invalid) == root node
+--- top level rule
+--- top level rule
%End
%TypeHeaderCode
#include "qgsrulebasedrendererwidget.h"
%End
public:
QgsRuleBasedRendererModel( QgsRuleBasedRenderer *renderer, QObject *parent );
%Docstring
Constructor for QgsRuleBasedRendererModel, for the specified ``renderer``.
%End
virtual Qt::ItemFlags flags( const QModelIndex &index ) const;
virtual QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const;
virtual QVariant headerData( int section, Qt::Orientation orientation,
int role = Qt::DisplayRole ) const;
virtual int rowCount( const QModelIndex &parent = QModelIndex() ) const;
virtual int columnCount( const QModelIndex & = QModelIndex() ) const;
virtual QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const;
virtual QModelIndex parent( const QModelIndex &index ) const;
virtual bool setData( const QModelIndex &index, const QVariant &value, int role = Qt::EditRole );
virtual Qt::DropActions supportedDropActions() const;
virtual QStringList mimeTypes() const;
virtual QMimeData *mimeData( const QModelIndexList &indexes ) const;
virtual bool dropMimeData( const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent );
virtual bool removeRows( int row, int count, const QModelIndex &parent = QModelIndex() );
QgsRuleBasedRenderer::Rule *ruleForIndex( const QModelIndex &index ) const;
void insertRule( const QModelIndex &parent, int before, QgsRuleBasedRenderer::Rule *newrule );
void updateRule( const QModelIndex &parent, int row );
void updateRule( const QModelIndex &index );
void removeRule( const QModelIndex &index );
void setSymbol( const QModelIndex &index, QgsSymbol *symbol /Transfer/ );
%Docstring
Sets the ``symbol`` for the rule at the specified ``index``. Ownership of the symbols is
transferred to the renderer.
.. versionadded:: 3.10
%End
void willAddRules( const QModelIndex &parent, int count ); // call beginInsertRows
void finishedAddingRules(); // call endInsertRows
void clearFeatureCounts();
protected:
};
class QgsRuleBasedRendererWidget : QgsRendererWidget
{
%TypeHeaderCode
#include "qgsrulebasedrendererwidget.h"
%End
public:
static QgsRendererWidget *create( QgsVectorLayer *layer, QgsStyle *style, QgsFeatureRenderer *renderer ) /Factory/;
QgsRuleBasedRendererWidget( QgsVectorLayer *layer, QgsStyle *style, QgsFeatureRenderer *renderer );
~QgsRuleBasedRendererWidget();
virtual QgsFeatureRenderer *renderer();
virtual void setDockMode( bool dockMode );
public slots:
void addRule();
void editRule();
void editRule( const QModelIndex &index );
void removeRule();
void countFeatures();
void clearFeatureCounts();
void refineRuleScales();
void refineRuleCategories();
void refineRuleRanges();
void setRenderingOrder();
void currentRuleChanged( const QModelIndex &current = QModelIndex(), const QModelIndex &previous = QModelIndex() );
void selectedRulesChanged();
void saveSectionWidth( int section, int oldSize, int newSize );
void restoreSectionWidths();
protected:
void refineRule( int type );
void refineRuleCategoriesGui();
%Docstring
Opens the dialog for refining a rule using categories
%End
void refineRuleRangesGui();
%Docstring
Opens the dialog for refining a rule using ranges
%End
void refineRuleScalesGui( const QModelIndexList &index );
virtual void setSymbolLevels( const QList< QgsLegendSymbolItem > &levels, bool enabled );
QgsRuleBasedRenderer::Rule *currentRule();
virtual QList<QgsSymbol *> selectedSymbols();
QgsRuleBasedRenderer::RuleList selectedRules();
virtual void refreshSymbolView();
virtual void keyPressEvent( QKeyEvent *event );
protected slots:
virtual void copy();
virtual void paste();
virtual void pasteSymbolToSelection();
};
class QgsRendererRulePropsWidget : QgsPanelWidget
{
%TypeHeaderCode
#include "qgsrulebasedrendererwidget.h"
%End
public:
QgsRendererRulePropsWidget( QgsRuleBasedRenderer::Rule *rule,
QgsVectorLayer *layer,
QgsStyle *style,
QWidget *parent /TransferThis/ = 0,
const QgsSymbolWidgetContext &context = QgsSymbolWidgetContext() );
%Docstring
Widget to edit the details of a rule based renderer rule.
:param rule: The rule to edit.
:param layer: The layer used to pull layer related information.
:param style: The active QGIS style.
:param parent: The parent widget.
:param context: the symbol widget context
%End
QgsRuleBasedRenderer::Rule *rule();
%Docstring
Returns the current set rule.
:return: The current rule.
%End
public slots:
void testFilter();
%Docstring
Test the filter that is set in the widget
%End
void buildExpression();
%Docstring
Open the expression builder widget to check if the
%End
void apply();
%Docstring
Apply any changes from the widget to the set rule.
%End
virtual void setDockMode( bool dockMode );
%Docstring
Set the widget in dock mode.
:param dockMode: ``True`` for dock mode.
%End
protected:
};
class QgsRendererRulePropsDialog : QDialog
{
%TypeHeaderCode
#include "qgsrulebasedrendererwidget.h"
%End
public:
QgsRendererRulePropsDialog( QgsRuleBasedRenderer::Rule *rule, QgsVectorLayer *layer, QgsStyle *style, QWidget *parent /TransferThis/ = 0, const QgsSymbolWidgetContext &context = QgsSymbolWidgetContext() );
%Docstring
Constructor for QgsRendererRulePropsDialog
:param rule: associated rule based renderer rule
:param layer: source vector layer
:param style: style collection
:param parent: parent widget
:param context: symbol widget context
%End
QgsRuleBasedRenderer::Rule *rule();
public slots:
void testFilter();
void buildExpression();
virtual void accept();
};
/************************************************************************
* This file has been generated automatically from *
* *
* src/gui/symbology/qgsrulebasedrendererwidget.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/