superseeds #280 #267
closes #381, closes #383
PlotArea allows changing the controller types, so all plots and subplots can have their controllers changed at any time. In gridplots, if the same controller is used for multiple subplots then it will change the controller for the other respective subplots too if it's changed for only one of the subplots within that synced-subset. Slightly inelegant implementation, we can make it better later.
Merged layouts._defaults into layouts._utils.
Adds the new controllers from pygfx:
- panzoom
- fly (new)
- orbit
- trackball (new)
Gridplot handles controllers differently now. I think the implementation isn't too complex, I realized we have no reason to have consecutive integers for controller_ids so that makes life easier! @clewis7 @ArjunPutcha please let me know asap!!
controller_types: str, list or np.ndarray, optional
list or array that specifies the controller type for each subplot.
controller_ids: str, list or np.ndarray of int or str ids, optional
| If `None` a unique controller is created for each subplot
| If "sync" all the subplots use the same controller
| If ``numpy.array``, its shape must be the same as ``grid_shape``.
This allows custom assignment of controllers
| Example with integers:
| sync first 2 plots, and sync last 2 plots: [[0, 0, 1], [2, 3, 3]]
| Example with str subplot names:
| list of lists of subplot names, each sublist is synced: [[subplot_a, subplot_b], [subplot_f, subplot_c]]
| this syncs subplot_a and subplot_b together; syncs subplot_e and subplot_c together