53 QWidget *toolWidget =
new QWidget();
55 QGridLayout *layout =
new QGridLayout( toolWidget );
56 layout->setContentsMargins( 0, 0, 0, 0 );
57 toolWidget->setLayout( layout );
59 QLabel *label =
new QLabel( tr(
"Circle #1" ), toolWidget );
60 layout->addWidget( label, 0, 0, 1, 3 );
62 mCircle1Digitize =
new QToolButton( toolWidget );
63 mCircle1Digitize->setCheckable(
true );
64 mCircle1Digitize->setChecked(
false );
66 connect( mCircle1Digitize, &QAbstractButton::toggled,
this, [
this](
bool checked ) {
69 mCircle2Digitize->setChecked(
false );
72 layout->addWidget( mCircle1Digitize, 1, 2, 2, 1 );
74 label =
new QLabel( u
"x"_s, toolWidget );
75 layout->addWidget( label, 1, 0 );
78 mCircle1X->setToolTip( tr(
"X coordinate" ) );
79 mCircle1X->setMinimum( std::numeric_limits<double>::lowest() );
80 mCircle1X->setMaximum( std::numeric_limits<double>::max() );
81 mCircle1X->setDecimals(
mCadDockWidget->constraintX()->precision() );
82 mCircle1X->setClearValue( 0.0 );
84 layout->addWidget( mCircle1X, 1, 1 );
86 label =
new QLabel( u
"y"_s, toolWidget );
87 layout->addWidget( label, 2, 0 );
90 mCircle1Y->setToolTip( tr(
"Y coordinate" ) );
91 mCircle1Y->setMinimum( std::numeric_limits<double>::lowest() );
92 mCircle1Y->setMaximum( std::numeric_limits<double>::max() );
93 mCircle1Y->setDecimals(
mCadDockWidget->constraintY()->precision() );
94 mCircle1Y->setClearValue( 0.0 );
96 layout->addWidget( mCircle1Y, 2, 1 );
98 label =
new QLabel( u
"d"_s, toolWidget );
99 layout->addWidget( label, 3, 0 );
102 mCircle1Distance->setToolTip( tr(
"Distance" ) );
103 mCircle1Distance->setMinimum( 0 );
104 mCircle1Distance->setMaximum( std::numeric_limits<double>::max() );
105 mCircle1Distance->setDecimals(
mCadDockWidget->constraintX()->precision() );
107 layout->addWidget( mCircle1Distance, 3, 1 );
109 label =
new QLabel( tr(
"Circle #2" ), toolWidget );
110 layout->addWidget( label, 4, 0, 1, 3 );
112 mCircle2Digitize =
new QToolButton( toolWidget );
113 mCircle2Digitize->setCheckable(
true );
114 mCircle2Digitize->setChecked(
false );
116 connect( mCircle2Digitize, &QAbstractButton::toggled,
this, [
this](
bool checked ) {
119 mCircle1Digitize->setChecked(
false );
122 layout->addWidget( mCircle2Digitize, 5, 2, 2, 1 );
124 label =
new QLabel( u
"x"_s, toolWidget );
125 layout->addWidget( label, 5, 0 );
128 mCircle2X->setToolTip( tr(
"X coordinate" ) );
129 mCircle2X->setMinimum( std::numeric_limits<double>::lowest() );
130 mCircle2X->setMaximum( std::numeric_limits<double>::max() );
131 mCircle2X->setDecimals(
mCadDockWidget->constraintX()->precision() );
132 mCircle2X->setClearValue( 0.0 );
134 layout->addWidget( mCircle2X, 5, 1 );
136 label =
new QLabel( u
"y"_s, toolWidget );
137 layout->addWidget( label, 6, 0 );
140 mCircle2Y->setToolTip( tr(
"Y coordinate" ) );
141 mCircle2Y->setMinimum( std::numeric_limits<double>::lowest() );
142 mCircle2Y->setMaximum( std::numeric_limits<double>::max() );
143 mCircle2Y->setDecimals(
mCadDockWidget->constraintY()->precision() );
144 mCircle2Y->setClearValue( 0.0 );
146 layout->addWidget( mCircle2Y, 6, 1 );
148 label =
new QLabel( u
"d"_s, toolWidget );
149 layout->addWidget( label, 7, 0 );
152 mCircle1Distance->setToolTip( tr(
"Distance" ) );
153 mCircle2Distance->setMinimum( 0 );
154 mCircle2Distance->setMaximum( std::numeric_limits<double>::max() );
155 mCircle2Distance->setDecimals(
mCadDockWidget->constraintX()->precision() );
156 layout->addWidget( mCircle2Distance, 7, 1 );
158 connect( mCircle1X,
static_cast<void (
QgsDoubleSpinBox::* )(
double )
>( &QgsDoubleSpinBox::valueChanged ),
this, [
this](
double ) { processParameters(); } );
159 connect( mCircle1Y,
static_cast<void (
QgsDoubleSpinBox::* )(
double )
>( &QgsDoubleSpinBox::valueChanged ),
this, [
this](
double ) { processParameters(); } );
160 connect( mCircle1Distance,
static_cast<void (
QgsDoubleSpinBox::* )(
double )
>( &QgsDoubleSpinBox::valueChanged ),
this, [
this](
double ) { processParameters(); } );
161 connect( mCircle2X,
static_cast<void (
QgsDoubleSpinBox::* )(
double )
>( &QgsDoubleSpinBox::valueChanged ),
this, [
this](
double ) { processParameters(); } );
162 connect( mCircle2Y,
static_cast<void (
QgsDoubleSpinBox::* )(
double )
>( &QgsDoubleSpinBox::valueChanged ),
this, [
this](
double ) { processParameters(); } );
163 connect( mCircle2Distance,
static_cast<void (
QgsDoubleSpinBox::* )(
double )
>( &QgsDoubleSpinBox::valueChanged ),
this, [
this](
double ) { processParameters(); } );
166 bool focusOnCircle2 =
false;
178 focusOnCircle2 =
true;
185 if ( focusOnCircle2 )
187 mCircle2Digitize->setChecked(
true );
191 mCircle1Digitize->setChecked(
true );
194 toolWidget->installEventFilter(
this );
196 mToolWidget = toolWidget;