Commit Graph

6355 Commits

Author SHA1 Message Date
Ladislav Michl
487542185d Revert "[Gui] Fix "Select dependent objects" with cycles"
This reverts commit 01effaaab0.
2025-05-31 19:39:11 +02:00
tarman3
1cd7008641 command to open folder with macros 2025-05-30 20:02:58 +02:00
Alfredo Monclus
8f2ff7d7f6 Gui: property-editor open the combo directly and apply after selection
Previously you had to make 4 clicks to apply a combo
1 to enter edit, 1 to open the combo, 1 to select, and 1 to defocus and apply

with this commit only 2 clicks:
1 to open the combo and 1 to select
2025-05-29 22:41:37 +02:00
Alfredo Monclus
f3f2a2a9f7 Gui: property-editor add property copy context menu 2025-05-29 22:40:59 +02:00
Alfredo Monclus
1f4a9d883b Gui: property-editor fix text not showing due to stylesheets 2025-05-29 15:01:11 +02:00
Benjamin Nauck
401d965ef0 Merge pull request #21379 from alfrix/set_style
Gui: Set QStyle to Fusion if not set
2025-05-26 22:13:31 +02:00
Syres916
dbcc11d24e [Gui] InputField correct icon visibility logic on opening a pre-completed task panel 2025-05-26 17:54:39 +02:00
Kacper Donat
01a03fe77d Merge pull request #21571 from alfrix/property_editor_2
Gui: property editor do not enter edit mode if the property is read-only
2025-05-26 17:20:06 +02:00
Alfredo Monclus
cb95cb064f Gui: property-editor make readonly cells look disabled 2025-05-26 07:13:44 -06:00
Alfredo Monclus
012a765614 Gui: property editor do not enter edit mode if the property is read-only 2025-05-25 06:25:09 -06:00
Roy-043
1057db98db Typo in ViewProviderGeometryObject.cpp (#21517)
appearrance -> appearance
2025-05-22 11:04:10 +02:00
Kacper Donat
aa47949f80 Gui: Add support for hints in status bar 2025-05-21 17:42:45 +02:00
Alfredo Monclus
548af02619 Gui: fix light/dark switch when on classic (#21049)
* Gui: fix: taskpanel light/dark switch when on classic

* Gui: fix: taskpanel double icon

* Apply suggestions from code review

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-05-21 14:00:54 +00:00
Joao Matos
e5dad52fdf 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
Alfredo Monclus
127b1c8432 Gui: add 'System' style to leave QtStyle unset 2025-05-16 07:52:32 -06:00
Alfredo Monclus
2e54df073d Gui: fix ElideCheckbox spacing 2025-05-16 09:32:11 +02:00
Alfredo Monclus
07c234078b Gui: Set QStyle to Fusion if not set 2025-05-15 21:20:48 -06:00
Chris Hennes
f5ab6295ba UI: Remove qPixmapFromMimeSource pixmap function
This function dates back to Qt3, and was removed in Qt4. Modern Qt no
longer uses this ui file entry, and in some circumstances the uic
complains about its presence.
2025-05-15 00:56:30 +02:00
Chris Hennes
b36a21b721 Gui: Eliminate signed-to-unsigned comparison
`std::numeric_limits<int>::max()` can losslessly be cast to an unsigned
int to silence the compiler warning about comparison of signed to
unsigned.
2025-05-15 00:20:35 +02:00
Chris Hennes
cfb6368026 Gui: Eliminate double->float truncations
Our GUI code uses a mix of floats and doubles to represent floating
point numbers, and in a few places interchanges them in a way that
causes an invisible loss of precision. Change the double precision
"default" values to float defaults, and use the appropriate value for
pi.
2025-05-13 08:37:06 +02:00
Chris Hennes
63de22e622 Gui: Manually specify correct QVariant conversion
There are multiple possible conversion paths for a QPixmap to QVariant,
which results in a compiler warning. Explicitly specify the path we
intend to silence the warning.
2025-05-12 18:17:48 +02:00
Chris Hennes
0b0f3aaa1e Gui: Make variable more local
Eliminate a compiler warning about an unused variable by making the
variable more local to the point-of-use.
2025-05-12 18:16:56 +02:00
Chris Hennes
c0ddaf4820 Gui: Remove default init of shared_ptr
`std::shared_ptr` default-initializes to `nullptr`, so there is no need
to do it manually, and in the current code the initialization is in the
wrong order (so generates a compiler warning).
2025-05-12 18:16:32 +02:00
Chris Hennes
952485dcbb Merge pull request #19907 from benj5378/getAttribute
Base: make getAttribute template
2025-05-12 10:39:55 -05:00
Kacper Donat
cf4357ed38 Gui: Fix handling - character in OVP 2025-05-12 08:55:09 -05:00
tarman3
c2df7a83db Macro: Button to open folder with macros 2025-05-11 21:54:07 +02:00
Benjamin Bræstrup Sayoc
2b6e73c29d Everywhere: clean up getAttribute conversions 2025-05-09 15:54:57 +02:00
Benjamin Bræstrup Sayoc
2b1aec0041 Base: make getAttribute template 2025-05-09 15:54:57 +02:00
xtemp09
30498b7b48 Gui: Add switching to the document when closing FreeCAD (#21135)
* Add switching to the document when closing FreeCAD

Closes #20997

* Some update of language

* camelCase every variable name used
2025-05-08 23:59:11 +02:00
Jacob Oursland
77fdca1347 Gui: use 'C.UTF-8' for locale as Qt requires UTF-8. 2025-05-06 16:06:10 -05:00
bofdahof
ba2c2ca5ad Console: rename PascalCase named methods to camelCase 2025-05-06 17:50:21 +02:00
Ladislav Michl
9683cf1e4f Base: rename Exception's PascalCase methods to camelCase 2025-05-05 23:50:01 +02:00
Ladislav Michl
4414042b8f Gui: fix warning in NavigationStyle
Fix warning: suggest braces around empty body in an ‘if’ statement.
While there also guard similar debug messages instead of commenting
them out.

Fixes: 8d2cb99712 ("Gui: Added classic trackball orbit style")
2025-05-05 19:45:01 +02:00
Chris Hennes
f55063855a Merge pull request #20540 from 3x380V/cleanup-schemas-management
Simplify UnitsSchemas management
2025-05-05 10:43:27 -05:00
Max Wilfinger
18c43d9c91 Set RoundedArcball as default orbit style.
Reorder status bar entries.
2025-05-05 10:33:33 -05:00
Chris Hennes
db46f0499c Merge pull request #20449 from hyarion/refactor/cpp20-contains
Avoid using `count` and `std::find` where `contains` and `isEmpty` express intent better
2025-05-05 10:31:33 -05:00
Benjamin Nauck
84b4ef32bc Gui: Add tests to automatically verify the axonometric views 2025-05-04 13:21:08 +02:00
Benjamin Nauck
966ef92b35 Gui: Use contains instead of std::find 2025-05-03 22:22:10 +02:00
Benjamin Nauck
df3c324b7d Gui: use contains() and isEmpty() instead of count() where possible 2025-05-03 22:19:51 +02:00
Leticia Vong
7a5487670c GUI: Refactor - removed soft dependency from freeze toggle 2025-04-30 15:11:44 +02:00
Andrea
922a2c25f2 Removed unused function
Removed unused function
2025-04-29 22:52:04 -05:00
mosfet80
16a4e11eb2 clean SoFCSelection.cpp
removed unused code
2025-04-29 22:49:40 -05:00
captain0xff
68a8575536 Gui: rename TaskCSysDragger to TaskTransform 2025-04-28 23:30:14 +02:00
Graic
f681e241bc Gui: Added classic trackball orbit style (#20535)
* Gui: add classic trackball orbit

* Gui: add rounded arcball orbit
2025-04-28 11:12:53 -05:00
João Neves
05f0c606d5 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
Bas Ruigrok
3ae1d46249 Gui: MayaGesture navigation fixes (#20948)
* Gui: Gesture and MayaGesture style disable H key in editing mode

* Gui: MayaGesture style go back to IDLE after dragging/panning/zooming

* Gui: MayaGesture more Maya like zoom behavior
2025-04-28 10:45:21 -05:00
tetektoza
8fda3b4bd1 Core: Introduce PDF Import-Export dialog (#20860)
* Core: Introduce PDF Import-Export dialog

Currently, we only have hardcoded exporting to one pdf version, which
leads to (as in one of the below issues) to problems, such as
non-transparent layers, which are by default not supported in PDF/A-1b.

So, this patch adds an option to the user to select their preferred PDF
version by introducing new dialog under Import-Export in Preferences,
and allowing to update that version before exporting.

* Core: Add informational messages regarding selected PDF format

* Gui: Handle Qt < 6.8 unsupported PDF format

* Gui: Switch PDF export prefs dialog to use tr()

* Gui: Remove center alignment of PDF version description

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-04-27 19:31:34 -05:00
bofdahof
353acbb27b 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
bofdahof
3db1378981 Gui: simplify fractional inch option visibility in DlgSettingsGeneral 2025-04-27 00:45:53 +02:00
bofdahof
606da16f6e Gui: reformat DlgProjectInformationImp.cpp 2025-04-27 00:45:53 +02:00