From 41bbd7b2591927b43e0bdbb240de03132977dcc3 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Mon, 23 Nov 2020 12:48:08 +0100 Subject: [PATCH 1/6] Added releases URL --- nw/__init__.py | 1 + nw/gui/mainmenu.py | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/nw/__init__.py b/nw/__init__.py index 670351b9..a5960f30 100644 --- a/nw/__init__.py +++ b/nw/__init__.py @@ -70,6 +70,7 @@ __status__ = "Beta" __url__ = "https://novelwriter.io" __sourceurl__ = "https://github.com/vkbo/novelWriter" __issuesurl__ = "https://github.com/vkbo/novelWriter/issues" +__releaseurl__ = "https://github.com/vkbo/novelWriter/releases/latest" __domain__ = "novelwriter.io" __docurl__ = "https://novelwriter.readthedocs.io" __credits__ = [ diff --git a/nw/gui/mainmenu.py b/nw/gui/mainmenu.py index c64debe6..d6a1e411 100644 --- a/nw/gui/mainmenu.py +++ b/nw/gui/mainmenu.py @@ -918,16 +918,22 @@ class GuiMainMenu(QMenuBar): # Document > Go to Website self.aWebsite = QAction("Open the novelWriter Website", self) - self.aWebsite.setStatusTip("View the main website") + self.aWebsite.setStatusTip("Open the main website at %s" % nw.__url__) self.aWebsite.triggered.connect(lambda: self._openWebsite(nw.__url__)) self.helpMenu.addAction(self.aWebsite) # Document > Report Issue - self.aIssue = QAction("Report an Issue", self) - self.aIssue.setStatusTip("Report a bug or issue on GitHub") + self.aIssue = QAction("Report an Issue (GitHub)", self) + self.aIssue.setStatusTip("Report a bug or issue on GitHub at %s" % nw.__issuesurl__) self.aIssue.triggered.connect(lambda: self._openWebsite(nw.__issuesurl__)) self.helpMenu.addAction(self.aIssue) + # Document > Latest Release + self.aIssue = QAction("Latest Release (GitHub)", self) + self.aIssue.setStatusTip("Open the Releases page on GitHub at %s" % nw.__releaseurl__) + self.aIssue.triggered.connect(lambda: self._openWebsite(nw.__releaseurl__)) + self.helpMenu.addAction(self.aIssue) + return # END Class GuiMainMenu From 12c2d93968d8f8d2881e2bc50c26aa5a6836557e Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Mon, 23 Nov 2020 13:05:53 +0100 Subject: [PATCH 2/6] Added release notes from website --- CHANGELOG.md | 2 +- nw/assets/text/release_notes_en.htm | 34 +++++++++++++++++++++++++++++ nw/gui/about.py | 20 +++++++++++++++++ nw/gui/mainmenu.py | 4 ++-- 4 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 nw/assets/text/release_notes_en.htm diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d8b991a..6687543d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# novelWriter ChangeLog +# novelWriter Change Log ## Version 1.0 Release Candidate 1 [2020-11-16] diff --git a/nw/assets/text/release_notes_en.htm b/nw/assets/text/release_notes_en.htm new file mode 100644 index 00000000..ac186481 --- /dev/null +++ b/nw/assets/text/release_notes_en.htm @@ -0,0 +1,34 @@ + + + +

Release 1.0 RC1

+

This is the first release candidate for the upcoming release of novelWriter 1.0.

+

Since the fifth beta release about four weeks ago, not much has been changed in novelWriter. A +few minor tweaks have been made to the GUI. A number of features and tools are now automatically +switched off when there is no project or document open for those features to act upon. No serious +bugs have been reported or encountered, and I feel it’s time to move on to the release candidates. +Most of the minor changes should not be noticeable to most users. However, there are a couple of +noticeable changes.

+

Typewriter Mode

+

"Typewriter Mode" of the editor has been improved. Essentially, this feature is a sort of smart +scroll. It tries to keep the cursor stationary in the vertical direction, and will try to scroll +the document up when the cursor skips to a new line while typing (or down in case of backspace). +This is similar to the way a typewriter scrolls the paper when hitting the return key. It improves +the writing experience as the current active line will stay at the same eye height level on the +screen.

+

Previously, the feature would lock the cursor to a given vertical position defined by the user. +Now, instead, the cursor will remain stationary in the vertical direction at any position the user +sets it to by mouse click or keyboard navigation. The user can define a minimum distance from the +top where this feature is activated. It makes it more flexible. The feature can be controlled from +the main Preferences.

+

Switching Syntax Theme

+

It is now possible to switch syntax highlighting theme without restarting novelWriter. +Previously, changing the theme would only half-way update the document, header and footer +background and text colour. The new settings would not be applied until the application was shut +down and started again. This makes it a bit tedious to look through themes to find the one you +want. This issue has now been resolved.

+

Switching main GUI theme still requires a restart.

+

The full changelog is available +here.

+ + diff --git a/nw/gui/about.py b/nw/gui/about.py index 7f00cf11..d2c436cf 100644 --- a/nw/gui/about.py +++ b/nw/gui/about.py @@ -84,10 +84,15 @@ class GuiAbout(QDialog): self.pageLicense.setOpenExternalLinks(True) self.pageLicense.document().setDocumentMargin(self.mainConf.pxInt(16)) + self.pageNotes = QTextBrowser() + self.pageNotes.setOpenExternalLinks(True) + self.pageNotes.document().setDocumentMargin(self.mainConf.pxInt(16)) + # Main Tab Area self.tabBox = QTabWidget() self.tabBox.addTab(self.pageAbout, "About") self.tabBox.addTab(self.pageLicense, "License") + self.tabBox.addTab(self.pageNotes, "Release Notes") self.innerBox.addWidget(self.tabBox) # OK Button @@ -101,6 +106,7 @@ class GuiAbout(QDialog): self._setStyleSheet() self._fillAboutPage() self._fillLicensePage() + self._fillNotesPage() logger.debug("GuiAbout initialisation complete") @@ -205,6 +211,19 @@ class GuiAbout(QDialog): self.pageLicense.setHtml("Error loading license text ...") return + def _fillNotesPage(self): + """Load the content for the Release Notes page. + """ + docName = "release_notes_%s.htm" % self.mainConf.guiLang + docPath = os.path.join(self.mainConf.assetPath, "text", docName) + if os.path.isfile(docPath): + with open(docPath, mode="r", encoding="utf8") as inFile: + helpText = inFile.read() + self.pageNotes.setHtml(helpText) + else: + self.pageNotes.setHtml("Error release notes text ...") + return + def _setStyleSheet(self): """Set stylesheet for all browser tabs """ @@ -222,6 +241,7 @@ class GuiAbout(QDialog): ) self.pageAbout.document().setDefaultStyleSheet(styleSheet) self.pageLicense.document().setDefaultStyleSheet(styleSheet) + self.pageNotes.document().setDefaultStyleSheet(styleSheet) return diff --git a/nw/gui/mainmenu.py b/nw/gui/mainmenu.py index d6a1e411..9bf4cae1 100644 --- a/nw/gui/mainmenu.py +++ b/nw/gui/mainmenu.py @@ -598,8 +598,8 @@ class GuiMainMenu(QMenuBar): # Insert > Separator self.insertMenu.addSeparator() - # Insert > Keywords and Tags - self.mInsKeywords = self.insertMenu.addMenu("Keywords and Tags") + # Insert > Tags and References + self.mInsKeywords = self.insertMenu.addMenu("Tags and References") self.mInsKWItems = {} self.mInsKWItems[nwKeyWords.TAG_KEY] = (QAction(self.mInsKeywords), "Ctrl+K, G") self.mInsKWItems[nwKeyWords.POV_KEY] = (QAction(self.mInsKeywords), "Ctrl+K, V") From 00f6277eb7c0b3cde121a54bc898209d20517bbd Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Tue, 24 Nov 2020 18:36:08 +0100 Subject: [PATCH 3/6] Add config option and set up menu action --- ...release_notes_en.htm => release_notes.htm} | 14 ++-- nw/config.py | 5 ++ nw/gui/about.py | 65 +++++++++++-------- nw/guimain.py | 17 ++++- 4 files changed, 65 insertions(+), 36 deletions(-) rename nw/assets/text/{release_notes_en.htm => release_notes.htm} (76%) diff --git a/nw/assets/text/release_notes_en.htm b/nw/assets/text/release_notes.htm similarity index 76% rename from nw/assets/text/release_notes_en.htm rename to nw/assets/text/release_notes.htm index ac186481..fe2a9a62 100644 --- a/nw/assets/text/release_notes_en.htm +++ b/nw/assets/text/release_notes.htm @@ -1,7 +1,7 @@ -

Release 1.0 RC1

+

Release Notes for 1.0 RC1

This is the first release candidate for the upcoming release of novelWriter 1.0.

Since the fifth beta release about four weeks ago, not much has been changed in novelWriter. A few minor tweaks have been made to the GUI. A number of features and tools are now automatically @@ -10,12 +10,12 @@ bugs have been reported or encountered, and I feel it’s time to move on to the Most of the minor changes should not be noticeable to most users. However, there are a couple of noticeable changes.

Typewriter Mode

-

"Typewriter Mode" of the editor has been improved. Essentially, this feature is a sort of smart -scroll. It tries to keep the cursor stationary in the vertical direction, and will try to scroll -the document up when the cursor skips to a new line while typing (or down in case of backspace). -This is similar to the way a typewriter scrolls the paper when hitting the return key. It improves -the writing experience as the current active line will stay at the same eye height level on the -screen.

+

The "Typewriter Mode" of the editor has been improved. Essentially, this feature is a sort of +smart scroll. It tries to keep the cursor stationary in the vertical direction, and will try to +scroll the document up when the cursor skips to a new line while typing (or down in case of +backspace). This is similar to the way a typewriter scrolls the paper when hitting the return key. +It improves the writing experience as the current active line will stay at the same eye height +level on the screen.

Previously, the feature would lock the cursor to a given vertical position defined by the user. Now, instead, the cursor will remain stationary in the vertical direction at any position the user sets it to by mouse click or keyboard navigation. The user can define a minimum distance from the diff --git a/nw/config.py b/nw/config.py index 05345b45..04c1a4db 100644 --- a/nw/config.py +++ b/nw/config.py @@ -91,6 +91,7 @@ class Config: self.guiFont = "" # Defaults to system default font self.guiFontSize = 11 self.guiScale = 1.0 # Set automatically by Theme class + self.lastNotes = "" # The latest release notes that have been shown ## Sizes self.winGeometry = [1200, 650] @@ -380,6 +381,9 @@ class Config: self.guiFontSize = self._parseLine( cnfParse, cnfSec, "guifontsize", self.CNF_INT, self.guiFontSize ) + self.lastNotes = self._parseLine( + cnfParse, cnfSec, "lastnotes", self.CNF_STR, self.lastNotes + ) ## Sizes cnfSec = "Sizes" @@ -584,6 +588,7 @@ class Config: cnfParse.set(cnfSec, "guidark", str(self.guiDark)) cnfParse.set(cnfSec, "guifont", str(self.guiFont)) cnfParse.set(cnfSec, "guifontsize", str(self.guiFontSize)) + cnfParse.set(cnfSec, "lastnotes", str(self.lastNotes)) ## Sizes cnfSec = "Sizes" diff --git a/nw/gui/about.py b/nw/gui/about.py index d2c436cf..99a4d296 100644 --- a/nw/gui/about.py +++ b/nw/gui/about.py @@ -32,8 +32,9 @@ import os from datetime import datetime from PyQt5.QtCore import Qt +from PyQt5.QtGui import QCursor from PyQt5.QtWidgets import ( - QDialog, QHBoxLayout, QVBoxLayout, QDialogButtonBox, QTabWidget, + qApp, QDialog, QHBoxLayout, QVBoxLayout, QDialogButtonBox, QTabWidget, QTextBrowser, QLabel ) @@ -80,19 +81,19 @@ class GuiAbout(QDialog): self.pageAbout.setOpenExternalLinks(True) self.pageAbout.document().setDocumentMargin(self.mainConf.pxInt(16)) - self.pageLicense = QTextBrowser() - self.pageLicense.setOpenExternalLinks(True) - self.pageLicense.document().setDocumentMargin(self.mainConf.pxInt(16)) - self.pageNotes = QTextBrowser() self.pageNotes.setOpenExternalLinks(True) self.pageNotes.document().setDocumentMargin(self.mainConf.pxInt(16)) + self.pageLicense = QTextBrowser() + self.pageLicense.setOpenExternalLinks(True) + self.pageLicense.document().setDocumentMargin(self.mainConf.pxInt(16)) + # Main Tab Area self.tabBox = QTabWidget() self.tabBox.addTab(self.pageAbout, "About") + self.tabBox.addTab(self.pageNotes, "Release") self.tabBox.addTab(self.pageLicense, "License") - self.tabBox.addTab(self.pageNotes, "Release Notes") self.innerBox.addWidget(self.tabBox) # OK Button @@ -103,15 +104,27 @@ class GuiAbout(QDialog): self.outerBox.addWidget(self.buttonBox) self.setLayout(self.outerBox) - self._setStyleSheet() - self._fillAboutPage() - self._fillLicensePage() - self._fillNotesPage() - logger.debug("GuiAbout initialisation complete") return + def populateGUI(self): + """Populate tabs with text. + """ + qApp.setOverrideCursor(QCursor(Qt.WaitCursor)) + self._setStyleSheet() + self._fillAboutPage() + self._fillNotesPage() + self._fillLicensePage() + qApp.restoreOverrideCursor() + return + + def showReleaseNotes(self): + """Show the release notes. + """ + self.tabBox.setCurrentWidget(self.pageNotes) + return + ## # Internal Functions ## @@ -198,11 +211,22 @@ class GuiAbout(QDialog): return + def _fillNotesPage(self): + """Load the content for the Release Notes page. + """ + docPath = os.path.join(self.mainConf.assetPath, "text", "release_notes.htm") + if os.path.isfile(docPath): + with open(docPath, mode="r", encoding="utf8") as inFile: + helpText = inFile.read() + self.pageNotes.setHtml(helpText) + else: + self.pageNotes.setHtml("Error loading release notes text ...") + return + def _fillLicensePage(self): """Load the content for the License page. """ - docName = "gplv3_%s.htm" % self.mainConf.guiLang - docPath = os.path.join(self.mainConf.assetPath, "text", docName) + docPath = os.path.join(self.mainConf.assetPath, "text", "gplv3_en.htm") if os.path.isfile(docPath): with open(docPath, mode="r", encoding="utf8") as inFile: helpText = inFile.read() @@ -211,19 +235,6 @@ class GuiAbout(QDialog): self.pageLicense.setHtml("Error loading license text ...") return - def _fillNotesPage(self): - """Load the content for the Release Notes page. - """ - docName = "release_notes_%s.htm" % self.mainConf.guiLang - docPath = os.path.join(self.mainConf.assetPath, "text", docName) - if os.path.isfile(docPath): - with open(docPath, mode="r", encoding="utf8") as inFile: - helpText = inFile.read() - self.pageNotes.setHtml(helpText) - else: - self.pageNotes.setHtml("Error release notes text ...") - return - def _setStyleSheet(self): """Set stylesheet for all browser tabs """ @@ -240,8 +251,8 @@ class GuiAbout(QDialog): hColB = self.theParent.theTheme.colHead[2], ) self.pageAbout.document().setDefaultStyleSheet(styleSheet) - self.pageLicense.document().setDefaultStyleSheet(styleSheet) self.pageNotes.document().setDefaultStyleSheet(styleSheet) + self.pageLicense.document().setDefaultStyleSheet(styleSheet) return diff --git a/nw/guimain.py b/nw/guimain.py index b4ff651a..801de5af 100644 --- a/nw/guimain.py +++ b/nw/guimain.py @@ -238,6 +238,12 @@ class GuiMain(QMainWindow): if self.mainConf.showGUI: self.showProjectLoadDialog() + # Show the latest release notes, if they haven't been shown before + if self.mainConf.lastNotes != nw.__version__: + if self.mainConf.showGUI: + self.showAboutNWDialog(showNotes=True) + self.mainConf.lastNotes = nw.__version__ + logger.debug("novelWriter is ready ...") self.setStatus("novelWriter is ready ...") @@ -915,11 +921,18 @@ class GuiMain(QMainWindow): return - def showAboutNWDialog(self): + def showAboutNWDialog(self, showNotes=False): """Show the about dialog for novelWriter. """ dlgAbout = GuiAbout(self) - dlgAbout.exec_() + dlgAbout.setModal(True) + dlgAbout.show() + qApp.processEvents() + dlgAbout.populateGUI() + + if showNotes: + dlgAbout.showReleaseNotes() + return def showAboutQtDialog(self): From 1510a5af748103ca200ac818d24e7a83a1f55421 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Tue, 24 Nov 2020 18:36:30 +0100 Subject: [PATCH 4/6] Fix and update tests --- tests/reference/novelwriter.conf | 1 + tests/reference/novelwriter_prefs.conf | 1 + tests/test_config.py | 10 +++++----- tests/test_dialogs.py | 13 +++++++++++-- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/tests/reference/novelwriter.conf b/tests/reference/novelwriter.conf index 99b01f75..5ff6f852 100644 --- a/tests/reference/novelwriter.conf +++ b/tests/reference/novelwriter.conf @@ -6,6 +6,7 @@ icons = typicons_colour_light guidark = False guifont = guifontsize = 11 +lastnotes = 1.0 [Sizes] geometry = 1200, 650 diff --git a/tests/reference/novelwriter_prefs.conf b/tests/reference/novelwriter_prefs.conf index 831bbf08..901a6937 100644 --- a/tests/reference/novelwriter_prefs.conf +++ b/tests/reference/novelwriter_prefs.conf @@ -6,6 +6,7 @@ icons = typicons_colour_light guidark = True guifont = Cantarell guifontsize = 12 +lastnotes = 1.0 [Sizes] geometry = 1100, 650 diff --git a/tests/test_config.py b/tests/test_config.py index f9ce767b..5d72cdfd 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -14,7 +14,7 @@ def testConfigCore(tmpConf, nwTemp, nwRef): assert tmpConf.confPath == nwTemp assert tmpConf.saveConfig() - assert cmpFiles(testConf, refConf, [2]) + assert cmpFiles(testConf, refConf, [2, 9]) assert not tmpConf.confChanged assert tmpConf.loadConfig() @@ -51,7 +51,7 @@ def testConfigSetWinSize(tmpConf, nwTemp, nwRef): assert tmpConf.setWinSize(1200, 650) assert tmpConf.saveConfig() - assert cmpFiles(testConf, refConf, [2]) + assert cmpFiles(testConf, refConf, [2, 9]) assert not tmpConf.confChanged @pytest.mark.core @@ -73,7 +73,7 @@ def testConfigSetTreeColWidths(tmpConf, nwTemp, nwRef): assert tmpConf.confChanged assert tmpConf.saveConfig() - assert cmpFiles(testConf, refConf, [2]) + assert cmpFiles(testConf, refConf, [2, 9]) assert not tmpConf.confChanged @pytest.mark.core @@ -109,7 +109,7 @@ def testConfigSetPanePos(tmpConf, nwTemp, nwRef): assert tmpConf.confChanged assert tmpConf.saveConfig() - assert cmpFiles(testConf, refConf, [2]) + assert cmpFiles(testConf, refConf, [2, 9]) assert not tmpConf.confChanged @pytest.mark.core @@ -133,7 +133,7 @@ def testConfigFlags(tmpConf, nwTemp, nwRef): assert tmpConf.confChanged assert tmpConf.saveConfig() - assert cmpFiles(testConf, refConf, [2]) + assert cmpFiles(testConf, refConf, [2, 9]) assert not tmpConf.confChanged @pytest.mark.core diff --git a/tests/test_dialogs.py b/tests/test_dialogs.py index 81c1fc89..36921eb4 100644 --- a/tests/test_dialogs.py +++ b/tests/test_dialogs.py @@ -374,12 +374,20 @@ def testAboutBox(qtbot, monkeypatch, nwFuncTemp, nwTemp): msgAbout.show() assert msgAbout.pageAbout.document().characterCount() > 100 + assert msgAbout.pageNotes.document().characterCount() > 100 assert msgAbout.pageLicense.document().characterCount() > 100 msgAbout.mainConf.guiLang = "whatever" + + msgAbout._fillNotesPage() + assert msgAbout.pageNotes.toPlainText() == "Error loading release notes text ..." + msgAbout._fillLicensePage() assert msgAbout.pageLicense.toPlainText() == "Error loading license text ..." + msgAbout.showReleaseNotes() + assert msgAbout.tabBox.currentWidget() == msgAbout.pageNotes + # Qt About monkeypatch.setattr(QMessageBox, "aboutQt", lambda *args, **kwargs: None) nwGUI.mainMenu.aAboutQt.activate(QAction.Trigger) @@ -1201,8 +1209,9 @@ def testPreferences(qtbot, monkeypatch, yesToAll, nwMinimal, nwTemp, nwRef, tmpC copyfile(projConf, testConf) ignoreLines = [ 2, # Timestamp - 11, 12, 13, 14, 15, 16, 17, # Window sizes - 7, 27, # Fonts (depends on system default) + 9, # Release Notes + 12, 13, 14, 15, 16, 17, 18, # Window sizes + 7, 28, # Fonts (depends on system default) ] assert cmpFiles(testConf, refConf, ignoreLines) From 434a0c60560b330b3b0d401c4d967e26ceead2ae Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Tue, 24 Nov 2020 18:48:32 +0100 Subject: [PATCH 5/6] Updated release notes --- nw/assets/text/release_notes.htm | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/nw/assets/text/release_notes.htm b/nw/assets/text/release_notes.htm index fe2a9a62..d9818aa9 100644 --- a/nw/assets/text/release_notes.htm +++ b/nw/assets/text/release_notes.htm @@ -4,29 +4,30 @@

Release Notes for 1.0 RC1

This is the first release candidate for the upcoming release of novelWriter 1.0.

Since the fifth beta release about four weeks ago, not much has been changed in novelWriter. A -few minor tweaks have been made to the GUI. A number of features and tools are now automatically -switched off when there is no project or document open for those features to act upon. No serious -bugs have been reported or encountered, and I feel it’s time to move on to the release candidates. -Most of the minor changes should not be noticeable to most users. However, there are a couple of -noticeable changes.

+few minor tweaks have been made to the GUI.

+

A number of features and tools are now automatically switched off when there is no project or +document open for those features to act upon. Previously, this was a bit inconsistent, although no +serious bugs have been reported or encountered.

+

Most of the minor changes in this release should not be noticeable to most users. However, there +are a couple of noticeable changes.

Typewriter Mode

The "Typewriter Mode" of the editor has been improved. Essentially, this feature is a sort of smart scroll. It tries to keep the cursor stationary in the vertical direction, and will try to scroll the document up when the cursor skips to a new line while typing (or down in case of -backspace). This is similar to the way a typewriter scrolls the paper when hitting the return key. +backspaces). This is similar to the way a typewriter scrolls the paper when hitting the return key. It improves the writing experience as the current active line will stay at the same eye height level on the screen.

