Previously AutoColor property forced reinitialization of all subscribed
parameters. It was mostly fine as most of them should stay in sync with
user settings but it also affected grids.
This commit introduces AutoColor property for sketches that when
enabled ensures that sketches are updated with the color of user
preference. It ensures that sketches from different users will be
still visible on different themes.
To ensure backward compatiblity migration strategy is to compute default
value for this property based on the color. If it is non-white (the
default value in FreeCAD) we assume that the change was inentional and
that it should be kept as-is turning automatic coloring off. In other
cases it is enabled by default.
Fixes: FreeCAD#13980
===============================================
Sets the full interface between the DrawSketchHandler and a tool widget available somewhere in the UI.
Signalling is as follows:
1. On activation of the tool, DrawSketchHandler notifies the tool widget.
2. The tool widget retrieves tool information necessary for representation (type of widget, visibility, ...)
3. When the tool widget has created an appropriate widget, it notifies back a widget change.
4. The tool receives the widget handler and can now configure and interact with the widget.
===============================================
Removal of ViewProviderGridExtension properties:
-GridStyle
-GridSnap
Improvement of ViewProviderGridExtension API:
- color via App::Color
Toolbar grid command:
- Conversion of Snapping to edit parameter
- Snap gets a class enum to support future Snapping functionalities as edit parameter
Sketcher Settings:
- Removal of snap preference
Behaviour:
- ShowGrid, GridAuto, GridSize preferences do not change any existing VP. They apply to any newly created sketch.
- Do not limit grid to hardcoded values
Snap to grid:
- Code updated to use closestpoint functionality provided by the extension,
Several other fixes
==================================
- Move all grid specific code out of ViewProviderSketch and EditModeCoinManager.
- The code in made into a new extension in Part - ViewProviderGridExtension
- ViewProviderSketch starts deriving from this new extension
- ViewProviderSketch configures the extension according to its Grid preferences
- Grid code refactored to remove hardcoded sketcher preference parameters.
- ViewProviderGridExtension handles property name/type changes within its competence.
- in current implementation, backedit feature is lost if user changes camera mode (for example from orthographic to
perspective, or oppositely). This happens because when changing camera mode, Coin actually do not just change a
parameter of the camera node, but delete the current camera node and add a new one to the scenegraph. Thus the
SoFieldSensor currently used (attached to camera orientation) is just detached and sensing is left -- notice is would
be same with a SoNodeSensor attached to camera node --. The solution is to attach the sensor at scenegraph root node
so it isn't lost when camera mode changed. No pre-check (such as checking if camera node changed since last call) has
been added currently because it would not actually reduce callback execution time (and even worsen it).
===============================================================================
- Support to programatically move the cursor to sketch coordinates
- Support to try preselection at a given sketch coordinates
=====================================================
Extension of the framework to draw an arbitrary curve in draw sketch handlers, so that
a plurality of curves can be handled.
DrawSketchHandler is extended to additionally offer drawing several curves:
- void drawEdit(const std::list<std::vector<Base::Vector2d>> &list);
- void drawEdit(const std::vector<Part::Geometry *> &geometries);
A new class, CurveConverter, enables to convert individual Part::Geometry or vectors of them
to appropriate vectors or list of vectors of Vector2d representing the curves. This can be
used in a specific DrawSketchHandler to combine Part::Geometries and arbritary curves.