novelWriter 2.5.2__py3-none-any.whl → 2.6__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.5.2.dist-info → novelWriter-2.6.dist-info}/METADATA +5 -4
- {novelWriter-2.5.2.dist-info → novelWriter-2.6.dist-info}/RECORD +126 -105
- {novelWriter-2.5.2.dist-info → novelWriter-2.6.dist-info}/WHEEL +1 -1
- novelwriter/__init__.py +50 -11
- 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_nl_NL.qm +0 -0
- novelwriter/assets/i18n/nw_pl_PL.qm +0 -0
- novelwriter/assets/i18n/nw_pt_BR.qm +0 -0
- novelwriter/assets/i18n/nw_ru_RU.qm +0 -0
- novelwriter/assets/i18n/nw_zh_CN.qm +0 -0
- novelwriter/assets/i18n/project_de_DE.json +4 -2
- novelwriter/assets/i18n/project_en_GB.json +1 -0
- novelwriter/assets/i18n/project_en_US.json +2 -0
- novelwriter/assets/i18n/project_it_IT.json +2 -0
- novelwriter/assets/i18n/project_ja_JP.json +2 -0
- novelwriter/assets/i18n/project_nb_NO.json +2 -0
- novelwriter/assets/i18n/project_nl_NL.json +2 -0
- novelwriter/assets/i18n/project_pl_PL.json +2 -0
- novelwriter/assets/i18n/project_pt_BR.json +2 -0
- novelwriter/assets/i18n/project_ru_RU.json +11 -0
- novelwriter/assets/i18n/project_zh_CN.json +2 -0
- novelwriter/assets/icons/typicons_dark/icons.conf +8 -0
- novelwriter/assets/icons/typicons_dark/mixed_copy.svg +4 -0
- novelwriter/assets/icons/typicons_dark/mixed_margin-bottom.svg +6 -0
- novelwriter/assets/icons/typicons_dark/mixed_margin-left.svg +6 -0
- novelwriter/assets/icons/typicons_dark/mixed_margin-right.svg +6 -0
- novelwriter/assets/icons/typicons_dark/mixed_margin-top.svg +6 -0
- novelwriter/assets/icons/typicons_dark/mixed_size-height.svg +6 -0
- novelwriter/assets/icons/typicons_dark/mixed_size-width.svg +6 -0
- novelwriter/assets/icons/typicons_dark/nw_toolbar.svg +5 -0
- novelwriter/assets/icons/typicons_light/icons.conf +8 -0
- novelwriter/assets/icons/typicons_light/mixed_copy.svg +4 -0
- novelwriter/assets/icons/typicons_light/mixed_margin-bottom.svg +6 -0
- novelwriter/assets/icons/typicons_light/mixed_margin-left.svg +6 -0
- novelwriter/assets/icons/typicons_light/mixed_margin-right.svg +6 -0
- novelwriter/assets/icons/typicons_light/mixed_margin-top.svg +6 -0
- novelwriter/assets/icons/typicons_light/mixed_size-height.svg +6 -0
- novelwriter/assets/icons/typicons_light/mixed_size-width.svg +6 -0
- novelwriter/assets/icons/typicons_light/nw_toolbar.svg +5 -0
- novelwriter/assets/manual.pdf +0 -0
- novelwriter/assets/sample.zip +0 -0
- novelwriter/assets/text/credits_en.htm +1 -0
- novelwriter/assets/themes/default_light.conf +2 -2
- novelwriter/common.py +101 -3
- novelwriter/config.py +30 -17
- novelwriter/constants.py +189 -81
- novelwriter/core/buildsettings.py +74 -40
- novelwriter/core/coretools.py +146 -148
- novelwriter/core/docbuild.py +133 -171
- novelwriter/core/document.py +1 -1
- novelwriter/core/index.py +39 -38
- novelwriter/core/item.py +42 -9
- novelwriter/core/itemmodel.py +518 -0
- novelwriter/core/options.py +5 -2
- novelwriter/core/project.py +68 -90
- novelwriter/core/projectdata.py +8 -2
- novelwriter/core/projectxml.py +1 -1
- novelwriter/core/sessions.py +1 -1
- novelwriter/core/spellcheck.py +10 -15
- novelwriter/core/status.py +24 -8
- novelwriter/core/storage.py +1 -1
- novelwriter/core/tree.py +269 -288
- novelwriter/dialogs/about.py +1 -1
- novelwriter/dialogs/docmerge.py +8 -18
- novelwriter/dialogs/docsplit.py +1 -1
- novelwriter/dialogs/editlabel.py +1 -1
- novelwriter/dialogs/preferences.py +47 -34
- novelwriter/dialogs/projectsettings.py +149 -99
- novelwriter/dialogs/quotes.py +1 -1
- novelwriter/dialogs/wordlist.py +11 -10
- novelwriter/enum.py +37 -24
- novelwriter/error.py +2 -2
- novelwriter/extensions/configlayout.py +28 -13
- novelwriter/extensions/eventfilters.py +1 -1
- novelwriter/extensions/modified.py +30 -6
- novelwriter/extensions/novelselector.py +4 -3
- novelwriter/extensions/pagedsidebar.py +9 -9
- novelwriter/extensions/progressbars.py +4 -4
- novelwriter/extensions/statusled.py +3 -3
- novelwriter/extensions/switch.py +3 -3
- novelwriter/extensions/switchbox.py +1 -1
- novelwriter/extensions/versioninfo.py +1 -1
- novelwriter/formats/shared.py +156 -0
- novelwriter/formats/todocx.py +1191 -0
- novelwriter/formats/tohtml.py +454 -0
- novelwriter/{core → formats}/tokenizer.py +497 -495
- novelwriter/formats/tomarkdown.py +218 -0
- novelwriter/{core → formats}/toodt.py +312 -433
- novelwriter/formats/toqdoc.py +486 -0
- novelwriter/formats/toraw.py +91 -0
- novelwriter/gui/doceditor.py +347 -287
- novelwriter/gui/dochighlight.py +97 -85
- novelwriter/gui/docviewer.py +90 -33
- novelwriter/gui/docviewerpanel.py +18 -26
- novelwriter/gui/editordocument.py +18 -3
- novelwriter/gui/itemdetails.py +27 -29
- novelwriter/gui/mainmenu.py +130 -64
- novelwriter/gui/noveltree.py +46 -48
- novelwriter/gui/outline.py +202 -256
- novelwriter/gui/projtree.py +590 -1238
- novelwriter/gui/search.py +11 -19
- novelwriter/gui/sidebar.py +8 -7
- novelwriter/gui/statusbar.py +20 -3
- novelwriter/gui/theme.py +11 -6
- novelwriter/guimain.py +101 -201
- novelwriter/shared.py +67 -28
- novelwriter/text/counting.py +3 -1
- novelwriter/text/patterns.py +169 -61
- novelwriter/tools/dictionaries.py +3 -3
- novelwriter/tools/lipsum.py +1 -1
- novelwriter/tools/manusbuild.py +15 -13
- novelwriter/tools/manuscript.py +121 -79
- novelwriter/tools/manussettings.py +424 -291
- novelwriter/tools/noveldetails.py +1 -1
- novelwriter/tools/welcome.py +6 -6
- novelwriter/tools/writingstats.py +4 -4
- novelwriter/types.py +25 -9
- novelwriter/core/tohtml.py +0 -530
- novelwriter/core/tomarkdown.py +0 -252
- novelwriter/core/toqdoc.py +0 -419
- {novelWriter-2.5.2.dist-info → novelWriter-2.6.dist-info}/LICENSE.md +0 -0
- {novelWriter-2.5.2.dist-info → novelWriter-2.6.dist-info}/entry_points.txt +0 -0
- {novelWriter-2.5.2.dist-info → novelWriter-2.6.dist-info}/top_level.txt +0 -0
@@ -6,7 +6,7 @@ File History:
|
|
6
6
|
Created: 2024-01-18 [2.3b1] GuiNovelDetails
|
7
7
|
|
8
8
|
This file is a part of novelWriter
|
9
|
-
Copyright
|
9
|
+
Copyright (C) 2024 Veronica Berglyd Olsen and novelWriter contributors
|
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
|
novelwriter/tools/welcome.py
CHANGED
@@ -6,7 +6,7 @@ File History:
|
|
6
6
|
Created: 2023-12-14 [2.3b1] GuiWelcome
|
7
7
|
|
8
8
|
This file is a part of novelWriter
|
9
|
-
Copyright
|
9
|
+
Copyright (C) 2023 Veronica Berglyd Olsen and novelWriter contributors
|
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
|
@@ -49,7 +49,7 @@ from novelwriter.extensions.configlayout import NWrappedWidgetBox
|
|
49
49
|
from novelwriter.extensions.modified import NDialog, NIconToolButton, NSpinBox
|
50
50
|
from novelwriter.extensions.switch import NSwitch
|
51
51
|
from novelwriter.extensions.versioninfo import VersionInfoWidget
|
52
|
-
from novelwriter.types import QtAlignLeft, QtAlignRightTop, QtSelected
|
52
|
+
from novelwriter.types import QtAlignLeft, QtAlignRightTop, QtScrollAsNeeded, QtSelected
|
53
53
|
|
54
54
|
logger = logging.getLogger(__name__)
|
55
55
|
|
@@ -297,7 +297,7 @@ class _OpenProjectPage(QWidget):
|
|
297
297
|
self.selectedPath.addAction(self.aMissing, QLineEdit.ActionPosition.TrailingPosition)
|
298
298
|
|
299
299
|
self.keyDelete = QShortcut(self)
|
300
|
-
self.keyDelete.setKey(
|
300
|
+
self.keyDelete.setKey("Del")
|
301
301
|
self.keyDelete.activated.connect(self._deleteSelectedItem)
|
302
302
|
|
303
303
|
# Assemble
|
@@ -376,7 +376,7 @@ class _OpenProjectPage(QWidget):
|
|
376
376
|
action = ctxMenu.addAction(self.tr("Remove Project"))
|
377
377
|
action.triggered.connect(self._deleteSelectedItem)
|
378
378
|
ctxMenu.exec(self.mapToGlobal(pos))
|
379
|
-
ctxMenu.
|
379
|
+
ctxMenu.setParent(None)
|
380
380
|
return
|
381
381
|
|
382
382
|
##
|
@@ -501,8 +501,8 @@ class _NewProjectPage(QWidget):
|
|
501
501
|
self.scrollArea = QScrollArea(self)
|
502
502
|
self.scrollArea.setWidget(self.projectForm)
|
503
503
|
self.scrollArea.setWidgetResizable(True)
|
504
|
-
self.scrollArea.setHorizontalScrollBarPolicy(
|
505
|
-
self.scrollArea.setVerticalScrollBarPolicy(
|
504
|
+
self.scrollArea.setHorizontalScrollBarPolicy(QtScrollAsNeeded)
|
505
|
+
self.scrollArea.setVerticalScrollBarPolicy(QtScrollAsNeeded)
|
506
506
|
|
507
507
|
self.enterForm = self.projectForm.enterForm
|
508
508
|
|
@@ -6,7 +6,7 @@ File History:
|
|
6
6
|
Created: 2019-10-20 [0.3.0] GuiWritingStats
|
7
7
|
|
8
8
|
This file is a part of novelWriter
|
9
|
-
Copyright
|
9
|
+
Copyright (C) 2019 Veronica Berglyd Olsen and novelWriter contributors
|
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
|
@@ -38,7 +38,7 @@ from PyQt5.QtWidgets import (
|
|
38
38
|
)
|
39
39
|
|
40
40
|
from novelwriter import CONFIG, SHARED
|
41
|
-
from novelwriter.common import checkInt, checkIntTuple, formatTime, minmax
|
41
|
+
from novelwriter.common import checkInt, checkIntTuple, formatTime, minmax, qtLambda
|
42
42
|
from novelwriter.constants import nwConst
|
43
43
|
from novelwriter.error import formatException
|
44
44
|
from novelwriter.extensions.modified import NToolDialog
|
@@ -277,11 +277,11 @@ class GuiWritingStats(NToolDialog):
|
|
277
277
|
self.btnSave.setMenu(self.saveMenu)
|
278
278
|
|
279
279
|
self.saveJSON = QAction(self.tr("JSON Data File (.json)"), self)
|
280
|
-
self.saveJSON.triggered.connect(
|
280
|
+
self.saveJSON.triggered.connect(qtLambda(self._saveData, self.FMT_JSON))
|
281
281
|
self.saveMenu.addAction(self.saveJSON)
|
282
282
|
|
283
283
|
self.saveCSV = QAction(self.tr("CSV Data File (.csv)"), self)
|
284
|
-
self.saveCSV.triggered.connect(
|
284
|
+
self.saveCSV.triggered.connect(qtLambda(self._saveData, self.FMT_CSV))
|
285
285
|
self.saveMenu.addAction(self.saveCSV)
|
286
286
|
|
287
287
|
# Assemble
|
novelwriter/types.py
CHANGED
@@ -6,7 +6,7 @@ File History:
|
|
6
6
|
Created: 2024-04-01 [2.4rc1]
|
7
7
|
|
8
8
|
This file is a part of novelWriter
|
9
|
-
Copyright
|
9
|
+
Copyright (C) 2024 Veronica Berglyd Olsen and novelWriter contributors
|
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
|
@@ -23,9 +23,12 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
23
23
|
"""
|
24
24
|
from __future__ import annotations
|
25
25
|
|
26
|
-
from PyQt5.QtCore import
|
27
|
-
from PyQt5.QtGui import
|
28
|
-
|
26
|
+
from PyQt5.QtCore import Qt
|
27
|
+
from PyQt5.QtGui import (
|
28
|
+
QColor, QFont, QPainter, QTextBlockFormat, QTextCharFormat, QTextCursor,
|
29
|
+
QTextFormat
|
30
|
+
)
|
31
|
+
from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QHeaderView, QSizePolicy, QStyle
|
29
32
|
|
30
33
|
# Qt Alignment Flags
|
31
34
|
|
@@ -48,11 +51,13 @@ QtVAlignNormal = QTextCharFormat.VerticalAlignment.AlignNormal
|
|
48
51
|
QtVAlignSub = QTextCharFormat.VerticalAlignment.AlignSubScript
|
49
52
|
QtVAlignSuper = QTextCharFormat.VerticalAlignment.AlignSuperScript
|
50
53
|
|
51
|
-
# Qt
|
54
|
+
# Qt Text Formats
|
52
55
|
|
53
56
|
QtPageBreakBefore = QTextFormat.PageBreakFlag.PageBreak_AlwaysBefore
|
54
57
|
QtPageBreakAfter = QTextFormat.PageBreakFlag.PageBreak_AlwaysAfter
|
55
58
|
|
59
|
+
QtPropLineHeight = QTextBlockFormat.LineHeightTypes.ProportionalHeight
|
60
|
+
|
56
61
|
# Qt Painter Types
|
57
62
|
|
58
63
|
QtTransparent = QColor(0, 0, 0, 0)
|
@@ -61,10 +66,14 @@ QtNoBrush = Qt.BrushStyle.NoBrush
|
|
61
66
|
QtNoPen = Qt.PenStyle.NoPen
|
62
67
|
QtRoundCap = Qt.PenCapStyle.RoundCap
|
63
68
|
QtSolidLine = Qt.PenStyle.SolidLine
|
64
|
-
|
69
|
+
QtPaintAntiAlias = QPainter.RenderHint.Antialiasing
|
65
70
|
QtMouseOver = QStyle.StateFlag.State_MouseOver
|
66
71
|
QtSelected = QStyle.StateFlag.State_Selected
|
67
72
|
|
73
|
+
# Qt Colour Types
|
74
|
+
|
75
|
+
QtHexRgb = QColor.NameFormat.HexRgb
|
76
|
+
|
68
77
|
# Qt Tree and Table Types
|
69
78
|
|
70
79
|
QtDecoration = Qt.ItemDataRole.DecorationRole
|
@@ -110,9 +119,16 @@ QtSizeIgnored = QSizePolicy.Policy.Ignored
|
|
110
119
|
QtSizeMinimum = QSizePolicy.Policy.Minimum
|
111
120
|
QtSizeMinimumExpanding = QSizePolicy.Policy.MinimumExpanding
|
112
121
|
|
113
|
-
#
|
122
|
+
# Resize Mode
|
123
|
+
|
124
|
+
QtHeaderStretch = QHeaderView.ResizeMode.Stretch
|
125
|
+
QtHeaderToContents = QHeaderView.ResizeMode.ResizeToContents
|
126
|
+
QtHeaderFixed = QHeaderView.ResizeMode.Fixed
|
127
|
+
|
128
|
+
# Scroll Bar Policy
|
114
129
|
|
115
|
-
|
130
|
+
QtScrollAlwaysOff = Qt.ScrollBarPolicy.ScrollBarAlwaysOff
|
131
|
+
QtScrollAsNeeded = Qt.ScrollBarPolicy.ScrollBarAsNeeded
|
116
132
|
|
117
133
|
# Maps
|
118
134
|
|
@@ -128,7 +144,7 @@ FONT_WEIGHTS: dict[int, int] = {
|
|
128
144
|
QFont.Weight.Black: 900,
|
129
145
|
}
|
130
146
|
|
131
|
-
FONT_STYLE: dict[
|
147
|
+
FONT_STYLE: dict[QFont.Style, str] = {
|
132
148
|
QFont.Style.StyleNormal: "normal",
|
133
149
|
QFont.Style.StyleItalic: "italic",
|
134
150
|
QFont.Style.StyleOblique: "oblique",
|