Statically type OInfo. (#13973)
In view of working with #13860, some cleanup inspect to be properly
typed, and using stricter datastructure.
Instead of dict we now use dataclasses, this will make sure that fields
type and access can be stricter and verified not only at runtime, but by
mypy
Statically type OInfo.
In view of working with #13860, some cleanup inspect to be properly
typed, and using stricter datastructure.
Instead of dict we now use dataclasses, this will make sure that fields
type and access can be stricter and verified not only at runtime, but by
mypy
Shaperilio/qtgui fixes (#13957)
I started using the released version of my `PySide6`-enabling changes
and noted some problems. In this PR, I fix those, and also overall
improve the feedback to the user when a GUI event loop is hooked in:
- Report which event loop is running when using `%gui <some GUI>`; e.g.
`%gui qt` will show `Installed qt6 event loop hook.`
- Report when the event loop is disabled; i.e. `%gui` will show `GUI
event loop hook disabled.` if an event loop hook was installed, or `No
event loop hook running.` if nothing was installed.
- Requesting a second event loop will give the message `Shell is already
running a gui event loop for <some GUI>. Call with no arguments to
disable current loop.`
- Requesting a different version of Qt, i.e. `%gui qt6` followed by
`%gui` followed by `%gui qt5` will show `Cannot switch Qt versions for
this session; will use qt6.` followed by `Installed qt6 event loop
hook.`
(Fixes / improves #13864)