Commit Graph

5957 Commits

Author SHA1 Message Date
Benjamin Nauck
000e5df358 Clear correct macro list box 2025-01-13 08:23:50 +01:00
Roy-043
ec57ca2469 Merge pull request #18949 from Roy-043/Draft-and-Pref-Packs-fix-snapcolor
Draft (and Pref Packs): fix snapcolor
2025-01-09 11:31:22 +01:00
Roy-043
c1ea9bf152 Core: fix sWhatsThis for Std_LinkActions 2025-01-08 22:25:25 +01:00
Roy-043
161e8ed6ba Draft (and Pref Packs): fix snapcolor
Fixes #17978.
2025-01-08 18:11:42 +01:00
Yury Shvedov
1ea1eca5bd about: handle additional modules in clipboard
We are able to pass extra modules path with command line arguments.
Handle such modules when copying about information to clipboard.

Change-Id: I158b6ea021cc0a5dfd27693d22f6c56a6bdcd239
2025-01-07 15:40:23 +01:00
Yury Shvedov
bc4cddcd04 Macro: allow to specify extra system paths for macro
This introduce new option `-E [ --macro-path]` to specify extra system
paths of macros. The macro found in this paths will appear in `Macros`
dialog at `System macros` tab.

Change-Id: Ic21631ec0ebe8af5c7f42b4fe95400cfb67807d5
2025-01-06 18:14:15 +01:00
wmayer
f4b1ccdc54 Gui: Check for exising layout before accessing it
It still must be checked if the crash in #18747 will be fixed.
2025-01-06 18:09:46 +01:00
MisterMaker
fccb75e364 Stylesheets spreadsheets visual fix. (#18719)
* this fixes the spreadsheet alignment and the corner button

* missed a line
2025-01-06 17:55:13 +01:00
wmayer
71f8793310 Gui: Remove code duplication in PythonConsole class 2025-01-06 17:53:59 +01:00
wmayer
446b6e6d41 Gui: Hide line marker and do not highlight current line in Python console 2025-01-06 17:53:59 +01:00
wmayer
d32bda7a0d Fix German translation
until the next download from crowdin
2025-01-06 17:25:44 +01:00
PaddleStroke
4892fcaaf1 Core datums: Rework to improve new sketch 2024-12-30 09:05:44 +01:00
wmayer
98fdb40546 Gui: Fix copying elements in the tree view by holding CTRL key
In older versions it was possible to copy elements with drag and drop by holding the CTRL key. Since v0.20 or v0.21 this wasn't possible any
more so that elements are always moved.

Note: Copying is only allowed for elements that have a parent object.
2024-12-23 12:21:12 -05:00
mwganson
40571eb683 [PythonEditor] Make converting tabs to spaces the default 2024-12-23 11:53:05 -05:00
Ladislav Michl
3bddb723d5 Base: UnitsSchema: return std::string 2024-12-23 17:48:42 +01:00
Ladislav Michl
0b3adee2ab Base: Quantity: return std::string 2024-12-23 17:48:42 +01:00
Ladislav Michl
379d7ea9d5 Base: Units: return std::string 2024-12-23 17:48:42 +01:00
Ladislav Michl
539b7d43cf Base: Units: hide internals 2024-12-23 17:48:42 +01:00
luzpaz
2902ea4995 Trim lines ending with superfluous whitespace 2024-12-22 08:50:37 -05:00
Benjamin Nauck
1e91ad56bc Move where icons in menus attribute is set
Without this, icons are not visible on macOS
2024-12-20 11:55:21 -05:00
wmayer
5302033c76 Gui: Move Python functions from Application to ApplicationPy
This reduces build time when adding new Python functions because only one file must be compiled.
Handles also many linter warnings.
2024-12-20 11:50:07 -05:00
Bas Ruigrok
2942cfffbc Gui: Fix Blender and Revit navigation issues with shift key in sketcher 2024-12-20 11:31:10 -05:00
Syres916
a7d122428b [Gui] Show Preferences page by name rather than index 2024-12-16 11:43:13 -05:00
wmayer
0d4e7ac27f Core: Move LCS migration warning to Std_Open command 2024-12-16 11:34:39 -05:00
Benjamin Nauck
39402e2083 Revert "Address the poor performance of the existing unique-name generation (#17944)"
This reverts commit 83202d8ad6.

# Conflicts:
#	src/Base/Tools.cpp
#	src/Base/Tools.h
2024-12-16 17:31:43 +01:00
Chris Hennes
afe76db288 Gui: Rename variable to eliminate macro conflict
Windows.h defines 'near' and 'far' macros, and they are actually used in the Inventor codebase (so we can't just undefine them).
2024-12-13 20:28:18 -05:00
wmayer
02a5538fba Fix several compiler warnings:
* Fix [-Wsign-compare]
* Fix [-Wc++20-designator]: designated initializers are a C++20 extension
* Fix [-Wunused-parameter]
2024-12-13 20:28:04 -05:00
Chris Hennes
a605e3d316 Merge pull request #18332 from Ondsel-Development/core_LCS3
Core Datums: Card4 : implement part subclasses.
2024-12-13 15:59:10 -05:00
marioalexis
aebcb14600 Gui: Add missing header <optional> 2024-12-13 13:53:15 -05:00
PaddleStroke
83026233a7 Merge branch 'main' into core_LCS3 2024-12-13 18:48:35 +01:00
kwahoo2
64b24cd27d Gui: add method to select objects with a 3D ray (#16789)
* Implementation of ray picking method for 3d picking

* Ray picking logic moved to C++

(cherry picked from commit ed23214c0bce7b70fd1003a7c4612e2d0d7da4cb)

* formatting, do not return unecessary dict keys, near plane clipping
2024-12-13 11:32:37 -06:00
PaddleStroke
24ab20553d LCS migration : replace warning by a QMessageBox. 2024-12-13 18:04:10 +01:00
PaddleStroke
19ef989300 Part: add datum objects and commands to create them. 2024-12-13 18:04:10 +01:00
PaddleStroke
655ae579ed Core: Datums: Fix axis placement and add migration script. 2024-12-13 18:04:10 +01:00
Syres916
8e4e53dbae [Gui] Tree, set FontSize on start of application 2024-12-13 11:58:24 -05:00
Kevin Martin
5696c9add3 Address the poor performance of the existing unique-name generation (#17944)
* Address the poor performance of the existing unique-name generation

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:

Create UniqueNameManager to keep a list of existing names organized in
a manner that eases unique-name generation. This class essentially acts
as a set of names, with the ability to add and remove names and check if
a name is already there, with the added ability to take a prototype name
and generate a unique form for it which is not already in the set.

Eliminate Tools::getUniqueName

Make DocumentObject naming use the new UniqueNameManager class

Make DocumentObject Label naming use the new UniqueNameManager class.
Labels are not always unique; unique labels are generated if the
settings at the time request it (and other conditions). Because of this
the Label management requires additionally keeping a map of counts
for labels which already exist more than once.
These collections are maintained via notifications of value changes on
the Label properties of the objects in the document.

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 would be simpler if existing
fill-container methods all used this.
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.

The unit tests for Tools:getUniqueName have been changed to test
UniqueNameManager.makeUniqueName instead.
This revealed a small regression insofar as passing a prototype name
like "xyz1234" to the old code would yield "xyz1235" whether or
not "xyz1234" already existed, while the new code will return the next
name above the currently-highest name on the "xyz" model, which could
be "xyz" or "xyz1".

* Correct wrong case on include path

* Implement suggested code changes
Also change the semantics of visitProperties to not have any short-circuit return

* Remove reference through undefined iterator

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

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

* Fix up some comments for DOxygen

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-12-13 10:54:46 -06:00
wasd845
85eaa2d373 Add export config directory specification feature (#15235) 2024-12-13 10:44:30 -06:00
Snow Faerie
8ac3800666 Fix and add menu accelerators (#15532)
* Fix and add menu accelerators: menus common to all workbenches

I use menu accelerators fairly often, so I find it very frustrating when
they are missing, or worse, they don't work due to the same letter being
assigned to several commands.

This patch adds accelerators to lots of menu entries missing them and
fixes broken accelerators.

Wherever possible, standard accelerator keys are used:
https://doc.qt.io/qt-5/accelerators.html

This commit covers accelerator fixes that are common to all workbenches.
Accelerator fixes for specific workbenches will be done in separate
commits.

* Add missing accelerators: Spreadsheet workbench
2024-12-13 10:39:30 -06:00
Patryk Skowroński
f02c769891 Update for 3Dconnexion NavLib integration (#18433)
* Fixed QuickZoom crash & picking in ortho view

* Fixed QuickZoom for high DPI screens

* Fixed return value for SetHitLookFrom

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

* Removed whitespace from GetPointerPosition

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

---------

Co-authored-by: Patryk Skowroński <pskowronski@3dconnexion.com>
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2024-12-13 08:41:11 -06:00
PaddleStroke
68552a7500 Dark theme: tweak error color (#18468)
* Update FreeCAD Dark.cfg

* Update FreeCAD Dark.cfg

* Update FreeCAD Dark.cfg
2024-12-13 13:55:17 +01:00
wmayer
3aff3c3eb8 Core: Fix pre-selection of coordinate system 2024-12-10 19:11:55 +01:00
PaddleStroke
1c9ce3e028 SoShapeScale: Fix SoShapeScale does not take DPI scaling into account 2024-12-10 17:15:13 +01:00
PaddleStroke
dbdbc9934e Core: SoShapeScale fix weird scaling on viewport resize. See https://github.com/FreeCAD/FreeCAD/issues/18382#issuecomment-2527623758 2024-12-10 17:15:13 +01:00
wmayer
c2714fc8c5 Gui: Rename ViewProviderDatum::getRoot() to ViewProviderDatum::getDatumRoot()
Before the change the compiler raised the warning: 'Gui::ViewProviderDatum::getRoot' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
In the base class the method getRoot() is declared as const while in ViewProviderDatum it's not and that's why it's considered as an overloaded method.
However, this signature causes two problems:
1. In the client code it's not always clear which version of getRoot() should be called
2. It violates const-correctness

So, trying to declare the method ViewProviderDatum::getRoot() as const it now overrides the method of the base class (and fixes the warning) but
this doesn't lead to the expected result: See https://forum.freecad.org/viewtopic.php?p=796064#p796064

The other option is to rename the method. And this gives the expected result now.
2024-12-10 12:49:42 +01:00
mwganson
c04bf0f075 [core] add copy table and paste table context menu items to App::PropertyVectorList property editor, addresses issue #17804 2024-12-09 18:14:11 +01:00
wmayer
1cf2bacf1f Gui: Add SoPickStyle node to make an object un-selectable if needed 2024-12-09 18:10:15 +01:00
wmayer
fcf009a230 Import: Fix of alpha channel misinterpretation 2024-12-09 12:00:15 -05:00
Florian Foinant-Willig
3e561a031b Fix Arc length look for angle > pi
and factorize some code
2024-12-09 11:51:02 -05:00
Vincent
9ba6bc30fb Gui: allow LineEdit to grow with text - fixes #17747 (#18099) 2024-12-09 10:38:54 -06:00
Chris Hennes
28752ca05b Merge pull request #18244 from wwmayer/space_mouse_runtime
Gui: Add runtime check to choose between modern and legacy space mous…
2024-12-09 11:36:17 -05:00