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 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 undo command when a node is deleted from the scene.
not super important more of a aesthetics thing add arrows to pipes.
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.
implement validation check so the nodes don't connect to itself in a loop.
using a mouse track pad doesn't seem zoom in/out properly.
holding down shift key and selecting additional nodes doesn't extend the node selection.
implement a backdrop node type that sits behind all node items and pipes.
implement method to slice pipes in the node graph.
Implement hot key to align nodes.
Implement pan and zoom control buttons overlayed on top of the viewer
small bug where alt + MMB zoom is not working in the viewer also need to update the README.md.
add some padding to the tab search widget and maybe a slight dropshadow.
Currently the node graph workflow is left to right horizontally implement the ability to layout node graph vertically top to bottom.
port the python code to be python 3 compatible
implement custom node properties for node to store data node.add_property()
or node.add_knob()
The width of the edges between nodes as a heatmap of CPU cycles spend
implement snap to grid for nodes with threshold setting.
Cool project ๐น - for more elaborate DAG's, having a graph layout algorithm clean up the DAG might be useful
port pyside code to Qt5 with pyside2
PySide2 api: https://doc-snapshots.qt.io/qtforpython/index.html
fix the small bug in the node paint function with.
painter.setClipRect()
implement some kind of widget that displays all nodes in a grid layout with tabs and allows drag n drop to the node graph.
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.
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
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 some documentation for the node graph with github pages.
implement a tab search widget for the viewer similar to nuke application.
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.
need a list widget that can show all the undo command history.
implement node state to enable/disable similar to nuke.
node.enable()
, node.disable()
and something visually indicating the node is disabled.
add a json parser to build node items from the clipboard.
implement node properties widget that displays all the node property fields.
NodePropertyWidget(node=None)
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.
ctrl+shift+x
extract
ctrl+d
remove inputs
add a display for nodes that plugins that are missing.
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.
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.
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.