Commit Graph

59 Commits

Author SHA1 Message Date
wmayer
ec73caa40e modernize C++: make unique 2023-08-07 19:51:30 -06:00
wmayer
c2e17824fa modernize C++: raw string literal 2023-08-07 19:51:15 -06:00
Adrian Popescu
397d01b96f Build graph fix (#8311) - Fixed Constraints' value not being updated 2023-01-31 11:00:33 -06:00
luz paz
4be3fe84c7 App: fix trailing whitespace 2022-12-02 19:19:17 -06:00
Uwe
f66263ec37 [TD] Gui, Dlg*: remove unused includes
- also sort includes
- also two whitespace changes
2022-10-09 19:14:31 +02:00
berniev
d2babf0eb5 App: Single arg ctors must be explicit 2022-08-24 07:20:57 +02:00
berniev
22dcf5866f App: use empty 2022-08-06 19:29:59 +02:00
berniev
ac81a8380f App: use emplace_back 2022-08-05 10:31:51 +02:00
berniev
b6cae3bfdf App: Modernise ctors dtors defs etc 2022-08-01 00:34:46 +02:00
berniev
85170b2879 remove redundant void 2022-07-31 10:27:44 +02:00
Uwe
e69a920f18 [App] remove superfluous nullptr checks 2022-07-18 03:12:01 +02:00
Zheng, Lei
817cfe5a44 App: fix recompute problem caused by expression hidden reference 2022-03-26 10:19:20 -04:00
wmayer
1a20b7f119 App: modernize C++11
* use nullptr
2022-03-23 17:29:23 +01:00
wmayer
5e0cfc64ee App: use forward declarations 2022-03-04 21:09:46 +01:00
Uwe
d88397f3d6 [App] Placement and Property: remove unused includes 2022-02-24 01:09:00 +01:00
Zheng, Lei
0c2c334f87 Spreadsheet: support cell binding
Cell binding allows one to bind a range of cells of one sheet to another
range of cells of an arbitary sheet, including any empty cells in the
range.

The binding is implemented with PropertyExpressionEngine and
PropertySheet::setPathValue(), which binds a special path of
PropertySheet, such as

    .cells.Bind.A1.D1

to an expression, such as

     tuple(.cells, <<A2>>, <<A5>>)

The A1 and D1 in the example above specifies the binding start and end
cell address. And <<A2>> and <<A5>> are the range of cells to bind to.
Note that you can use any expression that evalutes to string for the
binding destination, e.g. <<A%d>> % B1, which uses the value inside B1
to construct the binding destination. The '.cells' in the tuple shown
above is an example to bind cells of the same PropertySheet. It can be
change to to reference to any other spreadsheet, even those outside the
current document, e.g. Document#Spreadsheet001.cells
2021-12-21 21:41:02 -07:00
wmayer
ea836050f1 App: 0004649: Segmentation fault when clearing an expression in an onChanged handler 2021-12-09 18:21:26 +01:00
Chris Hennes
2ecd720de8 App: Add missing use for boost placeholders 2021-11-14 20:45:09 -06:00
Zheng, Lei
fdae470c1b App: add hiddenref() expression built-in function
Any object reference inside this function is treated as hidden to
exclude it from dependency calculation. This function allows some form
of cyclic depdenency.

Merger note: renamed from "HREF" to "HIDDENREF" to avoid confusion with
the standard "hypertext reference" use of HREF.
2021-11-14 20:45:09 -06:00
Benjamin Nauck
079ffa5b0f [App] Use std::shared_ptr instead of boost::shared_ptr
There's no need to use boost version when stl has support for shared_ptr
2021-03-06 19:32:03 +01:00
wmayer
eac4062b3f Boost: [skip ci] Fix build warnings from deprecated Boost headers (v1.75) 2020-12-29 15:34:25 +01:00
wmayer
730154a684 boost 1.73.0: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated 2020-06-12 17:51:33 +02:00
luz.paz
019f73852c src/App: [skip ci] fix header uniformity
This PR fixes header uniformity across all `src/App` files
2019-12-25 11:38:43 +01:00
asapelkin
ced8100ab9 use emplace_back instead of push_back where justified 2019-11-21 14:48:09 +01:00
Zheng, Lei
f6ad70195f App: fix dynamic property undo/redo
Instead of enforce property type match when undo/redo, modify various
property Paste() to make it type safe.
2019-10-07 17:24:31 +02:00
Zheng, Lei
36f7098257 App: extend Expression syntax
* Support sub-object reference syntax using the following syntax,
    Part.<<Box.>>.Placement
  or, with sub-object label referencing
    Part.<<$Cube.>>.Placement

* Extend indexing support, including range based indexing, e.g.
    A1[B2+1][C3][D4:-1]

* Add new constants, None, True, true, False, false.
2019-09-28 15:31:24 +02:00
wmayer
9fa56345cf core system
force strict ISO C++ (-Wpedantic)
TODO: still a lot of variadic macros are not valid ISO C++
2019-09-18 01:01:14 +02:00
wmayer
662eb5c092 remove unused variable 2019-09-03 17:21:16 +02:00
Zheng, Lei
05155daf82 App: improve exception message in PropertyExpressionEngine 2019-08-30 15:50:13 +02:00
wmayer
05f1680360 work around to fix build failure with clang 3.4 2019-08-20 14:24:27 +02:00
luz.paz
3a1a6eb7d8 Fix typos in src/App 2019-08-17 15:32:48 +02:00
Zheng, Lei
ced27a69c6 PropertyExpressionEngine: convert to link type property
PropertyExpressionEngine is changed to derived from a new class
PropertyExpressionContainer, which is in turn derives from
PropertyXLinkContainer. This makes PropertyExpressionEngine a link type
property that is capable of external linking. It now uses the unified
link property APIs for dependency management and tracking of object
life time, re-labeling, etc.

ObjectIdentifier is modified to support sub-object reference, but is
not exposed to end-user, because expression syntax is kept mostly
unchanged, which will be submitted in future PR. There is, however,
one small change in expression syntax (ExpressionParser.y) to introduce
local property reference to avoid ambiguity mentioned in
FreeCAD/FreeCAD#1619

Modified Expression/ExpressionModifier interface to support various link
property API for link modification.
2019-08-17 14:52:09 +02:00
luz.paz
ce91b1f766 Misc. typo fix
Found via `codespell`
2018-10-11 16:21:28 -04:00
wmayer
004206aa0b 0003279: Error 'invalid DAG' after deleting sketch using expressions 2018-01-31 00:27:38 +01:00
wmayer
440f2e8f56 when overriding an expression remove dependencies from old expression to avoid recompute failures due to invalid DAG 2017-10-07 20:39:16 +02:00
luzpaz
f3bf8fe919 Misc. typos
+ some are doxy others are just comment code.  
+ some minor whitespace and grammatical tweaks. 
+ app/SCL/* typos have also been submitted upstream (https://github.com/stepcode/stepcode/pull/366). So it's ok to merge them in to master.
2017-10-04 17:59:11 +02:00
Stefan Tröger
892301367a Expressions: Prevent backlink creation to same objects. fixes #0003192 2017-09-21 12:11:13 +02:00
wmayer
8e21d98a9a do some security checks to avoid accessing invalid data 2017-09-12 15:21:07 +02:00
luzpaz
5be4fb5cdc typo fix 2017-07-10 19:29:55 -03:00
wmayer
fb7094bf31 use specialized exception classes 2017-04-28 18:49:11 +02:00
Kunda
31b0233393 source typo fixes pt6 2017-03-07 13:43:46 -03:00
Stefan Tröger
a1deaf8338 DAG: Fix preprocessor definition inconsistencies 2017-01-21 19:15:36 +01:00
Stefan Tröger
49716393c6 DAG: Change object graph handling to be bidirectional 2017-01-21 19:15:36 +01:00
wmayer
2af6bb6e49 replace deprecated auto_ptr with unique_ptr 2016-09-22 13:01:20 +02:00
Eivind Kvedalen
36426ef255 PropertyExpressionEngine: Fixed warning. 2016-02-18 16:54:45 +01:00
Eivind Kvedalen
90b4cf70ae PropertExpressionEngine: Ignore dependencies that does not resolve to a document when verifying expressions. 2016-02-18 16:54:44 +01:00
Eivind Kvedalen
882d5423cd PropertyExpressionEngine: Fixed bug in Copy and Paste (make deep copies of the expressions). 2016-02-18 16:54:43 +01:00
Eivind Kvedalen
452650440b PropertyExpressionEngine: Refactored and moved visitor code to separate file. 2016-02-18 16:54:41 +01:00
Eivind Kvedalen
495b23209c Document/PropertyExpressionEngine: Added onDocumentRestored function, to update internals of PropertyExpressionEngine after loading a document from disk. 2016-01-08 23:08:55 +01:00
Eivind Kvedalen
72bb18a53f PropertyExpressionEngine/DocumentObject: Track object deletes and update dependencies accordingly. 2015-12-21 14:11:13 +01:00