With this PR the following 5 command modes are automatically stored in the preferences:
* "ContinueMode"
* "RelativeMode"
* "GlobalMode"
* "fillmode" (existing preference, removed from the Preferences Editor)
* "SubelementMode"
Additionally:
Three commands (Draft_Ellipse, Draft_Rectangle and Draft_Stretch) call `setRelative` after the 1st point has been specified and would permanently switch on relativeMode. After this PR this switch is temporary.
This PR removes the copymode (Global copy mode) preference.
Forum topic:
https://forum.freecad.org/viewtopic.php?t=82679
Additionally useSupport is removed from preferences-draft.ui, turning it into a fine-tuning preference. Use of this feature is rare and may not be supported in the future. No need to present this preference to new users in the UI.
Forum topic:
https://forum.freecad.org/viewtopic.php?t=80689
The tolerance function now derives its value from the precision preference.
Additonally:
Removed the epsilon() function. It did not make sense and was not used.
This PR improves the behavior of the Draft grid:
* Options in the preferences: "Always show the grid" and "Show the grid during commands".
* The parameters are used for new views. In existing views the grid can be toggled either during a command or when no command is active.
* When switching to a different workbench all grids are hidden unless GridHideInOtherWorkbenches is set to `False`. This can be a Fine-tuning parameter IMO.
Notes:
* The defaultCameraHeight parameter becomes obsolete. It was only used in very specific circumstances.
* The code of PR #8818 becomes obsolete. It makes more sense to use `App.activeDraftCommand` instead of adding a `tool` argument to some functions. Will do some related cleanup later.
* Improved alignment for the related preference ui. The checkbox interaction has been fixed as well.
Related issue:
#5603.
The view observer starts/stops when the Draft workbench is activated/deactivated.
Additionally:
* Minor improvements to _update_grid and _update_gui.
Related issue:
#5603.
For gui_snapper.py and gui_trackers.py an intermediate solution has been adopted. They still rely on App.DraftWorkingPlane, but now use a small function to retreive it.
Simply switching to the PlaneGui class is problematic for the trackers as this results in an endless recursion (wp->grid->wp->...). Using the old App.DraftWorkingPlane (which is kept up-to-date by PlaneGui) solves this for now. I will try to return to this later (which may be after the next release though).
* Draft: added the new Draft_Hyperlink command
Signed-off-by: CalligaroV <vincenzo.calligaro@gmail.com>
* Draft: added the new Draft_Hyperlink command
* Updated regex condition for more Windows file paths and network resources
* Added check for file existence
* Modified syntax for Win32/CygWin case
* Declared ret variable outside if statement
Signed-off-by: CalligaroV <vincenzo.calligaro@gmail.com>
* Draft: added the new Draft_Hyperlink command
* Replaced os.startfile and subprocess.call with QDesktopServices.openUrl
* Removed unused Python dependencies
Signed-off-by: CalligaroV <vincenzo.calligaro@gmail.com>
---------
Signed-off-by: CalligaroV <vincenzo.calligaro@gmail.com>
Related issue:
#5603.
* The history idx value was not handled properly.
* Part.getShape() ignores the Placement of a selected BuildingPart. Have to use `place * obj.Placement`.
Related issue:
#5603.
* An 'auto' WP should not be added to the history if the previous WP in the history is also 'auto'.
* The `get_working_plane` function should only call `set_to_default` if the GUI is up. The axis of the returned WP should match global +Z if the GUI is not up.