Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate to PySide6 #1601

Draft
wants to merge 69 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
d0ba2f3
Change imports to Qt6
greghope667 Apr 3, 2023
78baa69
Changes for PyQt6 compatibility
greghope667 Apr 3, 2023
0020e77
Update tests for pyqt6
greghope667 Apr 3, 2023
e192159
Switch to pyqt6rc for ui files
greghope667 Apr 4, 2023
3ace7fe
Use new Icon() function to import svg
greghope667 Apr 4, 2023
d74ab50
Remove PyQt5 rcc usage
greghope667 Apr 4, 2023
388c201
Remove Qt5 from dependencies
greghope667 Apr 4, 2023
fcbc5c8
Add empty __init__ file for import detection in pyqt6rc
greghope667 Apr 4, 2023
2c7f162
More Qt5->Qt6 tweaks
greghope667 Apr 4, 2023
1652b03
Bump versions for building on Mac
greghope667 Apr 13, 2023
c428339
Fixes for CI system
greghope667 May 3, 2023
750870f
Use temporary qt6 plugin manager
greghope667 Jun 17, 2023
327a818
CI file updates
greghope667 Jun 17, 2023
e292cc0
Change icon code to allow imports from other modules
greghope667 Jun 28, 2023
6482889
UserRole -> ItemDataRole.UserRole
greghope667 Jul 13, 2023
359c02a
Merge branch 'master' of https://github.com/openstenoproject/plover i…
greghope667 Jul 18, 2023
d215bea
Add news fragment
greghope667 Jul 19, 2023
365f969
Merge remote-tracking branch 'origin/main' into pyqt6-migration
mkrnr Feb 2, 2025
a5901fd
Set plover-plugins-manager to 0.7.1 to match gregs version
mkrnr Feb 2, 2025
f9c5174
Revert changes to MANIFEST.in
mkrnr Feb 2, 2025
d96d602
Remove plover-plugins-manager dependency
mkrnr Feb 2, 2025
7c47798
Integrate plugins manager
mkrnr Feb 2, 2025
0121d46
Add new package to setup.cfg
mkrnr Feb 2, 2025
a4836ea
Fix paths and dependencies
mkrnr Feb 3, 2025
c585a3d
Add missing dist dependencies
mkrnr Feb 3, 2025
7605220
Fix plover_plugins install command
mkrnr Feb 5, 2025
bd4b1c0
Add exclude to MANIFEST
mkrnr Feb 5, 2025
e9a9962
Fix build warnings
mkrnr Feb 5, 2025
4d18359
Merge remote-tracking branch 'origin/main' into pyqt6-migration
mkrnr Feb 9, 2025
130a647
Merge branch 'main' into pyqt6-migration
mkrnr Feb 9, 2025
581654a
Bump PyQt6 to 6.5.0 for dark mode
mkrnr Feb 9, 2025
b7029b6
Fix plugins_manager imports
mkrnr Feb 9, 2025
e74dc3a
Remove QT_MAC_WANTS_LAYER workaround for mac
mkrnr Feb 9, 2025
3b5ed0e
Merge remote-tracking branch 'origin/main' into pyqt6-migration
mkrnr Feb 15, 2025
fb5c47b
Add news entry regarding the integration of plugins manager
mkrnr Feb 15, 2025
4511ecc
Update install_git_button to Qt6
mkrnr Feb 16, 2025
ffc8158
Merge remote-tracking branch 'origin/main' into pyqt6-migration
mkrnr Feb 18, 2025
911c64a
Implement unsupported feature in plugins manager
mkrnr Feb 22, 2025
765875b
Set version 5.0.0-alpha.1 and update maintainer
mkrnr Feb 22, 2025
dc6f15b
Revert generation of NEWS entry
mkrnr Feb 22, 2025
d8e2b2b
Clear github actions cache
mkrnr Feb 23, 2025
7eca10b
Regenerate ci.yml
mkrnr Feb 23, 2025
d6af3c4
Rewrite unsupported plugins logic and hard-code plover version for now
mkrnr Feb 24, 2025
b714158
Set version to 5.0.0.dev1 to follow PEP 440
mkrnr Feb 27, 2025
1d8545d
Fix setup.get_version to only extend version and not replace by tag
mkrnr Feb 27, 2025
7e94602
Replace pyqt6rc with PyQt6.uic
mkrnr Feb 28, 2025
656f19a
Migrate PyQt6 to PySide6
mkrnr Mar 1, 2025
a57e5bc
Fix GitHub actions
mkrnr Mar 2, 2025
6a7356b
Fix GitHub actions
mkrnr Mar 2, 2025
0bd7bc8
Fix pip in GitHub actions
mkrnr Mar 2, 2025
d39caca
Fix GitHub actions
mkrnr Mar 2, 2025
a6c8269
Reset github actions cache
mkrnr Mar 2, 2025
d94dd25
Fix Qt resource path generation to remove workaround
mkrnr Mar 3, 2025
0cc7d43
Fix MANIFEST.in
mkrnr Mar 3, 2025
1d4adf3
Remove setup-python parameter from install-qt-action
mkrnr Mar 3, 2025
8ff5d96
Generate ci workflows
mkrnr Mar 3, 2025
be0850b
Reorder GitHub actions to make sure correct python version
mkrnr Mar 3, 2025
c2f1e3e
Add try except for macOS NotificationHandler
mkrnr Mar 3, 2025
bdbcd9f
Fix logging for macOS
mkrnr Mar 4, 2025
7be2441
Fix resource paths for tray icon and dictionaries widget
mkrnr Mar 4, 2025
ab79a2d
Update slot method names and add annotations
mkrnr Mar 6, 2025
a7a775a
Extend developers list
mkrnr Mar 6, 2025
3457532
Update pyobjc and PyYAML versions
mkrnr Mar 6, 2025
ea0d78b
Make WindowState a mixin class
mkrnr Mar 9, 2025
f08c107
Fix font selection
mkrnr Mar 9, 2025
0b32109
Remove printout of notifications when no notification center is avail…
mkrnr Mar 9, 2025
6ee072c
Remove Qt build dependency
mkrnr Mar 11, 2025
185557d
Merge remote-tracking branch 'origin/main' into pyqt6-migration
mkrnr Mar 11, 2025
b42b297
Replace PySide6 dependency with PySide6-Essentials
mkrnr Mar 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 35 additions & 19 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,8 @@ jobs:
run: setup_pip_options

