leon-thomm / Ryven

Flow-based visual scripting for Python
https://ryven.org
MIT License
3.77k stars 439 forks source link

UI/UX ideas #136

Open kevinlinxc opened 1 year ago

kevinlinxc commented 1 year ago

I get that implementing all of this quickly isn't possible, but I just want to start the dialogue because I really like the capabilities of this project.

leon-thomm commented 1 year ago

Quick comment on the UI scene stuff: currently everything is based on the QGraphicsView framework, accessed through the PySide2 API, which unfortunately seems unmaintained at this point. On the one hand it makes some things (such as rubber band selection) super easy, on the other hand it seems difficult to optimize and (in PySide2) extremely buggy. One of these bugs completely prevents any touch gestures support, and the issue is open in the bug tracker for over 5 years, so there is no reason to expect anything being fixed soon. I'd be highly interested in either someone with lots of experience with the whole QGraphicsView framework reworking some parts in Ryven, or a scalable alternative that does not involve low-level graphics APIs (imagine just having ingeractive SVG...).

  • The node editor starts in the top left of some imaginary plane, it would be better if we started in the middle of some plane and could pan in every direction

Why? This was an early design decision, and I'd currently still prefer this over letting the user expand in all directions.

The other points make a lot of sense to me.

kevinlinxc commented 1 year ago

Well, it is definitely a preference thing, but here are my reasonings:

  1. When I'm reorganizing my nodes, I want to move them freely to organize them. I find it weird that to move my left nodes left, I have to first move all of my nodes right and then move the left side nodes left, or select all the right nodes and move them right

  2. The right click pans normally, but when you can no longer pan, it starts making a rectangle selection which I find unintuitive because you aren't actually selecting anything. This only happens because we are bounded at all.