napari / napari-core

BSD 3-Clause "New" or "Revised" License
5 stars 3 forks source link

UI mockup #23

Open jni opened 5 years ago

jni commented 5 years ago

Here's a quick drawing of how I imagine the UI currently. The elements could be floating, as with Fiji and in the drawing, or they could be docked in a grid, as with Spyder, Pycharm, RStudio, etc. I'm not set on either model.

ui sketch 0

There can be as many viewers as the user wants, and as many layers in a viewer as a user wants. We can think about the behaviour for new outputs. Lots of options, probably some combination of which makes sense:

Looking forward to everyone's comments!

jni commented 5 years ago

PS the mockup was created with the Linea app on the iPad Pro, which I highly recommend. It's the only sketching app I've found that just works the way you want it to.

royerloic commented 5 years ago

Very nice Juan, I like it. With Kira we are focussing on the viewer for now, Something to add to this mockup is histogram side-panel with control over min, max and gamma. Also nice would be the 'live-parameter' panel that avoids the 'let's-pop-up-a-blocking-window- and-ask-for-parameters-that-nobody-ever-changes'

jni commented 5 years ago

@royerloic I presume histogram eq has to be done per channel, so I would put that as either a right-click or double-click overlay/drawer that happens when you click on the appropriate layer. Or do you want it to always be visible? How do you handle the multiple channels/layers?

As for the live parameter, I liked your idea of executing functions with default parameters, and only after the user decides to change them do we offer a modal dialog, where parameters can be changed. (This could pop the last run command from the console and re-run it, or it could re-assign to the same output variable.) I don't think live update should be a focus, because it is not easily generalizable. (ie many functions will take too long to run to offer live update with a slider.) If we can do it, great, if it's hard, we should ship with simple commands.

royerloic commented 5 years ago

On 11. Sep 2018, at 01:21, Juan Nunez-Iglesias notifications@github.com wrote:

@royerloic https://github.com/royerloic I presume histogram eq has to be done per channel, so I would put that as either a right-click or double-click overlay/drawer that happens when you click on the appropriate layer. Or do you want it to always be visible? How do you handle the multiple channels/layers?

We should clarify the terminology: channels belong within numpy images, layers are numpy images or other types of ‘renderable’ or ‘non-renderable’ objects (lines, boxes, etc…).

We should be able to control the display parameters per layer (not per channel), but also have the chance to ’sync’ these parameters across (image) layers — which should probably be the default, if not the first draft — because in most cases it would just be too complicated to have to decide for each image layer … Yet, clearly, in some cases you have to.

In general, we have to think about what are good defaults and what are important corner cases…

As for the live parameter, I liked your idea of executing functions with default parameters, and only after the user decides to change them do we offer a modal dialog, where parameters can be changed. (This could pop the last run command from the console and re-run it, or it could re-assign to the same output variable.) I don't think live update should be a focus, because it is not easily generalizable. (ie many functions will take too long to run to offer live update with a slider.) If we can do it, great, if it's hard, we should ship with simple commands.

I think the plugin’s function decorators should specify whether live update is the default or not, moreover, the user should be able to override this globally, and interrupt a running calculation…

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Napari/napari/issues/23#issuecomment-420189644, or mute the thread https://github.com/notifications/unsubscribe-auth/AByMkvVict5VDPgP9MB4o_5es45ycHcqks5uZ3KlgaJpZM4Whd3T.

jni commented 5 years ago

We should clarify the terminology: channels belong within numpy images, layers are numpy images or other types of ‘renderable’ or ‘non-renderable’ objects (lines, boxes, etc…).

:+1: Yes, very good, agree 100%, sorry for my sloppiness there. =)

I think the plugin’s function decorators should specify whether live update is the default or not, moreover, the user should be able to override this globally, and interrupt a running calculation…

Sure. These are all great. But I think an MVP can forgo all this and ignore live updating, unless someone decides that live updating is trivial to implement. I'm not going to decide that. =P