Commit Graph

6142 Commits

Author SHA1 Message Date
Joao Matos
6dd5246fa1 Rename DocumentCreateFlags to DocumentInitFlags. 2025-03-07 20:54:16 +00:00
Joao Matos
81a5b78b36 Convert DocumentCreateFlags instances to use designated initializer list. 2025-03-07 20:42:51 +00:00
Chris Hennes
4eeca37bf3 Merge pull request #19901 from alfrix/start_fixes_1
Start: fix text visbility
2025-03-06 17:32:31 +00:00
Chris Hennes
23f681728b Merge pull request #20019 from PaddleStroke/patch-5
Core: Text object: Fix icon of the tab.
2025-03-06 14:39:25 +00:00
Max Wilfinger
041e709059 Merge pull request #20013 from tringenbach/feature/show-device-pixel-ratio
Add devicePixelRatio to about info
2025-03-06 08:00:08 +00:00
PaddleStroke
e8bddd97b9 Core: Text object: Fix icon of the tab. 2025-03-06 08:47:04 +01:00
Tim Ringenbach
4a8033c77c update label 2025-03-05 20:29:25 -06:00
Tim Ringenbach
8456626320 Add devicePixelRatio to about info 2025-03-05 18:05:21 -06:00
Chris Hennes
4afbc967f0 Merge pull request #19995 from hyarion/fix/create-light-sources-group
Fixes light direction configuration issues between 1.0 and 1.1dev
2025-03-05 22:38:01 +00:00
Benjamin Nauck
77ce376ebd Gui: Workaround for lighting issue 2025-03-05 20:29:10 +01:00
Alfredo Monclus
eae8aec93d start: fix filecard text visibility on classic theme also fixes hover and pressed states 2025-03-05 13:23:39 -03:00
Syres916
7f3632ba8e [Gui] Trigger the same checks for Drag & Drop files as File > Open 2025-03-04 20:45:15 -06:00
Chris Hennes
d6849c10b0 Apply suggestions from code review
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-03-04 18:12:10 -06:00
Jacob Oursland
2dd4343164 About: Add build date to clipboard data. 2025-03-04 18:12:10 -06:00
Benjamin Nauck
354667abd0 Gui: Remove unused static function 2025-03-04 21:06:17 +01:00
Benjamin Nauck
629b75710e Gui: Create light sources parameter group
* categorizes light sources into its own group
* fixes config file issues between 1.0 and 1.1
2025-03-04 21:06:17 +01:00
Chris Hennes
8593beb6f1 Gui: Add QOpenGLWidget to QtAll.h 2025-03-02 22:59:30 -06:00
Chris Hennes
15a9efe356 Inventor: Fix old color ref 2025-03-02 17:09:19 -06:00
Chris Hennes
1a2070c36f Merge pull request #19636 from kadet1090/color-in-base
Base: Move App::Color to Base
2025-03-02 16:36:40 -06:00
Chris Hennes
98537f00b1 Merge pull request #19626 from tritao/qt-gl-cleanup
Gui: Remove QtOpenGL.h.
2025-03-02 16:22:57 -06:00
Kacper Donat
09b6389c8e Gui: Properly reset light directions
This fixes lights not getting reset after user demands so.
2025-02-28 14:25:57 +00:00
Furgo
c62913d2ee Do not decrease reference counting for string 2025-02-26 13:36:45 +00:00
Joao Matos
e0cd89ca66 Gui: Group Inventor headers in View3DInventorViewer.h. 2025-02-25 23:03:51 +00:00
Joao Matos
80d4cf9f40 Gui: Remove QtOpenGL.h. 2025-02-25 23:03:51 +00:00
Joao Matos
c3e5069190 Gui: Cleanup Qt OpenGL usings in QtOpenGL.h.
Previously the code defined compatiblity usings in `QtOpenGL.h` header,
which I think was added for backwards compatiblity with previous Qt
OpenGL widgets.

