Compare commits

...

16 Commits
v2.0 ... v2.0.2

Author SHA1 Message Date
Veronica Berglyd Olsen
66cc3777dc Release 2.0.2 (#1279) 2022-12-01 23:41:38 +01:00
Veronica Berglyd Olsen
b1def7b568 Release 2.0.2 2022-12-01 23:33:16 +01:00
Veronica Berglyd Olsen
1b177ff5b5 Fix highlighting not updating on prefs change (#1278) 2022-12-01 23:24:36 +01:00
Veronica Berglyd Olsen
594ccd45c7 Fix linux workflow 2022-12-01 23:21:00 +01:00
Veronica Berglyd Olsen
2b0216a398 Changing colouring preferences on the highlighting tab needs to re-init the syntax highlighter (#1274) 2022-12-01 23:12:46 +01:00
Veronica Berglyd Olsen
347266a9bd Post release fix (#1272) 2022-11-29 17:41:16 +01:00
Veronica Berglyd Olsen
e7bce03be4 Add empty init files to subdirs of main package 2022-11-29 17:22:23 +01:00
Veronica Berglyd Olsen
9d08d83c2c Release 2.0.1 (#1270) 2022-11-29 16:37:29 +01:00
Veronica Berglyd Olsen
e0f7e50b64 Release 2.0.1 2022-11-29 16:28:19 +01:00
Veronica Berglyd Olsen
b57d53adcd Update French translation (#1265) 2022-11-28 21:37:22 +01:00
Veronica Berglyd Olsen
875bde2253 Update French translation 2022-11-28 21:30:45 +01:00
Veronica Berglyd Olsen
e77426f364 Add a icon theme fallback value (#1264) 2022-11-28 21:28:37 +01:00
Veronica Berglyd Olsen
9af6fa062c Add more info on custome themes in the docs 2022-11-28 21:25:48 +01:00
Veronica Berglyd Olsen
6bc59eb7de Make the theme class fall back to typicons lighht icon theme (#1263) 2022-11-28 21:05:34 +01:00
Veronica Berglyd Olsen
49cab9ec29 Use direct imports everywhere (#1262) 2022-11-28 18:31:54 +01:00
Veronica Berglyd Olsen
32d75567e3 Use direct imports everywhere 2022-11-28 18:23:36 +01:00
30 changed files with 742 additions and 731 deletions

View File

@@ -25,7 +25,7 @@ jobs:
- name: Install Packages (apt)
run: |
sudo apt update
sudo apt install libenchant-dev qttools5-dev-tools aspell-en
sudo apt install libenchant-2-dev qttools5-dev-tools aspell-en
- name: Checkout Source
uses: actions/checkout@v3
- name: Install Dependencies (pip)

View File

@@ -1,5 +1,48 @@
# novelWriter Changelog
## Version 2.0.2 [2022-12-01]
### Release Notes
This is a patch release that fixes a minor issues with syntax highlighting not updating when the
highlighting preferences were changed. It also fixes an issue that broke the FreeBSD release.
### Detailed Changelog
**Bugfixes**
* Fix an issue where changing the Highlighting Preferences for highlighting quotes, emphasis, and
multiple or trailing spaces would not reload the syntax highlighter in the editor. The changes
would only take effect after restarting the app. Issue #1274. PR #1278.
**Packaging and Installation**
* The 2.0.1 release was broken on Linux, but was fixed and the packages rebuilt. However, the
FreeBSD port was still broken. This release fixes this issue. Issue #1277. PR #1272.
----
## Version 2.0.1 [2022-11-29]
### Release Notes
This is a patch release that fixes a minor issues with loading custom GUI themes that haven't been
updated to include the icon theme setting. The patch also updates the French translation.
### Detailed Changelog
**Bugfixes**
* Fix an issue where starting the app with a custom GUI theme enabled would not load any icons at
all if the `icontheme` setting isn't specified. The app now loads the `typicons_light` theme by
default if no icon theme is set. Issue #1263. PR #1264.
**Internationalisation**
* The French translations has now been completed by @aaribaud. PR #1265.
----
## Version 2.0 [2022-11-28]
### Release Notes

View File

@@ -63,3 +63,95 @@ first time you start novelWriter.
Once the files are copied there, they should show up in :guilabel:`Preferences` with the label you
set as ``name`` inside the file.
.. note::
In novelWriter 2.0 the ``icontheme`` value was added to GUI themes. Make sure you set this value
in existing custom themes. Otherwise it defaults to ``typicons_light``, which may not match your
theme colour scheme.
Gustom GUI Theme
----------------
A GUI theme conf file consists of the follwing settings:
.. code-block:: cfg
[Main]
name = My Custom Theme
description = A description of my custom theme
author = Jane Doe
credit = John Doe
url = https://example.com
license = CC BY-SA 4.0
licenseurl = https://creativecommons.org/licenses/by-sa/4.0/
icontheme = typicons_light
[Palette]
window = 100, 100, 100
windowtext = 100, 100, 100
base = 100, 100, 100
alternatebase = 100, 100, 100
text = 100, 100, 100
tooltipbase = 100, 100, 100
tooltiptext = 100, 100, 100
button = 100, 100, 100
buttontext = 100, 100, 100
brighttext = 100, 100, 100
highlight = 100, 100, 100
highlightedtext = 100, 100, 100
link = 100, 100, 100
linkvisited = 100, 100, 100
[GUI]
statusnone = 100, 100, 100
statussaved = 100, 100, 100
statusunsaved = 100, 100, 100
In the Main section you must at least define the ``name`` and ``icontheme`` settings. The
``icontheme`` settings should correspond to one of the internal icon themes. Either
``typicons_light`` or ``typicons_dark``.
The Palette values correspond the the Qt enum values for QPalette::ColorRole, see the
`Qt documentation <https://doc.qt.io/qt-5.15/qpalette.html#ColorRole-enum>`_ for more details. The
colour values are RGB numbers on the format ``r, g, b`` where each is an integer from to 255.
Omitted values are not loaded and will use default values.
Custom Syntax Theme
-------------------
A syntax theme conf file consists of the follwing settings:
.. code-block:: cfg
[Main]
name = My Syntax Theme
author = Jane Doe
credit = John Doe
url = https://example.com
license = CC BY-SA 4.0
licenseurl = https://creativecommons.org/licenses/by-sa/4.0/
[Syntax]
background = 255, 255, 255
text = 0, 0, 0
link = 0, 0, 0
headertext = 0, 0, 0
headertag = 0, 0, 0
emphasis = 0, 0, 0
straightquotes = 0, 0, 0
doublequotes = 0, 0, 0
singlequotes = 0, 0, 0
hidden = 0, 0, 0
keyword = 0, 0, 0
value = 0, 0, 0
spellcheckline = 0, 0, 0
errorline = 0, 0, 0
replacetag = 0, 0, 0
modifier = 0, 0, 0
In the Main section, you must define at least the ``name`` setting. The Syntax colour values are
RGB numbers on the format ``r, g, b`` where each is an integer from to 255. Omitted values are set
to black, except ``background`` which defaults to white,

File diff suppressed because it is too large Load Diff

View File

@@ -59,9 +59,9 @@ __license__ = "GPLv3"
__author__ = "Veronica Berglyd Olsen"
__maintainer__ = "Veronica Berglyd Olsen"
__email__ = "code@vkbo.net"
__version__ = "2.0"
__hexversion__ = "0x020000f0"
__date__ = "2022-11-28"
__version__ = "2.0.2"
__hexversion__ = "0x020002f0"
__date__ = "2022-12-01"
__status__ = "Stable"
__domain__ = "novelwriter.io"
__url__ = "https://novelwriter.io"

View File

@@ -5,6 +5,8 @@
<h2>Release Notes for 2.0</h2>
<p><i>Released on 28 November 2022</i></p>
<p>Scroll down for <a href="#patch">Patch Notes</a></p>
<p>This release includes a major update to the way your project is managed. It also modernises the
user interface. The project file format has also been updated, and your projects will be upgraded
the first time you open them in this release.</p>
@@ -85,5 +87,17 @@ Project Settings dialog has been updated to reflect some of the same changes.</p
<p><i>See also the <a href="https://github.com/vkbo/novelWriter/releases">Releases</a> page.</i></p>
<a name="patch"></a><h2>Patch Notes</h2>
<h3>Patch 2.0.1 &ndash; 29 November 2022</h3>
<p>This is a patch release that fixes a minor issues with loading custom GUI themes that haven't
been updated to include the icon theme setting. The patch also updates the French translation.</p>
<h3>Patch 2.0.2 &ndash; 1 December 2022</h3>
<p>This is a patch release that fixes a minor issues with syntax highlighting not updating when the
highlighting preferences were changed. It also fixes an issue that broke the FreeBSD release.</p>
</body>
</html>

View File

@@ -1,40 +1,3 @@
"""
novelWriter – Core Init
=======================
This file is a part of novelWriter
Copyright 2018–2022, Veronica Berglyd Olsen
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
novelWriter – Core Init File
"""
from novelwriter.core.coretools import DocMerger, DocSplitter, ProjectBuilder
from novelwriter.core.index import countWords
from novelwriter.core.project import NWProject
from novelwriter.core.spellcheck import NWSpellEnchant
from novelwriter.core.tohtml import ToHtml
from novelwriter.core.toodt import ToOdt
from novelwriter.core.tomd import ToMarkdown
__all__ = [
"DocMerger",
"DocSplitter",
"ProjectBuilder",
"countWords",
"NWProject",
"NWSpellEnchant",
"ToHtml",
"ToOdt",
"ToMarkdown",
]

View File

@@ -36,10 +36,8 @@ from pathlib import Path
from novelwriter.enum import nwItemType, nwItemLayout
from novelwriter.error import logException
from novelwriter.common import checkInt, isHandle, isItemClass, isTitleTag, jsonEncode
from novelwriter.constants import nwFiles, nwKeyWords, nwUnicode, nwHeaders
from novelwriter.common import (
checkInt, isHandle, isItemClass, isTitleTag, jsonEncode
)
logger = logging.getLogger(__name__)

View File

@@ -30,11 +30,11 @@ from time import time
from pathlib import Path
from zipfile import ZIP_DEFLATED, ZIP_STORED, ZipFile
from novelwriter.error import logException
from novelwriter.common import minmax
from novelwriter.constants import nwFiles
from novelwriter.core.document import NWDocument
from novelwriter.core.projectxml import ProjectXMLReader, ProjectXMLWriter
from novelwriter.error import logException
logger = logging.getLogger(__name__)

View File

@@ -25,8 +25,8 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
import logging
from novelwriter.core.tokenizer import Tokenizer
from novelwriter.constants import nwKeyWords, nwLabels, nwHtmlUnicode
from novelwriter.core.tokenizer import Tokenizer
logger = logging.getLogger(__name__)

View File

@@ -1,46 +1,3 @@
"""
novelWriter – Dialogs Init
==========================
This file is a part of novelWriter
Copyright 2018–2022, Veronica Berglyd Olsen
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
novelWriter – Dialogs Init File
"""
from novelwriter.dialogs.about import GuiAbout
from novelwriter.dialogs.docmerge import GuiDocMerge
from novelwriter.dialogs.docsplit import GuiDocSplit
from novelwriter.dialogs.editlabel import GuiEditLabel
from novelwriter.dialogs.preferences import GuiPreferences
from novelwriter.dialogs.projdetails import GuiProjectDetails
from novelwriter.dialogs.projload import GuiProjectLoad
from novelwriter.dialogs.projsettings import GuiProjectSettings
from novelwriter.dialogs.quotes import GuiQuoteSelect
from novelwriter.dialogs.updates import GuiUpdates
from novelwriter.dialogs.wordlist import GuiWordList
__all__ = [
"GuiAbout",
"GuiDocMerge",
"GuiDocSplit",
"GuiEditLabel",
"GuiPreferences",
"GuiProjectDetails",
"GuiProjectLoad",
"GuiProjectSettings",
"GuiQuoteSelect",
"GuiUpdates",
"GuiWordList",
]

View File

@@ -826,6 +826,7 @@ class GuiPreferencesSyntax(QWidget):
super().__init__(parent=prefsGui)
self.mainConf = novelwriter.CONFIG
self.prefsGui = prefsGui
self.mainGui = prefsGui.mainGui
self.mainTheme = prefsGui.mainGui.mainTheme
@@ -893,16 +894,21 @@ class GuiPreferencesSyntax(QWidget):
def saveValues(self):
"""Save the values set for this tab.
"""
# Quotes & Dialogue
self.mainConf.highlightQuotes = self.highlightQuotes.isChecked()
self.mainConf.allowOpenSQuote = self.allowOpenSQuote.isChecked()
self.mainConf.allowOpenDQuote = self.allowOpenDQuote.isChecked()
highlightQuotes = self.highlightQuotes.isChecked()
allowOpenSQuote = self.allowOpenSQuote.isChecked()
allowOpenDQuote = self.allowOpenDQuote.isChecked()
highlightEmph = self.highlightEmph.isChecked()
showMultiSpaces = self.showMultiSpaces.isChecked()
# Text Emphasis
self.mainConf.highlightEmph = self.highlightEmph.isChecked()
self.prefsGui._updateSyntax |= self.mainConf.highlightQuotes != highlightQuotes
self.prefsGui._updateSyntax |= self.mainConf.highlightEmph != highlightEmph
self.prefsGui._updateSyntax |= self.mainConf.showMultiSpaces != showMultiSpaces
# Text Errors
self.mainConf.showMultiSpaces = self.showMultiSpaces.isChecked()
self.mainConf.highlightQuotes = highlightQuotes
self.mainConf.allowOpenSQuote = allowOpenSQuote
self.mainConf.allowOpenDQuote = allowOpenDQuote
self.mainConf.highlightEmph = highlightEmph
self.mainConf.showMultiSpaces = showMultiSpaces
return

View File

@@ -1,45 +1,3 @@
"""
novelWriter – GUI Init
======================
This file is a part of novelWriter
Copyright 2018–2022, Veronica Berglyd Olsen
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
novelWriter – GUI Init File
"""
from novelwriter.gui.doceditor import GuiDocEditor
from novelwriter.gui.docviewer import GuiDocViewer, GuiDocViewDetails
from novelwriter.gui.itemdetails import GuiItemDetails
from novelwriter.gui.mainmenu import GuiMainMenu
from novelwriter.gui.noveltree import GuiNovelView
from novelwriter.gui.outline import GuiOutlineView
from novelwriter.gui.projtree import GuiProjectView
from novelwriter.gui.statusbar import GuiMainStatus
from novelwriter.gui.theme import GuiTheme
from novelwriter.gui.sidebar import GuiSideBar
__all__ = [
"GuiDocEditor",
"GuiDocViewDetails",
"GuiDocViewer",
"GuiItemDetails",
"GuiMainMenu",
"GuiMainStatus",
"GuiNovelView",
"GuiOutlineView",
"GuiProjectView",
"GuiTheme",
"GuiSideBar",
]

View File

@@ -50,10 +50,11 @@ from PyQt5.QtWidgets import (
QFrame
)
from novelwriter.core import NWSpellEnchant, countWords
from novelwriter.enum import nwAlert, nwDocAction, nwDocInsert, nwDocMode, nwItemClass
from novelwriter.common import minmax, transferCase
from novelwriter.constants import nwConst, nwFiles, nwKeyWords, nwUnicode
from novelwriter.core.index import countWords
from novelwriter.core.spellcheck import NWSpellEnchant
from novelwriter.gui.dochighlight import GuiDocHighlighter
logger = logging.getLogger(__name__)

View File

@@ -33,8 +33,8 @@ from PyQt5.QtGui import (
QColor, QTextCharFormat, QFont, QSyntaxHighlighter, QBrush
)
from novelwriter.constants import nwRegEx, nwUnicode
from novelwriter.common import checkInt
from novelwriter.constants import nwRegEx, nwUnicode
logger = logging.getLogger(__name__)

View File

@@ -41,10 +41,10 @@ from PyQt5.QtWidgets import (
QAction, QMenu, QFrame
)
from novelwriter.core import ToHtml
from novelwriter.enum import nwItemType, nwDocAction, nwDocMode
from novelwriter.error import logException
from novelwriter.constants import nwUnicode
from novelwriter.core.tohtml import ToHtml
logger = logging.getLogger(__name__)

View File

@@ -39,10 +39,13 @@ from PyQt5.QtWidgets import (
QVBoxLayout, QWidget
)
from novelwriter.core import DocMerger, DocSplitter
from novelwriter.enum import nwDocMode, nwItemType, nwItemClass, nwItemLayout, nwAlert
from novelwriter.dialogs import GuiDocMerge, GuiDocSplit, GuiEditLabel, GuiProjectSettings
from novelwriter.constants import nwHeaders, nwUnicode, trConst, nwLabels
from novelwriter.core.coretools import DocMerger, DocSplitter
from novelwriter.dialogs.docmerge import GuiDocMerge
from novelwriter.dialogs.docsplit import GuiDocSplit
from novelwriter.dialogs.editlabel import GuiEditLabel
from novelwriter.dialogs.projsettings import GuiProjectSettings
logger = logging.getLogger(__name__)

View File

@@ -246,7 +246,7 @@ class GuiTheme:
self.statSaved = self._parseColour(confParser, cnfSec, "statussaved")
# Icons
self.iconCache.loadTheme(self.themeIcons)
self.iconCache.loadTheme(self.themeIcons or "typicons_light")
# Update Dependant Colours
backCol = self._guiPalette.window().color()

View File

@@ -38,19 +38,30 @@ from PyQt5.QtWidgets import (
QMessageBox, QDialog, QStackedWidget
)
from novelwriter.gui import (
GuiDocEditor, GuiDocViewDetails, GuiDocViewer, GuiItemDetails, GuiMainMenu,
GuiMainStatus, GuiNovelView, GuiOutlineView, GuiProjectView, GuiTheme,
GuiSideBar
)
from novelwriter.dialogs import (
GuiAbout, GuiPreferences, GuiProjectDetails, GuiProjectLoad,
GuiProjectSettings, GuiUpdates, GuiWordList
)
from novelwriter.tools import (
GuiBuildNovel, GuiLipsum, GuiProjectWizard, GuiWritingStats
)
from novelwriter.core import NWProject, ProjectBuilder
from novelwriter.gui.theme import GuiTheme
from novelwriter.gui.sidebar import GuiSideBar
from novelwriter.gui.outline import GuiOutlineView
from novelwriter.gui.mainmenu import GuiMainMenu
from novelwriter.gui.projtree import GuiProjectView
from novelwriter.gui.doceditor import GuiDocEditor
from novelwriter.gui.docviewer import GuiDocViewDetails, GuiDocViewer
from novelwriter.gui.noveltree import GuiNovelView
from novelwriter.gui.statusbar import GuiMainStatus
from novelwriter.gui.itemdetails import GuiItemDetails
from novelwriter.dialogs.about import GuiAbout
from novelwriter.dialogs.updates import GuiUpdates
from novelwriter.dialogs.projload import GuiProjectLoad
from novelwriter.dialogs.wordlist import GuiWordList
from novelwriter.dialogs.preferences import GuiPreferences
from novelwriter.dialogs.projdetails import GuiProjectDetails
from novelwriter.dialogs.projsettings import GuiProjectSettings
from novelwriter.tools.build import GuiBuildNovel
from novelwriter.tools.lipsum import GuiLipsum
from novelwriter.tools.projwizard import GuiProjectWizard
from novelwriter.tools.writingstats import GuiWritingStats
from novelwriter.core.project import NWProject
from novelwriter.core.coretools import ProjectBuilder
from novelwriter.enum import (
nwDocMode, nwItemType, nwItemClass, nwAlert, nwWidget, nwView
)

View File

@@ -1,32 +1,3 @@
"""
novelWriter – Tools Init
========================
This file is a part of novelWriter
Copyright 2018–2022, Veronica Berglyd Olsen
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
novelWriter – Tools Init File
"""
from novelwriter.tools.build import GuiBuildNovel
from novelwriter.tools.lipsum import GuiLipsum
from novelwriter.tools.projwizard import GuiProjectWizard
from novelwriter.tools.writingstats import GuiWritingStats
__all__ = [
"GuiBuildNovel",
"GuiLipsum",
"GuiProjectWizard",
"GuiWritingStats",
]

View File

@@ -43,12 +43,14 @@ from PyQt5.QtWidgets import (
)
from PyQt5.QtPrintSupport import QPrinter, QPrintPreviewDialog
from novelwriter.core import ToHtml, ToOdt, ToMarkdown
from novelwriter.enum import nwAlert, nwItemType, nwItemLayout, nwItemClass
from novelwriter.error import formatException, logException
from novelwriter.common import fuzzyTime, makeFileNameSafe
from novelwriter.custom import QSwitch
from novelwriter.constants import nwConst, nwFiles
from novelwriter.core.tomd import ToMarkdown
from novelwriter.core.toodt import ToOdt
from novelwriter.core.tohtml import ToHtml
logger = logging.getLogger(__name__)

View File

@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.0" hexVersion="0x020000f0" fileVersion="1.5" timeStamp="2022-11-28 17:12:35">
<project id="e2be99af-f9bf-4403-857a-c3d1ac25abea" saveCount="1458" autoCount="237" editTime="74191">
<novelWriterXML appVersion="2.0.2" hexVersion="0x020002f0" fileVersion="1.5" timeStamp="2022-12-01 23:33:10">
<project id="e2be99af-f9bf-4403-857a-c3d1ac25abea" saveCount="1463" autoCount="237" editTime="74319">
<name>Sample Project</name>
<title>Sample Project</title>
<author>Jane Smith</author>

View File

@@ -1146,7 +1146,7 @@ def makeWindowsEmbedded(sysArgs):
minimalZip = sysArgs[1]
if minimalZip is None:
print("Please provide the path to the minimal win pacage as an argument")
print("Please provide the path to the minimal win package as an argument")
sys.exit(1)
packVersion = os.path.basename(minimalZip).split("-")[1]

View File

@@ -25,9 +25,9 @@ from PyQt5.QtGui import QIcon
from tools import C, buildTestProject
from novelwriter.enum import nwItemClass, nwItemType, nwItemLayout
from novelwriter.core.item import NWItem
from novelwriter.core.project import NWProject
from novelwriter.enum import nwItemClass, nwItemType, nwItemLayout
@pytest.mark.core

View File

@@ -31,13 +31,15 @@ from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QDialog, QMessageBox, QInputDialog
from novelwriter.enum import nwItemType, nwView, nwWidget
from novelwriter.tools import GuiProjectWizard
from novelwriter.dialogs import GuiEditLabel, GuiAbout, GuiProjectLoad
from novelwriter.constants import nwFiles
from novelwriter.gui.outline import GuiOutlineView
from novelwriter.gui.projtree import GuiProjectTree
from novelwriter.gui.doceditor import GuiDocEditor
from novelwriter.gui.noveltree import GuiNovelView
from novelwriter.dialogs.about import GuiAbout
from novelwriter.dialogs.projload import GuiProjectLoad
from novelwriter.dialogs.editlabel import GuiEditLabel
from novelwriter.tools.projwizard import GuiProjectWizard
KEY_DELAY = 1

View File

@@ -26,14 +26,14 @@ from pathlib import Path
from configparser import ConfigParser
from mock import causeOSError
from novelwriter.constants import nwLabels
from novelwriter.enum import nwItemClass, nwItemLayout, nwItemType
from tools import writeFile
from PyQt5.QtGui import QIcon, QPalette, QPixmap
from PyQt5.QtWidgets import QApplication
from novelwriter.enum import nwItemClass, nwItemLayout, nwItemType
from novelwriter.config import Config
from novelwriter.constants import nwLabels
from novelwriter.gui.theme import GuiIcons, GuiTheme

View File

@@ -28,7 +28,7 @@ from tools import cmpFiles, getGuiItem
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QAction, QFileDialog
from novelwriter.tools import GuiBuildNovel
from novelwriter.tools.build import GuiBuildNovel
@pytest.mark.gui

View File

@@ -25,7 +25,7 @@ from tools import C, getGuiItem, buildTestProject
from PyQt5.QtWidgets import QAction
from novelwriter.tools import GuiLipsum
from novelwriter.tools.lipsum import GuiLipsum
@pytest.mark.gui

View File

@@ -28,8 +28,8 @@ from tools import getGuiItem, writeFile, buildTestProject
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QAction, QFileDialog
from novelwriter.tools import GuiWritingStats
from novelwriter.constants import nwFiles
from novelwriter.tools.writingstats import GuiWritingStats
@pytest.mark.gui

View File

@@ -158,7 +158,7 @@ def buildTestProject(theObject, projPath):
object as the parent.
"""
from novelwriter.enum import nwItemClass
from novelwriter.core import NWProject
from novelwriter.core.project import NWProject
if isinstance(theObject, NWProject):
theGUI = None