diff --git a/src/Mod/Sketcher/Gui/TaskSketcherConstrains.cpp b/src/Mod/Sketcher/Gui/TaskSketcherConstrains.cpp index b55fba8077..2d1a44b447 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherConstrains.cpp +++ b/src/Mod/Sketcher/Gui/TaskSketcherConstrains.cpp @@ -912,45 +912,71 @@ void TaskSketcherConstrains::slotConstraintsChanged(void) ConstraintItem * it = static_cast(ui->listWidgetConstraints->item(i)); bool visible = true; - /* Filter - 0 <=> All - 1 <=> Normal - 2 <=> Datums - 3 <=> Named - 4 <=> Non-Driving - */ - - bool showNormal = (Filter < 2); - bool showDatums = (Filter < 3); - bool showNamed = (Filter == 3 && !(constraint->Name.empty())); - bool showNonDriving = (Filter == 4 && !constraint->isDriving); + bool showAll = (Filter == FilterValue::All); + bool showGeometric = (Filter == FilterValue::Geometric); + bool showDatums = (Filter == FilterValue::Datums); + bool showNamed = (Filter == FilterValue::Named && !(constraint->Name.empty())); + bool showNonDriving = (Filter == FilterValue::NonDriving && !constraint->isDriving); bool hideInternalAlignment = this->ui->filterInternalAlignment->isChecked(); switch(constraint->Type) { case Sketcher::Horizontal: + visible = showAll || showGeometric || showNamed || (Filter == FilterValue::Horizontal); + break; case Sketcher::Vertical: + visible = showAll || showGeometric || showNamed || (Filter == FilterValue::Vertical); + break; case Sketcher::Coincident: + visible = showAll || showGeometric || showNamed || (Filter == FilterValue::Coincident); + break; case Sketcher::PointOnObject: + visible = showAll || showGeometric || showNamed || (Filter == FilterValue::PointOnObject); + break; case Sketcher::Parallel: + visible = showAll || showGeometric || showNamed || (Filter == FilterValue::Parallel); + break; case Sketcher::Perpendicular: + visible = showAll || showGeometric || showNamed || (Filter == FilterValue::Perpendicular); + break; case Sketcher::Tangent: + visible = showAll || showGeometric || showNamed || (Filter == FilterValue::Tangent); + break; case Sketcher::Equal: + visible = showAll || showGeometric || showNamed || (Filter == FilterValue::Equality); + break; case Sketcher::Symmetric: + visible = showAll || showGeometric || showNamed || (Filter == FilterValue::Symmetric); + break; case Sketcher::Block: - visible = showNormal || showNamed; + visible = showAll || showGeometric || showNamed || (Filter == FilterValue::Block); break; case Sketcher::Distance: + visible = ( showAll || showDatums || showNamed || showNonDriving) || (Filter == FilterValue::Distance); + break; case Sketcher::DistanceX: + visible = ( showAll || showDatums || showNamed || showNonDriving) || (Filter == FilterValue::HorizontalDistance); + break; case Sketcher::DistanceY: + visible = ( showAll || showDatums || showNamed || showNonDriving) || (Filter == FilterValue::VerticalDistance); + break; case Sketcher::Radius: + visible = ( showAll || showDatums || showNamed || showNonDriving) || (Filter == FilterValue::Radius); + break; case Sketcher::Weight: + visible = ( showAll || showDatums || showNamed || showNonDriving) || (Filter == FilterValue::Weight); + break; case Sketcher::Diameter: + visible = ( showAll || showDatums || showNamed || showNonDriving) || (Filter == FilterValue::Diameter); + break; case Sketcher::Angle: + visible = ( showAll || showDatums || showNamed || showNonDriving) || (Filter == FilterValue::Angle); + break; case Sketcher::SnellsLaw: - visible = (showDatums || showNamed || showNonDriving); + visible = ( showAll || showDatums || showNamed || showNonDriving) || (Filter == FilterValue::SnellsLaw); break; case Sketcher::InternalAlignment: - visible = ((showNormal || showNamed) && !hideInternalAlignment); + visible = (( showAll || showGeometric || showNamed || Filter == FilterValue::InternalAlignment) && + (!hideInternalAlignment || (Filter == FilterValue::InternalAlignment))); default: break; } diff --git a/src/Mod/Sketcher/Gui/TaskSketcherConstrains.h b/src/Mod/Sketcher/Gui/TaskSketcherConstrains.h index 27864995d9..a0f304e352 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherConstrains.h +++ b/src/Mod/Sketcher/Gui/TaskSketcherConstrains.h @@ -71,6 +71,33 @@ class TaskSketcherConstrains : public Gui::TaskView::TaskBox, public Gui::Select { Q_OBJECT + enum FilterValue { + All = 0, + Geometric = 1, + Datums = 2, + Named = 3, + NonDriving = 4, + Horizontal = 5, + Vertical = 6, + Coincident = 7, + PointOnObject = 8, + Parallel = 9, + Perpendicular = 10, + Tangent = 11, + Equality = 12, + Symmetric = 13, + Block = 14, + Distance = 15, + HorizontalDistance = 16, + VerticalDistance = 17, + Radius = 18, + Weight = 19, + Diameter = 20, + Angle = 21, + SnellsLaw = 22, + InternalAlignment = 23 + }; + public: TaskSketcherConstrains(ViewProviderSketch *sketchView); ~TaskSketcherConstrains(); diff --git a/src/Mod/Sketcher/Gui/TaskSketcherConstrains.ui b/src/Mod/Sketcher/Gui/TaskSketcherConstrains.ui index 8752bc40dd..ecfb596dd9 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherConstrains.ui +++ b/src/Mod/Sketcher/Gui/TaskSketcherConstrains.ui @@ -47,7 +47,7 @@ - Normal + Geometric @@ -65,6 +65,101 @@ Reference + + + Horizontal + + + + + Vertical + + + + + Coincident + + + + + Point on Object + + + + + Parallel + + + + + Perpendicular + + + + + Tangent + + + + + Equality + + + + + Symmetric + + + + + Block + + + + + Distance + + + + + Horizontal Distance + + + + + Vertical Distance + + + + + Radius + + + + + Weight + + + + + Diameter + + + + + Angle + + + + + Snell's Law + + + + + Internal Alignment + +