ImJoy is now loaded dynamically, and can be turned off with
an environment variable.
I've added two new scripts to develop and build without ImJoy.
I suspect these won't see much use, but
they will remind us how to do it when we
want to release a medical version.
The ImJoy "chunk" is named for ease of separation.
Co-authored-by: Kaspar Emanuel <kaspar@monostable.co.uk>
I was doing nasty things with a for loop - we've replaced it with a
map statement, which achieves the same thing but works better with
Vue.js reactivity.
Each ImJoy window now gets its own top-level tab.
This involved some fairly significant refactoring of the ImJoy
component, but I think it's cleaner now.
I've moved imjoy-related stuff into a store "module" to keep it clean.
something strange is happening with CSS precedence that makes the
elements of the dropdown go white-on-white.
I have added a specific color:black to fix this.
The test plugin seems to have problems
calling setPosition more than once.
We don't understand this...
Co-authored-by: Kaspar Emanuel <kaspar@monostable.co.uk>
I've changed the default values in MoveStageAPI
so that it correctly handles absolute moves with missing axes.
I've also simplified it so it isn't using axes_to_array as that
resulted in a confusing code path.
I don't know why these didn't fail before - possibly because of
incomplete type information from old numpy...
I removed a few annotations because they were failing (e.g.
np.sum can return a scalar or an array), but I don't think
this should be a problem - the function inputs and return values
are still typed.
numpy 1.20 deprecates np.float, which was only ever an alias for
``float``. I've replaced all occurrences of np.float with float, as
recommended. There should be no change in functionality.
We now install with --dev to make sure development dependencies
are included. I've also removed "poetry run"
from the "poe" commands, as we are
already in an active virtual environment, so
it's unnecessary (and also broken).
Finally, I added a tarball of the vue app to
the output distribution.
More or less everything is now done by setup.py
Pipfile simply installs the module in editable mode, which
recursively resolves dependencies as defined in setup.py.