Commit 2b53758
committed
Don't fail on equal-but-differently-named cmaps in qt figureoptions.
Currently, opening the Qt figureoptions UI for an image whose cmap is
not registered in the colormap registry, has a name not matching any
registry entry, but is actually equal (`==`, i.e. has the same LUT and
colorbar-extension attributes) to a registry entry, leads to an error.
A typical example would be
```
import cmap, pylab as p # third-party
p.imshow([[0, 1]], cmap=cmap.Colormap("bids:magma").to_mpl())
```
and opening the qt figure options; this leads to the error "index
'bids:magma' is invalid ...".
Note that if the cmap is different from any registered
cmap then we already add it to the UI combobox (try e.g.
`cmap=cmap.Colormap("imagej:fire")`); the only problem was if it was
equal to a registered cmap (this arises because when the code was
originally written, cmap instance equality was by identity, not by
comparing LUTs, so the `cmap not in cm._colormaps.values()` check
behaved differently).
Fix that by checking whether the colormap *name* is registered. The
behavior is still ill-defined in the opposite (theoretical) case of an
unregistered cmap different from any registered cmap but with a matching
name, but I'd argue that case is more pathological.
Test by running the above code and opening the qt figureoptions.1 parent 183b04f commit 2b53758
1 file changed
+1
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
149 | 149 | | |
150 | 150 | | |
151 | 151 | | |
152 | | - | |
| 152 | + | |
153 | 153 | | |
154 | 154 | | |
155 | 155 | | |
| |||
0 commit comments