diff --git a/novelwriter/assets/manual_fr_FR.pdf b/novelwriter/assets/manual_fr_FR.pdf new file mode 100644 index 00000000..b2ee5e21 Binary files /dev/null and b/novelwriter/assets/manual_fr_FR.pdf differ diff --git a/novelwriter/config.py b/novelwriter/config.py index 2a83da59..5d6833e2 100644 --- a/novelwriter/config.py +++ b/novelwriter/config.py @@ -105,8 +105,11 @@ class Config: self._qtTrans = {} # PDF Manual - pdfDocs = self._appPath / "assets" / "manual.pdf" - self.pdfDocs = pdfDocs if pdfDocs.is_file() else None + self._manuals: dict[str, Path] = {} + if (assets := self._appPath / "assets").is_dir(): + for item in assets.iterdir(): + if item.is_file() and item.stem.startswith("manual") and item.suffix == ".pdf": + self._manuals[item.stem] = item # User Settings # ============= @@ -262,6 +265,10 @@ class Config: def hasError(self) -> bool: return self._hasError + @property + def pdfDocs(self) -> Path | None: + return self._manuals.get(f"manual_{self.locale.name()}", self._manuals.get("manual")) + @property def locale(self) -> QLocale: return self._dLocale diff --git a/tests/conftest.py b/tests/conftest.py index 8209f8b6..26298d86 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -57,7 +57,7 @@ def resetConfigVars(): CONFIG.backupOnClose = False CONFIG._homePath = _TMP_ROOT CONFIG._dLocale = QLocale("en_GB") - CONFIG.pdfDocs = _TMP_ROOT / "manual.pdf" + CONFIG._manuals = {"manual": _TMP_ROOT / "manual.pdf"} CONFIG.guiLocale = "en_GB" return diff --git a/tests/test_gui/test_gui_mainmenu.py b/tests/test_gui/test_gui_mainmenu.py index 66b1d94e..c90aa664 100644 --- a/tests/test_gui/test_gui_mainmenu.py +++ b/tests/test_gui/test_gui_mainmenu.py @@ -45,8 +45,8 @@ def testGuiMainMenu_Slots(qtbot, monkeypatch, nwGUI, projPath): with monkeypatch.context() as mp: openUrl = MagicMock() mp.setattr(QDesktopServices, "openUrl", openUrl) - CONFIG.pdfDocs = projPath / "manual.pdf" - CONFIG.pdfDocs.touch() + CONFIG._manuals = {"manual": projPath / "manual.pdf"} + CONFIG._manuals["manual"].touch() nwGUI.mainMenu._openUserManualFile() assert openUrl.called is True assert "manual.pdf" in openUrl.call_args[0][0].url()