Skip to content

Commit eade998

Browse files
committed
Start on GUI for properties
1 parent 4018863 commit eade998

6 files changed

Lines changed: 1527 additions & 158 deletions

‎src/app/qgsdiagramproperties.cpp‎

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
100100
mDiagramAttributesTreeWidget->setItemDelegateForColumn( ColumnAttributeExpression, new EditBlockerDelegate( this ) );
101101
mDiagramAttributesTreeWidget->setItemDelegateForColumn( ColumnColor, new EditBlockerDelegate( this ) );
102102

103-
connect( mFixedSizeRadio, SIGNAL( toggled( bool ) ), this, SLOT( scalingTypeChanged() ) );
104-
connect( mAttributeBasedScalingRadio, SIGNAL( toggled( bool ) ), this, SLOT( scalingTypeChanged() ) );
103+
connect( mFixedSizeRadio, &QRadioButton::toggled, this, &QgsDiagramProperties::scalingTypeChanged );
104+
connect( mAttributeBasedScalingRadio, &QRadioButton::toggled, this, &QgsDiagramProperties::scalingTypeChanged );
105105

106106
mDiagramUnitComboBox->setUnits( QgsUnitTypes::RenderUnitList() << QgsUnitTypes::RenderMillimeters << QgsUnitTypes::RenderMapUnits << QgsUnitTypes::RenderPixels
107107
<< QgsUnitTypes::RenderPoints << QgsUnitTypes::RenderInches );
@@ -382,6 +382,8 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
382382
chkLineOrientationDependent->setChecked( true );
383383

384384
mShowAllCheckBox->setChecked( dls->showAllDiagrams() );
385+
386+
mProperties = dls->properties();
385387
}
386388

387389
if ( dr->diagram() )
@@ -400,11 +402,32 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
400402
mDiagramTypeComboBox->setCurrentIndex( mDiagramTypeComboBox->findData( DIAGRAM_NAME_PIE ) );
401403
}
402404
}
403-
} // if ( !dr )
405+
}
404406

405-
connect( mAddAttributeExpression, SIGNAL( clicked() ), this, SLOT( showAddAttributeExpressionDialog() ) );
406-
connect( mTransparencySlider, SIGNAL( valueChanged( int ) ), mTransparencySpinBox, SLOT( setValue( int ) ) );
407-
connect( mTransparencySpinBox, SIGNAL( valueChanged( int ) ), mTransparencySlider, SLOT( setValue( int ) ) );
407+
connect( mAddAttributeExpression, &QPushButton::clicked, this, &QgsDiagramProperties::showAddAttributeExpressionDialog );
408+
connect( mTransparencySlider, &QSlider::valueChanged, mTransparencySpinBox, &QgsSpinBox::setValue );
409+
connect( mTransparencySpinBox, static_cast<void (QgsSpinBox::*)(int)>(&QSpinBox::valueChanged), mTransparencySlider, &QSlider::setValue );
410+
411+
registerDataDefinedButton( mBackgroundColorDDBtn, QgsDiagramLayerSettings::BackgroundColor,
412+
QgsDataDefinedButtonV2::String, QgsDataDefinedButtonV2::colorAlphaDesc() );
413+
registerDataDefinedButton( mLineColorDDBtn, QgsDiagramLayerSettings::OutlineColor,
414+
QgsDataDefinedButtonV2::String, QgsDataDefinedButtonV2::colorAlphaDesc() );
415+
registerDataDefinedButton( mLineWidthDDBtn, QgsDiagramLayerSettings::OutlineWidth,
416+
QgsDataDefinedButtonV2::String, QgsDataDefinedButtonV2::doublePosDesc() );
417+
registerDataDefinedButton( mCoordXDDBtn, QgsDiagramLayerSettings::PositionX,
418+
QgsDataDefinedButtonV2::String, QgsDataDefinedButtonV2::doubleDesc() );
419+
registerDataDefinedButton( mCoordYDDBtn, QgsDiagramLayerSettings::PositionY,
420+
QgsDataDefinedButtonV2::String, QgsDataDefinedButtonV2::doubleDesc() );
421+
registerDataDefinedButton( mPriorityDDBtn, QgsDiagramLayerSettings::Priority,
422+
QgsDataDefinedButtonV2::String, QgsDataDefinedButtonV2::doubleDesc() );
423+
registerDataDefinedButton( mZOrderDDBtn, QgsDiagramLayerSettings::ZIndex,
424+
QgsDataDefinedButtonV2::String, QgsDataDefinedButtonV2::doubleDesc() );
425+
registerDataDefinedButton( mShowDiagramDDBtn, QgsDiagramLayerSettings::Show,
426+
QgsDataDefinedButtonV2::String, QgsDataDefinedButtonV2::doubleDesc() );
427+
registerDataDefinedButton( mAlwaysShowDDBtn, QgsDiagramLayerSettings::AlwaysShow,
428+
QgsDataDefinedButtonV2::String, QgsDataDefinedButtonV2::doubleDesc() );
429+
registerDataDefinedButton( mStartAngleDDBtn, QgsDiagramLayerSettings::StartAngle,
430+
QgsDataDefinedButtonV2::String, QgsDataDefinedButtonV2::doubleDesc() );
408431
}
409432