- name: Setup Python environment
run: setup_python_env -c reqs/constraints.txt -r reqs/dist.txt -r reqs/test.txt
run: setup_python_env -c reqs/constraints.txt -r reqs/dist.txt -r reqs/test.txt

# Test {{{

- name: Run tests
Expand Down Expand Up @@ -262,7 +263,8 @@ jobs:
run: setup_osx_python '3.9'

- name: Setup Python environment
run: setup_python_env -c reqs/constraints.txt -r reqs/dist.txt -r reqs/test.txt
run: setup_python_env -c reqs/constraints.txt -r reqs/dist.txt -r reqs/test.txt

# Test {{{

- name: Run tests
Expand Down Expand Up @@ -323,7 +325,8 @@ jobs:
run: setup_pip_options

- name: Setup Python environment
run: setup_python_env -c reqs/constraints.txt -r reqs/dist.txt -r reqs/test.txt
run: setup_python_env -c reqs/constraints.txt -r reqs/dist.txt -r reqs/test.txt

# Test {{{

- name: Run tests
Expand Down Expand Up @@ -379,7 +382,8 @@ jobs:
run: setup_pip_options

- name: Setup Python environment
run: setup_python_env -c reqs/constraints.txt -r reqs/dist.txt -r reqs/test.txt
run: setup_python_env -c reqs/constraints.txt -r reqs/dist.txt -r reqs/test.txt

