Since Qt 6.7, type annotations are enforced at runtime.
Typing the `sourceSaveDialog` as Dialog (or Platform.FileDialog) breaks the value received by the function and its behavior.
In the node menu (displayed when pressing "Tab" or right-clicking in the
Graph Editor), the "Pipelines" menu entry used to be displayed even if
there was no available template (the entry would open to display an
empty list).
This commit adds a check to ensure that the "Pipelines" menu is only
added to the node menu if there is at least one template that is
available. Otherwise, it is not displayed.
When the minimal refresh mode is on, only chunks that are running,
submitted or in error while their execution mode is external should be
polled.
Chunks that have the same status but with a local execution mode will be
correctly updated as their status changes will be notified.
The behaviour for the automatic refresh mode remains the same: all the
chunks are polled, independently from their status and their execution
mode.
The desc.Node.onCreated callback is a hook in the Node API for developers to
write custom behavior on a node first initialization.
By being called in the core.Node constructor, this was triggered in several situations
that don't match this idea and with unpredictable side effects (graph loading, node re-creation on undo...).
* Make `onNodeCreated` callback an explicit method on desc.Node.
* Remove the call to node descriptor's `onNodeCreated` callback outside core.Node constructor.
* Trigger this callback on explicit node creation (adding new node to graph, init a graph from a template).
Reverse relationship between combobox and filter field.
- Make textfield filter the main active focus item
that forwards its key event to the combobox.
- Make sure highlighted item is always valid.
- Block combobox validation when the filter is invalid.
Disable the horizontal scrollbar in the popup menu that was
interfering with mouse click selection on the last item.
Also, remove the unneeded Layout policy on the root ColumLayout
of this popup's contentItem.
Simplify the FilterComboBox to rely on the default behavior
provided by the ComboBox control.
Improve the filtering system and the ability to set a custom value.
Turn to a more declarative approach with regard to handling
value update and its mapping to the combobox's current index.
Ensure attribute input connection is serialized, even for List/GroupAttributes.
Note: while connecting GroupAttributes is not yet supported, this will benefit
this type of attribute once it is.
* Deserialization: Replace the logic that defaulted the node type version to "0.0" when unspecified,
and assume that unspecified version on a node is targetting current node type version.
* Serialization: Only serialize node type versions for which a version info is available.
* Test suites:
* Add helper context manager to manually override the version of a given node type.
* Add new unit tests to cover version conflicts handling is various scenarios.
At the end of the deserialization process, solve node uid conflicts iteratively by node depths,
and only replace the conflicting nodes with a CompatibilityNode.
Add new test suite for testing uid conflict handling.
Add a new method to create a copy of a graph instance, relying on
chaining serialization and deserialization operations.
Add test suite to validate its behavior, and the underlying serialization processes.
Re-implement node pasting by relying on the graph partial serializer,
to serialize only the subset of selected nodes.
On pasting, use standard graph deserialization and import the content
of the serialized graph in the active graph instance.
Simplify the positioning of pasted nodes to only consider mouse position
or center of the graph, which works well for the major variety of use-cases.
Compute the offset to apply to imported nodes by using the de-serialized
graph content's bounding box.