void QgsLayoutConfigObject::updateDataDefinedButtons() { const QList< QgsPropertyOverrideButton * > buttons = findChildren< QgsPropertyOverrideButton * >(); for ( QgsPropertyOverrideButton *button : buttons ) { button->setVectorLayer( coverageLayer() ); } }
QgsLayoutPolylineWidget::QgsLayoutPolylineWidget( QgsLayoutItemPolyline *polyline ) : QgsLayoutItemBaseWidget( nullptr, polyline ) , mPolyline( polyline ) { setupUi( this ); setPanelTitle( tr( "Polyline Properties" ) ); connect( mStrokeWidthSpinBox, static_cast < void ( QDoubleSpinBox::* )( double ) > ( &QDoubleSpinBox::valueChanged ), this, &QgsLayoutPolylineWidget::arrowStrokeWidthChanged ); connect( mArrowHeadWidthSpinBox, static_cast < void ( QDoubleSpinBox::* )( double ) > ( &QDoubleSpinBox::valueChanged ), this, &QgsLayoutPolylineWidget::arrowHeadWidthChanged ); connect( mArrowHeadFillColorButton, &QgsColorButton::colorChanged, this, &QgsLayoutPolylineWidget::arrowHeadFillColorChanged ); connect( mArrowHeadStrokeColorButton, &QgsColorButton::colorChanged, this, &QgsLayoutPolylineWidget::arrowHeadStrokeColorChanged ); connect( mRadioStartArrow, &QRadioButton::toggled, this, &QgsLayoutPolylineWidget::startArrowHeadToggled ); connect( mRadioStartNoMarker, &QRadioButton::toggled, this, &QgsLayoutPolylineWidget::startNoMarkerToggled ); connect( mRadioStartSVG, &QRadioButton::toggled, this, &QgsLayoutPolylineWidget::startSvgMarkerToggled ); connect( mRadioEndArrow, &QRadioButton::toggled, this, &QgsLayoutPolylineWidget::endArrowHeadToggled ); connect( mRadioEndNoMarker, &QRadioButton::toggled, this, &QgsLayoutPolylineWidget::endNoMarkerToggled ); connect( mRadioEndSvg, &QRadioButton::toggled, this, &QgsLayoutPolylineWidget::endSvgMarkerToggled ); connect( mStartMarkerLineEdit, &QLineEdit::textChanged, this, &QgsLayoutPolylineWidget::mStartMarkerLineEdit_textChanged ); connect( mEndMarkerLineEdit, &QLineEdit::textChanged, this, &QgsLayoutPolylineWidget::mEndMarkerLineEdit_textChanged ); connect( mStartMarkerToolButton, &QToolButton::clicked, this, &QgsLayoutPolylineWidget::mStartMarkerToolButton_clicked ); connect( mEndMarkerToolButton, &QToolButton::clicked, this, &QgsLayoutPolylineWidget::mEndMarkerToolButton_clicked ); setPanelTitle( tr( "Arrow Properties" ) ); QButtonGroup *startMarkerGroup = new QButtonGroup( this ); startMarkerGroup->addButton( mRadioStartNoMarker ); startMarkerGroup->addButton( mRadioStartArrow ); startMarkerGroup->addButton( mRadioStartSVG ); startMarkerGroup->setExclusive( true ); QButtonGroup *endMarkerGroup = new QButtonGroup( this ); endMarkerGroup->addButton( mRadioEndNoMarker ); endMarkerGroup->addButton( mRadioEndArrow ); endMarkerGroup->addButton( mRadioEndSvg ); endMarkerGroup->setExclusive( true ); //disable the svg related gui elements by default enableStartSvgInputElements( false ); enableEndSvgInputElements( false ); mArrowHeadStrokeColorButton->setColorDialogTitle( tr( "Select Arrow Head Stroke Color" ) ); mArrowHeadStrokeColorButton->setAllowOpacity( true ); mArrowHeadStrokeColorButton->setContext( QStringLiteral( "composer" ) ); mArrowHeadStrokeColorButton->setNoColorString( tr( "Transparent stroke" ) ); mArrowHeadStrokeColorButton->setShowNoColor( true ); mArrowHeadFillColorButton->setColorDialogTitle( tr( "Select Arrow Head Fill Color" ) ); mArrowHeadFillColorButton->setAllowOpacity( true ); mArrowHeadFillColorButton->setContext( QStringLiteral( "composer" ) ); mArrowHeadFillColorButton->setNoColorString( tr( "Transparent fill" ) ); mArrowHeadFillColorButton->setShowNoColor( true ); //add widget for general composer item properties mItemPropertiesWidget = new QgsLayoutItemPropertiesWidget( this, polyline ); //shapes don't use background or frame, since the symbol style is set through a QgsSymbolSelectorWidget mItemPropertiesWidget->showBackgroundGroup( false ); mItemPropertiesWidget->showFrameGroup( false ); mainLayout->addWidget( mItemPropertiesWidget ); mLineStyleButton->setSymbolType( QgsSymbol::Line ); connect( mLineStyleButton, &QgsSymbolButton::changed, this, &QgsLayoutPolylineWidget::symbolChanged ); if ( mPolyline ) { connect( mPolyline, &QgsLayoutObject::changed, this, &QgsLayoutPolylineWidget::setGuiElementValues ); mLineStyleButton->registerExpressionContextGenerator( mPolyline ); } setGuiElementValues(); mLineStyleButton->registerExpressionContextGenerator( mPolyline ); mLineStyleButton->setLayer( coverageLayer() ); if ( mPolyline->layout() ) { connect( &mPolyline->layout()->reportContext(), &QgsLayoutReportContext::layerChanged, mLineStyleButton, &QgsSymbolButton::setLayer ); } }
void QgsLayoutConfigObject::initializeDataDefinedButton( QgsPropertyOverrideButton *button, QgsLayoutObject::DataDefinedProperty key ) { button->blockSignals( true ); button->init( key, mLayoutObject->dataDefinedProperties(), QgsLayoutObject::propertyDefinitions(), coverageLayer() ); connect( button, &QgsPropertyOverrideButton::changed, this, &QgsLayoutConfigObject::updateDataDefinedProperty, Qt::UniqueConnection ); button->registerExpressionContextGenerator( mLayoutObject ); button->blockSignals( false ); }
QgsLayoutMapGridWidget::QgsLayoutMapGridWidget( QgsLayoutItemMapGrid *mapGrid, QgsLayoutItemMap *map ) : QgsLayoutItemBaseWidget( nullptr, mapGrid ) , mMap( map ) , mMapGrid( mapGrid ) { setupUi( this ); mFrameStyleComboBox->addItem( tr( "No Frame" ), QgsLayoutItemMapGrid::NoFrame ); mFrameStyleComboBox->addItem( tr( "Zebra" ), QgsLayoutItemMapGrid::Zebra ); mFrameStyleComboBox->addItem( tr( "Zebra (Nautical)" ), QgsLayoutItemMapGrid::ZebraNautical ); mFrameStyleComboBox->addItem( tr( "Interior Ticks" ), QgsLayoutItemMapGrid::InteriorTicks ); mFrameStyleComboBox->addItem( tr( "Exterior Ticks" ), QgsLayoutItemMapGrid::ExteriorTicks ); mFrameStyleComboBox->addItem( tr( "Interior and Exterior Ticks" ), QgsLayoutItemMapGrid::InteriorExteriorTicks ); mFrameStyleComboBox->addItem( tr( "Line Border" ), QgsLayoutItemMapGrid::LineBorder ); mFrameStyleComboBox->addItem( tr( "Line Border (Nautical)" ), QgsLayoutItemMapGrid::LineBorderNautical ); mGridFrameMarginSpinBox->setShowClearButton( true ); mGridFrameMarginSpinBox->setClearValue( 0 ); connect( mIntervalXSpinBox, &QgsDoubleSpinBox::editingFinished, this, &QgsLayoutMapGridWidget::mIntervalXSpinBox_editingFinished ); connect( mIntervalYSpinBox, &QgsDoubleSpinBox::editingFinished, this, &QgsLayoutMapGridWidget::mIntervalYSpinBox_editingFinished ); connect( mOffsetXSpinBox, static_cast < void ( QDoubleSpinBox::* )( double ) > ( &QDoubleSpinBox::valueChanged ), this, &QgsLayoutMapGridWidget::mOffsetXSpinBox_valueChanged ); connect( mOffsetYSpinBox, static_cast < void ( QDoubleSpinBox::* )( double ) > ( &QDoubleSpinBox::valueChanged ), this, &QgsLayoutMapGridWidget::mOffsetYSpinBox_valueChanged ); connect( mCrossWidthSpinBox, static_cast < void ( QDoubleSpinBox::* )( double ) > ( &QDoubleSpinBox::valueChanged ), this, &QgsLayoutMapGridWidget::mCrossWidthSpinBox_valueChanged ); connect( mFrameWidthSpinBox, static_cast < void ( QDoubleSpinBox::* )( double ) > ( &QDoubleSpinBox::valueChanged ), this, &QgsLayoutMapGridWidget::mFrameWidthSpinBox_valueChanged ); connect( mGridFrameMarginSpinBox, static_cast < void ( QDoubleSpinBox::* )( double ) > ( &QDoubleSpinBox::valueChanged ), this, &QgsLayoutMapGridWidget::mGridFrameMarginSpinBox_valueChanged ); connect( mFrameStyleComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mFrameStyleComboBox_currentIndexChanged ); connect( mGridFramePenSizeSpinBox, static_cast < void ( QDoubleSpinBox::* )( double ) > ( &QDoubleSpinBox::valueChanged ), this, &QgsLayoutMapGridWidget::mGridFramePenSizeSpinBox_valueChanged ); connect( mGridFramePenColorButton, &QgsColorButton::colorChanged, this, &QgsLayoutMapGridWidget::mGridFramePenColorButton_colorChanged ); connect( mGridFrameFill1ColorButton, &QgsColorButton::colorChanged, this, &QgsLayoutMapGridWidget::mGridFrameFill1ColorButton_colorChanged ); connect( mGridFrameFill2ColorButton, &QgsColorButton::colorChanged, this, &QgsLayoutMapGridWidget::mGridFrameFill2ColorButton_colorChanged ); connect( mGridTypeComboBox, static_cast<void ( QComboBox::* )( const QString & )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mGridTypeComboBox_currentIndexChanged ); connect( mMapGridCRSButton, &QPushButton::clicked, this, &QgsLayoutMapGridWidget::mMapGridCRSButton_clicked ); connect( mMapGridUnitComboBox, static_cast<void ( QComboBox::* )( const QString & )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mMapGridUnitComboBox_currentIndexChanged ); connect( mGridBlendComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mGridBlendComboBox_currentIndexChanged ); connect( mCheckGridLeftSide, &QCheckBox::toggled, this, &QgsLayoutMapGridWidget::mCheckGridLeftSide_toggled ); connect( mCheckGridRightSide, &QCheckBox::toggled, this, &QgsLayoutMapGridWidget::mCheckGridRightSide_toggled ); connect( mCheckGridTopSide, &QCheckBox::toggled, this, &QgsLayoutMapGridWidget::mCheckGridTopSide_toggled ); connect( mCheckGridBottomSide, &QCheckBox::toggled, this, &QgsLayoutMapGridWidget::mCheckGridBottomSide_toggled ); connect( mFrameDivisionsLeftComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mFrameDivisionsLeftComboBox_currentIndexChanged ); connect( mFrameDivisionsRightComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mFrameDivisionsRightComboBox_currentIndexChanged ); connect( mFrameDivisionsTopComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mFrameDivisionsTopComboBox_currentIndexChanged ); connect( mFrameDivisionsBottomComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mFrameDivisionsBottomComboBox_currentIndexChanged ); connect( mDrawAnnotationGroupBox, &QgsCollapsibleGroupBoxBasic::toggled, this, &QgsLayoutMapGridWidget::mDrawAnnotationGroupBox_toggled ); connect( mAnnotationFormatButton, &QToolButton::clicked, this, &QgsLayoutMapGridWidget::mAnnotationFormatButton_clicked ); connect( mAnnotationDisplayLeftComboBox, static_cast<void ( QComboBox::* )( const QString & )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mAnnotationDisplayLeftComboBox_currentIndexChanged ); connect( mAnnotationDisplayRightComboBox, static_cast<void ( QComboBox::* )( const QString & )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mAnnotationDisplayRightComboBox_currentIndexChanged ); connect( mAnnotationDisplayTopComboBox, static_cast<void ( QComboBox::* )( const QString & )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mAnnotationDisplayTopComboBox_currentIndexChanged ); connect( mAnnotationDisplayBottomComboBox, static_cast<void ( QComboBox::* )( const QString & )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mAnnotationDisplayBottomComboBox_currentIndexChanged ); connect( mAnnotationPositionLeftComboBox, static_cast<void ( QComboBox::* )( const QString & )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mAnnotationPositionLeftComboBox_currentIndexChanged ); connect( mAnnotationPositionRightComboBox, static_cast<void ( QComboBox::* )( const QString & )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mAnnotationPositionRightComboBox_currentIndexChanged ); connect( mAnnotationPositionTopComboBox, static_cast<void ( QComboBox::* )( const QString & )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mAnnotationPositionTopComboBox_currentIndexChanged ); connect( mAnnotationPositionBottomComboBox, static_cast<void ( QComboBox::* )( const QString & )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mAnnotationPositionBottomComboBox_currentIndexChanged ); connect( mAnnotationDirectionComboBoxLeft, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mAnnotationDirectionComboBoxLeft_currentIndexChanged ); connect( mAnnotationDirectionComboBoxRight, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mAnnotationDirectionComboBoxRight_currentIndexChanged ); connect( mAnnotationDirectionComboBoxTop, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mAnnotationDirectionComboBoxTop_currentIndexChanged ); connect( mAnnotationDirectionComboBoxBottom, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mAnnotationDirectionComboBoxBottom_currentIndexChanged ); connect( mAnnotationFormatComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutMapGridWidget::mAnnotationFormatComboBox_currentIndexChanged ); connect( mCoordinatePrecisionSpinBox, static_cast < void ( QSpinBox::* )( int ) > ( &QSpinBox::valueChanged ), this, &QgsLayoutMapGridWidget::mCoordinatePrecisionSpinBox_valueChanged ); connect( mDistanceToMapFrameSpinBox, static_cast < void ( QDoubleSpinBox::* )( double ) > ( &QDoubleSpinBox::valueChanged ), this, &QgsLayoutMapGridWidget::mDistanceToMapFrameSpinBox_valueChanged ); connect( mAnnotationFontColorButton, &QgsColorButton::colorChanged, this, &QgsLayoutMapGridWidget::mAnnotationFontColorButton_colorChanged ); setPanelTitle( tr( "Map Grid Properties" ) ); mAnnotationFontButton->setMode( QgsFontButton::ModeQFont ); blockAllSignals( true ); mGridTypeComboBox->insertItem( 0, tr( "Solid" ) ); mGridTypeComboBox->insertItem( 1, tr( "Cross" ) ); mGridTypeComboBox->insertItem( 2, tr( "Markers" ) ); mGridTypeComboBox->insertItem( 3, tr( "Frame and annotations only" ) ); insertFrameDisplayEntries( mFrameDivisionsLeftComboBox ); insertFrameDisplayEntries( mFrameDivisionsRightComboBox ); insertFrameDisplayEntries( mFrameDivisionsTopComboBox ); insertFrameDisplayEntries( mFrameDivisionsBottomComboBox ); mAnnotationFormatComboBox->addItem( tr( "Decimal" ), QgsLayoutItemMapGrid::Decimal ); mAnnotationFormatComboBox->addItem( tr( "Decimal with suffix" ), QgsLayoutItemMapGrid::DecimalWithSuffix ); mAnnotationFormatComboBox->addItem( tr( "Degree, minute" ), QgsLayoutItemMapGrid::DegreeMinuteNoSuffix ); mAnnotationFormatComboBox->addItem( tr( "Degree, minute with suffix" ), QgsLayoutItemMapGrid::DegreeMinute ); mAnnotationFormatComboBox->addItem( tr( "Degree, minute aligned" ), QgsLayoutItemMapGrid::DegreeMinutePadded ); mAnnotationFormatComboBox->addItem( tr( "Degree, minute, second" ), QgsLayoutItemMapGrid::DegreeMinuteSecondNoSuffix ); mAnnotationFormatComboBox->addItem( tr( "Degree, minute, second with suffix" ), QgsLayoutItemMapGrid::DegreeMinuteSecond ); mAnnotationFormatComboBox->addItem( tr( "Degree, minute, second aligned" ), QgsLayoutItemMapGrid::DegreeMinuteSecondPadded ); mAnnotationFormatComboBox->addItem( tr( "Custom" ), QgsLayoutItemMapGrid::CustomFormat ); mAnnotationFontColorButton->setColorDialogTitle( tr( "Select Font Color" ) ); mAnnotationFontColorButton->setAllowOpacity( true ); mAnnotationFontColorButton->setContext( QStringLiteral( "composer" ) ); insertAnnotationDisplayEntries( mAnnotationDisplayLeftComboBox ); insertAnnotationDisplayEntries( mAnnotationDisplayRightComboBox ); insertAnnotationDisplayEntries( mAnnotationDisplayTopComboBox ); insertAnnotationDisplayEntries( mAnnotationDisplayBottomComboBox ); insertAnnotationPositionEntries( mAnnotationPositionLeftComboBox ); insertAnnotationPositionEntries( mAnnotationPositionRightComboBox ); insertAnnotationPositionEntries( mAnnotationPositionTopComboBox ); insertAnnotationPositionEntries( mAnnotationPositionBottomComboBox ); insertAnnotationDirectionEntries( mAnnotationDirectionComboBoxLeft ); insertAnnotationDirectionEntries( mAnnotationDirectionComboBoxRight ); insertAnnotationDirectionEntries( mAnnotationDirectionComboBoxTop ); insertAnnotationDirectionEntries( mAnnotationDirectionComboBoxBottom ); mGridFramePenColorButton->setColorDialogTitle( tr( "Select Grid Frame Color" ) ); mGridFramePenColorButton->setAllowOpacity( true ); mGridFramePenColorButton->setContext( QStringLiteral( "composer" ) ); mGridFramePenColorButton->setNoColorString( tr( "Transparent Frame" ) ); mGridFramePenColorButton->setShowNoColor( true ); mGridFrameFill1ColorButton->setColorDialogTitle( tr( "Select Grid Frame Fill Color" ) ); mGridFrameFill1ColorButton->setAllowOpacity( true ); mGridFrameFill1ColorButton->setContext( QStringLiteral( "composer" ) ); mGridFrameFill1ColorButton->setNoColorString( tr( "Transparent Fill" ) ); mGridFrameFill1ColorButton->setShowNoColor( true ); mGridFrameFill2ColorButton->setColorDialogTitle( tr( "Select Grid Frame Fill Color" ) ); mGridFrameFill2ColorButton->setAllowOpacity( true ); mGridFrameFill2ColorButton->setContext( QStringLiteral( "composer" ) ); mGridFrameFill2ColorButton->setNoColorString( tr( "Transparent Fill" ) ); mGridFrameFill2ColorButton->setShowNoColor( true ); mGridLineStyleButton->setSymbolType( QgsSymbol::Line ); mGridMarkerStyleButton->setSymbolType( QgsSymbol::Marker ); //set initial state of frame style controls toggleFrameControls( false, false, false ); updateGuiElements(); blockAllSignals( false ); connect( mAnnotationFontButton, &QgsFontButton::changed, this, &QgsLayoutMapGridWidget::annotationFontChanged ); connect( mGridLineStyleButton, &QgsSymbolButton::changed, this, &QgsLayoutMapGridWidget::lineSymbolChanged ); connect( mGridMarkerStyleButton, &QgsSymbolButton::changed, this, &QgsLayoutMapGridWidget::markerSymbolChanged ); mGridLineStyleButton->registerExpressionContextGenerator( mMapGrid ); mGridLineStyleButton->setLayer( coverageLayer() ); mGridMarkerStyleButton->registerExpressionContextGenerator( mMapGrid ); mGridMarkerStyleButton->setLayer( coverageLayer() ); if ( mMap->layout() ) { connect( &mMap->layout()->reportContext(), &QgsLayoutReportContext::layerChanged, mGridLineStyleButton, &QgsSymbolButton::setLayer ); connect( &mMap->layout()->reportContext(), &QgsLayoutReportContext::layerChanged, mGridMarkerStyleButton, &QgsSymbolButton::setLayer ); } }