Sketcher: Constraint Widget extended filter
=========================================== - Remove "Normal" as it did exactly the same as "All". - Add "Geometric" to filter only Geometric (non datum) constraints - Add all individual constraint types to filter. As per request: https://forum.freecadweb.org/viewtopic.php?p=534176#p534176
This commit is contained in:
@@ -912,45 +912,71 @@ void TaskSketcherConstrains::slotConstraintsChanged(void)
|
||||
ConstraintItem * it = static_cast<ConstraintItem*>(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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Normal</string>
|
||||
<string>Geometric</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
@@ -65,6 +65,101 @@
|
||||
<string>Reference</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Horizontal</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Vertical</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Coincident</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Point on Object</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Parallel</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Perpendicular</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Tangent</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Equality</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Symmetric</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Block</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Distance</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Horizontal Distance</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Vertical Distance</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Radius</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Weight</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Diameter</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Angle</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Snell's Law</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Internal Alignment</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
|
||||
Reference in New Issue
Block a user