Commit Graph

2299 Commits

Author SHA1 Message Date
Benjamin Nauck
d2f35cee55 App: Expose allowObject for groups in python 2025-06-22 23:50:12 +02:00
Benjamin Nauck
6e3135c08d App: Trim “Gui::” and “NavigationStyle” more securely
By using regex we can remove prefix and suffix more securely as we can’t assume all navigation styles are formatted the same (mistakes can happen)
2025-06-16 11:07:40 -05:00
Benjamin Nauck
7105a2332e Merge pull request #21147 from 3x380V/units
Units rework II
2025-06-04 15:58:00 +02:00
theo-vt
324f610782 App::Document addObject and removeObject code reuse (#21481)
* Concatenate all of Document::addObject[s] functions into calls to Document::_addObject

* Fix minor logic errors

* use ::isPerformingTransaction instead of direct operators

* Uniform case for enum

* Remove dupplicate code for Document::removeObject

* Use CamelCase for enum and fix comment
2025-06-03 14:19:20 +00:00
Ladislav Michl
f8d2789a43 Base: Units: introduce unit one
Dimensionless quantities have all exponents equal to zero.
Such quantities are simply numbers. The associated unit is
the unit one, symbol 1, although this is rarely explicitly
written.

See chapter 2.3.3 Dimensions of quantities, The International
System of Units, 9th edition.
2025-06-03 09:31:38 +02:00
Ladislav Michl
913c30429c Base: Quantity: use isDimensionless whenever feasible
Quantity is often queried for Unit just to see if it has a dimension.
Ask Quantity directly using isDimensionless() method and modify that
method not to care about Quantity value validity; no user was ever
asking for value validity.
2025-06-03 09:31:38 +02:00
Ladislav Michl
f486b7c84b App: Quantity: use predefined unit types 2025-06-03 09:31:38 +02:00
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