diff --git a/src/Mod/Sketcher/Gui/TaskDlgEditSketch.cpp b/src/Mod/Sketcher/Gui/TaskDlgEditSketch.cpp index 108831ed4d..890ba3468b 100644 --- a/src/Mod/Sketcher/Gui/TaskDlgEditSketch.cpp +++ b/src/Mod/Sketcher/Gui/TaskDlgEditSketch.cpp @@ -56,8 +56,6 @@ TaskDlgEditSketch::TaskDlgEditSketch(ViewProviderSketch *sketchView) Content.push_back(Constraints); Content.push_back(Elements); - if (!hGrp->GetBool("ExpandedMessagesWidget",true)) - Messages->hideGroupBox(); if (!hGrp->GetBool("ExpandedSolverAdvancedWidget",false)) SolverAdvanced->hideGroupBox(); if (!hGrp->GetBool("ExpandedConstraintsWidget",true)) @@ -96,7 +94,6 @@ bool TaskDlgEditSketch::accept() bool TaskDlgEditSketch::reject() { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); - hGrp->SetBool("ExpandedMessagesWidget",Messages->isGroupVisible()); hGrp->SetBool("ExpandedSolverAdvancedWidget",SolverAdvanced->isGroupVisible()); hGrp->SetBool("ExpandedConstraintsWidget",Constraints->isGroupVisible()); hGrp->SetBool("ExpandedElementsWidget",Elements->isGroupVisible()); diff --git a/src/Mod/Sketcher/Gui/TaskSketcherMessages.cpp b/src/Mod/Sketcher/Gui/TaskSketcherMessages.cpp index aa15f3accd..13ed62cff4 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherMessages.cpp +++ b/src/Mod/Sketcher/Gui/TaskSketcherMessages.cpp @@ -21,6 +21,9 @@ ***************************************************************************/ #include "PreCompiled.h" +#ifndef _PreComp_ +# include +#endif #include #include @@ -36,30 +39,17 @@ using namespace SketcherGui; using namespace Gui::TaskView; namespace bp = boost::placeholders; -TaskSketcherMessages::TaskSketcherMessages(ViewProviderSketch *sketchView) : - TaskBox(Gui::BitmapFactory().pixmap("document-new"), tr("Solver messages"), true, nullptr), +TaskSketcherMessages::TaskSketcherMessages(ViewProviderSketch* sketchView) : + QWidget(), sketchView(sketchView), ui(new Ui_TaskSketcherMessages) { - // we need a separate container widget to add all controls to - proxy = new QWidget(this); - ui->setupUi(proxy); - QMetaObject::connectSlotsByName(this); - - this->groupLayout()->addWidget(proxy); + ui->setupUi(this); connectionSetUp = sketchView->signalSetUp.connect(boost::bind(&SketcherGui::TaskSketcherMessages::slotSetUp, this, bp::_1, bp::_2, bp::_3, bp::_4)); ui->labelConstrainStatus->setOpenExternalLinks(false); - ui->autoUpdate->onRestore(); - ui->autoRemoveRedundants->onRestore(); - - if(ui->autoUpdate->isChecked()) - sketchView->getSketchObject()->noRecomputes=false; - else - sketchView->getSketchObject()->noRecomputes=true; - // Set up the possible state values for the status label ui->labelConstrainStatus->setParameterGroup("User parameter:BaseApp/Preferences/Mod/Sketcher/General"); ui->labelConstrainStatus->registerState(QString::fromUtf8("empty_sketch"), QColor("black"), std::string("EmptySketchMessageColor")); @@ -77,14 +67,27 @@ TaskSketcherMessages::TaskSketcherMessages(ViewProviderSketch *sketchView) : connect(ui->labelConstrainStatusLink, &Gui::UrlLabel::linkClicked, this, &TaskSketcherMessages::on_labelConstrainStatusLink_linkClicked); + //Set Auto Update in the 'Manual Update' button menu. + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); + bool state = hGrp->GetBool("AutoRecompute", false); + + sketchView->getSketchObject()->noRecomputes = !state; + + QAction* action = new QAction(tr("Auto update"), this); + action->setToolTip(tr("Executes a recomputation of active document after every sketch action")); + action->setCheckable(true); + action->setChecked(state); + ui->manualUpdate->addAction(action); + + QObject::connect( + qAsConst(ui->manualUpdate)->actions()[0], &QAction::changed, + this, &TaskSketcherMessages::onAutoUpdateStateChanged + ); + /*QObject::connect( ui->labelConstrainStatus, SIGNAL(linkActivated(const QString &)), this , SLOT (on_labelConstrainStatus_linkActivated(const QString &)) ); - QObject::connect( - ui->autoUpdate, SIGNAL(stateChanged(int)), - this , SLOT (on_autoUpdate_stateChanged(int)) - ); QObject::connect( ui->manualUpdate, SIGNAL(clicked(bool)), this , SLOT (on_manualUpdate_clicked(bool)) @@ -123,22 +126,13 @@ void TaskSketcherMessages::on_labelConstrainStatusLink_linkClicked(const QString } -void TaskSketcherMessages::on_autoUpdate_stateChanged(int state) +void TaskSketcherMessages::onAutoUpdateStateChanged() { - if(state==Qt::Checked) { - sketchView->getSketchObject()->noRecomputes=false; - ui->autoUpdate->onSave(); - } - else if (state==Qt::Unchecked) { - sketchView->getSketchObject()->noRecomputes=true; - ui->autoUpdate->onSave(); - } -} + bool state = qAsConst(ui->manualUpdate)->actions()[0]->isChecked(); -void TaskSketcherMessages::on_autoRemoveRedundants_stateChanged(int state) -{ - Q_UNUSED(state); - ui->autoRemoveRedundants->onSave(); + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); + hGrp->SetBool("AutoRecompute", state); + sketchView->getSketchObject()->noRecomputes = !state; } void TaskSketcherMessages::on_manualUpdate_clicked(bool checked) diff --git a/src/Mod/Sketcher/Gui/TaskSketcherMessages.h b/src/Mod/Sketcher/Gui/TaskSketcherMessages.h index 7d3a462a2d..956702ade0 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherMessages.h +++ b/src/Mod/Sketcher/Gui/TaskSketcherMessages.h @@ -39,20 +39,19 @@ namespace SketcherGui { class ViewProviderSketch; -class TaskSketcherMessages : public Gui::TaskView::TaskBox +class TaskSketcherMessages : public QWidget { Q_OBJECT public: - explicit TaskSketcherMessages(ViewProviderSketch *sketchView); + explicit TaskSketcherMessages(ViewProviderSketch* sketchView); ~TaskSketcherMessages() override; - void slotSetUp(const QString &state, const QString &msg, const QString& link, const QString& linkText); + void slotSetUp(const QString& state, const QString& msg, const QString& link, const QString& linkText); private Q_SLOTS: void on_labelConstrainStatusLink_linkClicked(const QString &); - void on_autoUpdate_stateChanged(int state); - void on_autoRemoveRedundants_stateChanged(int state); + void onAutoUpdateStateChanged(); void on_manualUpdate_clicked(bool checked); protected: @@ -60,7 +59,6 @@ protected: Connection connectionSetUp; private: - QWidget* proxy; std::unique_ptr ui; }; diff --git a/src/Mod/Sketcher/Gui/TaskSketcherMessages.ui b/src/Mod/Sketcher/Gui/TaskSketcherMessages.ui index 8c95744c99..962fc0e934 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherMessages.ui +++ b/src/Mod/Sketcher/Gui/TaskSketcherMessages.ui @@ -13,89 +13,44 @@ Form - + - - - - - DOF - - - - - - - Link - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - New constraints that would be redundant will automatically be removed - + - Auto remove redundants - - - false - - - AutoRemoveRedundants - - - Mod/Sketcher + DOF - - - - - Executes a recomputation of active document after every sketch action - - - Auto update - - - false - - - AutoRecompute - - - Mod/Sketcher - - - - - - - Forces recomputation of active document - - - Update - - - - + + + Link + + + + + + + + 0 + 0 + + + + Forces recomputation of active document + + + + + + + + :/icons/view-refresh.svg:/icons/view-refresh.svg + + + QToolButton::MenuButtonPopup + +