I am now working on PR #3828: require Qt 6.6+. This PR is experimental and possibly controversial.
The good news
- leoQt.py contains no conditional imports.
- leoQt.py defines all constants unambiguously.
- No Qt-related switches exist. Hurray! Removing these switches (especially isQt5 and isQt6) simplifies code throughout Leo.
The controversial news
Four Qt modules no longer exist in Qt6: phonon, QtDeclarative, QtWebKit, and QtWebKitWidgets. As a result, I have retired five of Terry Brown's plugins. There is no obvious way to make these plugins work with Qt6.
Summary
PR #3828 removes all vestiges of Qt5 from Leo's codebase. Now is probably a good time to move to Qt6. Leo 6.7.8 installs only Qt6 without anyone complaining :-)
A one-line change to requirements.txt installs all necessary Qt6 modules. There is no need for conditional code in leoQt.py.
Five plugins are incompatible with Qt6 and have been retired to the attic: notebook.py, richtext.py, and three "editpane" plugins: pandownview.py, webengineview.py, and webkitview.py. These plugins are no great loss. They do not work with the typical installation of Leo 6.7.8.
Please tell me what you think.
Edward
Every one of my fleet of Linux VMs has finally got PyQt 6.6, so that's favorable. No one can prove that *every* distro will have it - there are just too many variations - but so be it. I don't know about ARM versions and don't have a way to check, but I suppose they are still not a likely host for Leo.