jchanvfx / nodegraphqt Goto Github PK
View Code? Open in Web Editor NEWNode graph framework that can be re-implemented into applications that supports PySide2
Home Page: http://chantonic.com/NodeGraphQt/
License: MIT License
Node graph framework that can be re-implemented into applications that supports PySide2
Home Page: http://chantonic.com/NodeGraphQt/
License: MIT License
Currently the node graph workflow is left to right horizontally implement the ability to layout node graph vertically top to bottom.
implement custom node properties for node to store data node.add_property()
or node.add_knob()
a dialog that can search for node in the current node graph and also add the action under Edit>Search
shotcut key: /
similar to nuke.
add a json parser to build node items from the clipboard.
implement method to slice pipes in the node graph.
implement node properties widget that displays all the node property fields.
NodePropertyWidget(node=None)
The width of the edges between nodes as a heatmap of CPU cycles spend
implement validation check so the nodes don't connect to itself in a loop.
If you click with LMB on a port it causes a KeyError in pipe.py
self.input_port = ports[IN_PORT]
KeyError: 'in'
Maybe its good? Maybe not? I suppose client can subclass to get their own behavior, but it makes the example a bit fragile.
Implement pan and zoom control buttons overlayed on top of the viewer
holding down shift key and selecting additional nodes doesn't extend the node selection.
not super important more of a aesthetics thing add arrows to pipes.
I'm using the library as part of an autorig system, and it's becoming very important that users can interact fluidly with the ui to change the displayed names of nodes - most of the interaction conventions I'm looking at implementing are very maya-like, which I get might not be the best vision for this library as a whole. However, the convention of double-clicking a displayed name to change it is common across many applications.
I can have a crack at implementing this if you're too busy - it would probably live in the node_abstract module, and involve a couple of new signals to and from the node model or vendor to check the new name is valid.
currently node graph has no "undo" and "redo" functionality need to implement
see if you can learn from this example:
https://wiki.python.org/moin/PyQt/Undo%20and%20redo%20with%20line%20edits
implement node state to enable/disable similar to nuke.
node.enable()
, node.disable()
and something visually indicating the node is disabled.
port pyside code to Qt5 with pyside2
PySide2 api: https://doc-snapshots.qt.io/qtforpython/index.html
It would be extremely useful to have a way of grouping certain inputs and outputs together, ideally recursively. This could be as a compound attribute, where the parent and each of the children can all be connected, or as an array, where only the children are valid. Maya's visual implementation of this isn't amazing, but in practice it's very functional.
add a display for nodes that plugins that are missing.
port the python code to be python 3 compatible
implement a tab search widget for the viewer similar to nuke application.
using a mouse track pad doesn't seem zoom in/out properly.
Cool project ๐น - for more elaborate DAG's, having a graph layout algorithm clean up the DAG might be useful
I can't get widgets from Nodes
error:
return self.item.all_widgets().items()
AttributeError: 'NodeItem' object has no attribute 'all_widgets'
The code:
def all_widgets(self):
return self._widgets
is missing on class: NodeItem; file: NodeGraphQt/widgets/node.py
implement snap to grid for nodes with threshold setting.
ctrl+shift+x
extract
ctrl+d
remove inputs
implement a backdrop node type that sits behind all node items and pipes.
add some documentation for the node graph with github pages.
currently icons are quite small would be nice to have a large preview image of some sort in the widget area of a Node item.
add some padding to the tab search widget and maybe a slight dropshadow.
need a list widget that can show all the undo command history.
Implement hot key to align nodes.
fix the small bug in the node paint function with.
painter.setClipRect()
need a undo command for when a node is created.
will also need to refactor how the undo command are implemented so custom undo blocks can be implemented.
Currently calling nodeGraph.viewer().selected_nodes()
returns a list of NodeGraphQt.widgets.node_base.NodeItem()
instances, regardless of if the selected node types have inherited further. This makes it difficult to query selected nodes in other windows if they are extensions of the base class, and makes it difficult to access any extra functionality that may have been added.
small bug where alt + MMB zoom is not working in the viewer also need to update the README.md.
implement some kind of widget that displays all nodes in a grid layout with tabs and allows drag n drop to the node graph.
implement undo command when a node is deleted from the scene.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.