From 30be5a37462a811610afb0c51ae3da33e58481bd Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 18 Jan 2025 15:16:11 +0100 Subject: [PATCH 1/6] Fix minor issue in Windows launcher --- setup/windows/main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup/windows/main.cpp b/setup/windows/main.cpp index 052f57c6..434bed61 100644 --- a/setup/windows/main.cpp +++ b/setup/windows/main.cpp @@ -38,13 +38,14 @@ void _tmain( int argc, TCHAR *argv[] ) { SetCurrentDirectory(fileName); std::cout << "WorkDir: " << fileName << std::endl; - TCHAR cmd[MAX_PATH] = "pythonw.exe novelWriter.pyw"; + TCHAR cmd[MAX_PATH] = TEXT("pythonw.exe novelWriter.pyw"); if (argc > 1) { _tcscat_s(cmd, TEXT(" ")); _tcscat_s(cmd, argv[1]); } std::cout << "Command: " << cmd << std::endl; + std::cout << "Launching novelWriter GUI" << std::endl; CreateProcess(NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); return; From fe0d316ff68f0909d2cc20b05cf5a483b3f70631 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 18 Jan 2025 15:16:56 +0100 Subject: [PATCH 2/6] Bump version to 2.7 Alpha 2 --- novelwriter/__init__.py | 6 +++--- sample/nwProject.nwx | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/novelwriter/__init__.py b/novelwriter/__init__.py index 9590241d..3fd6995e 100644 --- a/novelwriter/__init__.py +++ b/novelwriter/__init__.py @@ -47,9 +47,9 @@ __license__ = "GPLv3" __author__ = "Veronica Berglyd Olsen" __maintainer__ = "Veronica Berglyd Olsen" __email__ = "code@vkbo.net" -__version__ = "2.7a1" -__hexversion__ = "0x020700a1" -__date__ = "2025-01-15" +__version__ = "2.7a2" +__hexversion__ = "0x020700a2" +__date__ = "2025-01-18" __status__ = "Stable" __domain__ = "novelwriter.io" diff --git a/sample/nwProject.nwx b/sample/nwProject.nwx index c7374651..b0a4ed1f 100644 --- a/sample/nwProject.nwx +++ b/sample/nwProject.nwx @@ -1,6 +1,6 @@ - - + + Sample Project Jane Smith From ce0f05a53a1c95cc53541eb59d371c2cbd07a1d2 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 18 Jan 2025 15:19:27 +0100 Subject: [PATCH 3/6] Bump launcher version --- setup/windows/launcher.rc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/setup/windows/launcher.rc b/setup/windows/launcher.rc index d8ad36e2..99e5091f 100644 --- a/setup/windows/launcher.rc +++ b/setup/windows/launcher.rc @@ -1,7 +1,7 @@ IDI_ICON1 ICON DISCARDABLE "novelwriter.ico" 1 VERSIONINFO -FILEVERSION 1,0,0,0 -PRODUCTVERSION 1,0,0,0 +FILEVERSION 1,1,0,0 +PRODUCTVERSION 1,1,0,0 FILEOS 0x4 FILETYPE 0x1 { @@ -9,11 +9,11 @@ FILETYPE 0x1 BLOCK "040904b0" { VALUE "CompanyName", "Veronica Berglyd Olsen\0" VALUE "FileDescription", "novelWriter Launcher\0" - VALUE "FileVersion", "1.0.0.0\0" - VALUE "LegalCopyright", "© 2025 Veronica Berglyd Olsen\0" + VALUE "FileVersion", "1.1.0.0\0" + VALUE "LegalCopyright", "(c) 2025 Veronica Berglyd Olsen\0" VALUE "OriginalFilename", "novelWriter.exe\0" VALUE "ProductName", "novelWriter\0" - VALUE "ProductVersion", "1.0.0.0\0" + VALUE "ProductVersion", "1.1.0.0\0" } } BLOCK "VarFileInfo" { From 2621e0cf1bb5fb8f0655ba9952631c01983c047f Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 18 Jan 2025 15:21:30 +0100 Subject: [PATCH 4/6] Update windows launcher exe --- setup/windows/novelWriter.exe | Bin 199360 -> 199360 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/setup/windows/novelWriter.exe b/setup/windows/novelWriter.exe index 5026cddb997f3e24d9b28cc3d30a6140c539f139..9cce6d423fe26595f8abe885c9a70501aca2848b 100644 GIT binary patch delta 4172 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 delta 4093 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 Date: Mon, 20 Jan 2025 22:18:54 +0100 Subject: [PATCH 5/6] Update release date and make some minor changes to Windows launcher --- novelwriter/__init__.py | 2 +- setup/windows/launcher.rc | 2 +- setup/windows/main.cpp | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/novelwriter/__init__.py b/novelwriter/__init__.py index 3fd6995e..c0358d27 100644 --- a/novelwriter/__init__.py +++ b/novelwriter/__init__.py @@ -49,7 +49,7 @@ __maintainer__ = "Veronica Berglyd Olsen" __email__ = "code@vkbo.net" __version__ = "2.7a2" __hexversion__ = "0x020700a2" -__date__ = "2025-01-18" +__date__ = "2025-01-20" __status__ = "Stable" __domain__ = "novelwriter.io" diff --git a/setup/windows/launcher.rc b/setup/windows/launcher.rc index 99e5091f..f6809018 100644 --- a/setup/windows/launcher.rc +++ b/setup/windows/launcher.rc @@ -1,4 +1,4 @@ -IDI_ICON1 ICON DISCARDABLE "novelwriter.ico" +IDI_ICON1 ICON DISCARDABLE "novelWriter.ico" 1 VERSIONINFO FILEVERSION 1,1,0,0 PRODUCTVERSION 1,1,0,0 diff --git a/setup/windows/main.cpp b/setup/windows/main.cpp index 434bed61..4f2121b3 100644 --- a/setup/windows/main.cpp +++ b/setup/windows/main.cpp @@ -24,7 +24,7 @@ #include #include -void _tmain( int argc, TCHAR *argv[] ) { +void _tmain(int argc, TCHAR *argv[]) { STARTUPINFO si; PROCESS_INFORMATION pi; @@ -32,11 +32,11 @@ void _tmain( int argc, TCHAR *argv[] ) { si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); - TCHAR fileName[MAX_PATH]; - auto pathlen = GetModuleFileName(NULL, fileName, MAX_PATH); - fileName[pathlen - 15] = 0; - SetCurrentDirectory(fileName); - std::cout << "WorkDir: " << fileName << std::endl; + TCHAR path[MAX_PATH]; + auto pathlen = GetModuleFileName(NULL, path, MAX_PATH); + path[pathlen - 15] = 0; + SetCurrentDirectory(path); + std::cout << "WorkDir: " << path << std::endl; TCHAR cmd[MAX_PATH] = TEXT("pythonw.exe novelWriter.pyw"); if (argc > 1) { From b4672759f80f65ee70752eb3d9c7c94628779617 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Mon, 20 Jan 2025 22:19:24 +0100 Subject: [PATCH 6/6] Make some minor improvements to the main init file --- novelwriter/__init__.py | 58 ++++++++++++++++++------------- tests/test_base/test_base_init.py | 14 ++++---- 2 files changed, 40 insertions(+), 32 deletions(-) diff --git a/novelwriter/__init__.py b/novelwriter/__init__.py index c0358d27..19009466 100644 --- a/novelwriter/__init__.py +++ b/novelwriter/__init__.py @@ -42,7 +42,7 @@ if TYPE_CHECKING: # pragma: no cover # ============ __package__ = "novelwriter" -__copyright__ = "Copyright 2018–2024, Veronica Berglyd Olsen" +__copyright__ = "Copyright 2018-2025 Veronica Berglyd Olsen" __license__ = "GPLv3" __author__ = "Veronica Berglyd Olsen" __maintainer__ = "Veronica Berglyd Olsen" @@ -65,20 +65,20 @@ CONFIG = Config() SHARED = SharedData() # ANSI Colours -C_RED = "\033[91m" -C_GREEN = "\033[92m" -C_YELLOW = "\033[93m" -C_BLUE = "\033[94m" -C_WHITE = "\033[97m" -C_END = "\033[0m" +RED = "\033[91m" +GREEN = "\033[92m" +YELLOW = "\033[93m" +BLUE = "\033[94m" +WHITE = "\033[97m" +END = "\033[0m" -# Log Formats -L_TIME = "[{asctime:}]" -L_FILE = "{filename:>18}" -L_LINE = "{lineno:<4d}" -L_LVLP = "{levelname:8}" -L_LVLC = "{levelname:17}" -L_TEXT = "{message:}" +# Log Format Components +TIME = "[{asctime:}]" +FILE = "{filename:>18}" +LINE = "{lineno:<4d}" +LVLP = "{levelname:8}" +LVLC = "{levelname:17}" +TEXT = "{message:}" def main(sysArgs: list | None = None) -> GuiMain | None: @@ -104,11 +104,19 @@ def main(sysArgs: list | None = None) -> GuiMain | None: f"novelWriter {__version__} ({__date__})\n" f"{__copyright__}\n" "\n" + "This program is free software: you can redistribute it and/or modify\n" + "it under the terms of the GNU General Public License as published by\n" + "the Free Software Foundation, either version 3 of the License, or\n" + "(at your option) any later version.\n" + "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public Licence for more details.\n" "\n" + "You should have received a copy of the GNU General Public License\n" + "along with this program. If not, see .\n" + "\n" "Usage:\n" " -h, --help Print this message.\n" " -v, --version Print program version and exit.\n" @@ -167,21 +175,21 @@ def main(sysArgs: list | None = None) -> GuiMain | None: if fmtFlags & 0b01: # This will overwrite the default level names, and also ensure that # they can be converted back to integer levels - logging.addLevelName(logging.DEBUG, f"{C_BLUE}DEBUG{C_END}") - logging.addLevelName(logging.INFO, f"{C_GREEN}INFO{C_END}") - logging.addLevelName(logging.WARNING, f"{C_YELLOW}WARNING{C_END}") - logging.addLevelName(logging.ERROR, f"{C_RED}ERROR{C_END}") - logging.addLevelName(logging.CRITICAL, f"{C_RED}CRITICAL{C_END}") + logging.addLevelName(logging.DEBUG, f"{BLUE}DEBUG{END}") + logging.addLevelName(logging.INFO, f"{GREEN}INFO{END}") + logging.addLevelName(logging.WARNING, f"{YELLOW}WARNING{END}") + logging.addLevelName(logging.ERROR, f"{RED}ERROR{END}") + logging.addLevelName(logging.CRITICAL, f"{RED}CRITICAL{END}") # Determine Log Format if fmtFlags == 0b00: - logFmt = f"{L_LVLP} {L_TEXT}" + logFmt = f"{LVLP} {TEXT}" elif fmtFlags == 0b01: - logFmt = f"{L_LVLC} {L_TEXT}" + logFmt = f"{LVLC} {TEXT}" elif fmtFlags == 0b10: - logFmt = f"{L_TIME} {L_FILE}:{L_LINE} {L_LVLP} {L_TEXT}" + logFmt = f"{TIME} {FILE}:{LINE} {LVLP} {TEXT}" elif fmtFlags == 0b11: - logFmt = f"{L_TIME} {C_BLUE}{L_FILE}{C_END}:{C_WHITE}{L_LINE}{C_END} {L_LVLC} {L_TEXT}" + logFmt = f"{TIME} {BLUE}{FILE}{END}:{WHITE}{LINE}{END} {LVLC} {TEXT}" # Setup Logging pkgLogger = logging.getLogger(__package__) @@ -272,7 +280,9 @@ def main(sysArgs: list | None = None) -> GuiMain | None: def _createApp(style: str) -> QApplication: - """Create the app.""" + """Create the app. This is done in a function to make it easier to + block app creation during testing. + """ app = QApplication([CONFIG.appName, (f"-style={style}")]) app.setApplicationName(CONFIG.appName) app.setApplicationVersion(__version__) diff --git a/tests/test_base/test_base_init.py b/tests/test_base/test_base_init.py index 664007eb..39ba566f 100644 --- a/tests/test_base/test_base_init.py +++ b/tests/test_base/test_base_init.py @@ -30,8 +30,8 @@ import pytest from PyQt6.QtWidgets import QApplication from novelwriter import ( - C_BLUE, C_END, C_WHITE, CONFIG, L_FILE, L_LINE, L_LVLC, L_LVLP, L_TEXT, - L_TIME, _createApp, logger, main + BLUE, CONFIG, END, FILE, LINE, LVLC, LVLP, TEXT, TIME, WHITE, _createApp, + logger, main ) from tests.tools import clearLogHandlers @@ -115,16 +115,14 @@ def testBaseInit_Options(monkeypatch, fncPath): main(["--info", "--color", f"--config={fncPath}", f"--data={fncPath}"]) assert ex.value.code == 0 assert logger.getEffectiveLevel() == logging.INFO - assert getFormat() == f"{L_LVLC} {L_TEXT}" + assert getFormat() == f"{LVLC} {TEXT}" clearLogHandlers() with pytest.raises(SystemExit) as ex: main(["--debug", "--color", f"--config={fncPath}", f"--data={fncPath}"]) assert ex.value.code == 0 assert logger.getEffectiveLevel() == logging.DEBUG - assert getFormat() == ( - f"{L_TIME} {C_BLUE}{L_FILE}{C_END}:{C_WHITE}{L_LINE}{C_END} {L_LVLC} {L_TEXT}" - ) + assert getFormat() == f"{TIME} {BLUE}{FILE}{END}:{WHITE}{LINE}{END} {LVLC} {TEXT}" # Log Levels wo/Color clearLogHandlers() @@ -132,14 +130,14 @@ def testBaseInit_Options(monkeypatch, fncPath): main(["--info", f"--config={fncPath}", f"--data={fncPath}"]) assert ex.value.code == 0 assert logger.getEffectiveLevel() == logging.INFO - assert getFormat() == f"{L_LVLP} {L_TEXT}" + assert getFormat() == f"{LVLP} {TEXT}" clearLogHandlers() with pytest.raises(SystemExit) as ex: main(["--debug", f"--config={fncPath}", f"--data={fncPath}"]) assert ex.value.code == 0 assert logger.getEffectiveLevel() == logging.DEBUG - assert getFormat() == f"{L_TIME} {L_FILE}:{L_LINE} {L_LVLP} {L_TEXT}" + assert getFormat() == f"{TIME} {FILE}:{LINE} {LVLP} {TEXT}" # Help and Version with pytest.raises(SystemExit) as ex: