Commit Graph

1653 Commits

Author SHA1 Message Date
Uwe
0f2df33396 [App] register all available unit properties
- was missing in #6717
2023-02-26 19:12:25 +01:00
Uwe
ead3e5a3e6 [App] sort properties
- to keep better the overview
2023-02-26 18:07:41 +01:00
M G Berberich
9c1d80d9e6 add cbrt (cube root) to expressions (#8629)
This adds a function cbrt(arg) to the freecad-expressions that computes
the cube root of arg. Instead of arg^(1/3) this handles the units of the
argument, so that one can compute units from p.e. ml to mm.
  cbrt(27 ml) → 30 mm
instead of
  (27 ml)^(1/3) → 30
2023-02-26 17:49:58 +01:00
Uwe
eb24cf2638 [Core] add missing velocity property
- fixes compilation because declared in header but no code
- also sort the properties to keep the overview
2023-02-26 16:38:02 +01:00
Oliver Oxtoby
806c47311e [App] [Base] Add missing Property classes for all Units (#6717)
- Add missing Property classes for all Units
- Add missing units to unit calculator, as well as some missing string representations
- also change units used for dynamic viscosity to the customary Pa*s
2023-02-26 15:28:28 +01:00
wmayer
c7f2b67d14 App: fix several Lint warnings:
* ignore bugprone-easily-swappable-parameters
* handle bugprone-narrowing-conversions,cppcoreguidelines-narrowing-conversions
* handle readability-uppercase-literal-suffix
* handle readability-braces-around-statements
2023-02-26 13:30:44 +01:00
wmayer
191b477d75 App: fix some Lint issues:
* readability-identifier-length
* cppcoreguidelines-pro-type-member-init
2023-02-26 13:30:44 +01:00
wmayer
9604f94fdc Core: add functions setPackedARGB and fromPackedRGBA 2023-02-26 10:11:53 +01:00
wmayer
92b1774961 App: move Color class to its own sources 2023-02-26 10:11:53 +01:00
wmayer
62c05414d1 App: split tokenizer handling of ExpressionCompleter to its own class 2023-02-26 09:00:27 +01:00
Chris Hennes
b4d10f29c2 App: Add None=0 to enumeration
Addresses Coverity CID 356649, uninitialized scalar.
2023-02-25 21:53:01 -06:00
Abdullah Tahiri
772a06b5d6 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
0penBrain
6f278d7673 [BugFix] Expression: always add space char before unit when converting to string, fixes #8562 2023-02-24 19:44:44 +01:00
Uwe
4eb99a070c [App] License.h: fix compiler warning
- as discussed here: https://forum.freecad.org/viewtopic.php?t=76184
2023-02-20 00:57:19 +01:00
Chris Hennes
58061500f9 Core: Add libfmt via FetchContent 2023-02-18 12:43:48 -06:00
Uwe
6d4a90c605 [App] sort includes in PreCompiled.h
- also remove a superfluous private: statement
- also remove an unnecessary include
2023-02-18 14:53:11 +01:00
wmayer
e71386d20d App: define an enum to be used as the retType argument of DocumentObject.getSubObject()
This is to avoid to use magic numbers in client code
2023-02-14 12:02:33 +01:00
Uwe
a4b4bc99e0 [App] License.cpp: add missing include
- does otherwise not compile on Windows
2023-02-12 21:25:08 +01:00
wmayer
3abeb547b9 App: support of method unsetupObject in Python feature classes 2023-02-12 20:01:09 +01:00
wmayer
1a1f814a71 App: refactor license handling to reduce code duplication 2023-02-12 19:57:41 +01:00
0penBrain
ebc5cb16a9 [Core] Add possibility to set color with tuple of integers, fixes #8344 2023-02-12 18:16:59 +01:00
alexneufeld
e9d4583f7c Gui: Add CERN OHL to default licenses list 2023-02-12 10:31:59 +01:00
marioalexis
7e0d84ff0b App: Fix warnings -Wignored-qualifiers 2023-02-11 14:16:46 -08:00
Chris Hennes
51d42630ac App: Add basic test for new Metadata code 2023-02-10 12:40:55 -07:00
Chris Hennes
8fdc780133 App: Cleanup Metadata 2023-02-10 12:40:55 -07:00
Chris Hennes
766923a3da App: Add support for in-memory Metadata creation 2023-02-10 12:40:55 -07:00
Uwe
b3f04f5639 [App] fixes for Magnetization property 2023-02-09 05:32:20 +01:00
Uwe
94a5bf7780 [Core] add quantity Magnetization
- needed for FEM and Material
2023-02-08 20:33:58 +01:00
Uwe
a58c74c556 [Core] disable the the unit Oersted
- is not feasible for practical usage and (was up to now not used, thus no consequence)
  moreover, Oersted is a cgs unit while we use SI units, thus also not suitable for FEM, only makes problems for magnetization
2023-02-08 19:59:36 +01:00
Uwe
182f4502dc [App] [skip ci] add info for expression lexer generation 2023-02-08 06:34:59 +01:00
Uwe
65eb154eac [FEM] add current density constraint
- also add corresponding App::PropertyCurrentDensity

- also fix a typo in test_object.py
2023-02-05 21:10:15 +01:00
Uwe
a9b8be3e00 [Core] add current density
- necessary to implement electromagnetic features to the FEM WB
2023-02-04 03:22:24 -06:00
Adrian Popescu
397d01b96f Build graph fix (#8311) - Fixed Constraints' value not being updated 2023-01-31 11:00:33 -06:00
berniev
1848f57908 Improve unit testing directory structure
Separate Qt tests and gtest tests
Add a basic shadow of the project structure
Add a few simple tests to demonstrate usage
2023-01-30 07:15:09 -07:00
luzpaz
5d3f56989d Fix various indentation issues (tabs->spaces) 2023-01-23 16:59:28 +01:00
wmayer
f2908e251c [skip ci] fix typos 2023-01-06 18:16:50 +01:00
Zheng, Lei
e4aa389cc4 Base/App/Gui: force using Base::Handle for ParameterManager
For reference counting
2023-01-06 09:14:41 -06:00
wmayer
9efac962ac App: fix failure to detect cyclic dependencies on expressions
See also forum thread: https://forum.freecadweb.org/viewtopic.php?f=3&t=74331
2023-01-02 16:36:10 +01:00
wmayer
d60f2e291f Core: fixes #8119: Make axis values in Property view persistent 2023-01-02 12:48:40 +01:00
wmayer
aeb5ea0ddf App: [skip ci] reduce code duplication 2022-12-23 18:39:59 +01:00
wmayer
b9d88f9985 App: remove dead code and simplify code 2022-12-23 17:02:04 +01:00
Abdullah Tahiri
e5245a7346 App: New signal to notify user messages
=======================================

Document provides a new functionality, to signal subscribed user code of messages intended for the user.

The main motivation is critical messages of broken forward compatibility during restoring a document into a new version of FreeCAD.
However, the framework may be used in many other ways.
2022-12-21 16:01:23 +01:00
Yorik van Havre
d206d5cd1f Updated ts files 2022-12-20 09:31:25 +01:00
wmayer
8a48e0bf6c App: [skip ci] improve error message 2022-12-19 17:08:26 +01:00
wmayer
42ec9a2033 App: when using Yaw, Pitch or Roll angle in expressions make sure that they are in range 2022-12-19 14:48:30 +01:00
wmayer
9fac4a79ee App: handle sub-components in PropertyRotation 2022-12-14 21:21:02 +01:00
wmayer
6bccd52cd0 App: handle sub-components in PropertyPlacement 2022-12-14 15:41:49 +01:00
luz paz
26cf9e771f Add missing brackets + change indentation to spaces 2022-12-12 11:38:06 +01:00
luz paz
f17b73a7bf Cleanup: move return statement to new line + trailing
Follow-up to #6497
2022-12-12 11:38:06 +01:00
wmayer
4f5600fa77 Core: allow to set file filter from PropertyFileIncluded 2022-12-07 12:58:07 +01:00