Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Address PR comments
  • Loading branch information
elpaso authored and nyalldawson committed May 25, 2023
1 parent b14482f commit b45da52
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 10 deletions.
32 changes: 23 additions & 9 deletions src/gui/qgsadvanceddigitizingdockwidget.cpp
Expand Up @@ -36,9 +36,15 @@
#include "qgsmapmouseevent.h"
#include "qgsmeshlayer.h"
#include "qgsunittypes.h"
#include "qgssettingsentryimpl.h"
#include "qgssettingstree.h"

#include <QActionGroup>


const QgsSettingsEntryBool *QgsAdvancedDigitizingDockWidget::settingsCadSnappingPriorityPrioritizeFeature = new QgsSettingsEntryBool( QStringLiteral( "cad-snapping-prioritize-feature" ), QgsSettingsTree::sTreeDigitizing, false, tr( "Determines if snapping to features has piority over snapping to common angles." ) ) ;


QgsAdvancedDigitizingDockWidget::QgsAdvancedDigitizingDockWidget( QgsMapCanvas *canvas, QWidget *parent )
: QgsDockWidget( parent )
, mMapCanvas( canvas )
Expand Down Expand Up @@ -145,18 +151,26 @@ QgsAdvancedDigitizingDockWidget::QgsAdvancedDigitizingDockWidget( QgsMapCanvas *
}

{
QAction *action = new QAction( tr( "Snapping to features has priority over common angles" ), mCommonAngleActionsMenu );
action->setCheckable( true );
mCommonAngleActionsMenu->addAction( action );
connect( action, &QAction::changed, this, [ = ]
QMenu *snappingPriorityMenu = new QMenu( tr( "Snapping Priority" ), mCommonAngleActionsMenu );
QActionGroup *snappingPriorityActionGroup = new QActionGroup( snappingPriorityMenu );
QAction *featuresAction = new QAction( tr( "Prioritize Snapping to Features" ), snappingPriorityActionGroup );
featuresAction->setCheckable( true );
QAction *anglesAction = new QAction( tr( "Prioritize Snapping to Angle" ), snappingPriorityActionGroup );
anglesAction->setCheckable( true );
snappingPriorityActionGroup->addAction( featuresAction );
snappingPriorityActionGroup->addAction( anglesAction );
snappingPriorityMenu->addAction( anglesAction );
snappingPriorityMenu->addAction( featuresAction );
connect( anglesAction, &QAction::changed, this, [ = ]
{
mSnappingToFeaturesOverridesCommonAngle = action->isChecked();
QgsSettings().setValue( QStringLiteral( "/Cad/SnappingToFeaturesOverridesCommonAngle" ), action->isChecked() );
mSnappingPrioritizeFeatures = featuresAction->isChecked();
settingsCadSnappingPriorityPrioritizeFeature->setValue( featuresAction->isChecked() );
} );
action->setChecked( QgsSettings().value( QStringLiteral( "/Cad/SnappingToFeaturesOverridesCommonAngle" ), false ).toBool() );
featuresAction->setChecked( settingsCadSnappingPriorityPrioritizeFeature->value( ) );
anglesAction->setChecked( ! featuresAction->isChecked() );
mCommonAngleActionsMenu->addMenu( snappingPriorityMenu );
}

mCommonAngleActionsMenu->addSeparator();

for ( QList< QPair<double, QString > >::const_iterator it = commonAngles.constBegin(); it != commonAngles.constEnd(); ++it )
{
Expand Down Expand Up @@ -1195,7 +1209,7 @@ bool QgsAdvancedDigitizingDockWidget::applyConstraints( QgsMapMouseEvent *e )
context.mConstraint = _constraint( mMConstraint.get() );
context.distanceConstraint = _constraint( mDistanceConstraint.get() );
context.angleConstraint = _constraint( mAngleConstraint.get() );
context.snappingToFeaturesOverridesCommonAngle = mSnappingToFeaturesOverridesCommonAngle;
context.snappingToFeaturesOverridesCommonAngle = mSnappingPrioritizeFeatures;

context.lineExtensionConstraint = _constraint( mLineExtensionConstraint.get() );
context.xyVertexConstraint = _constraint( mXyVertexConstraint.get() );
Expand Down
4 changes: 3 additions & 1 deletion src/gui/qgsadvanceddigitizingdockwidget.h
Expand Up @@ -1052,7 +1052,7 @@ class GUI_EXPORT QgsAdvancedDigitizingDockWidget : public QgsDockWidget, private
double mCommonAngleConstraint; // if 0: do not snap to common angles

//! Flag that controls whether snapping to features has priority over common angle
bool mSnappingToFeaturesOverridesCommonAngle = false;
bool mSnappingPrioritizeFeatures = false;

// point list and current snap point / segment
QList<QgsPoint> mCadPointList;
Expand Down Expand Up @@ -1088,6 +1088,8 @@ class GUI_EXPORT QgsAdvancedDigitizingDockWidget : public QgsDockWidget, private
QMenu *mCommonAngleActionsMenu = nullptr;
QMenu *mFloaterActionsMenu = nullptr;

static const QgsSettingsEntryBool *settingsCadSnappingPriorityPrioritizeFeature;

friend class TestQgsAdvancedDigitizing;
friend class TestQgsAdvancedDigitizingDockWidget;
};
Expand Down

0 comments on commit b45da52

Please sign in to comment.