Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 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
cde483f
Fix open and save calls in dictionaries_widget
mkrnr Mar 13, 2025
ee9b392
Fix drag and drop in dictionaries widget
mkrnr Mar 24, 2025
a83c9bd
Fix checkbox in dictionaries widget
mkrnr Mar 24, 2025
5753a1b
Fix test_dictionaries_widget and bump pgkinfo
mkrnr Mar 24, 2025
a299989
Bump PySide6-Essentials to 6.5.3
mkrnr Mar 31, 2025
ea8694c
Revert "Bump PySide6-Essentials to 6.5.3"
mkrnr Mar 31, 2025
4a42bb9
Fix windows NotificationHandler and handler method name
mkrnr Apr 1, 2025
e96a78b
Clean up macOS NotificationHandler
mkrnr Apr 1, 2025
cc977a9
Update method name in DBusNotificationHandler
mkrnr Apr 5, 2025
1af4e59
Remove wayland from linux appimage blacklist
mkrnr Apr 9, 2025
49a384b
Add back plugins_install tox command
mkrnr Apr 9, 2025
5361df4
Remove Strip 32-bit support section to make bdist_app work on apple s…
mkrnr Apr 10, 2025
78dfcca
Update Environment setup doc
mkrnr Apr 16, 2025
1443ee9
Ignore doc folder and markdown files in GH actions
mkrnr Apr 16, 2025
677ee3b
Update doc file to test github actions ignore
mkrnr Apr 16, 2025
012d964
Revert "Ignore doc folder and markdown files in GH actions"
mkrnr Apr 16, 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
46 changes: 30 additions & 16 deletions doc/developer_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,52 @@

You need Python >= 3.8 installed, and you need [tox](https://pypi.org/project/tox/) >= 4.0.

Using tox takes care of all the details of creating and managing an isolated
virtual environment, installing the necessary dependencies, and isolating
testsuite runs.
Tox simplifies the process of creating and managing isolated virtual environments,
handling dependency installation, and running the test suite in isolation. This
ensures a clean and consistent testing environment.

The command for using tox is: `tox r {-e envlist} {-- arguments}`. Use `tox -a
However, it is still recommended to install and run tox within a Python virtual
environment created using tools like [venv](https://docs.python.org/3/library/venv.html).
This helps keep your global Python environment clean, avoids project conflicts, and
isolates tox and its dependencies.

The command for using tox is: `tox {-e envlist} {-- arguments}`. Use `tox -a
-v` to get a list of available environments.

The same virtual environment is reused by the following tox environments:

- `tox r -e test -- ARGS`: run the testsuite. This is the default environment
- `tox -e test -- ARGS`: run the testsuite. This is the default environment
when not provided.
- `tox r -e launch -- ARGS`: run Plover from source.
- `tox r -e setup -- COMMAND`: run `./setup.py COMMAND`.
- `tox r -e packaging_checks`: run the same packaging checks as the CI (add `--

Example: `tox -e test -- test/gui_qt`
- `tox -e launch -- ARGS`: run Plover from source.

Example: `tox -e launch -- -l debug`
- `tox -e setup -- COMMAND`: run `./setup.py COMMAND` to create a binary
distribution. See also section below.

Example: `tox -e setup -- bdist_appimage`
- `tox -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
- `tox -e plugins_install -- ARGS`: install the plugins specified in `ARGS`, where
plugins are separated by space. You can also specify plugin versions. Note that
this process uses pip directly for installation, not the plugins manager.

Example: `tox -e plugins_install -- some_plugin==1.0.0 another_plugin`
- `tox -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.
- `tox r -e release_finalize`: finalize the release: commit the staged changes,
- `tox -e release_finalize`: finalize the release: commit the staged changes,
create an annotated tag, and print the git command necessary for pushing the
release to GitHub.

The actual virtual environment lives in `.tox/dev`, and can be ["activated" like
The virtual environment created by tox lives in `.tox/dev`, and can be [activated like
any other virtual environment](https://virtualenv.pypa.io/en/latest/user_guide.html#activators).

The configuration also provides support for lightweight tests only environment:
`pyX`, where `X` is the version of the Python interpreter to use. E.g. running
`tox r -e 'py3,py36,py37,py38,py39` will execute the testsuite for each version of Python we
support.
`tox -e 'py3,py36,py37,py38,py39` will execute the testsuite for each version
of Python we support.

# Creating a binary distribution

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
34 changes: 15 additions & 19 deletions linux/appimage/blacklist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,37 +31,33 @@
# 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*
**/*[Qq]uick*
**/*Test*
**/*[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.
Loading
Loading