# Test {{{

- name: Run tests
Expand Down Expand Up @@ -435,7 +439,8 @@ jobs:
run: setup_pip_options

- name: Setup Python environment
run: setup_python_env -c reqs/constraints.txt -r reqs/dist.txt -r reqs/test.txt
run: setup_python_env -c reqs/constraints.txt -r reqs/dist.txt -r reqs/test.txt

# Test {{{

- name: Run tests
Expand Down Expand Up @@ -490,8 +495,15 @@ jobs:
- name: Setup pip options
run: setup_pip_options

- name: Install system dependencies
run: apt_get_install libdbus-1-dev libdbus-glib-1-dev libudev-dev libusb-1.0-0-dev libegl-dev libxkbcommon-x11-0

- name: Setup Python environment
run: setup_python_env -c reqs/constraints.txt -r reqs/dist.txt -r reqs/dist_extra_gui_qt.txt -r reqs/test.txt
run: setup_python_env -c reqs/constraints.txt -r reqs/dist.txt -r reqs/dist_extra_gui_qt.txt -r reqs/test.txt

- name: Build Resources
run: python setup.py build_resources

- name: Build UI
run: python setup.py build_ui

Expand Down Expand Up @@ -553,7 +565,8 @@ jobs:
run: setup_pip_options

- name: Setup Python environment
run: setup_python_env -c reqs/constraints.txt -r reqs/packaging.txt -r reqs/setup.txt
run: setup_python_env -c reqs/constraints.txt -r reqs/packaging.txt -r reqs/setup.txt

- name: Patch version
id: set_version
run: |
Expand Down Expand Up @@ -603,7 +616,7 @@ jobs:

- name: List cache contents
run: list_cache

outputs:
version: ${{ steps.set_version.outputs.version }}
# }}}
Expand Down Expand Up @@ -646,10 +659,11 @@ jobs:
run: setup_pip_options

- name: Install system dependencies
run: apt_get_install libdbus-1-dev libdbus-glib-1-dev libudev-dev libusb-1.0-0-dev
run: apt_get_install libdbus-1-dev libdbus-glib-1-dev libudev-dev libusb-1.0-0-dev libegl-dev libxkbcommon-x11-0

- name: Setup Python environment
run: setup_python_env -c reqs/constraints.txt -r reqs/build.txt -r reqs/setup.txt
run: setup_python_env -c reqs/constraints.txt -r reqs/build.txt -r reqs/setup.txt

- name: Patch version
id: set_version
run: |
Expand Down Expand Up @@ -718,7 +732,8 @@ jobs:
run: setup_osx_python '3.9'

- name: Setup Python environment
run: setup_python_env -c reqs/constraints.txt -r reqs/build.txt -r reqs/setup.txt
run: setup_python_env -c reqs/constraints.txt -r reqs/build.txt -r reqs/setup.txt

- name: Patch version
id: set_version
run: |
Expand Down Expand Up @@ -793,7 +808,8 @@ jobs:
run: setup_pip_options

- name: Setup Python environment
run: setup_python_env -c reqs/constraints.txt -r reqs/build.txt -r reqs/setup.txt
run: setup_python_env -c reqs/constraints.txt -r reqs/build.txt -r reqs/setup.txt

- name: Patch version
id: set_version
run: |
Expand Down Expand Up @@ -876,6 +892,13 @@ jobs:
with:
path: dist

- name: Publish GitHub release (${{ needs.analyze.outputs.release_type }})
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_TYPE: ${{ needs.analyze.outputs.release_type }}
RELEASE_VERSION: ${{ needs.test_packaging.outputs.version }}
run: publish_github_release

- name: Publish PyPI release
if: needs.analyze.outputs.release_type == 'tagged'
env:
Expand All @@ -885,13 +908,6 @@ jobs:
# Optional: twine will fallback to default if empty.
TWINE_REPOSITORY_URL: ${{ secrets.PYPI_URL }}
run: publish_pypi_release

