From a76286aa272a8f83f15dc16a043450cec2b95058 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Tue, 18 Apr 2017 02:19:14 +0200 Subject: [PATCH] Sketcher: Edit Controls' checkboxes to independently hide/show driving/non-driving constraints --- src/Mod/Sketcher/Gui/TaskSketcherGeneral.cpp | 26 ++++++++++++++- src/Mod/Sketcher/Gui/TaskSketcherGeneral.h | 3 ++ src/Mod/Sketcher/Gui/TaskSketcherGeneral.ui | 35 ++++++++++++++++++-- src/Mod/Sketcher/Gui/ViewProviderSketch.cpp | 16 +++++++-- src/Mod/Sketcher/Gui/ViewProviderSketch.h | 3 ++ 5 files changed, 77 insertions(+), 6 deletions(-) diff --git a/src/Mod/Sketcher/Gui/TaskSketcherGeneral.cpp b/src/Mod/Sketcher/Gui/TaskSketcherGeneral.cpp index 3be9277de7..050c8b3ba3 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherGeneral.cpp +++ b/src/Mod/Sketcher/Gui/TaskSketcherGeneral.cpp @@ -56,6 +56,10 @@ SketcherGeneralWidget::SketcherGeneralWidget(QWidget *parent) this, SIGNAL(emitToggleAutoconstraints(int))); connect(ui->renderingOrder->model(), SIGNAL(layoutChanged()), this, SLOT(renderOrderChanged())); + connect(ui->checkBoxHideDrivenConstraints, SIGNAL(stateChanged(int)), + this, SLOT(constraintcheckboxes_stateChanged(int))); + connect(ui->checkBoxHideDrivingConstraints, SIGNAL(stateChanged(int)), + this, SLOT(constraintcheckboxes_stateChanged(int))); } SketcherGeneralWidget::~SketcherGeneralWidget() @@ -108,6 +112,9 @@ void SketcherGeneralWidget::loadSettings() newItem->setData(Qt::UserRole, QVariant(lowid)); newItem->setText(lowid==1?tr("Normal Geometry"):lowid==2?tr("Construction Geometry"):tr("External Geometry")); ui->renderingOrder->insertItem(2,newItem); + + ui->checkBoxHideDrivenConstraints->onRestore(); + ui->checkBoxHideDrivingConstraints->onRestore(); } void SketcherGeneralWidget::toggleGridView(bool on) @@ -155,6 +162,14 @@ void SketcherGeneralWidget::renderOrderChanged() emitrenderOrderChanged(); } +void SketcherGeneralWidget::constraintcheckboxes_stateChanged(int state) +{ + Q_UNUSED(state); + emithideconstraints(ui->checkBoxHideDrivingConstraints->isChecked(),ui->checkBoxHideDrivenConstraints->isChecked()); + ui->checkBoxHideDrivenConstraints->onSave(); + ui->checkBoxHideDrivingConstraints->onSave(); +} + // ---------------------------------------------------------------------------- TaskSketcherGeneral::TaskSketcherGeneral(ViewProviderSketch *sketchView) @@ -187,9 +202,13 @@ TaskSketcherGeneral::TaskSketcherGeneral(ViewProviderSketch *sketchView) QObject::connect( widget, SIGNAL(emitrenderOrderChanged()), - this , SLOT (renderOrderChanged()) + this , SLOT (renderOrderChanged()) ); + QObject::connect( + widget, SIGNAL(emithideconstraints(bool,bool)), + this , SLOT (hideconstraints(bool,bool)) + ); Gui::Selection().Attach(this); widget->loadSettings(); @@ -242,4 +261,9 @@ void TaskSketcherGeneral::renderOrderChanged() sketchView->updateColor(); } +void TaskSketcherGeneral::hideconstraints(bool hidedriving, bool hidedriven) +{ + sketchView->showConstraints(hidedriving,hidedriven); +} + #include "moc_TaskSketcherGeneral.cpp" diff --git a/src/Mod/Sketcher/Gui/TaskSketcherGeneral.h b/src/Mod/Sketcher/Gui/TaskSketcherGeneral.h index 3aea413478..32a2c433ef 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherGeneral.h +++ b/src/Mod/Sketcher/Gui/TaskSketcherGeneral.h @@ -56,12 +56,14 @@ Q_SIGNALS: void emitSetGridSize(double); void emitToggleAutoconstraints(int); void emitrenderOrderChanged(); + void emithideconstraints(bool,bool); public Q_SLOTS: void toggleGridView(bool on); void setGridSize(double val); void toggleGridSnap(int state); void renderOrderChanged(); + void constraintcheckboxes_stateChanged(int state); protected: void changeEvent(QEvent *e); @@ -91,6 +93,7 @@ public Q_SLOTS: void toggleGridSnap(int state); void toggleAutoconstraints(int state); void renderOrderChanged(); + void hideconstraints(bool hidedriving, bool hidedriven); private: ViewProviderSketch *sketchView; diff --git a/src/Mod/Sketcher/Gui/TaskSketcherGeneral.ui b/src/Mod/Sketcher/Gui/TaskSketcherGeneral.ui index 3d149cf744..df9083b69f 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherGeneral.ui +++ b/src/Mod/Sketcher/Gui/TaskSketcherGeneral.ui @@ -6,8 +6,8 @@ 0 0 - 194 - 228 + 229 + 284 @@ -80,6 +80,32 @@ + + + + Hide driving constraints + + + HideDrivingConstraints + + + Mod/Sketcher + + + + + + + Hide reference constraints + + + HideDrivenConstraints + + + Mod/Sketcher + + + @@ -108,6 +134,11 @@ QWidget
Gui/PrefWidgets.h
+ + Gui::PrefCheckBox + QCheckBox +
Gui/PrefWidgets.h
+
diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index d8a49760d5..a51d084716 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -4797,8 +4797,8 @@ void ViewProviderSketch::rebuildConstraintsVisual(void) SoSwitch *drivingsw = new SoSwitch(); SoSwitch *drivensw = new SoSwitch(); - drivingsw->whichChild = hGrpp->GetBool("DrivingConstraintsVisible", true)?SO_SWITCH_ALL:SO_SWITCH_NONE; - drivensw->whichChild = hGrpp->GetBool("DrivenConstraintsVisible", true)?SO_SWITCH_ALL:SO_SWITCH_NONE; + drivingsw->whichChild = hGrpp->GetBool("HideDrivingConstraints", false)?SO_SWITCH_NONE:SO_SWITCH_ALL; + drivensw->whichChild = hGrpp->GetBool("HideDrivenConstraints", false)?SO_SWITCH_NONE:SO_SWITCH_ALL; drivingsw->ref(); drivensw->ref(); @@ -5890,9 +5890,19 @@ Base::Placement ViewProviderSketch::getPlacement() { return Plz; } -void ViewProviderSketch::showRestoreInformationLayer() { +void ViewProviderSketch::showRestoreInformationLayer() +{ visibleInformationChanged = true ; draw(false,false); } +void ViewProviderSketch::showConstraints(bool hidedriving, bool hidedriven) +{ + SoSwitch *drivingsw = static_cast(edit->constrGroup->getChild(0)); + SoSwitch *drivensw = static_cast(edit->constrGroup->getChild(1)); + + drivingsw->whichChild = hidedriving?SO_SWITCH_NONE:SO_SWITCH_ALL; + drivensw->whichChild = hidedriven?SO_SWITCH_NONE:SO_SWITCH_ALL; +} + diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.h b/src/Mod/Sketcher/Gui/ViewProviderSketch.h index 995bdc6186..7676d1f167 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.h +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.h @@ -125,6 +125,9 @@ public: /// Show/Hide nodes from information layer void showRestoreInformationLayer(); + /// Show/Hide constraints + void showConstraints(bool hidedriving = false, bool hidedriven = false); + /** @name handler control */ //@{ /// sets an DrawSketchHandler in control