Add template specification for `SketcherAddWorkspaceSketchExtra`
for type `Gui::ToolBarItem` so that the following commands
are added to the toolbar as well as the Sketcher menu:
`ReorientSketch`, `ValidateSketch`, `MergeSketch`, `MirrorSketch`,
`StopOperation`.
Reorganize the order of the function declarations
so that they are in this order: Sketch actions (general),
geometries, constraints, tools, B-splines, and virtual space.
Add separators to the list of tools commands in the menu
so that it looks clearer.
Correct the header guard `#ifndef SKETCHER_WORKBENCH_H`.
Previously, it was using a guard `IMAGE_WORKBENCH_H`
seemingly copied from the Image Workbench.
When the sketch is not in XY plane, individual constraints from the merged constraint icon can't be selected. Constraint icon coordinates are given in sketcher coordinates. The function getCoordsOnSketchPlane projects vector in global coordinates to the sketch plane. So, it makes no sense to use sketcher coordinates with it. If the sketch is in the XY plane, then the global coordinates are the same as sketcher coordinates. The solution is to get global coordinates of the icon from the sketcher coordinates and use it to project icon to the screen.
* Change the formula to calculate maximum distance for merging of constraint icons.
* Ignore z coordinate while calculating the distance between icons. It is irrelevant but can slightly differ between icons.
* Choose first icon from the group of nearby icons as a location of the composite icon, instead of choosing icon closest to the average position. Fixes jittering of the icon while one of the constraints is moved.
Constraint icons that located close to each other get merged into a single icon. If you zoom in, individual constraints on these icons can't be selected anymore because their relative positions, which must depend on the zoom, don't change. The problem is solved by multiplying relative position by the scale factor which depends on the magnification.
New SVG icons, `Sketcher_DeleteConstraints`, `Sketcher_DeleteGeometry`
for two commands which previously used the very simple icon
`Element_SelectionTypeInvalid` (a single red X).
These icons clarify that the commands are used to delete
the constraints and the geometry, respectively.
Most tools should be exposed in the toolbars and not kept
"hidden" in the menus.
* `ConstrainInternalAlignment` is added in the "constraints" toolbar.
* `SelectElementsWithDoF` is added in the "tools" toolbar.
Also amend the name of the `Sketcher_BSplineConvertToNURB` command.
`SelectConstraints`, `SelectElementsAssociatedWithConstraints`,
these include the icon for parallel constraint, which was upgraded
in ed8ba392.
`SelectRedundantConstraints`, `SelectConflinctingConstraints`,
previosuly were the same with only a small color variation (orange
outline and red outline). Now they have another symbol overlayed
(lightning and exclamation mark) to distinguish them more clearly.
The parallel icon was also upgraded in these icons.
The `Move` icon is also made more clear. The first element
now has a clear outline, instead of being a faded green color
which is hard to see. An arrow is added to imply movement
from the first position to the second position.
`Sketcher_ConstrainBlock` to `Constraint_Block`.
`Sketcher_ConstrainLock` to `Constraint_Lock`, and the corresponding
`_Driven` variant.
Adjust the icons in the taskpanel for the sketcher constraints,
elements, and for the action menu for constraints.
Adjust the icon order in the `Sketcher.qrc` resource file.
An empty block after a conditional can be a sign of an omission and can decrease maintainability of the code.
Such blocks should contain an explanatory comment to aid future maintainers.