As far as I can tell, this is not necessary anymore, and can be cleaned
up.
2025-02-25 23:03:51 +00:00
Chris Hennes
9356419f6c Merge pull request #19671 from kadet1090/placement-indicator
Gui: Add Show Placement helper
2025-02-25 17:40:58 +00:00
Benjamin Bræstrup Sayoc
ee1c73cd04 Build: suppress warnings from 3rd party libraries
Warnings from 3rd parties are not relevant and are only polluting the warning output. Marking these libraries as SYSTEM suppresses warning.

https://gcc.gnu.org/onlinedocs/cpp/Invocation.html#index-I
https://gcc.gnu.org/onlinedocs/cpp/System-Headers.html
2025-02-25 14:39:05 +00:00
tritao
7b21ed43da Gui: Fix regression in SelectionObserverPython::removeObserver. 2025-02-25 14:21:48 +00:00
Chris Hennes
9db06a5c87 Merge pull request #19719 from Rexbas/navicube-accumulative-animation
Gui: Accumulate orientation for NaviCube flat button animations
2025-02-24 17:15:45 +00:00
theepicviolin
cb24420fbb Add SolidWorks navigation style (#19568) 2025-02-24 10:57:00 -06:00
Chris Hennes
b25ab1cac3 Merge pull request #19084 from tritao/gui-selection-viewproviderfeaturepy
Gui: Provide `ViewProviderFeaturePython` selection callbacks
2025-02-24 16:46:36 +00:00
Chris Hennes
dce7627c33 Merge pull request #19516 from tritao/tools-python-bindings-gen
Tools: Introduce a new Python-based C++ bindings generator
2025-02-24 16:39:24 +00:00
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
Kacper Donat
569ddc345b Gui: Add Show Placement utility 2025-02-24 17:30:27 +01:00
Kacper Donat
076ab800ff Gui: SoFrameLabel text color from base color support
This adds support for obtaining text color from the state of the graph
(base color) to SoFrameLabel nodes.
2025-02-24 17:30:27 +01:00
Kacper Donat
0a0c5f828e Gui: Add SoFCPlacementIndicatorKit node
This adds SoFCPlacementIndicatorKit - a node that can be used to
show position of object to the user. It can be configured in various
ways so it should be a good base for future unification of features like
this across the application.
2025-02-24 17:30:27 +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
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
tritao
ea80310642 Gui: Provide ViewProviderFeaturePython selection callbacks
Adds support for Python-based selection callbacks to
`ViewProviderFeaturePython` objects.

It follows the same conventions as `SelectionObserverPython`, follows an
example:

```python
    def setPreselection(self, document, object, element):
        print("setPreselection: %s.%s.%s"%(document, object, element))

    def removePreselection(self, document, object, element):
print("removePreselection: %s.%s.%s"%(document, object,
element))

    def addSelection(self, document, object, element, position):
print("addSelection: %s.%s.%s at %s"%(document, object, element,
str(position)))

    def removeSelection(self,document, object, element):
        print("removeSelection: %s.%s.%s"%(document, object, element))

    def setSelection(self,doc):
        sel = FreeCADGui.Selection.getSelection(doc)
        print("setSelection: %s"%sel)

    def clearSelection(self,doc):
        print("clearSelection\n")
```
2025-02-24 15:02:38 +00: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
Syres916
1d465c22c0 [Gui] Expression dialog OK, capitalised and Alt+O shortcut applied 2025-02-23 16:51:04 +01: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
tritao
10ad4b7e15 Gui: Split SelectionObserverPython call logic into separate handler class. 2025-02-23 00:05:23 +00:00
GHDE
bce3a3ce65 fixed openExternalLinks in DlbAbout (FreeCAD#16423) 2025-02-22 12:00:39 -06:00
Bas Ruigrok
af2135fbe2 Gui: Accumulate orientation for NaviCube flat button animations 2025-02-21 21:57:00 +01:00