- name: Publish GitHub release (${{ needs.analyze.outputs.release_type }})
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_TYPE: ${{ needs.analyze.outputs.release_type }}
RELEASE_VERSION: ${{ needs.test_packaging.outputs.version }}
run: publish_github_release
# }}}

# vim: foldmethod=marker foldlevel=0
4 changes: 2 additions & 2 deletions .github/workflows/ci/helpers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,8 @@ setup_python_env()
run_eval "echo PYTHONUSERBASE='$PYTHONUSERBASE' >>\$GITHUB_ENV"
if [ ! -e "$python_userbase" ]
then
get_base_devel --no-warn-script-location --user || die
install_wheels --no-warn-script-location --user "$@" || die
get_base_devel --no-warn-script-location || die
install_wheels --no-warn-script-location "$@" || die
if [ "$RUNNER_OS" = 'Windows' ]
then
run rm -rf "$python_userbase"/Python*/Scripts
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/ci/skiplist_default.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ CONTRIBUTING.md
NEWS.md
README.md
doc/*
launch.bat
launch.sh
linux/README.md
linux/packpack.mk
linux/packpack.sh
Expand Down
10 changes: 7 additions & 3 deletions .github/workflows/ci/workflow_template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -131,13 +131,14 @@ jobs:
run: setup_osx_python '<@ j.python @>'

<% endif %>
<% if j.type == 'build' and j.os == 'Linux' %>
<% if j.type in ['build', 'test_gui_qt'] and j.os == 'Linux' %>
- name: Install system dependencies
run: apt_get_install libdbus-1-dev libdbus-glib-1-dev libudev-dev libusb-1.0-0-dev
run: apt_get_install libdbus-1-dev libdbus-glib-1-dev libudev-dev libusb-1.0-0-dev libegl-dev libxkbcommon-x11-0

<% endif %>
- name: Setup Python environment
run: setup_python_env -c reqs/constraints.txt<% for r in j.reqs %> -r <@ r @><% endfor %>


<% if j.type in ['build', 'test_packaging'] %>
- name: Patch version
Expand All @@ -150,6 +151,9 @@ jobs:

<% endif %>
<% if j.type == 'test_gui_qt' %>
- name: Build Resources
run: python setup.py build_resources

- name: Build UI
run: python setup.py build_ui

Expand Down Expand Up @@ -260,7 +264,7 @@ jobs:
- name: List cache contents
run: list_cache
<% if j.type == 'test_packaging' %>

outputs:
version: ${{ steps.set_version.outputs.version }}
<% endif %>
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,9 @@ __pycache__/
# macOS
.DS_Store

# Virtual environments
/.venv/
/venv/


# vim: ft=cfg
11 changes: 3 additions & 8 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ recursive-include doc *.png
recursive-include doc *.svg
recursive-include doc *.py
recursive-include doc *.txt
include launch.bat
include launch.sh
include linux/*
include linux/appimage/*
include news.d/api/*
Expand All @@ -21,9 +19,9 @@ include osx/*
include osx/app_resources/*
include osx/dmg_resources/*
include plover/assets/*
include plover/gui_qt/*.qrc
include plover/gui_qt/*.ui
include plover/gui_qt/resources/*.png
include plover/gui_qt/resources/*.qrc
include plover/gui_qt/resources/*.svg
include plover/messages/*/LC_MESSAGES/*.po
include plover/messages/plover.pot
Expand All @@ -35,11 +33,8 @@ include test/*.py
include test/gui_qt/*.py
include tox.ini
include windows/*
# Exclude: CI/Git/GitHub specific files,
# as well as generated Python files (UI).
exclude .gitignore
# without first including it, exluding .readthedocs.yml results in a warning when running locally
include .readthedocs.yml
exclude .readthedocs.yml
exclude plover/gui_qt/*_rc.py
exclude plover/gui_qt/*_ui.py
exclude plover/gui_qt/.gitignore
prune .github
2 changes: 1 addition & 1 deletion doc/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
copyright = "Open Steno Project"
author = copyright

release = "4.0.0"
release = "5.0.0.dev1"
version = release

# -- General configuration ---------------------------------------------------
Expand Down
3 changes: 0 additions & 3 deletions doc/developer_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,6 @@ The same virtual environment is reused by the following tox environments:
- `tox r -e setup -- COMMAND`: run `./setup.py COMMAND`.
- `tox r -e packaging_checks`: run the same packaging checks as the CI (add `--
-n` to see a dry-run of the exact checks).
- `tox r -e plugins_install`: install the distribution plugins (or the specified
plugins when run with `tox -e plugins_install -- REQS`). Note that this does
not use the plugins manager for installing.
- `tox r -e release_prepare -- NEW_VERSION`: execute all the steps necessary for
preparing a new release: patch the version to `NEW_VERSION` and update
`NEWS.md`, staging all the changes for review.
Expand Down
5 changes: 3 additions & 2 deletions doc/plugin-dev/gui_tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ as follows:

```python
from setuptools import setup
from plover_build_utils.setup import BuildPy, BuildUi
from plover_build_utils.setup import BuildPy, BuildResources, BuildUi

BuildPy.build_dependencies.append("build_ui")
BuildUi.hooks = ["plover_build_utils.pyqt:fix_icons"]
BuildPy.build_dependencies.append("build_resources")
CMDCLASS = {
"build_py": BuildPy,
"build_resources": BuildResources,
"build_ui": BuildUi,
}

Expand Down
33 changes: 15 additions & 18 deletions linux/appimage/blacklist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,14 @@
# Plover.
:usr/lib/python${pyversion}/site-packages/plover
gui_qt/*.ui
gui_qt/resources
messages/**/*.po
messages/plover.pot