410433
QgsDiagramProperties::~QgsDiagramProperties()
@@ -414,6 +437,21 @@ QgsDiagramProperties::~QgsDiagramProperties()
414437
settings.setValue( QStringLiteral( "/Windows/Diagrams/Tab" ), mDiagramOptionsListWidget->currentRow() );
415438
}
416439

440+
void QgsDiagramProperties::registerDataDefinedButton( QgsDataDefinedButtonV2 * button, QgsDiagramLayerSettings::Property key, QgsDataDefinedButtonV2::DataType type, const QString & description )
441+
{
442+
button->init( mLayer, mProperties.property( key ), type, description );
443+
button->setProperty( "propertyKey", key );
444+
connect( button, &QgsDataDefinedButtonV2::changed, this, &QgsDiagramProperties::updateProperty );
445+
button->registerExpressionContextGenerator( this );
446+
}
447+
448+
void QgsDiagramProperties::updateProperty()
449+
{
450+
QgsDataDefinedButtonV2* button = qobject_cast<QgsDataDefinedButtonV2*>( sender() );
451+
QgsDiagramLayerSettings::Property key = static_cast< QgsDiagramLayerSettings::Property >( button->property( "propertyKey" ).toInt() );
452+
mProperties.setProperty( key, button->toProperty() );
453+
}
454+
417455
void QgsDiagramProperties::on_mDiagramTypeComboBox_currentIndexChanged( int index )
418456
{
419457
if ( index == 0 )
@@ -794,6 +832,7 @@ void QgsDiagramProperties::apply()
794832
mLayer->setDiagramRenderer( renderer );
795833

796834
QgsDiagramLayerSettings dls;
835+
dls.setProperties( mProperties );
797836
dls.setDistance( mDiagramDistanceSpinBox->value() );
798837
dls.setPriority( mPrioritySlider->value() );
799838
dls.setZIndex( mZIndexSpinBox->value() );

‎src/app/qgsdiagramproperties.h‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#define QGSDIAGRAMPROPERTIES_H
2020

2121
#include <QDialog>
22+
#include "qgsdiagramrenderer.h"
2223
#include <ui_qgsdiagrampropertiesbase.h>
2324
#include <QStyledItemDelegate>
2425
#include "qgis_app.h"
@@ -75,6 +76,8 @@ class APP_EXPORT QgsDiagramProperties : public QWidget, private Ui::QgsDiagramPr
7576

7677
QString showExpressionBuilder( const QString& initialExpression );
7778

79+
QgsPropertyCollection mProperties;
80+
7881
// Keeps track of the diagram type to properly save / restore settings when the diagram type combo box is set to no diagram.
7982
QString mDiagramType;
8083
QScopedPointer< QgsMarkerSymbol > mSizeLegendSymbol;
@@ -83,6 +86,12 @@ class APP_EXPORT QgsDiagramProperties : public QWidget, private Ui::QgsDiagramPr
8386
QgsMapCanvas *mMapCanvas;
8487

8588
QgsExpressionContext createExpressionContext() const override;
89+
90+
void registerDataDefinedButton( QgsDataDefinedButtonV2 *button, QgsDiagramLayerSettings::Property key, QgsDataDefinedButtonV2::DataType type, const QString &description );
91+
92+
private slots:
93+
94+
void updateProperty();
8695
};
8796

8897
class EditBlockerDelegate: public QStyledItemDelegate

‎src/gui/CMakeLists.txt‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ SET(QGIS_GUI_SRCS
196196
qgscursors.cpp
197197
qgscustomdrophandler.cpp
198198
qgsdatadefinedbutton.cpp
199+
qgsdatadefinedbuttonv2.cpp
199200
qgsdatumtransformdialog.cpp
200201
qgsdetaileditemdata.cpp
201202
qgsdetaileditemdelegate.cpp
@@ -366,6 +367,7 @@ SET(QGIS_GUI_MOC_HDRS
366367
qgsconfigureshortcutsdialog.h
367368
qgscredentialdialog.h
368369
qgsdatadefinedbutton.h
370+
qgsdatadefinedbuttonv2.h
369371
qgsdatumtransformdialog.h
370372
qgsdetaileditemdelegate.h
371373
qgsdetaileditemwidget.h

0 commit comments

Comments
 (0)