Commit Graph

56 Commits

Author SHA1 Message Date
bgbsww
53ad95b382 Toponaming: bring in missing code fragments in App 2024-05-12 17:21:49 -04:00
Zheng, Lei
903d72b96e App: fix linked copy on change group out of scope problem
Fixes FreeCAD/FreeCAD#13481
2024-04-24 08:09:53 -05:00
Florian Foinant-Willig
6cec876a41 [Link] Fix SIGSEGV with LinkCopyOnChange=Tracking 2024-03-12 21:47:07 +01:00
André Caldas
e6b5fd0a21 Does not rely on the pointervalue returned by getNameInDocument() to use as a DAG key.
In order to make getNameInDocument() always return a valid string,
we implement a getDagKey() method that shall be used instead of getNameInDocument()
when we want to use the pointer value as a "key" to identify the DocumentObject.
2024-01-22 10:40:24 -06:00
André Caldas
89dbab9b0e Avoids using getNameInDocument() to test if DocumentObject is attached to a Document.
This patch substitutes by isAttachedToDocument() (almost) everywhere where
getNameInDocument() is used for this purpose.

The very few places not touched by this patch demand a (just a little) less trivial change.
When we change the returning type of getNameInDocument() to std::string,
those places will be easily found, because they shall generate a compiler error
(converting std::string to bool).

Rationale:
The fact that getNameInDocument() return nullptr to indicate
that the object is not attached to a document is responsible for lots of bugs
where the developer does not check for "nullptr".