# PyQt5.
# PySide6.
:usr/bin
pylupdate5
pyrcc5
pyuic5
:usr/lib/python${pyversion}/site-packages/PyQt5
pylupdate6
pyuic6
:usr/lib/python${pyversion}/site-packages/PySide6
**/*Designer*
**/*[Hh]elp*
**/*[Qq]ml*
Expand All @@ -49,19 +47,18 @@
**/*[Ww]ayland*
**/*[Ww]eb[Ee]ngine*
bindings
Qt5/plugins/egldeviceintegrations
Qt5/plugins/geoservices
Qt5/plugins/platforms/libqeglfs.so
Qt5/plugins/platforms/libqlinuxfb.so
Qt5/plugins/platforms/libqminimal.so
Qt5/plugins/platforms/libqminimalegl.so
Qt5/plugins/platforms/libqoffscreen.so
Qt5/plugins/platforms/libqvnc.so
Qt5/plugins/platforms/libqwebgl.so
Qt5/plugins/sceneparsers
Qt5/plugins/webview
Qt6/plugins/egldeviceintegrations
Qt6/plugins/geoservices
Qt6/plugins/platforms/libqeglfs.so
Qt6/plugins/platforms/libqlinuxfb.so
Qt6/plugins/platforms/libqminimal.so
Qt6/plugins/platforms/libqminimalegl.so
Qt6/plugins/platforms/libqoffscreen.so
Qt6/plugins/platforms/libqvnc.so
Qt6/plugins/platforms/libqwebgl.so
Qt6/plugins/sceneparsers
Qt6/plugins/webview
pylupdate*
pyrcc*
uic

# vim: ft=config
1 change: 1 addition & 0 deletions news.d/api/1601.break.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Update UI from PyQt5 to PySide6.
1 change: 1 addition & 0 deletions news.d/bugfix/1601.osx.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix notifications for newer macOS versions.
1 change: 1 addition & 0 deletions news.d/feature/1601.core.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Integrate Plugins Manager and remove distribution plugins to simplify distribution of Plover.
Loading