18#ifndef QGSLAYOUTLEGENDWIDGET_H
19#define QGSLAYOUTLEGENDWIDGET_H
24#include "ui_qgslayoutlegendmapfilteringwidgetbase.h"
25#include "ui_qgslayoutlegendwidgetbase.h"
31#include <QItemDelegate>
34class QgsLayoutLegendMapFilteringWidget;
80 explicit QgsLayoutLegendWidget( QgsLayoutItemLegend *legend, QgsMapCanvas *mapCanvas );
81 void setMasterLayout( QgsMasterLayoutInterface *masterLayout )
override;
82 void setDesignerInterface( QgsLayoutDesignerInterface *iface )
override;
85 QgsLayoutItemLegend *legend() {
return mLegend; }
86 void setReportTypeString(
const QString &
string )
override;
87 QgsExpressionContext createExpressionContext()
const override;
90 void resetLayerNodeToDefaults();
96 void setCurrentNodeStyleFromAction();
99 bool setNewItem( QgsLayoutItem *item )
override;
103 void mWrapCharLineEdit_textChanged(
const QString &text );
104 void mTitleLineEdit_textChanged(
const QString &text );
105 void mColumnCountSpinBox_valueChanged(
int c );
106 void mSplitLayerCheckBox_toggled(
bool checked );
107 void mEqualColumnWidthCheckBox_toggled(
bool checked );
108 void mSymbolWidthSpinBox_valueChanged(
double d );
109 void mSymbolHeightSpinBox_valueChanged(
double d );
110 void mMaxSymbolSizeSpinBox_valueChanged(
double d );
111 void mMinSymbolSizeSpinBox_valueChanged(
double d );
112 void mWmsLegendWidthSpinBox_valueChanged(
double d );
113 void mWmsLegendHeightSpinBox_valueChanged(
double d );
114 void mTitleSpaceBottomSpinBox_valueChanged(
double d );
115 void mGroupSpaceSpinBox_valueChanged(
double d );
116 void mGroupIndentSpinBox_valueChanged(
double d );
117 void mSubgroupIndentSpinBox_valueChanged(
double d );
118 void mLayerSpaceSpinBox_valueChanged(
double d );
119 void mSymbolSpaceSpinBox_valueChanged(
double d );
120 void mIconLabelSpaceSpinBox_valueChanged(
double d );
121 void mBoxSpaceSpinBox_valueChanged(
double d );
122 void mColumnSpaceSpinBox_valueChanged(
double d );
123 void maxWidthChanged(
double width );
124 void syncModeChanged(
bool userTriggered );
125 void composerMapChanged( QgsLayoutItem *item );
126 void mCheckboxResizeContents_toggled(
bool checked );
128 void mRasterStrokeGroupBox_toggled(
bool state );
129 void mRasterStrokeWidthSpinBox_valueChanged(
double d );
130 void mRasterStrokeColorButton_colorChanged(
const QColor &newColor );
133 void mMoveDownToolButton_clicked();
134 void mMoveUpToolButton_clicked();
135 void mRemoveToolButton_clicked();
136 void mAddToolButton_clicked();
137 void mEditPushButton_clicked();
138 void mCountToolButton_clicked(
bool checked );
139 void mExpressionFilterButton_toggled(
bool checked );
140 void mFilterByMapCheckBox_toggled(
bool checked );
142 void mAddGroupToolButton_clicked();
143 void mLayerExpressionButton_clicked();
145 void mFilterLegendByAtlasCheckBox_toggled(
bool checked );
147 void selectedChanged(
const QModelIndex ¤t,
const QModelIndex &previous );
149 void setLegendMapViewData();
151 void expandLegendTree();
152 void collapseLegendTree();
156 void setGuiElements();
159 void updateFilterLegendByAtlasButton();
161 void mItemTreeView_doubleClicked(
const QModelIndex &index );
162 void titleFontChanged();
163 void groupFontChanged();
164 void layerFontChanged();
165 void itemFontChanged();
167 void titleAlignmentChanged();
168 void groupAlignmentChanged();
169 void subgroupAlignmentChanged();
170 void itemAlignmentChanged();
171 void arrangementChanged();
173 void spaceBelowSubGroupHeadingChanged(
double space );
174 void spaceBelowGroupHeadingChanged(
double space );
176 void spaceGroupSideChanged(
double space );
177 void spaceSubGroupSideChanged(
double space );
179 void spaceSymbolSideChanged(
double space );
182 QgsLayoutLegendWidget() =
delete;
183 void blockAllSignals(
bool b );
185 QPointer<QgsLayoutItemLegend> mLegend;
186 QgsMapCanvas *mMapCanvas =
nullptr;
187 QgsLayoutItemPropertiesWidget *mItemPropertiesWidget =
nullptr;
189 QgsLegendLayerTreeProxyModel *mLegendProxyModel =
nullptr;
191 QPointer<QgsLayoutLegendMapFilteringWidget> mMapFilteringWidget;
205 QgsLayoutLegendMenuProvider( QgsLayerTreeView *view, QgsLayoutLegendWidget *w );
207 QMenu *createContextMenu()
override;
210 QgsLayerTreeView *mView =
nullptr;
211 QgsLayoutLegendWidget *mWidget =
nullptr;
214#include "ui_qgslayoutlegendnodewidgetbase.h"
223class GUI_EXPORT QgsLayoutLegendNodeWidget :
public QgsPanelWidget,
private Ui::QgsLayoutLegendNodeWidgetBase
228 QgsLayoutLegendNodeWidget( QgsLayoutItemLegend *legend, QgsLayerTreeNode *node, QgsLayerTreeModelLegendNode *legendNode,
int originalLegendNodeIndex, QWidget *parent =
nullptr );
230 void setDockMode(
bool dockMode )
override;
236 void insertExpression();
237 void sizeChanged(
double );
238 void customSymbolChanged();
239 void colorRampLegendChanged();
240 void columnBreakToggled(
bool checked );
241 void columnSplitChanged();
244 QgsLayoutItemLegend *mLegend =
nullptr;
245 QgsLayerTreeNode *mNode =
nullptr;
246 QgsLayerTreeLayer *mLayer =
nullptr;
247 QgsLayerTreeModelLegendNode *mLegendNode =
nullptr;
248 int mOriginalLegendNodeIndex = -1;
259class GUI_EXPORT QgsLayoutLegendMapFilteringModel :
public QSortFilterProxyModel
265 explicit QgsLayoutLegendMapFilteringModel( QgsLayoutItemLegend *legend, QgsLayoutModel *layoutModel, QObject *parent =
nullptr );
267 int columnCount(
const QModelIndex &parent = QModelIndex() )
const override;
268 QVariant data(
const QModelIndex &index,
int role )
const override;
269 bool setData(
const QModelIndex &index,
const QVariant &value,
int role )
override;
270 Qt::ItemFlags flags(
const QModelIndex &index )
const override;
273 bool filterAcceptsRow(
int source_row,
const QModelIndex &source_parent )
const override;
276 QgsLayoutModel *mLayoutModel =
nullptr;
277 QPointer<QgsLayoutItemLegend> mLegendItem;
287class GUI_EXPORT QgsLayoutLegendMapFilteringWidget :
public QgsLayoutItemBaseWidget,
private Ui::QgsLayoutLegendMapFilteringWidgetBase
293 explicit QgsLayoutLegendMapFilteringWidget( QgsLayoutItemLegend *legend );
296 bool setNewItem( QgsLayoutItem *item )
final;
299 void updateGuiElements();
302 QPointer<QgsLayoutItemLegend> mLegendItem;
303 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