Flow-based visual scripting for Python
remove_event()
method in NodeInstances and widgetswidget_type
argument anymore)package_path
for widgets outside of their class (useful for imports of custom classes etc.)Extract Property
node which is really useful, an example is included in the examples project.rpo
for projects and .rpc
for packagesRyven finally supports simple node activation animations. Every time a node updates, it starts an animation, making it easy to see what's going on in the flow. They can be disabled. Furthermore, I updated some new designs and themes. In pretty
mode nodes have now shadows.
Internal changes
I furtherly distributed the NodeInstance related classes. I extracted the whole painting process and put it in a separate class NodeInstancePainter
. Also, animations are handled by a separate class.
Besides a lot of fine grinding (like adding shortcuts and stuff like that), I slightly changed the method reference retaining mechanism, now using a callable class M
instead of the m()
function (I updated the template files and existing nodes). Furthermore, the existing packages experienced a code revision, I updated many of the notations.
Further changes
update_shape()
calls are not necessary anymoresetup_ports()
procedure. Now a port gets initialized after the NodeInstance itself.And, there is a website in the making.
A lot of fine grinding and small fixes, and I did a big rework of the NodeManager.
NodeManager changes
Ryven changes
val
nodeDrawingObjects
(Ryven can still load projects using the old signature though)Besides reviewing the source code of nodes (NodeInstances) and their widgets inside Ryven, it is now also possible to actually edit a specific object's methods. More specifically:
This is kinda ridiculous, I didn't think this was actually possible and so unlimited. And considering how unexpectedly useful the pure source code preview became, I am really excited about it.
edit: there is a crucial package bug in the new val node when saving/loading a project which will be fixed in the next release.
pyScript became Ryven I am very pleased to present the first Ryven release. Ryven is the result of a huge intern code revision (of what was referred to as pyScript before), reimplementing and reorganizing a lot of intern processing, making it much cleaner. Furthermore, Ryven includes many features that make learning and using it more efficient and fun. A new big example project shows the use of OpenCV nodes which represents a very interesting field of application.
A few of the main improvements for the user:
The main internal change is that the geometric organization of the contents of a NodeInstance now uses QGraphicsLayout
- no ugly manual calculations anymore! And I reimplemented the whole selection process recently too, now using the built-in system by QGraphicsScene
. Also, the undo/redo system was reimplemented recently, now using references and not relying on the complex index system anymore.
This version runs pretty well and I can't wait to see what it is going to be used for in the future, I am really excited.
Added:
Reimplemented:
QGraphicsScene
and a std RubberBandSelection
And many small internal adjustments. The only big change left is the reimplementation of the geometric organization of a NodeInstance's contents via QGraphicsWidgets
and QGraphicsLayouts
. This will make the code much cleaner but isn't of the essence for the user.
I removed tokens. This enables slightly easier and more open programming of nodes. Along with that, I changed the algorithm executing the script, so that now data connections are always forward updated on change and not backward updated on request. This makes execution flows slower but pure data flows faster and simpler. I would like to create some live video and audio processing nodes in this version to show what it is capable of. The biggest issue is currently performance when combining dataflows with execution nodes.
First pre-release of this software! This is the prototype that can be seen in a demo YouTube video. It includes basic functionality including a system for dynamically creating and importing nodes and a mostly working flow execution algorithm.
The next releases will be about improving the NodeManager and adding new content. The documentation will experience a lot of improvement too, I think.