Commit Graph

40381 Commits

Author SHA1 Message Date
Joao Matos
15076cb504 Core: Move PyCXX library to src/3rdParty. 2025-02-24 16:36:06 +00:00
sliptonic
d2a339f32c Merge pull request #19725 from chennes/cmakeUpdates2025
CMake: Clean up policies
2025-02-24 17:33:10 +01:00
Kevin Martin
edb8e4c937 Address performance of existing unique-name generation (Part 2) (#18676)
As described in Issue 16849, the existing Tools::getUniqueName method
requires calling code to form a vector of existing names to be avoided.

This leads to poor performance both in the O(n) cost of building such a
vector and also getUniqueName's O(n) algorithm for actually generating
the unique name (where 'n' is the number of pre-existing names).

This has  particularly noticeable cost in documents with large numbers
of DocumentObjects because generating both Names and Labels for each new
object incurs this cost. During an operation such as importing this
results in an O(n^2) time spent generating names.

The other major cost is in the saving of the temporary backup file,
which uses name generation for the "files" embedded in the Zip file.
Documents can easily need several such "files" for each object in the
document.

This update includes the following changes to use the newly-added
UniqueNameManager as a replacement for the old Tools::getUniqueName
method and deletes the latter to remove any temptation to use it as
its usage model breeds inefficiency:

Eliminate Tools::getUniqueName, its local functions, and its unit tests.

Make DocumentObject naming use the new UniqueNameManager class.

Make DocumentObject Label naming use the new UniqueNameManager class.
This needs to monitor DocumentObject Labels for changes since this
property is not read-only. The special handling for the Label
property, which includes optionally forcing uniqueness and updating
links in referencing objects, has been mostly moved from
PropertyString to DocumentObject.

Add Document::containsObject(DocumentObject*) for a definitive
test of an object being in a Document. This is needed because
DocumentObjects can be in a sort of limbo (e.g. when they are in the
Undo/Redo lists) where they have a parent linkage to the Document but
should not participate in Label collision checks.

Rename Document.getStandardObjectName to getStandardObjectLabel
to better represent what it does.

Use new UniqueNameManager for Writer internal filenames within the zip
file.

Eliminate unneeded Reader::FileNames collection. The file names
already exist in the FileList collection elements. The only existing
use for the FileNames collection was to determine if there were any
files at all, and with FileList and FileNames being parallel
vectors, they both had the same length so FileList could be used
for this test..

Use UniqueNameManager for document names and labels. This uses ad hoc
UniqueNameManager objects created on the spot on the assumption that
document creation is relatively rare and there are few documents, so
although the cost is O(n), n itself is small.

Use an ad hoc UniqueNameManager to name new DymanicProperty entries.
This is only done if a property of the proposed name already exists,
since such a check is more-or-less O(log(n)), almost never finds a
collision, and avoids the O(n) building of the UniqueNameManager.
If there is a collision an ad-hoc UniqueNameManager is built
and discarded after use.
The property management classes have a bit of a mess of methods
including several to populate various collection types with all
existing properties. Rather than introducing yet another such
collection-specific method to fill a UniqueNameManager, a
visitProperties method was added which calls a passed function for
each property. The existing code (e.g. getPropertyMap) would be
simpler if they all used this but the cost of calling a lambda
for each property must be considered. It would clarify the semantics
of these methods, which have a bit of variance in which properties
populate the passed collection, e.g. when there are duplicate names..
Ideally the PropertyContainer class would keep a central directory of
all properties ("static", Dynamic, and exposed by ExtensionContainer and
other derivations) and a permanent UniqueNameManager. However the
Property management is a bit of a mess making such a change a project
unto itself.
2025-02-24 10:23:53 -06:00
Chris Hennes
bd3133a5f2 Merge pull request #19397 from kadet1090/three-point-lighting
Add three-point lighting
2025-02-24 16:22:34 +00:00
mosfet80
24fa7c0166 Clean StartupProcess.cpp (#19642)
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-02-24 10:21:26 -06:00
Andrew
5c7a65bdb9 fixes #19582 Sketcher - cannot project BSpline from another sketch (#19700)
Also fixes some other types of external geo

---------

Co-authored-by: Andrew Shkolik <andrew.shkolik@selerix.com>
Co-authored-by: realthunder <realthunder.dev@gmail.com>
2025-02-24 10:17:24 -06:00
Kaung Zin Hein
0b2610f1af Gui: "Open File Location/Reveal in Finder" in Tree view (#19805)
* Add: barebone openFileLocation on linux
* Feat: Add handling for different types of os
* Fix: Use preprocessors
* Fix: directive typo

---------

Signed-off-by: Kaung Zin Hein <83657429+Zen-cronic@users.noreply.github.com>
2025-02-24 10:15:28 -06:00
Furgo
faa8c5b080 Add-On Manager: generalize removal of non-compatible pip options for the snap package (#19814) 2025-02-24 09:38:47 -06:00
Furgo
3428bb655b Add-On Manager: list correct vendor path for snaps (#19816) 2025-02-24 09:36:07 -06:00
Chris Hennes
51613a5b56 Merge pull request #19253 from Jonezzzzz/SketcherGroupCommandsFix
Sketcher: Fixed Inconsistency between button tooltips and labeling for shortcuts.
2025-02-23 22:20:07 +00:00
Kacper Donat
36195d1981 Base: Add fromPercent and toPercent helpers 2025-02-23 22:51:13 +01:00
Kacper Donat
8dbc4042b3 Gui: Add 3 point lighting 2025-02-23 22:51:13 +01:00
Roy-043
4e5bd67291 Assembly: Make 2 menu texts more consistent
Menu texts in the Assembly WB are in title case without articles.

The following menu texts did not follow that 'standard':
* Insert a new part
* Create a Fixed Joint
2025-02-23 13:39:25 -06:00
Adrian Insaurralde
3ebd6ed88d CI: fix assembly unit tests executable name 2025-02-23 13:23:25 -06:00
Syres916
1d465c22c0 [Gui] Expression dialog OK, capitalised and Alt+O shortcut applied 2025-02-23 16:51:04 +01:00
mosfet80
0f11cbdaaa clean QGSPage.cpp
-removed unused variable

-clean code
2025-02-23 09:17:53 -05:00
wandererfan
06d81c73ce [TD]fix page selection from list 2025-02-23 09:16:33 -05:00
wandererfan
6d1559afb6 [TD]prevent quiet no-result on no page 2025-02-23 09:16:33 -05:00
WandererFan
112c83bea7 Update src/Mod/TechDraw/Gui/ViewProviderPage.cpp
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-02-23 09:15:47 -05:00
WandererFan
19ca270456 Update src/Mod/TechDraw/Gui/ViewProviderPage.cpp
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-02-23 09:15:47 -05:00
WandererFan
81e81843db Update src/Mod/TechDraw/Gui/ViewProviderPage.cpp
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-02-23 09:15:47 -05:00
wandererfan
346851b687 [TD]lint removal 2025-02-23 09:15:47 -05:00
wandererfan
8c4315ba20 [TD]fix maximize tab on view insertion 2025-02-23 09:15:47 -05:00
WandererFan
abb57f10b6 Update src/Mod/TechDraw/Gui/QGIViewDimension.cpp
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-02-23 09:14:23 -05:00
wandererfan
4c39987df4 [TD]fix bad formatting 2025-02-23 09:14:23 -05:00
WandererFan
022dde80f1 Update src/Mod/TechDraw/Gui/QGIViewDimension.cpp
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-02-23 09:14:23 -05:00
WandererFan
d928750026 Update src/Mod/TechDraw/Gui/QGIViewDimension.cpp
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-02-23 09:14:23 -05:00
wandererfan
812976f9df [TD]lint removal 2025-02-23 09:14:23 -05:00
wandererfan
b084d7fadb {TD]Set Arrow end property at Dimension level. 2025-02-23 09:14:23 -05:00
Chris Hennes
ab4f56fd04 CMake: Correct formatting to match existing 2025-02-22 20:48:44 -06:00
Chris Hennes
ade7246669 CAM: Remove C++14 workaround for boost 2025-02-22 20:48:44 -06:00
Chris Hennes
22f267cc23 Mesh: Remove explicit C++17 requirement 2025-02-22 20:48:44 -06:00
Chris Hennes
54997b4486 CMake: Remove support for old CMake versions 2025-02-22 20:48:44 -06:00
Chris Hennes
5ab95da340 CMake: Add policy 0177 to normalize install paths
Also sort policies by number.
2025-02-22 20:48:44 -06:00
Chris Hennes
72beb551c6 CI: Update LibPack version in action
Also requires deleting the cached copy.
2025-02-22 20:48:44 -06:00
Chris Hennes
fa5e3d0b55 CMake: Adopt policy CMP0144
All-uppercase find_package()
2025-02-22 20:48:44 -06:00
Chris Hennes
60a43400e2 CMake: Correct use of CACHE 2025-02-22 20:48:44 -06:00
Chris Hennes
bfeed4c05e CMake: PySide cleanup 2025-02-22 20:48:44 -06:00
Chris Hennes
0f4da7a529 CMake: Expand note about BOOST_PP_VARIADICS=1 2025-02-22 20:48:43 -06:00
Chris Hennes
899506815c Gui: Change variable name import->importCommand
import is a reserved word in c++latest
2025-02-22 20:48:43 -06:00
Chris Hennes
0cede13200 CMake: Set CMP0153 to NEW 2025-02-22 20:48:43 -06:00
Chris Hennes
24eae5b881 CMake: Add details about why CMP0148 is needed 2025-02-22 20:48:43 -06:00
Chris Hennes
b09e1436cf CMake: Update compiler and standard mins 2025-02-22 20:48:43 -06:00
Chris Hennes
b926bb7220 CMake: Remove old policy 0072 2025-02-22 20:48:43 -06:00
Chris Hennes
deea81e98d CMake: Add policy CMP0175 2025-02-22 20:48:43 -06:00
bofdahof
6f84cd5971 current src path no longer required 2025-02-22 20:48:30 -06:00
Jacob Oursland
8fa089ba9c CMake: Remove unsupported DEPENDS args to CMake macros. 2025-02-22 20:41:15 -06:00
Chris Hennes
d70b33a87c Addon Manager: Fix pip usage on Snap and Appimage 2025-02-22 12:02:06 -06:00
GHDE
bce3a3ce65 fixed openExternalLinks in DlbAbout (FreeCAD#16423) 2025-02-22 12:00:39 -06:00
Andrea
364ee7c295 update conda
switch to last 24 version
fix:
https://github.com/conda/conda-libmamba-solver/releases
2025-02-22 17:37:24 +01:00