18#ifndef QGSLAYOUTLEGENDWIDGET_H
19#define QGSLAYOUTLEGENDWIDGET_H
24#include "ui_qgslayoutlegendmapfilteringwidgetbase.h"
25#include "ui_qgslayoutlegendwidgetbase.h"
31#include <QItemDelegate>
34class QgsLayoutLegendMapFilteringWidget;
58 void setIsDefaultLegend(
bool isDefault );
64 bool mIsDefaultLegend =
true;
81 explicit QgsLayoutLegendWidget( QgsLayoutItemLegend *legend, QgsMapCanvas *mapCanvas );
82 void setMasterLayout( QgsMasterLayoutInterface *masterLayout )
override;
83 void setDesignerInterface( QgsLayoutDesignerInterface *iface )
override;
88 QgsLayoutItemLegend *legend() {
return mLegend; }
89 void setReportTypeString(
const QString &
string )
override;
90 QgsExpressionContext createExpressionContext()
const override;
93 void resetLayerNodeToDefaults();
99 void setCurrentNodeStyleFromAction();
102 bool setNewItem( QgsLayoutItem *item )
override;
106 void mWrapCharLineEdit_textChanged(
const QString &text );
107 void mTitleLineEdit_textChanged(
const QString &text );
108 void mColumnCountSpinBox_valueChanged(
int c );
109 void mSplitLayerCheckBox_toggled(
bool checked );
110 void mEqualColumnWidthCheckBox_toggled(
bool checked );
111 void mSymbolWidthSpinBox_valueChanged(
double d );
112 void mSymbolHeightSpinBox_valueChanged(
double d );
113 void mMaxSymbolSizeSpinBox_valueChanged(
double d );
114 void mMinSymbolSizeSpinBox_valueChanged(
double d );
115 void mWmsLegendWidthSpinBox_valueChanged(
double d );
116 void mWmsLegendHeightSpinBox_valueChanged(
double d );
117 void mTitleSpaceBottomSpinBox_valueChanged(
double d );
118 void mGroupSpaceSpinBox_valueChanged(
double d );
119 void mGroupIndentSpinBox_valueChanged(
double d );
120 void mSubgroupIndentSpinBox_valueChanged(
double d );
121 void mLayerSpaceSpinBox_valueChanged(
double d );
122 void mSymbolSpaceSpinBox_valueChanged(
double d );
123 void mIconLabelSpaceSpinBox_valueChanged(
double d );
124 void mBoxSpaceSpinBox_valueChanged(
double d );
125 void mColumnSpaceSpinBox_valueChanged(
double d );
126 void maxWidthChanged(
double width );
127 void mCheckBoxAutoUpdate_stateChanged(
int state,
bool userTriggered =
true );
128 void composerMapChanged( QgsLayoutItem *item );
129 void mCheckboxResizeContents_toggled(
bool checked );
131 void mRasterStrokeGroupBox_toggled(
bool state );
132 void mRasterStrokeWidthSpinBox_valueChanged(
double d );
133 void mRasterStrokeColorButton_colorChanged(
const QColor &newColor );
136 void mMoveDownToolButton_clicked();
137 void mMoveUpToolButton_clicked();
138 void mRemoveToolButton_clicked();
139 void mAddToolButton_clicked();
140 void mEditPushButton_clicked();
141 void mCountToolButton_clicked(
bool checked );
142 void mExpressionFilterButton_toggled(
bool checked );
143 void mFilterByMapCheckBox_toggled(
bool checked );
144 void mUpdateAllPushButton_clicked();
145 void mAddGroupToolButton_clicked();
146 void mLayerExpressionButton_clicked();
148 void mFilterLegendByAtlasCheckBox_toggled(
bool checked );
150 void selectedChanged(
const QModelIndex ¤t,
const QModelIndex &previous );
152 void setLegendMapViewData();
154 void expandLegendTree();
155 void collapseLegendTree();
159 void setGuiElements();
162 void updateFilterLegendByAtlasButton();
164 void mItemTreeView_doubleClicked(
const QModelIndex &index );
165 void titleFontChanged();
166 void groupFontChanged();
167 void layerFontChanged();
168 void itemFontChanged();
170 void titleAlignmentChanged();
171 void groupAlignmentChanged();
172 void subgroupAlignmentChanged();
173 void itemAlignmentChanged();
174 void arrangementChanged();
176 void spaceBelowSubGroupHeadingChanged(
double space );
177 void spaceBelowGroupHeadingChanged(
double space );
179 void spaceGroupSideChanged(
double space );
180 void spaceSubGroupSideChanged(
double space );
182 void spaceSymbolSideChanged(
double space );
185 QgsLayoutLegendWidget() =
delete;
186 void blockAllSignals(
bool b );
188 QPointer<QgsLayoutItemLegend> mLegend;
189 QgsMapCanvas *mMapCanvas =
nullptr;
190 QgsLayoutItemPropertiesWidget *mItemPropertiesWidget =
nullptr;
192 QgsLegendLayerTreeProxyModel *mLegendProxyModel =
nullptr;
194 QPointer<QgsLayoutLegendMapFilteringWidget> mMapFilteringWidget;
208 QgsLayoutLegendMenuProvider( QgsLayerTreeView *view, QgsLayoutLegendWidget *w );
210 QMenu *createContextMenu()
override;
213 QgsLayerTreeView *mView =
nullptr;
214 QgsLayoutLegendWidget *mWidget =
nullptr;
217#include "ui_qgslayoutlegendnodewidgetbase.h"
226class GUI_EXPORT QgsLayoutLegendNodeWidget :
public QgsPanelWidget,
private Ui::QgsLayoutLegendNodeWidgetBase
231 QgsLayoutLegendNodeWidget( QgsLayoutItemLegend *legend, QgsLayerTreeNode *node, QgsLayerTreeModelLegendNode *legendNode,
int originalLegendNodeIndex, QWidget *parent =
nullptr );
233 void setDockMode(
bool dockMode )
override;
239 void insertExpression();
240 void sizeChanged(
double );
241 void customSymbolChanged();
242 void colorRampLegendChanged();
243 void columnBreakToggled(
bool checked );
244 void columnSplitChanged();
247 QgsLayoutItemLegend *mLegend =
nullptr;
248 QgsLayerTreeNode *mNode =
nullptr;
249 QgsLayerTreeLayer *mLayer =
nullptr;
250 QgsLayerTreeModelLegendNode *mLegendNode =
nullptr;
251 int mOriginalLegendNodeIndex = -1;
262class GUI_EXPORT QgsLayoutLegendMapFilteringModel :
public QSortFilterProxyModel
268 explicit QgsLayoutLegendMapFilteringModel( QgsLayoutItemLegend *legend, QgsLayoutModel *layoutModel, QObject *parent =
nullptr );
270 int columnCount(
const QModelIndex &parent = QModelIndex() )
const override;
271 QVariant data(
const QModelIndex &index,
int role )
const override;
272 bool setData(
const QModelIndex &index,
const QVariant &value,
int role )
override;
273 Qt::ItemFlags flags(
const QModelIndex &index )
const override;
276 bool filterAcceptsRow(
int source_row,
const QModelIndex &source_parent )
const override;
279 QgsLayoutModel *mLayoutModel =
nullptr;
280 QPointer<QgsLayoutItemLegend> mLegendItem;
290class GUI_EXPORT QgsLayoutLegendMapFilteringWidget :
public QgsLayoutItemBaseWidget,
private Ui::QgsLayoutLegendMapFilteringWidgetBase
296 explicit QgsLayoutLegendMapFilteringWidget( QgsLayoutItemLegend *legend );
299 bool setNewItem( QgsLayoutItem *item )
final;
302 void updateGuiElements();
305 QPointer<QgsLayoutItemLegend> mLegendItem;
306 bool mBlockUpdates =
false;
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