The idea is to eliminate all those uses of getNameInDocument() and, in the near future,
make getNameInDocument() return always a valid std::string.
2023-12-11 17:37:58 +01:00
wmayer
1cf1a90a17 App: modernize C++: use default member init 2023-08-23 19:51:44 +02:00
luzpaz
09a965d595 Fix typos 2023-08-21 20:20:47 +02:00
wmayer
1efde78d74 App: modernize C++: use equals default 2023-08-20 18:10:17 +02:00
wmayer
4991475341 App: modernize C++: use range-based for loop 2023-08-14 16:40:25 +02:00
wmayer
948cbfccd9 modernize C++: avoid bind
In many cases std::bind() is kept because the code is much simpler
2023-08-08 21:10:16 +02:00
wmayer
52e1c7c33b modernize C++: move from boost::bind to std::bind 2023-08-08 17:36:13 +02:00
Pesc0
c65f049d20 [Toponaming] create ElementMap class (#9175)
* Copypaste ElementMap
* Add MappedNameRef
* Fix missing include
* Copypaste `findTagInElementName`
* fix error introduced _somewhere_
* refactor toponaming constants
* Move `findTagInElementName` in `MappedName`
* reintroduce workaround to compile ElementMap
* Added missing functions copied from complexgeodata
* fix last compile errors, reorder and format files
* remove recursive refs to ComplexGeoData
* Add more comments
* fixed comments and added tests
* added FIXME, make functions private, misc fixes
* Move static functions from complexGeoData to PostfixStringReferences. Rename to ElementNamingUtils
* Fix broken includes due to previous change
* Revert constants from string to const char*
* added childmap tests and made hasher public
* Make functions private
* Added remaining tests
* removed bool return from `erase` functions
* fix missing appexport

Co-authored-by: John Dupuy <jdupuy98@gmail.com>
2023-06-15 09:05:24 -05:00
wmayer
3e70636bdc App: [skip ci] fix warnings reported by GH actions 2022-11-17 23:50:34 +01:00
wmayer
cd34494063 App: replace boolean with enum 2022-11-17 17:38:31 +01:00
wmayer
de595d5aa9 App: [skip ci] fix string literal 2022-10-21 13:43:26 +02:00
wmayer
656890be38 App: modernize C++: replace 'typedef' with 'using' 2022-08-29 12:58:39 +02:00
berniev
810c3780de App: Use override etc 2 2022-08-09 12:42:02 +02:00
wmayer
979fad404e App: [skip ci] improve whitespace 2022-08-08 10:11:22 +02:00
berniev
d9ac252982 App: redundant void 2 2022-08-08 09:45:36 +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
Uwe
32ffcc7eda [App] code style fixes by MSVC
- automatic .clang fixes while checking for nullptr, no actual code change
2022-07-18 13:03:42 +02:00
wmayer
2628fb0350 App: fix memory leaks in Enumeration class and simplify code 2022-06-25 18:18:57 +02:00
luz paz
a526451afd Fix various typos 2022-06-01 18:03:40 -04:00
wmayer
1aef8e0246 App: cannot assign a null pointer to a std::string
Depending on the compiler an exception is raised or a crash occurs
2022-05-06 15:14:37 +02:00
Zheng, Lei
22d6e5a030 App: handle exception on change Link CopyOnChange 2022-05-05 11:37:38 -05:00
Chris Hennes
f7edc74eee App: PR6497 move return statement to new line 2022-03-29 12:33:37 -05:00
Zheng, Lei
c3fcf39e9c App: minor change to LinkParams 2022-03-26 10:19:20 -04:00
Zheng, Lei
6616433d47 Gui: expose Link CopyOnChange setup through context menu
The CopyOnChange setup is meant to let user select which dependency to
copy when changing configuration.
2022-03-26 10:19:20 -04:00
Zheng, Lei
fbbc89c52c App/Gui: support Link refresh on change of originally linked configurable object 2022-03-26 10:19:20 -04:00
wmayer
1a20b7f119 App: modernize C++11
* use nullptr
2022-03-23 17:29:23 +01:00
Uwe
062944f674 [App] Link and Material: remove unused includes 2022-02-27 21:23:51 +01:00
wmayer
b35623e680 App: Bugfix for NULL-Pointer dereference of Property->getName() 2022-01-16 14:30:51 +01:00
Zheng, Lei
5229f5776f App: support CopyOnChange property in Link
New property status bit 'CopyOnChange' is added for any document object
to publish any property as a 'Configuration' option. When Link is
linked to any object with such property, it will duplicate those
properties and added it Link itself as dynamic properties. If the user
changes any of these dynamic properties, the Link will auto copy the
linked to object and apply the new configuration to it.

The Link has a new property 'LinkCopyOnChange' to allow user to
enable/disable this feature.

Spreadsheet's 'Configuration Table' feature will publish its
configuration property with 'CopyOnChange'.

Currently, once the linked object is copied, it will be independent with
the original object. There is no mechanism to auto sync changes back to
the copy.
2021-12-21 21:41:02 -07:00
Chris Hennes
ff29bb1453 [App] LGTM fix - rename loop variable
LGTM complains that the use of "obj" as the loop variable here hides the
parameter "obj". To silence the warning, rename the loop variable.
2021-09-18 23:18:51 -05:00
Zheng, Lei
fc0860db1c App: fix LinkMode enforcement in Link on restore 2021-08-01 16:36:12 +08:00
Zheng, Lei
813b6b4df7 App: fix Link extensionGetPropertyByName()
Do not query linked object if the owner object has property with the
given name.
2021-02-07 14:49:49 +01:00
luz paz
84553bf191 App: Fix header uniformity, trailing whitespace, and doxygen headers 2020-11-19 13:38:37 +01:00
wmayer
92cd08cf21 App: [skip ci] Coverity: 'Constant' variable guards dead code 2020-09-14 19:06:27 +02:00
wmayer
d6169d6478 boost: fix for boost < 1.60 2020-06-15 19:38:39 +02: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
wmayer
7c6a2ee78a [skip ci] include missing boost header 2020-06-07 15:54:34 +02:00
Zheng, Lei
570dd6cf5a App: change Link array behavior
Do not behave as group when Link array is collapsed (i.e. ShowElement
is false)
2020-03-15 10:57:19 +01:00
Zheng, Lei
2d1be0aa59 App: fix missing transformation in Link::getTrueLinkedObject() 2020-03-09 16:22:56 +01:00
Zheng, Lei
daf5cf5c21 App: fix Link appLinkExecute
Call hasAttr() first before getAttr().
2020-03-02 12:01:56 -03:00
Zheng, Lei
6603bd78fe App: add proxy execute support to Link
While executing, Link will look for a special Python callable defined in
the linked proxy object, and run it. This allows for customized link
behavior without defining a specialized Link.
2020-02-14 14:17:14 +01:00
wmayer
dc7c48c230 fix and suppress some more -Wgnu-zero-variadic-macro-arguments 2019-11-15 23:53:09 +01:00
Zheng, Lei
c7a0e7a2f5 App: fix getSubObject() in Link
Do not include scale in transformation output in
LinkBaseExtension::extensionGetSubObject()
2019-10-08 10:26:29 +02:00
Zheng, Lei
5f0e060082 App: allow link properties for all App::Link 2019-10-08 10:23:42 +02:00
Zheng, Lei
c765ff8fa2 App: add ScaleVector property to Link
This is a normally hidden property for non-uniform scaling
2019-10-08 10:23:05 +02:00