WIP: Layers sliders

Description

Include a text box for sliders on the different layers that will allow a user to type in a value and adjust the slider.  Range limits are displayed as well.
This work is addresses this heuristic issue: https://github.com/napari/product-heuristics-2020/issues/24 .
TO DO: Still working on adding a text boxes for the contrast limit range slider (QHRangeSlider).
Some previews of the new sliders in place.  I'd appreciate feedback!  Love it, hate it?
Points:

Shapes:

Labels:

Images (Note: still working on slider for contrast limits):

@ppwadhwa I for one LOVE this. Didn't know how much I wanted it until I saw it

Thanks for weighing in @DragaDoncila !  That is a good thought about putting the text on the right.  It may feel a bit more accessible that way if you'd rather use that instead of the slider.  I can easily move it.

Hey @ppwadhwa, I created a branch in my fork using qtrangeslider for labeled sliders here: https://github.com/napari/napari/compare/master...tlambert03:labeled-sliders.  It mostly amounts to switching QSliders to from qtrangeslider import QLabeledSlider as QSlider.
It's a bit stylistically different than this PR (only shows value labels, not range labels... in the interest of space), so I'd welcome your input since you've been playing with this a bit.
I haven't changed the range-slider in the main GUI yet due to space considerations... but here's a branch that swaps out the QHRangeSlider that you see when you right click on the contrast limits slider for a qtrangeslider.QRangeSlider: https://github.com/napari/napari/compare/master...tlambert03:new-qrange-slider
curious to hear what you think!

@tlambert03 I like your sliders a lot.  I think it looks good to just include the value out to the right and not include the limits. I think a person can figure the limits out easily enough by moving the slider back and forth.
As far as the contrast limits, I think it would be good to be consistent by including text boxes for the 2 values.  I looked at your QtRangeSlider repo a bit and swapped out the contrast slider to include the labeled double range slider with no labels over the top, and making the 2 labels on the sides the values instead of the range limits.

expanded: the text box on the right won't fully show up.

It doesn't fit right now, but how difficult is it to adjust the size of the slider and the text placement of the text boxes?  I haven't gone too far into your code base to figure this out, but is it possible?  I saw that you can adjust the position of the labels, but I assumed this was for the labels over the top of the handles (if shown).
I think there is a bit of space to play with here to try to fit it in.  If it doesn't seem necessary though, because you can get the pop up of the larger contrast slider--I can also understand that.  I just wish there was a way to indicate to the user you can do that---would a tool tip be good enough?
also, I noticed that there is a strip of space that looks like it could be reduced to make room for the widgets on the left.

It doesn't fit right now, but how difficult is it to adjust the size of the slider and the text placement of the text boxes? I haven't gone too far into your code base to figure this out, but is it possible?

This isn't a QtRangeSlider issue... this is an issue with the napari stylesheet and the fact that QAbstractSpinBox has been given an minimum width of 70px (to accomodate our standard "side-buttons") and some additional padding... so in 00_base.qss you'd need:
QLabeledDoubleRangeSlider > QAbstractSpinBox {
  min-width: 10px;
  padding: 0px;
}

however, even if you fix that, it still fights with the min-width of the slider.  there just isn't enough room.

remember also that the range of values on clims can be huge.  So each box may need to be able to fix something like 65535 (and you also don't really want the width of the spinbox to be fluctuating and causing reflow as you move the slider).  So, I have doubts that it will ever fit naturally into that space.

also, I noticed that there is a strip of space that looks like it could be reduced to make room for the widgets on the left.

it's true, we could gain a few pixels there.  But that space is the padding on the left and right widgets (the layer controls and the canvas respectively).  We can try to regain some of it, but it would have to be done in a way that also makes those widgets look ok even when they're popped out.  For instance, if I remove the right margin from the layer controls, when you undock it, it looks like this:

that of course can also be fixed... but it's not quite as simple as just reducing right margins

also, I noticed that there is a strip of space that looks like it could be reduced to make room for the widgets on the left.

I think that space starts getting used by the scrollbar for the layer list when we have lots of layers (doesn't mean the control panel at top couldn't extend all the way, but might be something to keep in mind too)

@tlambert03 So, it seems that even if we tweak a few things, the contrast slider cannot accommodate text/spin boxes.  Can we go ahead and try to merge your branches for the sliders (both the labeled-sliders and the new-qrange-slider branches) into master?  I think they look good.
The only other thing I noticed was that the font size of text in all the widgets is larger than the labels on the left.  Not sure how much that matters, but pointing it out.

@liaprins-czi you might also be interested in looking over this issue given https://github.com/napari/product-heuristics-2020/issues/24. Comments welcome!

@tlambert03 So, it seems that even if we tweak a few things, the contrast slider cannot accommodate text/spin boxes. Can we go ahead and try to merge your branches for the sliders (both the labeled-sliders and the new-qrange-slider branches) into master? I think they look good.

I like the updates to the single-point range slider, even if for now the double-point one cannot fit these changes.

The only other thing I noticed was that the font size of text in all the widgets is larger than the labels on the left. Not sure how much that matters, but pointing it out.

Yes I agree that the size in the text input should be smaller, ideally like it is in Pam's original images at the top of this PR.

Closing because I believe #2752 and #2753 will cover this.