Previously, the feature would lock the cursor to a given vertical position defined by the user. Now, instead, the cursor will remain stationary in the vertical direction at any position the user sets it to by mouse click or keyboard navigation. The user can define a minimum distance from the -top where this feature is activated. It makes it more flexible. The feature can be controlled from -the main Preferences.

+top where this feature is activated. These changes makes it more flexible in terms of where the +focus is in the editor. The feature can be controlled from the main Preferences.

Switching Syntax Theme

It is now possible to switch syntax highlighting theme without restarting novelWriter. Previously, changing the theme would only half-way update the document, header and footer -background and text colour. The new settings would not be applied until the application was shut -down and started again. This makes it a bit tedious to look through themes to find the one you -want. This issue has now been resolved.

+background and text colours. The new settings would not be fully applied until the application was +shut down and started again, thus making it a bit tedious to look through syntax themes to find the +one you want.

Switching main GUI theme still requires a restart.

The full changelog is available here.

From b28556cd40536076a34916a6473773bdb0eb6543 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Tue, 24 Nov 2020 18:51:20 +0100 Subject: [PATCH 6/6] Fix broken test --- tests/test_dialogs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_dialogs.py b/tests/test_dialogs.py index 36921eb4..4c1f1885 100644 --- a/tests/test_dialogs.py +++ b/tests/test_dialogs.py @@ -377,7 +377,7 @@ def testAboutBox(qtbot, monkeypatch, nwFuncTemp, nwTemp): assert msgAbout.pageNotes.document().characterCount() > 100 assert msgAbout.pageLicense.document().characterCount() > 100 - msgAbout.mainConf.guiLang = "whatever" + msgAbout.mainConf.assetPath = "whatever" msgAbout._fillNotesPage() assert msgAbout.pageNotes.toPlainText() == "Error loading release notes text ..."