diff --git a/CREDITS.md b/CREDITS.md index 51c45f6c..1f51a83d 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -45,8 +45,8 @@ contributions are listed on the project's Members page. The following libraries are dependencies of novelWriter: -* **Qt5** by Qt Company -* **PyQt5** by Riverbank Computing +* **Qt6** by Qt Company +* **PyQt6** by Riverbank Computing * **Enchant** by Dom Lachowicz * **PyEnchant** by Dimitri Merejkowsky diff --git a/README.md b/README.md index 3ac3c385..4f3e65f9 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ documentation. ## Implementation -novelWriter is written with Python 3 (3.10+) using Qt5 and PyQt5 (5.15 only), and is released on +novelWriter is written with Python 3 (3.10+) using Qt6 and PyQt6 (6.0+), and is released on Linux, Windows and macOS. It can in principle run on any Operating System that also supports Qt, PyQt and Python. diff --git a/docs/source/tech_source.rst b/docs/source/tech_source.rst index 9b100ebd..ad3d07c9 100644 --- a/docs/source/tech_source.rst +++ b/docs/source/tech_source.rst @@ -36,12 +36,11 @@ Everything else is handled with standard Python libraries. The following Python packages are needed to run all features of novelWriter: -* ``PyQt5`` – needed for connecting with the Qt5 libraries. +* ``PyQt6`` – needed for connecting with the Qt6 libraries. * ``PyEnchant`` – needed for spell checking (optional). -PyQt/Qt must be at least 5.15.0. If you want spell checking, you must install the ``PyEnchant`` -package. The spell check library must be at least 3.0 to work with Windows. On Linux, 2.0 also -works fine. +If you want spell checking, you must install the ``PyEnchant`` package. The spell check library +must be at least 3.0 to work with Windows. On Linux, 2.0 also works fine. If you install from PyPi, these dependencies should be installed automatically. If you install from source, dependencies can still be installed from PyPi with: diff --git a/i18n/README.md b/i18n/README.md index 1c5303a1..b45439dd 100644 --- a/i18n/README.md +++ b/i18n/README.md @@ -18,7 +18,7 @@ When contributing translations, keep the following things in mind. * For descriptive labels and dialog boxes, make sure you do _not_ change the meaning of the text when you translate it from English. The user must receive the same instructions or information - regardless of language. This is improtant, otherwise the documentation will be inconsistent with + regardless of language. This is important, otherwise the documentation will be inconsistent with the user interface and it will become a lot more difficult to handle user issues and questions. * If you think a label or description is misleading or incomplete, please file an issue report. The correct way to handle such changes is to change the text in the code first, which will then be @@ -35,7 +35,7 @@ Linguist, or updating the translations for an already existing supported languag There are two areas relevant to localisation: -* The Qt5 GUI translation files, which consists of `nw_XX.ts` files. This is the bulk of the +* The Qt GUI translation files, which consists of `nw_XX.ts` files. This is the bulk of the translation work. * The `project_XX.json` files. See [Project Localisation](#project-localisation) below. @@ -43,7 +43,7 @@ The `XX` in the file name corresponds to the language and country code for the t instance `en_GB` for British English. -## Qt5 GUI Localisation +## Qt GUI Localisation You will need the translation tool Qt 5 Linguist on your system. @@ -89,8 +89,7 @@ For instance, the French translation uses the language code `fr_FR`, so its tran be `nw_fr_FR.ts` Note: The `qtlupdate` command needs the `lupdate` tool provided by PyQt6, which uses the latest -TS file format. The tool in PyQt5 generates an older file format. On Debian/Ubuntu it is provided -by the package `pyqt6-dev-tools`. +TS file format. On Debian/Ubuntu it is provided by the package `pyqt6-dev-tools`. ### Edit the Translation File in Qt Linguist diff --git a/novelwriter/__init__.py b/novelwriter/__init__.py index a7fd61f5..6f6fc63e 100644 --- a/novelwriter/__init__.py +++ b/novelwriter/__init__.py @@ -117,7 +117,7 @@ def main(sysArgs: list | None = None) -> GuiMain | None: " --debug Print debug output. Includes --info.\n" " --color Add ANSI colors to log output.\n" " --meminfo Show memory usage information in the status bar.\n" - " --style= Sets Qt5 style flag. Defaults to 'Fusion'.\n" + " --style= Sets Qt style flag. Defaults to 'Fusion'.\n" " --config= Alternative config file.\n" " --data= Alternative user data path.\n" ) diff --git a/novelwriter/assets/text/credits_en.htm b/novelwriter/assets/text/credits_en.htm index 30e6b9e0..60f5c41f 100644 --- a/novelwriter/assets/text/credits_en.htm +++ b/novelwriter/assets/text/credits_en.htm @@ -54,8 +54,8 @@ more contributions are listed on the project's Members page.

