novelWriter 2.2b1__py3-none-any.whl → 2.2.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {novelWriter-2.2b1.dist-info → novelWriter-2.2.1.dist-info}/METADATA +3 -3
- {novelWriter-2.2b1.dist-info → novelWriter-2.2.1.dist-info}/RECORD +128 -114
- {novelWriter-2.2b1.dist-info → novelWriter-2.2.1.dist-info}/WHEEL +1 -1
- novelwriter/__init__.py +10 -5
- novelwriter/assets/i18n/nw_de_DE.qm +0 -0
- novelwriter/assets/i18n/nw_en_US.qm +0 -0
- novelwriter/assets/i18n/nw_es_419.qm +0 -0
- novelwriter/assets/i18n/nw_fr_FR.qm +0 -0
- novelwriter/assets/i18n/nw_it_IT.qm +0 -0
- novelwriter/assets/i18n/nw_ja_JP.qm +0 -0
- novelwriter/assets/i18n/nw_nb_NO.qm +0 -0
- novelwriter/assets/i18n/nw_zh_CN.qm +0 -0
- novelwriter/assets/i18n/project_de_DE.json +1 -0
- novelwriter/assets/i18n/project_en_GB.json +1 -0
- novelwriter/assets/i18n/project_en_US.json +1 -0
- novelwriter/assets/i18n/project_es_419.json +11 -0
- novelwriter/assets/i18n/project_fr_FR.json +11 -0
- novelwriter/assets/i18n/project_it_IT.json +11 -0
- novelwriter/assets/i18n/project_ja_JP.json +2 -1
- novelwriter/assets/i18n/project_nb_NO.json +1 -0
- novelwriter/assets/i18n/project_zh_CN.json +11 -0
- novelwriter/assets/icons/novelwriter.ico +0 -0
- novelwriter/assets/icons/typicons_dark/icons.conf +11 -3
- novelwriter/assets/icons/typicons_dark/nw_deco-h2-narrow.svg +4 -0
- novelwriter/assets/icons/typicons_dark/nw_deco-h3-narrow.svg +4 -0
- novelwriter/assets/icons/typicons_dark/nw_deco-h4-narrow.svg +4 -0
- novelwriter/assets/icons/typicons_dark/nw_deco-note.svg +4 -0
- novelwriter/assets/icons/typicons_dark/nw_panel.svg +4 -0
- novelwriter/assets/icons/typicons_dark/nw_tb-bold-md.svg +4 -0
- novelwriter/assets/icons/typicons_dark/nw_tb-bold.svg +3 -1
- novelwriter/assets/icons/typicons_dark/nw_tb-italic-md.svg +4 -0
- novelwriter/assets/icons/typicons_dark/nw_tb-italic.svg +3 -1
- novelwriter/assets/icons/typicons_dark/nw_tb-strike-md.svg +4 -0
- novelwriter/assets/icons/typicons_dark/nw_tb-strike.svg +3 -1
- novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg +4 -2
- novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg +4 -2
- novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg +4 -2
- novelwriter/assets/icons/typicons_dark/typ_eye.svg +4 -0
- novelwriter/assets/icons/typicons_light/icons.conf +11 -3
- novelwriter/assets/icons/typicons_light/nw_deco-h2-narrow.svg +4 -0
- novelwriter/assets/icons/typicons_light/nw_deco-h3-narrow.svg +4 -0
- novelwriter/assets/icons/typicons_light/nw_deco-h4-narrow.svg +4 -0
- novelwriter/assets/icons/typicons_light/nw_deco-note.svg +4 -0
- novelwriter/assets/icons/typicons_light/nw_panel.svg +4 -0
- novelwriter/assets/icons/typicons_light/nw_tb-bold-md.svg +4 -0
- novelwriter/assets/icons/typicons_light/nw_tb-bold.svg +3 -1
- novelwriter/assets/icons/typicons_light/nw_tb-italic-md.svg +4 -0
- novelwriter/assets/icons/typicons_light/nw_tb-italic.svg +3 -1
- novelwriter/assets/icons/typicons_light/nw_tb-strike-md.svg +4 -0
- novelwriter/assets/icons/typicons_light/nw_tb-strike.svg +3 -1
- novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg +4 -2
- novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg +4 -2
- novelwriter/assets/icons/typicons_light/nw_tb-underline.svg +4 -2
- novelwriter/assets/icons/typicons_light/typ_eye.svg +4 -0
- novelwriter/assets/icons/x-novelwriter-project.ico +0 -0
- novelwriter/assets/manual.pdf +0 -0
- novelwriter/assets/sample.zip +0 -0
- novelwriter/assets/text/release_notes.htm +50 -7
- novelwriter/common.py +35 -27
- novelwriter/config.py +13 -28
- novelwriter/constants.py +21 -4
- novelwriter/core/buildsettings.py +2 -2
- novelwriter/core/coretools.py +8 -2
- novelwriter/core/docbuild.py +1 -1
- novelwriter/core/document.py +1 -1
- novelwriter/core/index.py +102 -36
- novelwriter/core/item.py +2 -2
- novelwriter/core/options.py +6 -3
- novelwriter/core/project.py +5 -5
- novelwriter/core/projectdata.py +3 -3
- novelwriter/core/projectxml.py +1 -1
- novelwriter/core/sessions.py +2 -2
- novelwriter/core/spellcheck.py +4 -3
- novelwriter/core/status.py +3 -3
- novelwriter/core/storage.py +1 -1
- novelwriter/core/tohtml.py +11 -5
- novelwriter/core/tokenizer.py +28 -21
- novelwriter/core/tomd.py +6 -2
- novelwriter/core/toodt.py +12 -5
- novelwriter/core/tree.py +2 -2
- novelwriter/dialogs/about.py +30 -31
- novelwriter/dialogs/docmerge.py +24 -15
- novelwriter/dialogs/docsplit.py +27 -16
- novelwriter/dialogs/editlabel.py +19 -7
- novelwriter/dialogs/preferences.py +116 -131
- novelwriter/dialogs/projdetails.py +29 -36
- novelwriter/dialogs/projload.py +32 -36
- novelwriter/dialogs/projsettings.py +20 -15
- novelwriter/dialogs/quotes.py +32 -25
- novelwriter/dialogs/updates.py +17 -16
- novelwriter/dialogs/wordlist.py +34 -21
- novelwriter/enum.py +19 -8
- novelwriter/error.py +1 -1
- novelwriter/extensions/circularprogress.py +1 -1
- novelwriter/extensions/configlayout.py +3 -15
- novelwriter/extensions/{wheeleventfilter.py → eventfilters.py} +15 -5
- novelwriter/extensions/novelselector.py +1 -1
- novelwriter/extensions/pageddialog.py +1 -1
- novelwriter/extensions/pagedsidebar.py +2 -5
- novelwriter/extensions/simpleprogress.py +8 -9
- novelwriter/extensions/statusled.py +1 -1
- novelwriter/extensions/switch.py +4 -4
- novelwriter/extensions/switchbox.py +1 -6
- novelwriter/gui/doceditor.py +349 -236
- novelwriter/gui/dochighlight.py +10 -11
- novelwriter/gui/docviewer.py +158 -360
- novelwriter/gui/docviewerpanel.py +502 -0
- novelwriter/gui/editordocument.py +4 -4
- novelwriter/gui/itemdetails.py +2 -2
- novelwriter/gui/mainmenu.py +50 -36
- novelwriter/gui/noveltree.py +44 -53
- novelwriter/gui/outline.py +12 -7
- novelwriter/gui/projtree.py +465 -381
- novelwriter/gui/sidebar.py +9 -7
- novelwriter/gui/statusbar.py +48 -5
- novelwriter/gui/theme.py +26 -8
- novelwriter/guimain.py +212 -208
- novelwriter/shared.py +76 -30
- novelwriter/tools/dictionaries.py +268 -0
- novelwriter/tools/lipsum.py +34 -28
- novelwriter/tools/manusbuild.py +20 -10
- novelwriter/tools/manuscript.py +20 -27
- novelwriter/tools/manussettings.py +2 -4
- novelwriter/tools/projwizard.py +3 -3
- novelwriter/tools/writingstats.py +18 -5
- novelwriter/assets/icons/typicons_dark/nw_tb-markdown.svg +0 -8
- novelwriter/assets/icons/typicons_dark/nw_tb-shortcode.svg +0 -8
- novelwriter/assets/icons/typicons_dark/typ_at.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_tb-markdown.svg +0 -8
- novelwriter/assets/icons/typicons_light/nw_tb-shortcode.svg +0 -8
- novelwriter/assets/icons/typicons_light/typ_at.svg +0 -4
- {novelWriter-2.2b1.dist-info → novelWriter-2.2.1.dist-info}/LICENSE.md +0 -0
- {novelWriter-2.2b1.dist-info → novelWriter-2.2.1.dist-info}/entry_points.txt +0 -0
- {novelWriter-2.2b1.dist-info → novelWriter-2.2.1.dist-info}/top_level.txt +0 -0
novelwriter/dialogs/docsplit.py
CHANGED
@@ -3,11 +3,11 @@ novelWriter – GUI Doc Split Dialog
|
|
3
3
|
==================================
|
4
4
|
|
5
5
|
File History:
|
6
|
-
Created: 2020-02-01 [0.4.3]
|
7
|
-
Rewritten: 2022-10-12 [2.0rc1]
|
6
|
+
Created: 2020-02-01 [0.4.3] GuiDocSplit
|
7
|
+
Rewritten: 2022-10-12 [2.0rc1] GuiDocSplit
|
8
8
|
|
9
9
|
This file is a part of novelWriter
|
10
|
-
Copyright 2018–
|
10
|
+
Copyright 2018–2024, Veronica Berglyd Olsen
|
11
11
|
|
12
12
|
This program is free software: you can redistribute it and/or modify
|
13
13
|
it under the terms of the GNU General Public License as published by
|
@@ -26,10 +26,11 @@ from __future__ import annotations
|
|
26
26
|
|
27
27
|
import logging
|
28
28
|
|
29
|
-
from PyQt5.
|
29
|
+
from PyQt5.QtGui import QCloseEvent
|
30
|
+
from PyQt5.QtCore import Qt, pyqtSlot
|
30
31
|
from PyQt5.QtWidgets import (
|
31
|
-
|
32
|
-
|
32
|
+
QAbstractItemView, QComboBox, QDialog, QDialogButtonBox, QGridLayout,
|
33
|
+
QLabel, QListWidget, QListWidgetItem, QVBoxLayout, QWidget
|
33
34
|
)
|
34
35
|
|
35
36
|
from novelwriter import CONFIG, SHARED
|
@@ -45,7 +46,7 @@ class GuiDocSplit(QDialog):
|
|
45
46
|
LEVEL_ROLE = Qt.ItemDataRole.UserRole + 1
|
46
47
|
LABEL_ROLE = Qt.ItemDataRole.UserRole + 2
|
47
48
|
|
48
|
-
def __init__(self, parent, sHandle):
|
49
|
+
def __init__(self, parent: QWidget, sHandle: str) -> None:
|
49
50
|
super().__init__(parent=parent)
|
50
51
|
|
51
52
|
logger.debug("Create: GuiDocSplit")
|
@@ -138,11 +139,11 @@ class GuiDocSplit(QDialog):
|
|
138
139
|
|
139
140
|
return
|
140
141
|
|
141
|
-
def __del__(self): # pragma: no cover
|
142
|
+
def __del__(self) -> None: # pragma: no cover
|
142
143
|
logger.debug("Delete: GuiDocSplit")
|
143
144
|
return
|
144
145
|
|
145
|
-
def getData(self):
|
146
|
+
def getData(self) -> tuple[dict, list]:
|
146
147
|
"""Return the user's choices. Also save the users options for
|
147
148
|
the next time the dialog is used.
|
148
149
|
"""
|
@@ -167,6 +168,7 @@ class GuiDocSplit(QDialog):
|
|
167
168
|
self._data["docHierarchy"] = docHierarchy
|
168
169
|
self._data["moveToTrash"] = moveToTrash
|
169
170
|
|
171
|
+
logger.debug("Saving State: GuiDocSplit")
|
170
172
|
pOptions = SHARED.project.options
|
171
173
|
pOptions.setValue("GuiDocSplit", "spLevel", spLevel)
|
172
174
|
pOptions.setValue("GuiDocSplit", "intoFolder", intoFolder)
|
@@ -175,12 +177,22 @@ class GuiDocSplit(QDialog):
|
|
175
177
|
return self._data, self._text
|
176
178
|
|
177
179
|
##
|
178
|
-
#
|
180
|
+
# Events
|
179
181
|
##
|
180
182
|
|
181
|
-
def
|
182
|
-
"""
|
183
|
-
|
183
|
+
def closeEvent(self, event: QCloseEvent) -> None:
|
184
|
+
"""Capture the close event and perform cleanup."""
|
185
|
+
event.accept()
|
186
|
+
self.deleteLater()
|
187
|
+
return
|
188
|
+
|
189
|
+
##
|
190
|
+
# Private Slots
|
191
|
+
##
|
192
|
+
|
193
|
+
@pyqtSlot()
|
194
|
+
def _reloadList(self) -> None:
|
195
|
+
"""Reload the content of the list box."""
|
184
196
|
sHandle = self._data.get("sHandle", None)
|
185
197
|
self._loadContent(sHandle)
|
186
198
|
return
|
@@ -189,9 +201,8 @@ class GuiDocSplit(QDialog):
|
|
189
201
|
# Internal Functions
|
190
202
|
##
|
191
203
|
|
192
|
-
def _loadContent(self, sHandle):
|
193
|
-
"""Load content from a given source item.
|
194
|
-
"""
|
204
|
+
def _loadContent(self, sHandle: str) -> None:
|
205
|
+
"""Load content from a given source item."""
|
195
206
|
self._data = {}
|
196
207
|
self._data["sHandle"] = sHandle
|
197
208
|
|
novelwriter/dialogs/editlabel.py
CHANGED
@@ -3,10 +3,10 @@ novelWriter – Edit Label Dialog
|
|
3
3
|
===============================
|
4
4
|
|
5
5
|
File History:
|
6
|
-
Created: 2022-06-11 [2.0rc1]
|
6
|
+
Created: 2022-06-11 [2.0rc1] GuiEditLabel
|
7
7
|
|
8
8
|
This file is a part of novelWriter
|
9
|
-
Copyright 2018–
|
9
|
+
Copyright 2018–2024, Veronica Berglyd Olsen
|
10
10
|
|
11
11
|
This program is free software: you can redistribute it and/or modify
|
12
12
|
it under the terms of the GNU General Public License as published by
|
@@ -26,7 +26,8 @@ from __future__ import annotations
|
|
26
26
|
import logging
|
27
27
|
|
28
28
|
from PyQt5.QtWidgets import (
|
29
|
-
QDialog,
|
29
|
+
QDialog, QDialogButtonBox, QHBoxLayout, QLabel, QLineEdit, QVBoxLayout,
|
30
|
+
QWidget
|
30
31
|
)
|
31
32
|
|
32
33
|
from novelwriter import CONFIG
|
@@ -36,9 +37,10 @@ logger = logging.getLogger(__name__)
|
|
36
37
|
|
37
38
|
class GuiEditLabel(QDialog):
|
38
39
|
|
39
|
-
def __init__(self, parent, text=""):
|
40
|
+
def __init__(self, parent: QWidget, text: str = "") -> None:
|
40
41
|
super().__init__(parent=parent)
|
41
42
|
|
43
|
+
logger.debug("Create: GuiEditLabel")
|
42
44
|
self.setObjectName("GuiEditLabel")
|
43
45
|
self.setWindowTitle(self.tr("Item Label"))
|
44
46
|
|
@@ -70,16 +72,26 @@ class GuiEditLabel(QDialog):
|
|
70
72
|
|
71
73
|
self.setLayout(self.outerBox)
|
72
74
|
|
75
|
+
logger.debug("Ready: GuiEditLabel")
|
76
|
+
|
77
|
+
return
|
78
|
+
|
79
|
+
def __del__(self) -> None: # pragma: no cover
|
80
|
+
logger.debug("Delete: GuiEditLabel")
|
73
81
|
return
|
74
82
|
|
75
83
|
@property
|
76
|
-
def itemLabel(self):
|
84
|
+
def itemLabel(self) -> str:
|
77
85
|
return self.labelValue.text()
|
78
86
|
|
79
87
|
@classmethod
|
80
|
-
def getLabel(cls, parent, text):
|
88
|
+
def getLabel(cls, parent: QWidget, text: str) -> tuple[str, bool]:
|
89
|
+
"""Pop the dialog and return the result."""
|
81
90
|
cls = GuiEditLabel(parent, text=text)
|
82
91
|
cls.exec_()
|
83
|
-
|
92
|
+
label = cls.itemLabel
|
93
|
+
accepted = cls.result() == QDialog.Accepted
|
94
|
+
cls.deleteLater()
|
95
|
+
return label, accepted
|
84
96
|
|
85
97
|
# END Class GuiEditLabel
|