gpilab / framework

The GPI framework provides the canvas for graphically assembling algorithms.
Other
20 stars 8 forks source link

Synchronize node parameter updates on hitting return key #19

Open borupdaniel opened 5 years ago

borupdaniel commented 5 years ago

Some nodes wait for the user to hit return/enter before processing a change to a parameter in the node menu (the "shapes" node, for example).

However, only the specific parameter in which the user hits return/enter is updated. This leads to somewhat frustrating behavior where, for example, a node network will fail to run successfully due to a dimension mismatch — even though the Shapes node shows the correct dimensions — until the user returns to all updated boxes and hits return.

It would seem smoother to synchronize this so that any time the user hits return, all updated values in the node menu are recognized.

I'm marking this as a question as well in case this is already possible in the current framework — in that case this is a discussion for the node development issues board.

borupdaniel commented 5 years ago

@aganders3 could you comment on whether this is already possible in the current framework?

aganders3 commented 5 years ago

This should be possible but I'm not sure if it can be done on the node side for all cases, or if it will require changes to the framework. I think the shapes node specifically uses some "custom" widgets so that may be a clue for where this becomes a problem.

aganders3 commented 5 years ago

Testing now with shapes it seems like adding the self.sb.set_immediate(True) to the SHAPES_GROUP constructor may do what you want.

aganders3 commented 5 years ago

Oh I guess that's a different problem. Setting immediate will cause the node to update when you tab out of the widget. I'm not sure if there's a way for a single "return" to ensure the updated values from all widgets are checked but I will look into that. I'm pretty sure that will be a framework change rather than a node-level change.