The following libraries are dependencies of novelWriter:

diff --git a/novelwriter/common.py b/novelwriter/common.py index 4731e82f..193f7c81 100644 --- a/novelwriter/common.py +++ b/novelwriter/common.py @@ -434,7 +434,7 @@ def describeFont(font: QFont) -> str: def fontMatcher(font: QFont) -> QFont: """Make sure the font is the correct family, if possible. This ensures that Qt doesn't re-use another font under the hood. The - default Qt5 font matching algorithm doesn't handle well changing + default Qt font matching algorithm doesn't handle well changing application fonts at runtime. """ info = QFontInfo(font) diff --git a/novelwriter/config.py b/novelwriter/config.py index 8e4cded1..232fcdf7 100644 --- a/novelwriter/config.py +++ b/novelwriter/config.py @@ -217,7 +217,7 @@ class Config: # System and App Information # ========================== - # Check Qt5 Versions + # Check Qt Versions self.verQtString = QT_VERSION_STR self.verQtValue = QT_VERSION self.verPyQtString = PYQT_VERSION_STR diff --git a/novelwriter/gui/mainmenu.py b/novelwriter/gui/mainmenu.py index 42d7048b..f477217e 100644 --- a/novelwriter/gui/mainmenu.py +++ b/novelwriter/gui/mainmenu.py @@ -1021,8 +1021,8 @@ class GuiMainMenu(QMenuBar): self.aAboutNW.setMenuRole(QAction.MenuRole.AboutRole) self.aAboutNW.triggered.connect(self.mainGui.showAboutNWDialog) - # Help > About Qt5 - self.aAboutQt = self.helpMenu.addAction(self.tr("About Qt5")) + # Help > About Qt + self.aAboutQt = self.helpMenu.addAction(self.tr("About Qt")) self.aAboutQt.setMenuRole(QAction.MenuRole.AboutQtRole) self.aAboutQt.triggered.connect(self.mainGui.showAboutQtDialog) diff --git a/novelwriter/guimain.py b/novelwriter/guimain.py index 12d8a971..9e10e3f3 100644 --- a/novelwriter/guimain.py +++ b/novelwriter/guimain.py @@ -92,8 +92,8 @@ class GuiMain(QMainWindow): logger.info("OS: %s", CONFIG.osType) logger.info("Kernel: %s", CONFIG.kernelVer) logger.info("Host: %s", CONFIG.hostName) - logger.info("Qt5: %s (0x%06x)", CONFIG.verQtString, CONFIG.verQtValue) - logger.info("PyQt5: %s (0x%06x)", CONFIG.verPyQtString, CONFIG.verPyQtValue) + logger.info("Qt: %s (0x%06x)", CONFIG.verQtString, CONFIG.verQtValue) + logger.info("PyQt: %s (0x%06x)", CONFIG.verPyQtString, CONFIG.verPyQtValue) logger.info("Python: %s (0x%08x)", CONFIG.verPyString, sys.hexversion) logger.info("GUI Language: %s", CONFIG.guiLocale) diff --git a/pkgutils.py b/pkgutils.py index 8e0d5cbf..100db556 100755 --- a/pkgutils.py +++ b/pkgutils.py @@ -543,8 +543,8 @@ def buildTranslationAssets(args: argparse.Namespace | None = None) -> None: try: subprocess.call(["lrelease", "-verbose", *srcList]) except Exception as exc: - print("Qt5 Linguist tools seem to be missing") - print("On Debian/Ubuntu, install: qttools5-dev-tools pyqt5-dev-tools") + print("Qt Linguist tools seem to be missing") + print("On Debian/Ubuntu, install: qttools5-dev-tools") print(str(exc)) sys.exit(1) diff --git a/requirements-dev.txt b/requirements-dev.txt index e2e3b1d0..8499c6e8 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -3,4 +3,3 @@ flake8-pep585 flake8-pyproject flake8-annotations isort -pyqt5-stubs diff --git a/requirements.txt b/requirements.txt index b6d30310..7b7c4d39 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ -pyqt5>=5.15 +pyqt6>=6.0 pyenchant>=3.0.0 diff --git a/setup/description_pypi.md b/setup/description_pypi.md index 336a2e1c..0221db8d 100644 --- a/setup/description_pypi.md +++ b/setup/description_pypi.md @@ -10,7 +10,7 @@ synchronisation tools. All text is saved as plain text files with a meta data he project structure is stored in a single project XML file, and other meta data is primarily saved as JSON files. -The application is written with Python 3 (3.10+) using Qt5 and PyQt5 (5.10+). It is developed on +The application is written with Python 3 (3.10+) using Qt6 and PyQt6 (5.10+). It is developed on Linux, but should in principle work fine on other operating systems as well as long as dependencies are met. It is regularly tested on Debian and Ubuntu Linux, Windows, and MacOS. diff --git a/setup/iss_license.txt b/setup/iss_license.txt index 068dbc70..fe023cb4 100644 --- a/setup/iss_license.txt +++ b/setup/iss_license.txt @@ -18,12 +18,12 @@ along with this program. If not, see . Dependencies -Qt5 +Qt6 Copyright: Qt Company Website: License: LGPL v3 -PyQt5 / PyQt5-sip +PyQt6 / PyQt6-sip Copyright: Riverbank Computing Website: License: GPL v3 diff --git a/setup/macos/build.sh b/setup/macos/build.sh index 8cd47ce9..dc23601d 100755 --- a/setup/macos/build.sh +++ b/setup/macos/build.sh @@ -165,13 +165,13 @@ rm -rf share/{gtk-,}doc rm -rf lib/python3.1 # Remove web engine -rm lib/python3.*/site-packages/PyQt5/QtWebEngine* || true -rm -r lib/python3.*/site-packages/PyQt5/Qt/translations/qtwebengine* || true -rm lib/python3.*/site-packages/PyQt5/Qt/resources/qtwebengine* || true -rm -r lib/python3.*/site-packages/PyQt5/Qt/qml/QtWebEngine* || true -rm -r lib/python3.*/site-packages/PyQt5/Qt/plugins/webview/libqtwebview* || true -rm lib/python3.*/site-packages/PyQt5/Qt/libexec/QtWebEngineProcess* || true -rm lib/python3.*/site-packages/PyQt5/Qt/lib/libQt5WebEngine* || true +rm lib/python3.*/site-packages/PyQt6/QtWebEngine* || true +rm -r lib/python3.*/site-packages/PyQt6/Qt/translations/qtwebengine* || true +rm lib/python3.*/site-packages/PyQt6/Qt/resources/qtwebengine* || true +rm -r lib/python3.*/site-packages/PyQt6/Qt/qml/QtWebEngine* || true +rm -r lib/python3.*/site-packages/PyQt6/Qt/plugins/webview/libqtwebview* || true +rm lib/python3.*/site-packages/PyQt6/Qt/libexec/QtWebEngineProcess* || true +rm lib/python3.*/site-packages/PyQt6/Qt/lib/libQt5WebEngine* || true popd || exit 1 popd || exit 1