-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support display and connection of attributes that are part of GroupAttributes
#2544
base: develop
Are you sure you want to change the base?
Conversation
12210e5
to
12bc150
Compare
GroupAttributes
GroupAttributes
and allow connection of these attributes to other ones
66ce81e
to
0e0455d
Compare
0e0455d
to
0cdfd8b
Compare
GroupAttributes
and allow connection of these attributes to other onesGroupAttributes
dcece1d
to
12249de
Compare
3e6b6c0
to
ab0a2b9
Compare
9bc279f
to
0d2954e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need to check if the generation of the attributes within a group in the node cannot be performed in the same way as in the node editor.
0d2954e
to
7b5d84f
Compare
6a34cd4
to
a5d7265
Compare
a5d7265
to
cc473d2
Compare
ff4f5d5
to
449cc90
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #2544 +/- ##
===========================================
+ Coverage 69.90% 70.38% +0.48%
===========================================
Files 121 123 +2
Lines 7078 7173 +95
===========================================
+ Hits 4948 5049 +101
+ Misses 2130 2124 -6 ☔ View full report in Codecov by Sentry. |
22a80d4
to
78419fa
Compare
For attributes in `GroupAttribute` and `ListAttribute`, the notion of parent attribute exists through the `root` property. As a parent can itself have a parent, the `depth` property describes how many levels there are between the attribute and the root level. A value of 0 means that the attribute is at the root level, and it increases as it gets deeper.
`flattenedChildren` returns the list of all the attributes that refer to this attribute as their parent (either direct or indirect) through the `root` property. The search for the children attributes is recursive and alllows to retrieve at once all the nested attributes, independently from their level. At the moment, only `ListAttribute` and `GroupAttribute` will return a non-empty list of flattened children attributes.
…escription's The `exposed` property, which determines whether the attribute is displayed on the upper part of the node in the Graph Editor, is set for each attribute individually in their node's description. If an attribute has a parent (meaning it depends on a `GroupAttribute` or a `ListAttribute`) whose `exposed` property value differs, it does not make sense to display it separately from it. The attribute's `exposed` should align with its parent's.
If an attribute belongs to a `GroupAttribute` or a `ListAttribute`, it has a parent, and its full name is "parentName.attributeName". Instead of displaying only "attributeName" in the tooltip, this commit now displays "parentName.attributeName" to ensure that the link is obvious.
Rename `getFlattenedChildren` into `getFlatStaticChildren` and have a default version for all the Attributes, as well as a dedicated one for GroupAttributes. Children of ListAttributes are currently not taken into account when gathering the list of children.
The test ensures that if the attributes within `GroupAttributes` are connected to each other, the graph can be saved and reloaded without triggering compatibility issues for these nodes.
…lapsed Just like any other connected attribute, any child attribute within a Group that is either the source or destination of an edge needs to remain on display, independently from the status of its parent (collapsed or expanded).
…bility When edges could exist while being invisible in the graph, pins needed to be enabled/disabled manually according to the visibility of the edge. This was especially important when closing the application and removing all the (hidden) edges as the pins needed to be properly destryed as well. Edges are not hidden anymore, and any attribute that should be hidden but is in fact connected remains visible as long as the connection exists.
If an attribute has a parent (`root is not None`), directly use the parent's values for the `depth` and `exposed` properties instead of setting them from scratch everytime from a `while` loop. If the attribute has no parent, then `depth = 0` and `exposed` is set directly from the description.
448bbf3
to
767377c
Compare
…tes` As connections between groups are currently not supported, add connecting any `GroupAttribute` to the list of connections to refuse.
767377c
to
2cc458a
Compare
Prior to this commit, the edge that was being dragged to be connected appeared as soon as the `pressed` signal was emitted by the mouse. Now that the user can actually click (press & release) without dragging the mouse to expand or collapse groups, we want to be able to distinguish cases where the user presses the mouse to click (to expand/collapse groups) from those where the user presses the mouse to drag it (to connect edges). Instead of triggering the drag as soon as the `pressed` signal is emitted, we wait to see if the mouse moves significantly enough to indicate the will to drag; an arbitrary limit of 10 pixels along the X- or Y-axis is used to determine that the user means to drag the mouse.
2cc458a
to
6aae86c
Compare
Description
This PR is based on #2538 and must be merged once #2538 itself has been integrated into
develop
.It also relies on some UI fixes introduced in #2563.
The main feature of this pull request is that it adds the support of connections between attributes that are part of a
GroupAttribute
. Prior to this PR, these attributes could neither be connected individually, nor be displayed in the Graph Editor; they were however visible and editable in the Node Editor.GroupAttributes
are now displayed in the Graph Editor with right chevron, which means they can be expanded when clicked upon. When this happens, all the children attributes of the clickedGroupAttribute
are displayed below it, displayed in a tree view with the indentation reflecting their depth level. Children attributes are displayed recursively, and aGroupAttribute
that contains a childGroupAttribute
will have it displayed as well (but collapsed by default).Attributes that are connected will always be displayed, even if they belong to
GroupAttributes
that are currently collapsed. If an edge connecting such an attribute is removed, then this attribute will be updated to reflect its parent's visibility status.Additionally, some unit tests are added.
Features list
GroupAttribute
. An attribute that has no parent will have a depth of 0, and it will increase of 1 for every parent;flatStaticChildren
property for every attribute that may have children that contains the flattened list of said children;exposed
property take precedence over their own. This for example prevents having attributes within groups that are exposed while the group itself is not, which would break the hierarchy of the display for theseGroupAttributes
;GroupAttributes
and display their children attributes in their node in the Graph Editor with a tree view. These children attributes are graphically connectable;childAttribute
is a child of a groupgroupAttribute
, its name will be displayed asgroupAttribute.childAttribute
, making the relationship between the two obvious.