Commit Graph

32090 Commits

Author SHA1 Message Date
Chris Hennes
d26b84df3f Gui: Eliminate variable reuse
Coverity complains about USE_AFTER_FREE here, and it was difficult to reason about the code. To help address this, use different variables for the different parameter groups.
2023-02-26 10:36:16 +01:00
Uwe
c32bf8e99a [TD] fix compiler about a variable redefinition 2023-02-26 10:31:36 +01:00
Chris Hennes
db53c46b42 Spreadsheet: Fix possible null dereference
Fixes Coverity CID 184299.
2023-02-26 10:22:37 +01:00
wmayer
0d23594107 Core: add functions setPackedARGB and fromPackedRGBA 2023-02-26 10:11:53 +01:00
wmayer
7c359469ba Gui: use Color::asPackedRGB<QColor>() 2023-02-26 10:11:53 +01:00
wmayer
41e6c17605 Points: use Color::getPackedARGB() for pcl colors 2023-02-26 10:11:53 +01:00
wmayer
7a3bcded06 App: move Color class to its own sources 2023-02-26 10:11:53 +01:00
wmayer
85ad88d101 Import: [skip ci] fix some minor Lint issues 2023-02-26 09:04:26 +01:00
wmayer
c3fc619b99 Import: support to export to glTF file in headless mode 2023-02-26 09:04:26 +01:00
wmayer
e2c9b32ebe Test: add unit tests for expressions with operator 2023-02-26 09:00:27 +01:00
wmayer
b55a5682ad Tests: add unit tests for expression tokenizer 2023-02-26 09:00:27 +01:00
wmayer
972329be99 App: split tokenizer handling of ExpressionCompleter to its own class 2023-02-26 09:00:27 +01:00
wmayer
aa04870ea9 Tests: exclude some lint warnings 2023-02-26 08:58:51 +01:00
wmayer
3a589cba11 Tests: add unit tests for Matrix4D and Rotation 2023-02-26 08:58:51 +01:00
Chris Hennes
aa788af4bd Part: SectionCutting cutTransparency initialization
Addresses Coverity CID 356563: Uninitialized scalar.
2023-02-26 05:40:32 +01:00
Uwe
53b275a735 [Gui] fix initialization of NaviCube colors
- the color is stored in for RRGGBBAA and must be passed in form AARRGGBB to QColor. In NaviCube.cpp this is already done right and the same is necessary for View3DInventor.cpp
2023-02-26 05:35:39 +01:00
Uwe
f3bcdf7f4b [Sketch] [skip ci] fix UI file
- compiler stumbles over inexisting tabstop target
 the fix was automatically done Qt Designer
