please consider adding this stuff to the api, thanks
```
All of this i know is pretty much GUI stuff. But its deffo cool stuff and would give us a lot more variety when letting the creative juices run wild.
Im sure someone else would probs like other things ive not mentioned/not generally related to GUI.
Some things i think we should be able to do:
1) subclass nodes, graph scene
why?
so we can access the following methods:
mouseMoveEvent
MousePressEvent
MouseReleaseEvent
etc
..or at least provide a callback for this.
2) map mouse cursor to scene(graph) pos
When i have a node follow the mouse cursor, theyre not aligned.
Its due to mouse cursor going off monitor coordinate system and node going off graph coordinate system so need a method like mapCursorToScenePos() which handles the offset conversion for us.
3) change node outline color,
mark a node as selected so the outline actually appears,
change a connections color / thickness.
change the main ui theme, font, color, etc. i get it that you might not want to allow us to change the look of designer as a theme can be as part as much of the brand as the name, so i understand if that one isnt implemented.
change color of dot nodes
change color/font of frame, comment, node input/out text
change the actual size of a node.
4) set a name for dot node portals
5) make comments resizable
Some things i think we need:
1) a local coordinate system for the graph scene view.
what does this mean exactly? well, with the node.setPosition(float2(0,0)) approach, that should be thought of setting a nodes pos globally.
Would be nice to be able to also do node.setPositionInLocalSpace(float2(0,0)).
This then allows us to place a node at the center point of the "viewable" graph viewable as in the actual section of the graph that is literally viewable, so no matter how zoomed in i am on any portion of a graph, placing a node at pos (0,0) on a local coordinate system it will place it in the center still).
We are most of the time working with the graph panel not-maximised and constantly moving the graph around with no indication to where (0,0) actually is. and with the current setPosition(float2(0,0)), the node could well be placed "out of view".
So a local coordinate system for the actual visible part of the graph would be an absolute godsend.
Add the graphs x & y coordinates along with left-side and top-part of the scene grid so regardless of the size of the graph panel as well as how zoomed in/out we are, we'll always know what coordinates are "in view"(this feature is a a pre-2010 3d editor program so shouldnt be too hard for you guys to implement).
I thought the above approach might work n save time but it isnt actually any use when placing stuff via script. sure its handy for delevopment mode during testing so users can quickly see exactly what coordinates are in view, but its not useful for dynamic entity placement.
This is where a local(viewable) coordinate system would be epic cause the program would know the graph panel size, its zoom level, and off that it would map out a temp coordinate system. so node.setLocalPosition(float2(0,0)) would place it exactly in the center of the graph regardless of its size/zoom level.
2) Lastly a cool feature would be able to add a graphical line(horzontal and vertical) that we can use for dividers. Portal node is a huge game changer (congrats on that!) in terms of graph layout/structuring and i personally would love some kind of divider. A simple straight line of which we can decide on its:
color,
thickness,
starting pos, ending pos. to set its length
oh and maybe the ability to add a dot node along a connection line(just like when you hold down Alt and Left-Click on a connector). Also the option to merge multiple dot nodes(i.e say you have 5 diff nodes each with its own connected dot node. of which all of these dot nodes are portalling to another node, so being able to merge them would be cool. atm i simply create all the dot/portal nodes and then hold down shift and manually merge them).
I am really into plugin creation and have a ton of ideas of which quite a few utilise non-existant methods so please consider implementing the above for us Pluginists!
many thanks!