diff --git a/ChangeLog.txt b/ChangeLog.txt
index 00d80ba7a..c09a136dd 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -9,6 +9,7 @@
- [smart-pattern/valentina#184] Fix incorrect seam allowance.
- Export area of piece in Final measurements.
- New option Show accuracy radius.
+- New option Interactive tools.
# Valentina 0.7.52 September 12, 2022
- Fix crash when default locale is ru.
diff --git a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp
index 1e48107a2..f8fb7a85c 100644
--- a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp
+++ b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp
@@ -123,6 +123,7 @@ PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent)
ui->checkBoxFreeCurve->setChecked(settings->IsFreeCurveMode());
ui->checkBoxZoomFitBestCurrentPP->setChecked(settings->IsDoubleClickZoomFitBestCurrentPP());
+ ui->checkBoxInteractiveTools->setChecked(settings->IsInteractiveTools());
//----------------------- Toolbar
ui->toolBarStyleCheck->setChecked(settings->GetToolBarStyle());
@@ -202,6 +203,7 @@ auto PreferencesConfigurationPage::Apply() -> QStringList
settings->SetFreeCurveMode(ui->checkBoxFreeCurve->isChecked());
settings->SetDoubleClickZoomFitBestCurrentPP(ui->checkBoxZoomFitBestCurrentPP->isChecked());
+ settings->SetInteractiveTools(ui->checkBoxInteractiveTools->isChecked());
if (m_langChanged || m_systemChanged)
{
diff --git a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.ui b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.ui
index 6eff5d3d6..b037d1f47 100644
--- a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.ui
+++ b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.ui
@@ -33,9 +33,9 @@
0
- -27
+ 0
624
- 838
+ 867
@@ -235,6 +235,19 @@
+ -
+
+
+ Disable if you want to skip interactive part of creating tools. And go straight to editing formulas instead.
+
+
+ Interactive tools
+
+
+ true
+
+
+
diff --git a/src/libs/vmisc/vcommonsettings.cpp b/src/libs/vmisc/vcommonsettings.cpp
index e0abb860f..9d0b0fd4d 100644
--- a/src/libs/vmisc/vcommonsettings.cpp
+++ b/src/libs/vmisc/vcommonsettings.cpp
@@ -91,6 +91,7 @@ Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAskContinueIfLayout
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationToolBarStyle, (QLatin1String("configuration/tool_bar_style"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationFreeCurveMode, (QLatin1String("configuration/freeCurveMode"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDoubleClickZoomFitBestCurrentPP, (QLatin1String("configuration/doubleClickZoomFitBestCurrentPP"))) // NOLINT
+Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationInteractiveTools, (QLatin1String("configuration/interactiveTools"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDontUseNativeDialog, (QLatin1String("configuration/dontUseNativeDialog"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternUndo, (QLatin1String("pattern/undo"))) // NOLINT
@@ -670,6 +671,18 @@ void VCommonSettings::SetDoubleClickZoomFitBestCurrentPP(bool value)
setValue(*settingConfigurationDoubleClickZoomFitBestCurrentPP, value);
}
+//---------------------------------------------------------------------------------------------------------------------
+bool VCommonSettings::IsInteractiveTools() const
+{
+ return value(*settingConfigurationInteractiveTools, true).toBool();
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+void VCommonSettings::SetInteractiveTools(bool value)
+{
+ setValue(*settingConfigurationInteractiveTools, value);
+}
+
//---------------------------------------------------------------------------------------------------------------------
auto VCommonSettings::GetUndoCount() const -> int
{
diff --git a/src/libs/vmisc/vcommonsettings.h b/src/libs/vmisc/vcommonsettings.h
index 359490188..22422e88f 100644
--- a/src/libs/vmisc/vcommonsettings.h
+++ b/src/libs/vmisc/vcommonsettings.h
@@ -125,6 +125,9 @@ public:
auto IsDoubleClickZoomFitBestCurrentPP() const -> bool;
void SetDoubleClickZoomFitBestCurrentPP(bool value);
+ auto IsInteractiveTools() const -> bool;
+ void SetInteractiveTools(bool value);
+
auto GetUndoCount() const -> int;
void SetUndoCount(const int &value);
diff --git a/src/libs/vtools/dialogs/tools/dialogalongline.cpp b/src/libs/vtools/dialogs/tools/dialogalongline.cpp
index 0bafeb90a..5d07d6ec2 100644
--- a/src/libs/vtools/dialogs/tools/dialogalongline.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogalongline.cpp
@@ -292,10 +292,9 @@ void DialogAlongLine::ChosenSecondPoint(quint32 id, const QString &toolTip)
prepare = true;
- if (m_buildMidpoint)
+ if (m_buildMidpoint || not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
{
- setModal(true);
- show();
+ FinishCreating();
}
}
else
@@ -305,6 +304,16 @@ void DialogAlongLine::ChosenSecondPoint(quint32 id, const QString &toolTip)
}
}
+//---------------------------------------------------------------------------------------------------------------------
+void DialogAlongLine::FinishCreating()
+{
+ vis->SetMode(Mode::Show);
+ vis->RefreshGeometry();
+ emit ToolTip(QString());
+ setModal(true);
+ show();
+}
+
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief SetSecondPointId set id second point of line
@@ -380,13 +389,7 @@ void DialogAlongLine::ShowDialog(bool click)
SetFormula(QString::number(FromPixel(len, *data->GetPatternUnit())));
}
- vis->SetMode(Mode::Show);
- vis->RefreshGeometry();
-
- emit ToolTip(QString());
-
- setModal(true);
- show();
+ FinishCreating();
}
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/dialogs/tools/dialogalongline.h b/src/libs/vtools/dialogs/tools/dialogalongline.h
index bbafb79c0..c6211143e 100644
--- a/src/libs/vtools/dialogs/tools/dialogalongline.h
+++ b/src/libs/vtools/dialogs/tools/dialogalongline.h
@@ -124,6 +124,8 @@ private:
void SetCurrentLength();
void ChosenSecondPoint(quint32 id, const QString &toolTip);
+
+ void FinishCreating();
};
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/dialogs/tools/dialogarc.cpp b/src/libs/vtools/dialogs/tools/dialogarc.cpp
index f80159b59..cb17dad3a 100644
--- a/src/libs/vtools/dialogs/tools/dialogarc.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogarc.cpp
@@ -257,17 +257,6 @@ void DialogArc::ShowDialog(bool click)
auto *arcVis = qobject_cast(vis);
SCASSERT(arcVis != nullptr)
- auto FinishCreating = [this, arcVis]()
- {
- arcVis->SetMode(Mode::Show);
- arcVis->RefreshGeometry();
-
- emit ToolTip(QString());
-
- setModal(true);
- show();
- };
-
if (click)
{
// The check need to ignore first release of mouse button.
@@ -400,6 +389,11 @@ void DialogArc::ChosenObject(quint32 id, const SceneObject &type)
}
prepare = true;
+
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ FinishCreating();
+ }
}
}
}
@@ -551,6 +545,18 @@ void DialogArc::EvalF()
m_angleF2 = Eval(formulaData, m_flagF2);
}
+//---------------------------------------------------------------------------------------------------------------------
+void DialogArc::FinishCreating()
+{
+ vis->SetMode(Mode::Show);
+ vis->RefreshGeometry();
+
+ emit ToolTip(QString());
+
+ setModal(true);
+ show();
+}
+
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief GetCenter return id of center point
diff --git a/src/libs/vtools/dialogs/tools/dialogarc.h b/src/libs/vtools/dialogs/tools/dialogarc.h
index 685f3d51e..7a54fc8cf 100644
--- a/src/libs/vtools/dialogs/tools/dialogarc.h
+++ b/src/libs/vtools/dialogs/tools/dialogarc.h
@@ -157,6 +157,8 @@ private:
void EvalRadius();
void EvalF();
+
+ void FinishCreating();
};
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp b/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp
index 5182e5465..b4a025126 100644
--- a/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp
@@ -284,17 +284,6 @@ void DialogArcWithLength::ShowDialog(bool click)
{
if (prepare)
{
- auto FinishCreating = [this]()
- {
- vis->SetMode(Mode::Show);
- vis->RefreshGeometry();
-
- emit ToolTip(QString());
-
- setModal(true);
- show();
- };
-
if (click)
{
// The check need to ignore first release of mouse button.
@@ -384,6 +373,11 @@ void DialogArcWithLength::ChosenObject(quint32 id, const SceneObject &type)
}
prepare = true;
+
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ FinishCreating();
+ }
}
}
}
@@ -544,3 +538,15 @@ void DialogArcWithLength::EvalF()
Eval(formulaData, m_flagF1);
}
+
+//---------------------------------------------------------------------------------------------------------------------
+void DialogArcWithLength::FinishCreating()
+{
+ vis->SetMode(Mode::Show);
+ vis->RefreshGeometry();
+
+ emit ToolTip(QString());
+
+ setModal(true);
+ show();
+}
diff --git a/src/libs/vtools/dialogs/tools/dialogarcwithlength.h b/src/libs/vtools/dialogs/tools/dialogarcwithlength.h
index 301204659..3b691b87a 100644
--- a/src/libs/vtools/dialogs/tools/dialogarcwithlength.h
+++ b/src/libs/vtools/dialogs/tools/dialogarcwithlength.h
@@ -150,6 +150,8 @@ private:
void Radius();
void Length();
void EvalF();
+
+ void FinishCreating();
};
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/dialogs/tools/dialogbisector.cpp b/src/libs/vtools/dialogs/tools/dialogbisector.cpp
index 0d0611d8d..a53866211 100644
--- a/src/libs/vtools/dialogs/tools/dialogbisector.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogbisector.cpp
@@ -387,13 +387,7 @@ void DialogBisector::ShowDialog(bool click)
SetFormula(QString::number(FromPixel(len, *data->GetPatternUnit())));
}
- vis->SetMode(Mode::Show);
- vis->RefreshGeometry();
-
- emit ToolTip(QString());
-
- setModal(true);
- show();
+ FinishCreating();
}
//---------------------------------------------------------------------------------------------------------------------
@@ -443,10 +437,25 @@ void DialogBisector::ChosenThirdPoint(quint32 id)
line->SetPoint3Id(id);
line->RefreshGeometry();
prepare = true;
+
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ FinishCreating();
+ }
}
}
}
+//---------------------------------------------------------------------------------------------------------------------
+void DialogBisector::FinishCreating()
+{
+ vis->SetMode(Mode::Show);
+ vis->RefreshGeometry();
+ emit ToolTip(QString());
+ setModal(true);
+ show();
+}
+
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief GetTypeLine return type of line
diff --git a/src/libs/vtools/dialogs/tools/dialogbisector.h b/src/libs/vtools/dialogs/tools/dialogbisector.h
index 972fe19b5..36eee2c7c 100644
--- a/src/libs/vtools/dialogs/tools/dialogbisector.h
+++ b/src/libs/vtools/dialogs/tools/dialogbisector.h
@@ -122,6 +122,8 @@ private:
qint32 m_number{0};
void ChosenThirdPoint(quint32 id);
+
+ void FinishCreating();
};
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp b/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp
index a1061a0f4..4b9b5faaf 100644
--- a/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp
@@ -225,8 +225,7 @@ void DialogCurveIntersectAxis::ShowDialog(bool click)
}
/*We will ignore click if poinet is in point circle*/
- VMainGraphicsScene *scene =
- qobject_cast(VAbstractValApplication::VApp()->getCurrentScene());
+ auto *scene = qobject_cast(VAbstractValApplication::VApp()->getCurrentScene());
SCASSERT(scene != nullptr)
const QSharedPointer point = data->GeometricObject(GetBasePointId());
QLineF line = QLineF(static_cast(*point), scene->getScenePos());
@@ -238,12 +237,11 @@ void DialogCurveIntersectAxis::ShowDialog(bool click)
}
}
- VisToolCurveIntersectAxis *line = qobject_cast(vis);
+ auto *line = qobject_cast(vis);
SCASSERT(line != nullptr)
+ SetAngle(line->Angle());//Show in dialog angle what user choose
- this->SetAngle(line->Angle());//Show in dialog angle what user choose
emit ToolTip(QString());
-
DialogAccepted();// Just set default values and don't show dialog
}
}
@@ -253,7 +251,7 @@ void DialogCurveIntersectAxis::ChosenObject(quint32 id, const SceneObject &type)
{
if (prepare == false)// After first choose we ignore all objects
{
- VisToolCurveIntersectAxis *line = qobject_cast(vis);
+ auto *line = qobject_cast(vis);
SCASSERT(line != nullptr)
switch (number)
@@ -284,6 +282,14 @@ void DialogCurveIntersectAxis::ChosenObject(quint32 id, const SceneObject &type)
line->setAxisPointId(id);
line->RefreshGeometry();
prepare = true;
+
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ emit ToolTip(QString());
+
+ setModal(true);
+ show();
+ }
}
}
break;
diff --git a/src/libs/vtools/dialogs/tools/dialogcutarc.cpp b/src/libs/vtools/dialogs/tools/dialogcutarc.cpp
index 7271c30c5..71df49e32 100644
--- a/src/libs/vtools/dialogs/tools/dialogcutarc.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogcutarc.cpp
@@ -177,6 +177,11 @@ void DialogCutArc::ChosenObject(quint32 id, const SceneObject &type)
auto *window = qobject_cast(VAbstractValApplication::VApp()->getMainWindow());
SCASSERT(window != nullptr)
connect(vis.data(), &Visualization::ToolTip, window, &VAbstractMainWindow::ShowToolTip);
+
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ FinishCreating();
+ }
}
}
}
@@ -250,6 +255,16 @@ void DialogCutArc::ValidateAlias()
CheckState();
}
+//---------------------------------------------------------------------------------------------------------------------
+void DialogCutArc::FinishCreating()
+{
+ vis->SetMode(Mode::Show);
+ vis->RefreshGeometry();
+ emit ToolTip(QString());
+ setModal(true);
+ show();
+}
+
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief setArcId set id of arc
@@ -388,11 +403,5 @@ void DialogCutArc::ShowDialog(bool click)
}
}
- vis->SetMode(Mode::Show);
- vis->RefreshGeometry();
-
- emit ToolTip(QString());
-
- setModal(true);
- show();
+ FinishCreating();
}
diff --git a/src/libs/vtools/dialogs/tools/dialogcutarc.h b/src/libs/vtools/dialogs/tools/dialogcutarc.h
index a7f398a42..babf08a7f 100644
--- a/src/libs/vtools/dialogs/tools/dialogcutarc.h
+++ b/src/libs/vtools/dialogs/tools/dialogcutarc.h
@@ -116,6 +116,8 @@ private:
QString m_originAliasSuffix2{};
bool m_firstRelease{false};
+
+ void FinishCreating();
};
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/dialogs/tools/dialogcutspline.cpp b/src/libs/vtools/dialogs/tools/dialogcutspline.cpp
index 1a33679e1..8544020a0 100644
--- a/src/libs/vtools/dialogs/tools/dialogcutspline.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogcutspline.cpp
@@ -185,6 +185,11 @@ void DialogCutSpline::ChosenObject(quint32 id, const SceneObject &type)
auto *window = qobject_cast(VAbstractValApplication::VApp()->getMainWindow());
SCASSERT(window != nullptr)
connect(vis.data(), &Visualization::ToolTip, window, &VAbstractMainWindow::ShowToolTip);
+
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ FinishCreating();
+ }
}
}
}
@@ -258,6 +263,16 @@ void DialogCutSpline::ValidateAlias()
CheckState();
}
+//---------------------------------------------------------------------------------------------------------------------
+void DialogCutSpline::FinishCreating()
+{
+ vis->SetMode(Mode::Show);
+ vis->RefreshGeometry();
+ emit ToolTip(QString());
+ setModal(true);
+ show();
+}
+
//---------------------------------------------------------------------------------------------------------------------
void DialogCutSpline::DeployFormulaTextEdit()
{
@@ -388,11 +403,5 @@ void DialogCutSpline::ShowDialog(bool click)
}
}
- vis->SetMode(Mode::Show);
- vis->RefreshGeometry();
-
- emit ToolTip(QString());
-
- setModal(true);
- show();
+ FinishCreating();
}
diff --git a/src/libs/vtools/dialogs/tools/dialogcutspline.h b/src/libs/vtools/dialogs/tools/dialogcutspline.h
index c710f24c2..d731c96fd 100644
--- a/src/libs/vtools/dialogs/tools/dialogcutspline.h
+++ b/src/libs/vtools/dialogs/tools/dialogcutspline.h
@@ -116,6 +116,8 @@ private:
QString m_originAliasSuffix2{};
bool m_firstRelease{false};
+
+ void FinishCreating();
};
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/dialogs/tools/dialogcutsplinepath.cpp b/src/libs/vtools/dialogs/tools/dialogcutsplinepath.cpp
index ffee728fb..98b12fc38 100644
--- a/src/libs/vtools/dialogs/tools/dialogcutsplinepath.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogcutsplinepath.cpp
@@ -185,6 +185,11 @@ void DialogCutSplinePath::ChosenObject(quint32 id, const SceneObject &type)
auto *window = qobject_cast(VAbstractValApplication::VApp()->getMainWindow());
SCASSERT(window != nullptr)
connect(vis.data(), &Visualization::ToolTip, window, &VAbstractMainWindow::ShowToolTip);
+
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ FinishCreating();
+ }
}
}
}
@@ -258,6 +263,16 @@ void DialogCutSplinePath::ValidateAlias()
CheckState();
}
+//---------------------------------------------------------------------------------------------------------------------
+void DialogCutSplinePath::FinishCreating()
+{
+ vis->SetMode(Mode::Show);
+ vis->RefreshGeometry();
+ emit ToolTip(QString());
+ setModal(true);
+ show();
+}
+
//---------------------------------------------------------------------------------------------------------------------
void DialogCutSplinePath::DeployFormulaTextEdit()
{
@@ -389,11 +404,5 @@ void DialogCutSplinePath::ShowDialog(bool click)
}
}
- vis->SetMode(Mode::Show);
- vis->RefreshGeometry();
-
- emit ToolTip(QString());
-
- setModal(true);
- show();
+ FinishCreating();
}
diff --git a/src/libs/vtools/dialogs/tools/dialogcutsplinepath.h b/src/libs/vtools/dialogs/tools/dialogcutsplinepath.h
index 8b0889b7f..c4bd036cf 100644
--- a/src/libs/vtools/dialogs/tools/dialogcutsplinepath.h
+++ b/src/libs/vtools/dialogs/tools/dialogcutsplinepath.h
@@ -115,6 +115,8 @@ private:
QString m_originAliasSuffix2{};
bool m_firstRelease{false};
+
+ void FinishCreating();
};
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/dialogs/tools/dialogellipticalarc.cpp b/src/libs/vtools/dialogs/tools/dialogellipticalarc.cpp
index 95dc3d0c2..098114e01 100644
--- a/src/libs/vtools/dialogs/tools/dialogellipticalarc.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogellipticalarc.cpp
@@ -442,6 +442,18 @@ void DialogEllipticalArc::EvalAngles()
m_angleRotation = Eval(formulaData, m_flagRotationAngle);
}
+//---------------------------------------------------------------------------------------------------------------------
+void DialogEllipticalArc::FinishCreating()
+{
+ vis->SetMode(Mode::Show);
+ vis->RefreshGeometry();
+
+ emit ToolTip(QString());
+
+ setModal(true);
+ show();
+}
+
//---------------------------------------------------------------------------------------------------------------------
void DialogEllipticalArc::FXRadius1()
{
@@ -633,13 +645,7 @@ void DialogEllipticalArc::ShowDialog(bool click)
SetRotationAngle(QString::number(Angle() - path->StartingRotationAngle()));
}
- vis->SetMode(Mode::Show);
- vis->RefreshGeometry();
-
- emit ToolTip(QString());
-
- setModal(true);
- show();
+ FinishCreating();
}
//---------------------------------------------------------------------------------------------------------------------
@@ -671,6 +677,11 @@ void DialogEllipticalArc::ChosenObject(quint32 id, const SceneObject &type)
vis->VisualMode(id);
}
prepare = true;
+
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ FinishCreating();
+ }
}
}
diff --git a/src/libs/vtools/dialogs/tools/dialogellipticalarc.h b/src/libs/vtools/dialogs/tools/dialogellipticalarc.h
index 7f2a34537..712c9030f 100644
--- a/src/libs/vtools/dialogs/tools/dialogellipticalarc.h
+++ b/src/libs/vtools/dialogs/tools/dialogellipticalarc.h
@@ -186,6 +186,8 @@ private:
void EvalRadiuses();
void EvalAngles();
+
+ void FinishCreating();
};
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/dialogs/tools/dialogendline.cpp b/src/libs/vtools/dialogs/tools/dialogendline.cpp
index f1844f69a..382bd214c 100644
--- a/src/libs/vtools/dialogs/tools/dialogendline.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogendline.cpp
@@ -221,6 +221,11 @@ void DialogEndLine::ChosenObject(quint32 id, const SceneObject &type)
SCASSERT(window != nullptr)
connect(vis.data(), &Visualization::ToolTip, window, &VAbstractMainWindow::ShowToolTip);
prepare = true;
+
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ FinishCreating();
+ }
}
}
}
@@ -353,16 +358,12 @@ void DialogEndLine::ShowDialog(bool click)
return;
}
}
- this->setModal(true);
-
auto *line = qobject_cast(vis);
SCASSERT(line != nullptr)
+ SetAngle(line->Angle());//Show in dialog angle what user choose
+ SetFormula(line->Length());
- this->SetAngle(line->Angle());//Show in dialog angle what user choose
- this->SetFormula(line->Length());
- emit ToolTip(QString());
- timerFormulaLength->start();
- this->show();
+ FinishCreating();
}
}
@@ -397,6 +398,15 @@ void DialogEndLine::closeEvent(QCloseEvent *event)
DialogTool::closeEvent(event);
}
+//---------------------------------------------------------------------------------------------------------------------
+void DialogEndLine::FinishCreating()
+{
+ setModal(true);
+ emit ToolTip(QString());
+ timerFormulaLength->start();
+ show();
+}
+
//---------------------------------------------------------------------------------------------------------------------
DialogEndLine::~DialogEndLine()
{
diff --git a/src/libs/vtools/dialogs/tools/dialogendline.h b/src/libs/vtools/dialogs/tools/dialogendline.h
index 68780ee86..f4233587b 100644
--- a/src/libs/vtools/dialogs/tools/dialogendline.h
+++ b/src/libs/vtools/dialogs/tools/dialogendline.h
@@ -121,6 +121,8 @@ private:
bool flagFormula;
bool flagError;
bool flagName;
+
+ void FinishCreating();
};
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp b/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp
index bedce0dcb..bf1f9da18 100644
--- a/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp
+++ b/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp
@@ -249,8 +249,7 @@ void DialogLineIntersectAxis::ShowDialog(bool click)
}
/*We will ignore click if poinet is in point circle*/
- VMainGraphicsScene *scene =
- qobject_cast(VAbstractValApplication::VApp()->getCurrentScene());
+ auto *scene = qobject_cast(VAbstractValApplication::VApp()->getCurrentScene());
SCASSERT(scene != nullptr)
const QSharedPointer point = data->GeometricObject(GetBasePointId());
QLineF line = QLineF(static_cast(*point), scene->getScenePos());
@@ -262,12 +261,12 @@ void DialogLineIntersectAxis::ShowDialog(bool click)
}
}
- VisToolLineIntersectAxis *line = qobject_cast(vis);
+ auto *line = qobject_cast(vis);
SCASSERT(line != nullptr)
+ SetAngle(line->Angle());//Show in dialog angle what user choose
- this->SetAngle(line->Angle());//Show in dialog angle what user choose
+ line->SetMode(Mode::Show);
emit ToolTip(QString());
-
DialogAccepted();// Just set default values and don't show dialog
}
}
@@ -279,7 +278,7 @@ void DialogLineIntersectAxis::ChosenObject(quint32 id, const SceneObject &type)
{
if (type == SceneObject::Point)
{
- VisToolLineIntersectAxis *line = qobject_cast(vis);
+ auto *line = qobject_cast(vis);
SCASSERT(line != nullptr)
switch (number)
@@ -289,8 +288,8 @@ void DialogLineIntersectAxis::ChosenObject(quint32 id, const SceneObject &type)
{
number++;
line->VisualMode(id);
- VAbstractMainWindow *window =
- qobject_cast(VAbstractValApplication::VApp()->getMainWindow());
+ auto *window =
+ qobject_cast(VAbstractValApplication::VApp()->getMainWindow());
SCASSERT(window != nullptr)
connect(line, &VisToolLineIntersectAxis::ToolTip, window, &VAbstractMainWindow::ShowToolTip);
}
@@ -320,6 +319,13 @@ void DialogLineIntersectAxis::ChosenObject(quint32 id, const SceneObject &type)
line->SetAxisPointId(id);
line->RefreshGeometry();
prepare = true;
+
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ vis->SetMode(Mode::Show);
+ emit ToolTip(QString());
+ show();
+ }
}
}
}
diff --git a/src/libs/vtools/dialogs/tools/dialognormal.cpp b/src/libs/vtools/dialogs/tools/dialognormal.cpp
index ef4a893e3..797758115 100644
--- a/src/libs/vtools/dialogs/tools/dialognormal.cpp
+++ b/src/libs/vtools/dialogs/tools/dialognormal.cpp
@@ -225,6 +225,11 @@ void DialogNormal::ChosenObject(quint32 id, const SceneObject &type)
VAbstractValApplication::VApp()->getMainWindow());
SCASSERT(window != nullptr)
connect(line, &Visualization::ToolTip, window, &VAbstractMainWindow::ShowToolTip);
+
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ FinishCreating();
+ }
}
}
break;
@@ -259,6 +264,16 @@ void DialogNormal::closeEvent(QCloseEvent *event)
DialogTool::closeEvent(event);
}
+//---------------------------------------------------------------------------------------------------------------------
+void DialogNormal::FinishCreating()
+{
+ vis->SetMode(Mode::Show);
+ vis->RefreshGeometry();
+ emit ToolTip(QString());
+ setModal(true);
+ show();
+}
+
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief SetSecondPointId set id of second point
@@ -459,11 +474,5 @@ void DialogNormal::ShowDialog(bool click)
SetFormula(QString::number(FromPixel(len, *data->GetPatternUnit())));
}
- vis->SetMode(Mode::Show);
- vis->RefreshGeometry();
-
- emit ToolTip(QString());
-
- setModal(true);
- show();
+ FinishCreating();
}
diff --git a/src/libs/vtools/dialogs/tools/dialognormal.h b/src/libs/vtools/dialogs/tools/dialognormal.h
index 947cd3811..36153caa9 100644
--- a/src/libs/vtools/dialogs/tools/dialognormal.h
+++ b/src/libs/vtools/dialogs/tools/dialognormal.h
@@ -122,6 +122,8 @@ private:
/** @brief number number of handled objects */
qint32 m_number{0};
+
+ void FinishCreating();
};
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.cpp b/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.cpp
index 1b5a52364..197d6f7b0 100644
--- a/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.cpp
@@ -227,13 +227,7 @@ void DialogPointFromCircleAndTangent::ShowDialog(bool click)
SetCircleRadius(QString::number(FromPixel(line.length(), *data->GetPatternUnit())));
}
- vis->SetMode(Mode::Show);
- vis->RefreshGeometry();
-
- emit ToolTip(QString());
-
- setModal(true);
- show();
+ FinishCreating();
}
//---------------------------------------------------------------------------------------------------------------------
@@ -272,6 +266,11 @@ void DialogPointFromCircleAndTangent::ChosenObject(quint32 id, const SceneObject
point->SetCenterId(id);
point->RefreshGeometry();
prepare = true;
+
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ FinishCreating();
+ }
}
}
break;
@@ -371,6 +370,18 @@ void DialogPointFromCircleAndTangent::closeEvent(QCloseEvent *event)
DialogTool::closeEvent(event);
}
+//---------------------------------------------------------------------------------------------------------------------
+void DialogPointFromCircleAndTangent::FinishCreating()
+{
+ vis->SetMode(Mode::Show);
+ vis->RefreshGeometry();
+
+ emit ToolTip(QString());
+
+ setModal(true);
+ show();
+}
+
//---------------------------------------------------------------------------------------------------------------------
void DialogPointFromCircleAndTangent::SetNotes(const QString ¬es)
{
diff --git a/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.h b/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.h
index 43f34c0b8..6cbbef731 100644
--- a/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.h
+++ b/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.h
@@ -103,6 +103,8 @@ private:
/** @brief number number of handled objects */
qint32 m_number{0};
bool m_firstRelease{false};
+
+ void FinishCreating();
};
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/dialogs/tools/dialogpointofcontact.cpp b/src/libs/vtools/dialogs/tools/dialogpointofcontact.cpp
index 35e5818f6..4f15d202f 100644
--- a/src/libs/vtools/dialogs/tools/dialogpointofcontact.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogpointofcontact.cpp
@@ -209,13 +209,7 @@ void DialogPointOfContact::ShowDialog(bool click)
SetRadius(QString::number(FromPixel(line.length(), *data->GetPatternUnit())));
}
- vis->SetMode(Mode::Show);
- vis->RefreshGeometry();
-
- emit ToolTip(QString());
-
- setModal(true);
- show();
+ FinishCreating();
}
//---------------------------------------------------------------------------------------------------------------------
@@ -278,6 +272,11 @@ void DialogPointOfContact::ChosenObject(quint32 id, const SceneObject &type)
line->SetRadiusId(id);
line->RefreshGeometry();
prepare = true;
+
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ FinishCreating();
+ }
}
}
}
@@ -310,6 +309,18 @@ void DialogPointOfContact::closeEvent(QCloseEvent *event)
DialogTool::closeEvent(event);
}
+//---------------------------------------------------------------------------------------------------------------------
+void DialogPointOfContact::FinishCreating()
+{
+ vis->SetMode(Mode::Show);
+ vis->RefreshGeometry();
+
+ emit ToolTip(QString());
+
+ setModal(true);
+ show();
+}
+
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief SetSecondPoint set id second point
diff --git a/src/libs/vtools/dialogs/tools/dialogpointofcontact.h b/src/libs/vtools/dialogs/tools/dialogpointofcontact.h
index a5f44f205..5330bdb96 100644
--- a/src/libs/vtools/dialogs/tools/dialogpointofcontact.h
+++ b/src/libs/vtools/dialogs/tools/dialogpointofcontact.h
@@ -114,6 +114,8 @@ private:
qint32 m_number{0};
bool m_firstRelease{false};
+
+ void FinishCreating();
};
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.cpp b/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.cpp
index 91f102f75..7221c331e 100644
--- a/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.cpp
@@ -252,17 +252,6 @@ void DialogPointOfIntersectionCircles::ShowDialog(bool click)
return;
}
- auto FinishCreating = [this]()
- {
- vis->SetMode(Mode::Show);
- vis->RefreshGeometry();
-
- emit ToolTip(QString());
-
- setModal(true);
- show();
- };
-
if (click)
{
// The check need to ignore first release of mouse button.
@@ -323,13 +312,21 @@ void DialogPointOfIntersectionCircles::ChosenObject(quint32 id, const SceneObjec
case 0:
if (SetObject(id, ui->comboBoxCircle1Center, QString()))
{
- ++m_stage;
point->VisualMode(id);
- auto *window = qobject_cast(
- VAbstractValApplication::VApp()->getMainWindow());
- SCASSERT(window != nullptr)
- connect(vis.data(), &Visualization::ToolTip, window, &VAbstractMainWindow::ShowToolTip);
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ m_stage = 2;
+ emit ToolTip(tr("Select second circle center"));
+ }
+ else
+ {
+ ++m_stage;
+ auto *window = qobject_cast(
+ VAbstractValApplication::VApp()->getMainWindow());
+ SCASSERT(window != nullptr)
+ connect(vis.data(), &Visualization::ToolTip, window, &VAbstractMainWindow::ShowToolTip);
+ }
}
break;
case 2:
@@ -341,6 +338,12 @@ void DialogPointOfIntersectionCircles::ChosenObject(quint32 id, const SceneObjec
point->RefreshGeometry();
++m_stage;
prepare = true;
+
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ FinishCreating();
+ return;
+ }
}
}
break;
@@ -485,6 +488,18 @@ void DialogPointOfIntersectionCircles::closeEvent(QCloseEvent *event)
DialogTool::closeEvent(event);
}
+//---------------------------------------------------------------------------------------------------------------------
+void DialogPointOfIntersectionCircles::FinishCreating()
+{
+ vis->SetMode(Mode::Show);
+ vis->RefreshGeometry();
+
+ emit ToolTip(QString());
+
+ setModal(true);
+ show();
+}
+
//---------------------------------------------------------------------------------------------------------------------
void DialogPointOfIntersectionCircles::SetNotes(const QString ¬es)
{
diff --git a/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.h b/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.h
index 48ffa3a2e..a46a7753d 100644
--- a/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.h
+++ b/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.h
@@ -122,6 +122,8 @@ private:
/** @brief number number of handled objects */
qint32 m_stage{0};
+
+ void FinishCreating();
};
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp b/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp
index 5c34f79c3..a0e09d774 100644
--- a/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp
@@ -277,10 +277,25 @@ void DialogShoulderPoint::ChosenThirdPoint(quint32 id)
line->SetLineP2Id(id);
line->RefreshGeometry();
prepare = true;
+
+ if (not VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
+ {
+ FinishCreating();
+ }
}
}
}
+//---------------------------------------------------------------------------------------------------------------------
+void DialogShoulderPoint::FinishCreating()
+{
+ vis->SetMode(Mode::Show);
+ vis->RefreshGeometry();
+ emit ToolTip(QString());
+ setModal(true);
+ show();
+}
+
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief setPShoulder set id shoulder point
@@ -467,11 +482,5 @@ void DialogShoulderPoint::ShowDialog(bool click)
SetFormula(QString::number(FromPixel(line.length(), *data->GetPatternUnit())));
}
- vis->SetMode(Mode::Show);
- vis->RefreshGeometry();
-
- emit ToolTip(QString());
-
- setModal(true);
- show();
+ FinishCreating();
}
diff --git a/src/libs/vtools/dialogs/tools/dialogshoulderpoint.h b/src/libs/vtools/dialogs/tools/dialogshoulderpoint.h
index 1c3003cce..bdee5a3cf 100644
--- a/src/libs/vtools/dialogs/tools/dialogshoulderpoint.h
+++ b/src/libs/vtools/dialogs/tools/dialogshoulderpoint.h
@@ -121,6 +121,8 @@ private:
qint32 m_number{0};
void ChosenThirdPoint(quint32 id);
+
+ void FinishCreating();
};
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/visualization/line/vistoollineintersectaxis.cpp b/src/libs/vtools/visualization/line/vistoollineintersectaxis.cpp
index aef6d2de6..b0d1d96c8 100644
--- a/src/libs/vtools/visualization/line/vistoollineintersectaxis.cpp
+++ b/src/libs/vtools/visualization/line/vistoollineintersectaxis.cpp
@@ -83,15 +83,21 @@ void VisToolLineIntersectAxis::RefreshGeometry()
{
QLineF axis;
const QSharedPointer third = GetData()->GeometricObject(m_axisPointId);
+ DrawPoint(m_basePoint, static_cast(*third), Color(VColor::MainColor));
+
if (VFuzzyComparePossibleNulls(m_angle, -1))
{
+ if (GetMode() == Mode::Show)
+ {
+ return;
+ }
axis = Axis(static_cast(*third), ScenePos());
}
else
{
axis = Axis(static_cast(*third), m_angle);
}
- DrawPoint(m_basePoint, static_cast(*third), Color(VColor::MainColor));
+
DrawLine(m_axisLine, axis, Color(VColor::SupportColor), Qt::DashLine);
QPointF p;
@@ -105,10 +111,13 @@ void VisToolLineIntersectAxis::RefreshGeometry()
DrawPoint(m_point, p, Color(VColor::MainColor));
ShowIntersection(axis_line, base_line);
- SetToolTip(tr("Intersection line and axis: angle = %1°; %2 - "
- "sticking angle, %3 - finish creation")
- .arg(AngleToUser(this->line().angle()), VModifierKey::Shift(),
- VModifierKey::EnterKey()));
+ if (GetMode() == Mode::Creation)
+ {
+ SetToolTip(tr("Intersection line and axis: angle = %1°; %2 - "
+ "sticking angle, %3 - finish creation")
+ .arg(AngleToUser(this->line().angle()), VModifierKey::Shift(),
+ VModifierKey::EnterKey()));
+ }
}
}
}
diff --git a/src/libs/vtools/visualization/line/vistoolpointofcontact.cpp b/src/libs/vtools/visualization/line/vistoolpointofcontact.cpp
index fe07929b2..b4fc89ab9 100644
--- a/src/libs/vtools/visualization/line/vistoolpointofcontact.cpp
+++ b/src/libs/vtools/visualization/line/vistoolpointofcontact.cpp
@@ -50,7 +50,8 @@ VisToolPointOfContact::VisToolPointOfContact(const VContainer *data, QGraphicsIt
m_arcPoint = InitPoint(Color(VColor::SupportColor), this);
m_lineP1 = InitPoint(Color(VColor::SupportColor), this);
m_lineP2 = InitPoint(Color(VColor::SupportColor), this);
- m_circle = InitItem(Color(VColor::SupportColor), this);
+ m_circle = InitItem(Color(VColor::SupportColor), this);
+ m_circle->SetPointMode(false);
m_point = InitPoint(Color(VColor::MainColor), this);
}
diff --git a/src/libs/vtools/visualization/line/vistoolpointofcontact.h b/src/libs/vtools/visualization/line/vistoolpointofcontact.h
index 1379a1dd8..cf1438ac3 100644
--- a/src/libs/vtools/visualization/line/vistoolpointofcontact.h
+++ b/src/libs/vtools/visualization/line/vistoolpointofcontact.h
@@ -66,7 +66,7 @@ private:
VScaledEllipse *m_lineP1{nullptr};
VScaledEllipse *m_lineP2{nullptr};
VScaledEllipse *m_arcPoint{nullptr};
- QGraphicsEllipseItem *m_circle{nullptr};
+ VScaledEllipse *m_circle{nullptr};
qreal m_radius{0};
};
diff --git a/src/libs/vtools/visualization/line/vistoolpointofintersectioncircles.cpp b/src/libs/vtools/visualization/line/vistoolpointofintersectioncircles.cpp
index 261237bf3..842183756 100644
--- a/src/libs/vtools/visualization/line/vistoolpointofintersectioncircles.cpp
+++ b/src/libs/vtools/visualization/line/vistoolpointofintersectioncircles.cpp
@@ -113,7 +113,7 @@ void VisToolPointOfIntersectionCircles::RefreshGeometry()
}
}
}
- else if (GetMode() == Mode::Creation)
+ else if (GetMode() == Mode::Creation && VAbstractValApplication::VApp()->Settings()->IsInteractiveTools())
{
QLineF radiusLine (static_cast(*first), ScenePos());
const qreal length = radiusLine.length();