2023-02-26 04:59:27 +01:00
Chris Hennes
e3544117ab App: Add None=0 to enumeration
Addresses Coverity CID 356649, uninitialized scalar.
2023-02-25 21:53:01 -06:00
Uwe
de78e9d7ef [Material] add new card to CMake 2023-02-26 04:21:32 +01:00
Vladimir
7c7f8c8c10 [Material] Add Titanium alloy to materials (#8636)
* Add Titanium alloy
2023-02-26 03:53:39 +01:00
Abdullah Tahiri
849f8ced13 Part/Sketcher: Grid - set grid orientation
==========================================

Extend ViewProviderGridExtension so that it is aware of the absolute direction of the XY plane on which the grid is to be drawn.

Fix the calculation of the cam origin.
2023-02-25 23:13:55 +01:00
Abdullah Tahiri
b4926c769e Sketcher: Grid - Imperial
=========================

Fix grid calculation in Imperial units in Auto mode (wrong scaling).

Remove observer as unit does not need to be observed.
2023-02-25 23:13:55 +01:00
0penBrain
05a5e7b341 Sketcher/Grid: fix error in parameter function call
Sketcher/Grid: fix algorithm computing the automatic grid spacing

Sketcher/Grid: forcefully redraw grid when one of its parameter is changed

Sketcher/Grid: always authorize user to change grid spacing, even if 'auto spacing' is enabled

Sketcher/Grid: apply a default factor of 10 for 'auto spacing' if number of subdivision is 1
2023-02-25 23:13:55 +01:00
Abdullah Tahiri
f9e0c1fd57 Sketcher: Grid - correction of design decisions
===============================================

Removal of ViewProviderGridExtension properties:
-GridStyle
-GridSnap

Improvement of ViewProviderGridExtension API:
- color via App::Color

Toolbar grid command:
- Conversion of Snapping to edit parameter
- Snap gets a class enum to support future Snapping functionalities as edit parameter

Sketcher Settings:
- Removal of snap preference

Behaviour:
- ShowGrid, GridAuto, GridSize preferences do not change any existing VP. They apply to any newly created sketch.
- Do not limit grid to hardcoded values

Snap to grid:
- Code updated to use closestpoint functionality provided by the extension,

Several other fixes
2023-02-25 23:13:55 +01:00
Abdullah Tahiri
d586ea6238 Sketcher/Part: Grid - Architecture
==================================

- Move all grid specific code out of ViewProviderSketch and EditModeCoinManager.
- The code in made into a new extension in Part - ViewProviderGridExtension
- ViewProviderSketch starts deriving from this new extension
- ViewProviderSketch configures the extension according to its Grid preferences
- Grid code refactored to remove hardcoded sketcher preference parameters.
- ViewProviderGridExtension handles property name/type changes within its competence.
2023-02-25 23:13:55 +01:00
Abdullah Tahiri
3381d91b82 Sketcher: Add QtAll to PCH 2023-02-25 23:13:55 +01:00
Abdullah Tahiri
4dea0df06c App: Extension/ExtensionContainer - handle property change
==========================================================

Currently changes of name or type of properties in a property container are handled by:
void PropertyContainer::handleChangedPropertyName(Base::XMLReader &reader, const char * TypeName, const char *PropName)
void PropertyContainer::changedPropertyType(Base::XMLReader &reader, const char * TypeName, Property * prop)

There is no mechanism for handling property changes by extensions. Sometimes the solution is to explicitly call the extension
from the container. However, this is a breach of the SRP, as the container should not be in a position to decide whether the
extension needs or not handle property changes. The handling code of the container changes for two different reasons, for
adapting the container to a property change of its own, and for adapting that of a property of the extension.

Illustrating it with an example, following inheritance, it goes like this:
PropertyContainer => ExtensionContainer => TransactionalObject => ViewProvider
App::Extension => ViewProviderExtension

The extension is currently not notified by the ExtensionContainer that a property needs handling. So a change in a property of
a ViewProviderExtension needs code at the ViewProvider it was added to.

This commit provides a mechanism in ExtensionContainer to call the extensions so that they can handle property changes. This
functions:

  virtual bool extensionHandleChangedPropertyName(Base::XMLReader &reader, const char * TypeName, const char *PropName);
  virtual bool extensionHandleChangedPropertyType(Base::XMLReader &reader, const char * TypeName, Property * prop);

Containers should always call the base class for any unhandled property change. If a sub-class container of ExtensionContainer
handles property changes itself, but not the ones of the extensions, this call to the base class ultimately ensures that if the
property was not handled by the container hierarchy, any extension is given an opportunity to handle it.

Some examples:

* A container handles the extension property change or its own:

void ContainerSubClass::handleChangedPropertyType(...)
{
    if (prop == &PropertyOfExt) {

    }
    else if (prop == &PropertyOfCont) {

    }
    else {
        ContainerBaseClass::handleChangedPropertyType(...);
    }
}

* A container and the extension handle their own:

void ContainerSubClass::handleChangedPropertyType(...)
{
    if (prop == &PropertyOfCont) {

    }
    else {
        // This will call ExtensionContainer::handleChangedPropertyType
        ContainerBaseClass::handleChangedPropertyType(...);
    }
}

bool ExtensionSubClass::extensionHandleChangedPropertyType(...)
{
    if (prop == &PropertyOfCont) {

        return true;
    }
    return false;
}
2023-02-25 23:13:55 +01:00
Abdullah Tahiri
f1428994b7 Sketcher: Grid settings - disable spacing when auto mode selected and vice versa 2023-02-25 23:13:55 +01:00
Abdullah Tahiri
ea3277e5ea Sketcher: Resources - remove unnecessary resources 2023-02-25 23:13:55 +01:00
Abdullah Tahiri
1a6ed6cd76 Sketcher: command - review code improvements 2023-02-25 23:13:55 +01:00
Abdullah Tahiri
52a92e1915 Sketcher: Grid Command - Correct dependencies 2023-02-25 23:13:55 +01:00
Abdullah Tahiri
5a0e7d4ee3 Sketcher: Rewrite grid command
==============================

Fix unresolved issues:
https://github.com/FreeCAD/FreeCAD/pull/7754/files#r1025493443
https://github.com/FreeCAD/FreeCAD/pull/7754/files#r1019077589
https://github.com/FreeCAD/FreeCAD/pull/7754/files#r1025502204

Summary:
- EventFilter unnecessary in light of new implemented signal aboutToshow. The data of the drop-down action is updated only when necessary (when it is going to be shown).
- Structure of individual commands under drop-down simplified to a single action, rendering the need for groupcommands obsolete, while keeping all the grid related controls and
the logic for controlling the grid in a single action class.
- Reduce the complexity and overload of isActive to the bare minimum (determining if it is active and updating the icon to the right icon if so).

Refactor:
- Better name for utils functions, as when a DSH is active, the edit mode VPSketch is a data member of DSH, sketchgui (so this function is not really necessary when the DSH is active).
2023-02-25 23:13:55 +01:00
Abdullah Tahiri
5244e28565 Gui: ActionGroup - aboutToShow and aboutToHide
==============================================

ActionGroup may integrate a drop down menu (internally a QMenu).

QMenu has signals aboutToShow and aboutToHide, which are called just before showing/hiding the menu.

This commit extends ActionGroup by providing corresponding signals.

An ActionGroup can be added to more than one toolbar and thus creates more than one menu. So, it can theoretically
happen that you have opened a menu and click on another menu. For this reason, the menu is passed as argument:

void aboutToHideMenu(QMenu*);
void aboutToShowMenu(QMenu*);
2023-02-25 23:13:55 +01:00
Abdullah Tahiri
816fa3fe3e Sketcher: Refactor miscelaneous command isActive() 2023-02-25 23:13:55 +01:00
Paddle
78333e7eab Sketcher: Grid coin manager: fix includes 2023-02-25 23:13:55 +01:00
Paddle
2cba01586a Sketcher: Grid rework. Include:
- Adding 'auto spacing' option.
    - Drawing grid dynamically on viewer area only.
    - Moving code to coinManager.
    - Adding a 'grid tool' to sketcher-edit-mode toolbar.
2023-02-25 23:13:55 +01:00
Paddle
7f18faae7d Sketcher: Remove grid settings from Edit Control widget. 2023-02-25 23:13:55 +01:00
Paddle
0a78933685 Core: View3DInventorViewer, add 3 functions:
- getDimensions
- getMaxDimension()
- getCenterPointOnFocalPlane()
2023-02-25 23:13:55 +01:00
Uwe
faca6b2e40 [Gui] fixes for NaviCube parameters
- add missing routines to save default values

- also fix color read in (transparency was read in wrong order)
2023-02-25 18:56:27 +01:00
Uwe
4adf98e369 [Gui] add UI to change the NaviCube button size
- it was frequently requested and people now even published videos since I documented this hidden feature in the Wiki.
However, for a user it is a nightmare without a UI and users who like a bright background need to change the button color to keep the buttons visible.
2023-02-25 15:28:51 +01:00
wmayer
37fcd2da26 Tests: fix linking error on Windows 2023-02-25 15:27:30 +01:00
luzpaz
e5cdd9a80e [Material] fix grammar 2023-02-25 09:59:24 +01:00
luzpaz
5c6ec58709 [Fem] fix grammar 2023-02-25 09:59:24 +01:00
0penBrain
77d50db1bf CI: Install dependencies + run Cmake before Cpp lints (needed for Clang tools)
+ Reorganize tests in logical order
2023-02-25 09:50:23 +01:00
Chris Hennes
543a99acd2 Addon Manager: Linter cleanup of utilities 2023-02-24 21:58:55 -06:00
Chris Hennes
97c873810b OpenSCAD: Linter cleanup 2023-02-24 21:58:39 -06:00
Uwe
77b7af3e60 [Gui] remove unused help button from preferences dialog
- is by default in the title bar of Qt dialogs, has to be removed explicitly when unused

- also fix too long code lines
2023-02-25 04:35:57 +01:00
Jolbas
6c3efbdb3b Fix create Rotation from scaled matrix
Support for creation of Rotation from matrices which is a combination of non uniform scale and a rotation
Fixes according to review
Scale -1 is Uniform, Not NoScaling
Fix hasScale() when negative scale
2023-02-24 20:33:40 -06:00
Roy-043
bdb6e1bd55 [Arch] fix Arch_Stairs stringer code (#8639) 2023-02-25 00:43:46 +01:00
wmayer
22587e360c Tests: add tests for quantities 2023-02-25 00:33:44 +01:00