18#ifndef QGSLAYOUTLEGENDWIDGET_H
19#define QGSLAYOUTLEGENDWIDGET_H
23#include "ui_qgslayoutlegendmapfilteringwidgetbase.h"
24#include "ui_qgslayoutlegendwidgetbase.h"
30#include <QItemDelegate>
35class QgsLayoutLegendMapFilteringWidget;
81 explicit QgsLayoutLegendWidget( QgsLayoutItemLegend *legend, QgsMapCanvas *mapCanvas );
82 void setMasterLayout( QgsMasterLayoutInterface *masterLayout )
override;
83 void setDesignerInterface( QgsLayoutDesignerInterface *iface )
override;
86 QgsLayoutItemLegend *legend() {
return mLegend; }
87 void setReportTypeString(
const QString &
string )
override;
88 QgsExpressionContext createExpressionContext()
const override;
91 void resetLayerNodeToDefaults();
97 void setCurrentNodeStyleFromAction();
100 bool setNewItem( QgsLayoutItem *item )
override;
104 void mWrapCharLineEdit_textChanged(
const QString &text );
105 void mTitleLineEdit_textChanged(
const QString &text );
106 void mColumnCountSpinBox_valueChanged(
int c );
107 void mSplitLayerCheckBox_toggled(
bool checked );
108 void mEqualColumnWidthCheckBox_toggled(
bool checked );
109 void mSymbolWidthSpinBox_valueChanged(
double d );
110 void mSymbolHeightSpinBox_valueChanged(
double d );
111 void mMaxSymbolSizeSpinBox_valueChanged(
double d );
112 void mMinSymbolSizeSpinBox_valueChanged(
double d );
113 void mWmsLegendWidthSpinBox_valueChanged(
double d );
114 void mWmsLegendHeightSpinBox_valueChanged(
double d );
115 void mTitleSpaceBottomSpinBox_valueChanged(
double d );
116 void mGroupSpaceSpinBox_valueChanged(
double d );
117 void mGroupIndentSpinBox_valueChanged(
double d );
118 void mSubgroupIndentSpinBox_valueChanged(
double d );
119 void mLayerSpaceSpinBox_valueChanged(
double d );
120 void mSymbolSpaceSpinBox_valueChanged(
double d );
121 void mIconLabelSpaceSpinBox_valueChanged(
double d );
122 void mBoxSpaceSpinBox_valueChanged(
double d );
123 void mColumnSpaceSpinBox_valueChanged(
double d );
124 void maxWidthChanged(
double width );
125 void syncModeChanged(
bool userTriggered );
126 void composerMapChanged( QgsLayoutItem *item );
127 void mCheckboxResizeContents_toggled(
bool checked );
129 void mRasterStrokeGroupBox_toggled(
bool state );
130 void mRasterStrokeWidthSpinBox_valueChanged(
double d );
131 void mRasterStrokeColorButton_colorChanged(
const QColor &newColor );
134 void mMoveDownToolButton_clicked();
135 void mMoveUpToolButton_clicked();
136 void mRemoveToolButton_clicked();
137 void mAddToolButton_clicked();
138 void mEditPushButton_clicked();
139 void mCountToolButton_clicked(
bool checked );
140 void mExpressionFilterButton_toggled(
bool checked );
141 void mFilterByMapCheckBox_toggled(
bool checked );
143 void mAddGroupToolButton_clicked();
144 void mLayerExpressionButton_clicked();
146 void mFilterLegendByAtlasCheckBox_toggled(
bool checked );
148 void selectedChanged(
const QModelIndex ¤t,
const QModelIndex &previous );
150 void setLegendMapViewData();
152 void expandLegendTree();
153 void collapseLegendTree();
157 void setGuiElements();
160 void updateFilterLegendByAtlasButton();
162 void mItemTreeView_doubleClicked(
const QModelIndex &index );
163 void titleFontChanged();
164 void groupFontChanged();
165 void layerFontChanged();
166 void itemFontChanged();
168 void titleAlignmentChanged();
169 void groupAlignmentChanged();
170 void subgroupAlignmentChanged();
171 void itemAlignmentChanged();
172 void arrangementChanged();
174 void spaceBelowSubGroupHeadingChanged(
double space );
175 void spaceBelowGroupHeadingChanged(
double space );
177 void spaceGroupSideChanged(
double space );
178 void spaceSubGroupSideChanged(
double space );
180 void spaceSymbolSideChanged(
double space );
183 QgsLayoutLegendWidget() =
delete;
184 void blockAllSignals(
bool b );
186 QPointer<QgsLayoutItemLegend> mLegend;
187 QgsMapCanvas *mMapCanvas =
nullptr;
188 QgsLayoutItemPropertiesWidget *mItemPropertiesWidget =
nullptr;
190 QgsLegendLayerTreeProxyModel *mLegendProxyModel =
nullptr;
192 QPointer<QgsLayoutLegendMapFilteringWidget> mMapFilteringWidget;
206 QgsLayoutLegendMenuProvider( QgsLayerTreeView *view, QgsLayoutLegendWidget *w );
208 QMenu *createContextMenu()
override;
211 QgsLayerTreeView *mView =
nullptr;
212 QgsLayoutLegendWidget *mWidget =
nullptr;
215#include "ui_qgslayoutlegendnodewidgetbase.h"
224class GUI_EXPORT QgsLayoutLegendNodeWidget :
public QgsPanelWidget,
private Ui::QgsLayoutLegendNodeWidgetBase
229 QgsLayoutLegendNodeWidget( QgsLayoutItemLegend *legend, QgsLayerTreeNode *node, QgsLayerTreeModelLegendNode *legendNode,
int originalLegendNodeIndex, QWidget *parent =
nullptr );
231 void setDockMode(
bool dockMode )
override;
237 void insertExpression();
238 void sizeChanged(
double );
239 void customSymbolChanged();
240 void colorRampLegendChanged();
241 void columnBreakToggled(
bool checked );
242 void columnSplitChanged();
245 QgsLayoutItemLegend *mLegend =
nullptr;
246 QgsLayerTreeNode *mNode =
nullptr;
247 QgsLayerTreeLayer *mLayer =
nullptr;
248 QgsLayerTreeModelLegendNode *mLegendNode =
nullptr;
249 int mOriginalLegendNodeIndex = -1;
260class GUI_EXPORT QgsLayoutLegendMapFilteringModel :
public QSortFilterProxyModel
266 explicit QgsLayoutLegendMapFilteringModel( QgsLayoutItemLegend *legend, QgsLayoutModel *layoutModel, QObject *parent =
nullptr );
268 int columnCount(
const QModelIndex &parent = QModelIndex() )
const override;
269 QVariant data(
const QModelIndex &index,
int role )
const override;
270 bool setData(
const QModelIndex &index,
const QVariant &value,
int role )
override;
271 Qt::ItemFlags flags(
const QModelIndex &index )
const override;
274 bool filterAcceptsRow(
int source_row,
const QModelIndex &source_parent )
const override;
277 QgsLayoutModel *mLayoutModel =
nullptr;
278 QPointer<QgsLayoutItemLegend> mLegendItem;
288class GUI_EXPORT QgsLayoutLegendMapFilteringWidget :
public QgsLayoutItemBaseWidget,
private Ui::QgsLayoutLegendMapFilteringWidgetBase
294 explicit QgsLayoutLegendMapFilteringWidget( QgsLayoutItemLegend *legend );
297 bool setNewItem( QgsLayoutItem *item )
final;
300 void updateGuiElements();
303 QPointer<QgsLayoutItemLegend> mLegendItem;
304 bool mBlockUpdates =
false;
LegendSyncMode
Legend synchronization mode.
@ AllProjectLayers
Synchronize to all project layers.
Abstract interface for generating an expression context.
Base class for nodes in a layer tree.
A proxy model for QgsLayerTreeModel, supporting private layers and text filtering.
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override
virtual bool nodeShown(QgsLayerTreeNode *node) const
Returns true if the specified node should be shown.
A layout item subclass for map legends.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c