Commit Graph

2292 Commits

Author SHA1 Message Date
Kacper Donat
c6130552ca Merge pull request #21427 from tritao/async-occt-progress
Part: Introduce `OCCTProgressIndicator` and port operations to support it.
2025-06-02 18:04:38 +02:00
Chris Hennes
6a5db43eb5 Merge pull request #21706 from 3x380V/fix_start
Start: Fix crash
2025-06-02 09:45:09 -05:00
Yorik van Havre
94144ecd99 Translations: Merged crowdin translations 2025-06-02 11:48:26 +02:00
Yorik van Havre
bba4a7b990 Translations: updated ts files 2025-06-02 11:07:28 +02:00
wmayer
ca987bf0b5 App: Handle possibly raised exception in ZipFile constructor
This fixes the issue reported at:
https://forum.freecad.org/viewtopic.php?t=93619
2025-06-02 08:22:07 +02:00
Joao Matos
39efc8ec0f Part: Add OCCT progress support to Part boolean and shape builders
Introduce a `Build(const Message_ProgressRange&)` overload in
`FCBRepAlgoAPI_BooleanOperation` (guarded by `OCC_VERSION_HEX <
0x070600`) and route user-abort checks around the operation. Add a new
`OCCTProgressIndicator` adapter (`OCCTProgressIndicator.h`) that bridges
`Message_ProgressIndicator` to `Base::ProgressIndicator`. Include
`OCCTProgressIndicator.h` where needed and update all `Build()` calls in
`TopoShape` and `TopoShapeExpansion` to pass
`OCCTProgressIndicator().Start()`, enabling singleton-based progress
reporting and user-break handling.
2025-05-30 18:25:32 +01:00
Gonzalo Odiard
eb92a4f496 App: Make Label property on Document read only (#21562)
Fixes: #10010
2025-05-29 22:43:34 +02:00
Pieter Hijma
5bdfba3a1a Core: Update expressions on property rename
This includes both expressions in generic containers and in
spreadsheets.
2025-05-26 18:11:27 +02:00
Pieter Hijma
18d87df6f1 Core: Add a Python interface for property rename 2025-05-26 18:11:27 +02:00
Pieter Hijma
e7f8f2f48c Core: Add logic to rename dynamic properties 2025-05-26 18:11:27 +02:00
Syres916
0e40f2dfc5 [App] Use consistent unit schema names (#21355)
* [Start] ensure user's preferred unit schema is retained after restart of application

* [App] use consistent schema names throughout the application

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* [Start] Revert commit 2eea421

in preference to PR #21466

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-05-26 17:33:45 +02:00
Pieter Hijma
56b7116dce Doc: Move Extension documentation to a topic
This commit constitutes an almost verbatim move from the documentation
of Extension and ExtensionContainer to its own topic in core-app.dox.
2025-05-20 13:39:26 +02:00
Pieter Hijma
ea3d81fb94 Doc: Reorder topics 2025-05-20 13:39:26 +02:00
hlorus
c9b87c5862 Measure: Add MeasureElementType::Surface 2025-05-20 12:01:14 +02:00
Joao Matos
1f5e0f6494 App: Invoke signalBeforeRecompute() on the GUI thread
Historically, `App::Document::recompute()` ran entirely on the **main**
(GUI) thread and directly emitted `signalBeforeRecompute()`.

* Add-ons like **Assembly3** and others depend on that signal for
setup/teardown hooks before any recompute work begins.

* After offloading `recompute()` into a background worker thread to keep
the UI responsive, calling `signalBeforeRecompute()` directly from the
worker would break thread-affinity rules and silently break
compatibility with those add-ons.

**Solution**

1. **Introduce a generic hook** (`PreRecomputeHook`) in
**App::Document**:

* A `std::function<void()>` that, if set, is invoked at the very
start of `recompute()`.

* Core code stays Qt-free—only knows to call a callback if one
exists.

2. **Wire up the hook in `Gui::Document`**:

* In the GUI wrapper’s constructor, install a hook that calls
`callSignalBeforeRecompute()`.

* `callSignalBeforeRecompute()` uses `QMetaObject::invokeMethod(...,
Qt::BlockingQueuedConnection)` to enqueue `signalBeforeRecompute()` on
the GUI thread and **block** the worker until it completes.

    * If already on the GUI thread, it simply calls the signal directly.

3. **Maintain add-on compatibility**:

* From the add-on’s perspective nothing changes—they still receive
`signalBeforeRecompute()` on the main thread before any recompute work.

* Internally, the recompute body now runs on a worker thread,
improving UI responsiveness without breaking existing hooks.

**Result**

* **Recompute** remains fully backward-compatible for add-ons like
Assembly3.

* **UI thread** still handles all GUI-related signaling.

* **Worker thread** performs the actual heavy lifting, unblocked only
once the GUI is primed and all pre-recompute signals have been
delivered.
2025-05-19 18:30:56 +02:00
xtemp09
65fe3b8558 Add Navigation Style/Orbit Style/Rotation Mode to About info
Closes #17431
2025-05-19 17:45:00 +02:00
jffmichi
b460bf295c App: Fix exported object dynamic property type identifier (#21415)
Fixes: 9d6f1ad37c ("App: Align Document to best practices")

Co-authored-by: jffmichi <>
2025-05-18 01:38:04 +02:00
Luz Paz
5d052cc043 Fix various typos
Missed by the codespell CI not being functional for a period of time.
2025-05-15 10:59:48 -05:00
3x380V
9d6f1ad37c App: Align Document to best practices (#21059)
* use static cast

* join declaration and definition

* don't hide previous declaration

* initialize in declaration

* redundant else

* reserved identifier

* endl

* implicit conversion

* narrowing

* always false

* replace define with constexpr

* return and continue

* avoid copy

* multiple declarations in line

* use auto

* member initialize

* uninitialized

* range based loop

* move to inner scope

* redundant

* const, mainly

* function parameter descriptions

* misc

---------

Co-authored-by: bofdahof <172177156+bofdahof@users.noreply.github.com>
2025-05-14 09:36:42 +02:00
Chris Hennes
f5806841b6 Merge pull request #19907 from benj5378/getAttribute
Base: make getAttribute template
2025-05-12 10:39:55 -05:00
Benjamin Bræstrup Sayoc
6786af6ef9 Everywhere: clean up getAttribute conversions 2025-05-09 15:54:57 +02:00
Benjamin Bræstrup Sayoc
492b8312b3 Base: make getAttribute template 2025-05-09 15:54:57 +02:00
Pieter Hijma
895bf8db8b Doc: Fix small doc warnings in ExtensionContainer 2025-05-08 17:52:33 -05:00
Pieter Hijma
57d2d51c9b Doc: Improve App::Extension documentation 2025-05-08 17:52:33 -05:00
Pieter Hijma
e9d298a94f Doc: Improve App::ExtensionContainer documentation 2025-05-08 08:28:51 -05:00
Chris Hennes
3b47a4ca4a Merge pull request #21184 from pieterhijma/doc-object-identifier
Doc: Improve App::ObjectIdentifier documentation
2025-05-07 16:22:49 -05:00
Pieter Hijma
ef01818afe Doc: Fix warnings App::Property
PR #21155 introduced some warnings that are fixed in this PR.
2025-05-07 15:15:08 +02:00
Pieter Hijma
a51c72729c Doc: Improve App::ObjectIdentifier docs 2025-05-07 13:34:25 +02:00
Pieter Hijma
295e9636a0 Doc: Move doc comments ObjectIdentifier
Move the doc comments from the cpp file to the header file.
2025-05-07 10:26:28 +02:00
PaddleStroke
4c8fadd68d Core: restoreContent not restoring expressions (#21152) 2025-05-06 12:02:35 -05:00
Pieter Hijma
920029f5ce Doc: Improve App::Property documentation 2025-05-06 12:00:52 -05:00
bofdahof
998f4e4d45 Console: rename PascalCase named methods to camelCase 2025-05-06 17:50:21 +02:00
Ladislav Michl
c293d74566 Base: rename Exception's PascalCase methods to camelCase 2025-05-05 23:50:01 +02:00
Chris Hennes
9b1467cef3 Merge pull request #20540 from 3x380V/cleanup-schemas-management
Simplify UnitsSchemas management
2025-05-05 10:43:27 -05:00
Benjamin Nauck
04ac555ae4 App: use contains() instead of count() 2025-05-03 22:22:10 +02:00
Benjamin Nauck
a43989dfbf App: Use contains instead of std::find 2025-05-03 22:22:10 +02:00
Benjamin Nauck
65ee1339de App: use contains() instead of count() where possible 2025-05-03 22:19:51 +02:00
Pieter Hijma
5953fb6c24 Doc: Improve PropertyContainer documentation 2025-04-29 22:50:14 -05:00
João Neves
0d38b2f7c5 Core: Fixed a bug where an empty document disappears (#20554)
* Core: Fixed a bug where an empty document disappears

Created a flag named autoCreated to distinguish an autoCreated
document created in the startup from a manually document.
Implemented a setter and a getter for this new flag.
Added a codition that verifies if a document is autoCreated
when opening another document to close it in the correct case.
Implemented unit tests for theses cases. Fixes #19868.

Signed-off-by: João Neves <joao.antonio.neves@tecnico.ulisboa.pt>

* Tests: Fix failing auto-created document tests

Signed-off-by: João Neves <joao.antonio.neves@tecnico.ulisboa.pt>

* Tests: moved created tests to the existing Document test framework.

Signed-off-by: João Neves <joao.antonio.neves@tecnico.ulisboa.pt>

---------

Signed-off-by: João Neves <joao.antonio.neves@tecnico.ulisboa.pt>
2025-04-28 10:46:52 -05:00
Luz Paz
4619ab1bff Misc: Fix various typos
Found via codespell
2025-04-27 19:32:19 -05:00
bofdahof
1155f0d752 Base: simplify UnitsSchemas management
Fixes: Maintaining schemas is difficult and error-prone

- Facilitate easy schemas add, remove, change, etc.
- Remove 14 files containing approx 2,190 lines of if/else code and data
- Place data in one file (UnitsSchemasData.h) using a normalized structure (including special functions)
- Isolate and simplify data operations (code)
- Remove schemas enum to keep data independent of code
- Separate responsibilities: Specifications, data, schemas, schema
- Add schema data 'isDefault'
- Add schema data name
- Prefer algorithms to raw loops
- Add schemas unit tests
- Tweak quantity unit tests
2025-04-27 00:45:54 +02:00
Kacper Donat
7accf81bbe App: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat
5a2c107608 App: Fix inheritance information for PropertyEnumeration
For some reason PropertyEnumeration in our type information system was
said to be inherited from App::PropertyInteger, wich is not the case.
This commit fixes that mistake.
2025-04-25 11:12:11 +02:00
Florian Foinant-Willig
d23d3d7ac1 Add locked keyword to Document::addProperty 2025-04-24 16:03:34 +02:00
Monty Montgomery
0a3677b9eb Fix to sanity checking of ElementMap::restore()
An operator precedence error in new sanity checking code within
ElementMap::restore() causes <X>.Shape.Map.txt files with more than
2 element maps to be rejected as invalid.  This silently corrupts
projects upon loading, potentially unrecoverably.

The preexisting code comment is still appropriate if ironic.
2025-04-23 17:19:32 -05:00
Florian Foinant-Willig
257ea040f8 Add locked keyword argument to DocumentObject::addProperty 2025-04-22 23:52:17 +02:00
Pieter Hijma
84b57d67b5 [Doc] Process comments from review
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-04-22 13:42:50 +02:00
Pieter Hijma
108dafb89d [Doc] Improve documentation PropertyContainer 2025-04-22 13:42:50 +02:00
Pieter Hijma
073bf5d0f3 [Doc] Add documentation top-level namespace App 2025-04-22 13:42:50 +02:00
FilippoR
fd390acd53 App: cmake: add missing Coin_INCLUDE_DIR after #20487 (#20863) 2025-04-21 15:01:03 -03:00