novelWriter 2.4b1__py3-none-any.whl → 2.4rc1__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.4b1.dist-info → novelWriter-2.4rc1.dist-info}/METADATA +5 -6
- {novelWriter-2.4b1.dist-info → novelWriter-2.4rc1.dist-info}/RECORD +62 -66
- novelwriter/__init__.py +5 -5
- novelwriter/assets/icons/none.svg +4 -0
- novelwriter/assets/icons/typicons_dark/icons.conf +2 -2
- novelwriter/assets/icons/typicons_dark/typ_unfold-hidden.svg +4 -0
- novelwriter/assets/icons/typicons_dark/typ_unfold-visible.svg +4 -0
- novelwriter/assets/icons/typicons_light/icons.conf +2 -2
- novelwriter/assets/icons/typicons_light/typ_unfold-hidden.svg +4 -0
- novelwriter/assets/icons/typicons_light/typ_unfold-visible.svg +4 -0
- novelwriter/assets/manual.pdf +0 -0
- novelwriter/assets/sample.zip +0 -0
- novelwriter/common.py +6 -1
- novelwriter/config.py +8 -4
- novelwriter/core/coretools.py +21 -22
- novelwriter/core/status.py +3 -2
- novelwriter/core/toodt.py +332 -355
- novelwriter/dialogs/about.py +9 -11
- novelwriter/dialogs/docmerge.py +17 -14
- novelwriter/dialogs/docsplit.py +14 -12
- novelwriter/dialogs/editlabel.py +5 -4
- novelwriter/dialogs/preferences.py +28 -33
- novelwriter/dialogs/projectsettings.py +29 -26
- novelwriter/dialogs/quotes.py +10 -9
- novelwriter/dialogs/wordlist.py +15 -12
- novelwriter/error.py +13 -11
- novelwriter/extensions/circularprogress.py +12 -8
- novelwriter/extensions/configlayout.py +1 -3
- novelwriter/extensions/modified.py +33 -2
- novelwriter/extensions/pagedsidebar.py +16 -14
- novelwriter/extensions/simpleprogress.py +3 -1
- novelwriter/extensions/statusled.py +3 -1
- novelwriter/extensions/switch.py +10 -9
- novelwriter/extensions/switchbox.py +14 -13
- novelwriter/gui/doceditor.py +182 -225
- novelwriter/gui/dochighlight.py +4 -4
- novelwriter/gui/docviewer.py +53 -57
- novelwriter/gui/docviewerpanel.py +16 -13
- novelwriter/gui/editordocument.py +4 -4
- novelwriter/gui/itemdetails.py +45 -48
- novelwriter/gui/noveltree.py +22 -20
- novelwriter/gui/outline.py +87 -88
- novelwriter/gui/projtree.py +31 -29
- novelwriter/gui/search.py +75 -29
- novelwriter/gui/sidebar.py +24 -28
- novelwriter/gui/statusbar.py +14 -14
- novelwriter/gui/theme.py +47 -35
- novelwriter/guimain.py +35 -31
- novelwriter/shared.py +5 -5
- novelwriter/tools/dictionaries.py +13 -12
- novelwriter/tools/lipsum.py +20 -17
- novelwriter/tools/manusbuild.py +35 -27
- novelwriter/tools/manuscript.py +68 -73
- novelwriter/tools/manussettings.py +68 -73
- novelwriter/tools/noveldetails.py +20 -18
- novelwriter/tools/welcome.py +47 -43
- novelwriter/tools/writingstats.py +61 -55
- novelwriter/types.py +90 -0
- novelwriter/assets/icons/typicons_dark/typ_arrow-down.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_arrow-right.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_arrow-down.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_arrow-right.svg +0 -4
- novelwriter/core/__init__.py +0 -3
- novelwriter/dialogs/__init__.py +0 -3
- novelwriter/extensions/__init__.py +0 -3
- novelwriter/gui/__init__.py +0 -3
- novelwriter/text/__init__.py +0 -3
- novelwriter/tools/__init__.py +0 -3
- {novelWriter-2.4b1.dist-info → novelWriter-2.4rc1.dist-info}/LICENSE.md +0 -0
- {novelWriter-2.4b1.dist-info → novelWriter-2.4rc1.dist-info}/WHEEL +0 -0
- {novelWriter-2.4b1.dist-info → novelWriter-2.4rc1.dist-info}/entry_points.txt +0 -0
- {novelWriter-2.4b1.dist-info → novelWriter-2.4rc1.dist-info}/top_level.txt +0 -0
@@ -1,14 +1,13 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: novelWriter
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.4rc1
|
4
4
|
Summary: A markdown-like text editor for planning and writing novels
|
5
|
-
|
6
|
-
Author: Veronica Berglyd Olsen
|
7
|
-
Author-email: code@vkbo.net
|
5
|
+
Author-email: Veronica Berglyd Olsen <code@vkbo.net>
|
8
6
|
License: GNU General Public License v3
|
9
|
-
Project-URL:
|
7
|
+
Project-URL: Homepage, https://novelwriter.io
|
10
8
|
Project-URL: Documentation, https://docs.novelwriter.io
|
11
|
-
Project-URL:
|
9
|
+
Project-URL: Repository, https://github.com/vkbo/novelWriter
|
10
|
+
Project-URL: Issues, https://github.com/vkbo/novelWriter/issues
|
12
11
|
Classifier: Programming Language :: Python :: 3 :: Only
|
13
12
|
Classifier: Programming Language :: Python :: 3.8
|
14
13
|
Classifier: Programming Language :: Python :: 3.9
|
@@ -1,13 +1,14 @@
|
|
1
|
-
novelwriter/__init__.py,sha256=
|
2
|
-
novelwriter/common.py,sha256=
|
3
|
-
novelwriter/config.py,sha256=
|
1
|
+
novelwriter/__init__.py,sha256=gPJGUpR72TL3DUdELpLxpobESk-1BSaPJAkBc3NhSAY,7593
|
2
|
+
novelwriter/common.py,sha256=mLy2OhEF2Ad9I-NQcPkNsJ6yqN6AOtB0ThhIdEnIY5I,17376
|
3
|
+
novelwriter/config.py,sha256=HCZF0wE2iI4oOB-Trd9lB4VefgzHhvh0rUbOyUJukLU,35740
|
4
4
|
novelwriter/constants.py,sha256=UIxiF-23cB_gmRfxbQPYmObn8Ib-ygm46uOIG329RLY,19818
|
5
5
|
novelwriter/enum.py,sha256=MP-nz3vDRp4bWxXitqjdLWO2_RvrDAlRxngiMON9mb8,3305
|
6
|
-
novelwriter/error.py,sha256=
|
7
|
-
novelwriter/guimain.py,sha256=
|
8
|
-
novelwriter/shared.py,sha256=
|
9
|
-
novelwriter/
|
10
|
-
novelwriter/assets/
|
6
|
+
novelwriter/error.py,sha256=6NLRdTtqylbKJyrGes9yHOwpa24N7A2VFgnaJ6o0YnM,7263
|
7
|
+
novelwriter/guimain.py,sha256=aBPAeGNqCeFhXRXgm96sm_8M_JK_v3ghUI1BM5wj0Do,53461
|
8
|
+
novelwriter/shared.py,sha256=OS83rH3zFar0sEPTXAdq13LKNGDKNOaYhf1VZ513wGg,14278
|
9
|
+
novelwriter/types.py,sha256=6aP2hZraPEolYqBgj5R_5bah3NgelASBfKol6yYOi4g,3316
|
10
|
+
novelwriter/assets/manual.pdf,sha256=zhm9pfvpEc9rDPQzE7KW1kU9n6IMlxLK1Pc9m1Ul_18,2605816
|
11
|
+
novelwriter/assets/sample.zip,sha256=TTC6YpYhFs8wdJ9FNd8IFrZAc_o4It7UjT5luciEA6k,27361
|
11
12
|
novelwriter/assets/i18n/nw_de_DE.qm,sha256=oUV9VMrFuS14SLfe49xe53_o4KfnBUqdwSF5m6AXQb8,95974
|
12
13
|
novelwriter/assets/i18n/nw_en_US.qm,sha256=rCB443fatkLrRxsd3hVSn6VoX19SpNqR0zv4O1_wm1c,88824
|
13
14
|
novelwriter/assets/i18n/nw_es_419.qm,sha256=-4pEroJn4WDR3LeTO4XEvMKOxNrR4-ve-qKgq8FPWn8,98227
|
@@ -31,12 +32,13 @@ novelwriter/assets/i18n/project_nn_NO.json,sha256=7ZfmtFWHcDMiLVqdOEDHQWHbpoC_bv
|
|
31
32
|
novelwriter/assets/i18n/project_pt_BR.json,sha256=oZ7jdSF1h-kuGhKYZOWbuwVCRgakgs9HzeMSiLPnTns,2763
|
32
33
|
novelwriter/assets/i18n/project_ru_RU.json,sha256=F4QkD6VVDCtGdil7uoXCmuczvUpe9tv-1L-3Eyc8sKE,3699
|
33
34
|
novelwriter/assets/i18n/project_zh_CN.json,sha256=cfl0TsnbISYUvygOw015y0x0REDG97xR0yjyJ85Jm34,2322
|
35
|
+
novelwriter/assets/icons/none.svg,sha256=NRN9vMzohg7Ner71GwPthrCG0uA81TpY8UmKb8-L-pM,251
|
34
36
|
novelwriter/assets/icons/novelwriter.ico,sha256=OJRIeeUcmS7Di51NA3uF5_Ov4V8T47gQ9qWv6C7qDeA,171059
|
35
37
|
novelwriter/assets/icons/novelwriter.svg,sha256=Ad_SgOdXSDJtFR3DLCx6Afme15I78r38_YxCfO9F2z4,8511
|
36
38
|
novelwriter/assets/icons/x-novelwriter-project.ico,sha256=MXdZSYi3j95aIsT5bZo6CkhxmS75cThP9O_38UR7sjg,170697
|
37
39
|
novelwriter/assets/icons/x-novelwriter-project.svg,sha256=VHf1aClkA91tZVYb3LFk9bi_Dw25QBVSjUJAjSD-YX4,5143
|
38
40
|
novelwriter/assets/icons/typicons_dark/README.md,sha256=6ZxJq-19PNrMdeuVeVg84aLjxhr9oF7dLwuMFVGQyq0,1065
|
39
|
-
novelwriter/assets/icons/typicons_dark/icons.conf,sha256=
|
41
|
+
novelwriter/assets/icons/typicons_dark/icons.conf,sha256=b-OYPcmJe1CBXRa62AFm75XIWev4cfeFarJF5mGgpiY,4431
|
40
42
|
novelwriter/assets/icons/typicons_dark/mixed_document-chapter.svg,sha256=POP_Cs3bkkKAmrS_fTgjj90eyNK0bipNGgOhDDlXKu0,1650
|
41
43
|
novelwriter/assets/icons/typicons_dark/mixed_document-new.svg,sha256=EIVU3_ecC0d6rpCHXBfKoA_mWJyilqe7iA6XLQb9oRw,1849
|
42
44
|
novelwriter/assets/icons/typicons_dark/mixed_document-note.svg,sha256=OaPRbvkA7h4GA4mnFXJRORv80h2nAsJTmlIR8Msrwt8,1650
|
@@ -75,12 +77,10 @@ novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg,sha256=dOhhKxlsdWuQ7t
|
|
75
77
|
novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg,sha256=0TpY0nIinD4dwgwh0Nyfs0C4rJDcc2JsgxnXSE0flco,1549
|
76
78
|
novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg,sha256=Z0ooKzRV_g298UX22uuUxZPC21Z9DN-1y4sY3vVIaZE,1121
|
77
79
|
novelwriter/assets/icons/typicons_dark/typ_arrow-down-thick-grey.svg,sha256=PsEm_GCebnkMvtVm1OUbVU0hvA2nL8bWlrlyrAWh0tE,519
|
78
|
-
novelwriter/assets/icons/typicons_dark/typ_arrow-down.svg,sha256=NlOj7VaHnlfBwU8M63eVzdepIbvtVbuPCgQ1Rwdu67Q,511
|
79
80
|
novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg,sha256=Io2wWbs2Z0z5GHzDkmf3AkNZZqyfSC0ilWVDvGv5Q5U,538
|
80
81
|
novelwriter/assets/icons/typicons_dark/typ_arrow-maximise.svg,sha256=m4w3ZUHy3R2aTtvLKZpmd6FPijjkaG6A5jhiqfTp9mg,1029
|
81
82
|
novelwriter/assets/icons/typicons_dark/typ_arrow-minimise.svg,sha256=4XVXvgIN00s6UfHmL3jXSTu5cRjeTKH_WtbS1ZRcCuM,1135
|
82
83
|
novelwriter/assets/icons/typicons_dark/typ_arrow-repeat-grey.svg,sha256=RNhpFR1pmej9rKW-kvxHZa8zFFK3nVfdyP5NksUDDqM,1217
|
83
|
-
novelwriter/assets/icons/typicons_dark/typ_arrow-right.svg,sha256=rUATnt0QnEMegajflkfRWlT3Tcqu0Y7FVpdmZU6Seb0,510
|
84
84
|
novelwriter/assets/icons/typicons_dark/typ_book-grey.svg,sha256=Nl-pghkCn8BG28Cga1vyVtLMDNgMDjL15Tc4s4DVz7k,807
|
85
85
|
novelwriter/assets/icons/typicons_dark/typ_book.svg,sha256=MaUaVtd_hXt6yGGj2C1UUZGqhkEUzDWL5wmByT4UE7U,1490
|
86
86
|
novelwriter/assets/icons/typicons_dark/typ_bookmark.svg,sha256=I2KqO-t22-kA4ELUYnkKLge3HHcQSH3Lw02PsWRsiq0,909
|
@@ -131,10 +131,12 @@ novelwriter/assets/icons/typicons_dark/typ_th-list-grey.svg,sha256=zx4iK9nlfDFaY
|
|
131
131
|
novelwriter/assets/icons/typicons_dark/typ_th-list.svg,sha256=0qsmBzD9ySWA9G3cuB_BAetuzx4qxaNvQ6TcL8c0d4A,846
|
132
132
|
novelwriter/assets/icons/typicons_dark/typ_times.svg,sha256=kcd-4tz9DmCMikIaSohdt4EzutDYUsTVBr8w2vqn1SE,703
|
133
133
|
novelwriter/assets/icons/typicons_dark/typ_trash.svg,sha256=XjO0SRcnPDrg9Qe8zR5W1k20liKKRop4O2liv2KILQY,2456
|
134
|
+
novelwriter/assets/icons/typicons_dark/typ_unfold-hidden.svg,sha256=V_yKCUxFOmm7LpadefaSgmi1MTKIzD5GgIS8inPtUJo,516
|
135
|
+
novelwriter/assets/icons/typicons_dark/typ_unfold-visible.svg,sha256=IvVXmxlkrTyNwl0NG_HCpaqv29_9EopjQvpH56ZInZk,517
|
134
136
|
novelwriter/assets/icons/typicons_dark/typ_user.svg,sha256=00gZEDr59B1A7A4o0w5VjCJOHnQHANsgXBhnB_VTMU4,733
|
135
137
|
novelwriter/assets/icons/typicons_dark/typ_warning-full.svg,sha256=zqqV82C37dWH_yHoSuPo-BLsErg0sl8_VlB6fzXL4VE,970
|
136
138
|
novelwriter/assets/icons/typicons_light/README.md,sha256=nyGvWLJ8cusLYP8YsjX_l213NkDE_GHrwctZ-I_JQUg,1066
|
137
|
-
novelwriter/assets/icons/typicons_light/icons.conf,sha256=
|
139
|
+
novelwriter/assets/icons/typicons_light/icons.conf,sha256=rG7V9Vc0Jx0T7YUD2PpGA_Dg-i6zPPBK-mH-PmUnFCA,4434
|
138
140
|
novelwriter/assets/icons/typicons_light/mixed_document-chapter.svg,sha256=kXNwPbeKR3eupIrqtDQrNGq5sL8vdExLfPMrMX2sEsw,1650
|
139
141
|
novelwriter/assets/icons/typicons_light/mixed_document-new.svg,sha256=u0YYfp6hTUEYLsrPleUqYocaG2hl62w-B85INvkm6S4,1825
|
140
142
|
novelwriter/assets/icons/typicons_light/mixed_document-note.svg,sha256=XpKQ2Fj7J3I3BT9mAQkjk_A4eP7uy94vPeDBA62fOYI,1650
|
@@ -173,12 +175,10 @@ novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg,sha256=j8qncFQqiC5vZ
|
|
173
175
|
novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg,sha256=-B-iVCPsoCaz9ZiVkHN6em2BJOI65_ssjFqZM75wxZ0,1550
|
174
176
|
novelwriter/assets/icons/typicons_light/nw_tb-underline.svg,sha256=rxSFWY2lNpSuF2jbUk_jyfoHk_B5d2bLncaCY-2LT7w,1141
|
175
177
|
novelwriter/assets/icons/typicons_light/typ_arrow-down-thick-grey.svg,sha256=FZFt51KLkvqrP0nM_bnCjKkELcLT7KMWB059gvSMKk4,523
|
176
|
-
novelwriter/assets/icons/typicons_light/typ_arrow-down.svg,sha256=o4yUzSExKLMwb1bL5gBCtUhruzFLQQY0bTwwFcYgllI,518
|
177
178
|
novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg,sha256=vDYZrsNe2Afo8-MqS9HV_gsz6aFraYZUyJeAdOXaE4Y,541
|
178
179
|
novelwriter/assets/icons/typicons_light/typ_arrow-maximise.svg,sha256=bz93DwuiB_2Baf-oG5SsMdWGccYogyNqR2Yq3OQ4bDY,1032
|
179
180
|
novelwriter/assets/icons/typicons_light/typ_arrow-minimise.svg,sha256=PcnZfvRheewpelAsfj_OF09a0JmB0PPuU_3Yn4buztc,1138
|
180
181
|
novelwriter/assets/icons/typicons_light/typ_arrow-repeat-grey.svg,sha256=HV86TeWDyw24qRllBsIpxn1bT2Oj74hrHJuSKfyLx_0,1224
|
181
|
-
novelwriter/assets/icons/typicons_light/typ_arrow-right.svg,sha256=Z7FD8rKc96Q34oW7by4TjLZMizlD78V8NVTYgvRauW0,517
|
182
182
|
novelwriter/assets/icons/typicons_light/typ_book-grey.svg,sha256=T4pOeWLJxx-Z-gNPTCiIZzryHQ7efwbRcdMcL8pil-g,814
|
183
183
|
novelwriter/assets/icons/typicons_light/typ_book.svg,sha256=vRlJHH06q1982IZHCx56ouOezyVw31SJ2uogs2xUj2k,1490
|
184
184
|
novelwriter/assets/icons/typicons_light/typ_bookmark.svg,sha256=q3I2j4AsNN12OGwr2zvtFXPVmnLAMoPuKw69wW4SnrM,912
|
@@ -229,6 +229,8 @@ novelwriter/assets/icons/typicons_light/typ_th-list-grey.svg,sha256=XKAdaWypd1hg
|
|
229
229
|
novelwriter/assets/icons/typicons_light/typ_th-list.svg,sha256=fq8gazMyrkUC8qzpmSFz8QufTEDd5X6qNBb09to-j5g,849
|
230
230
|
novelwriter/assets/icons/typicons_light/typ_times.svg,sha256=Z48b7czxZUTrmDZxX2NWMGIFyvqsYe7GTvSPV4T4oPs,703
|
231
231
|
novelwriter/assets/icons/typicons_light/typ_trash.svg,sha256=THerHUXB4l6qjcnIdFCzA7eZxOVhcODDQMtYeDj-z5s,2453
|
232
|
+
novelwriter/assets/icons/typicons_light/typ_unfold-hidden.svg,sha256=hPxAI0WjRnalqYlHn1NNKpA9JbE5t7sR1DbIOj6MnkM,523
|
233
|
+
novelwriter/assets/icons/typicons_light/typ_unfold-visible.svg,sha256=eD-_42AnjRRhQ1EIRAFEkJKguVVzDBltbJQR4Wnq8Zk,523
|
232
234
|
novelwriter/assets/icons/typicons_light/typ_user.svg,sha256=q4a-kdXIABSyYlk2BEGPuxnyaM4vTpvLwQNv5-rQ6mQ,736
|
233
235
|
novelwriter/assets/icons/typicons_light/typ_warning-full.svg,sha256=5pCnfBPckrRDznMAOGj2-zmMxUSQi4nK4i07jAVkc_c,970
|
234
236
|
novelwriter/assets/images/novelwriter-text-dark.svg,sha256=gbbDiXd92OV5c6qGREDkAnTnEApxYPbqyrbUHB8mtiM,5976
|
@@ -258,9 +260,8 @@ novelwriter/assets/themes/default_dark.conf,sha256=L6xHLbgVb4E4SkQRSgCV7yEoxH9Rx
|
|
258
260
|
novelwriter/assets/themes/default_light.conf,sha256=o_FJRMidFo-DJYK8bB-jdelcD5qg7MwW4J8lL9nlZUY,928
|
259
261
|
novelwriter/assets/themes/solarized_dark.conf,sha256=HIP9icMtRljUmMH7PmU0IrcLGUSXVDaG97070Hc0UVM,852
|
260
262
|
novelwriter/assets/themes/solarized_light.conf,sha256=jUfaCnWXM4GAOI1eUioj_nP0RiMrnr8MEOprSg7qUU4,854
|
261
|
-
novelwriter/core/__init__.py,sha256=IrBU9r8-lBnwqAD79xtpaDMortj23X-t6zQ1RIWluY4,39
|
262
263
|
novelwriter/core/buildsettings.py,sha256=mNJ8v5Rn-lXiqtlFYQ8bzAtQ7JsibktPFiiiTXidHpQ,22385
|
263
|
-
novelwriter/core/coretools.py,sha256=
|
264
|
+
novelwriter/core/coretools.py,sha256=mNrFL7R3dAAQhe3aGT9QTha4rX4XXF5JOlmXykNCJh0,21467
|
264
265
|
novelwriter/core/docbuild.py,sha256=vn47y9aYf7lsu-A5vmlmSjlWxI82X6at5rB-fEH0pl0,13844
|
265
266
|
novelwriter/core/document.py,sha256=ERU3GCZ1CHkIE3bV-NQ5G8HZlH5C4bWqa-OxyPgFu4w,12154
|
266
267
|
novelwriter/core/index.py,sha256=e-Iov2NyeeLWiWsx_UCD758UIw_6KGe1FZ-jegkRgmU,45951
|
@@ -271,63 +272,58 @@ novelwriter/core/projectdata.py,sha256=NYhTL6qIbJxJX98-_zZdV4LzI2-tqdWaMvGYi0Xi4
|
|
271
272
|
novelwriter/core/projectxml.py,sha256=o4sn_Hzn3A-DMlHevjieWoTMaJKJW60HYOWbVfaambs,21936
|
272
273
|
novelwriter/core/sessions.py,sha256=k13qaHO0oAyKBlMrhDogO0dFoAROBA8WNgUULGtIhIA,4431
|
273
274
|
novelwriter/core/spellcheck.py,sha256=AfNOymVlJULF6tSz9ldAj5gyY_k1fHyKzsTivXxQJXg,7235
|
274
|
-
novelwriter/core/status.py,sha256=
|
275
|
+
novelwriter/core/status.py,sha256=TNeEapa-MLJexXPosoHs0UmHgZrK63vQEOegYOD8uuE,8769
|
275
276
|
novelwriter/core/storage.py,sha256=eJgGL0cvfeQHhGYjc6FiojJ-dnGU-IQJ6FOWa8hFzJQ,20880
|
276
277
|
novelwriter/core/tohtml.py,sha256=zybIc2qMAQhmWBNVVtcHRijmvqDK_DHidgAYwKUGQP0,17236
|
277
278
|
novelwriter/core/tokenizer.py,sha256=XHjsZVlBt-S5jNyN-i7FrkYenwxFT3-NBNjB-qmazIA,40974
|
278
279
|
novelwriter/core/tomd.py,sha256=xk5r3oyHkz6LOouiPaQLGVJWp6bT0HLe3upr4JmWjG4,7386
|
279
|
-
novelwriter/core/toodt.py,sha256=
|
280
|
+
novelwriter/core/toodt.py,sha256=_kTNpeLVIeJYpIwH6ludMF1cNlIGv8fZN0sLAAJP_DM,58628
|
280
281
|
novelwriter/core/tree.py,sha256=bwLJHhNkd2DOKoE-rIwfWwWgaYBlw9xZ8BaQeC0LUJw,18701
|
281
|
-
novelwriter/dialogs/
|
282
|
-
novelwriter/dialogs/
|
283
|
-
novelwriter/dialogs/
|
284
|
-
novelwriter/dialogs/
|
285
|
-
novelwriter/dialogs/
|
286
|
-
novelwriter/dialogs/
|
287
|
-
novelwriter/dialogs/
|
288
|
-
novelwriter/dialogs/
|
289
|
-
novelwriter/
|
290
|
-
novelwriter/extensions/
|
291
|
-
novelwriter/extensions/circularprogress.py,sha256=UrqZCgnJgFVuUvUV0V-9noWKCROJWkDtaC44ijvuJPA,3747
|
292
|
-
novelwriter/extensions/configlayout.py,sha256=z-Z-RGLB9NtTJGJF6WwTH4IAHbkH-0LnanmeixL0LK0,9377
|
282
|
+
novelwriter/dialogs/about.py,sha256=6FF9ssrP8G9TNWYAoZ1Z-Bd0gBrJsc8uPBVAulyDd_U,4888
|
283
|
+
novelwriter/dialogs/docmerge.py,sha256=FzOmKQnKW8p1fc_z6pvDlP2LlJQgDG_BV355oB1MKzc,6148
|
284
|
+
novelwriter/dialogs/docsplit.py,sha256=q4kt_lIqrz6-5VpBnCZOeTfvwcZMORZtjO3qrGEynPg,9140
|
285
|
+
novelwriter/dialogs/editlabel.py,sha256=715nMbwexvqaxPRp2rJThyC3Sokp70zztpCg2ZxGKPw,2964
|
286
|
+
novelwriter/dialogs/preferences.py,sha256=oKFjox-ku4uJdQ8Bm3eDlTuXUZ02Cv7Fky8DR-5CqSQ,36432
|
287
|
+
novelwriter/dialogs/projectsettings.py,sha256=-uJl9nEPJgr17IjifzxOp5IW3fdg5ZKytym3dOc-yDo,25752
|
288
|
+
novelwriter/dialogs/quotes.py,sha256=iDtkACeCnaCQOTXQtW1H75BjeOJIm0SsrP4EzLsFq0E,4647
|
289
|
+
novelwriter/dialogs/wordlist.py,sha256=LcqqIeU5-y_u1Le_FYcUKfNNABFweu9QiejnpphqgNs,8634
|
290
|
+
novelwriter/extensions/circularprogress.py,sha256=H0btKccdnvVfijU8ZudYvv4AgrvPYvx7IgznIxASBY0,3856
|
291
|
+
novelwriter/extensions/configlayout.py,sha256=xHUE_HckNwJsfPKZ3hJjAKAYhxzQFRmNCmBrIh6QtTs,9253
|
293
292
|
novelwriter/extensions/eventfilters.py,sha256=XehDoXwsnCvI1D3uieuYu5J3kxZggdV6Teo7Z0xZw7E,2581
|
294
|
-
novelwriter/extensions/modified.py,sha256=
|
293
|
+
novelwriter/extensions/modified.py,sha256=s8HbGumHA0mAspnYo-ADIiwOXkccL-w1ThimxywdlNc,4038
|
295
294
|
novelwriter/extensions/novelselector.py,sha256=5ccEDvqrbvrG7khZBrOiJwxsjjRnkFX-A4ZT-lj_z_g,3821
|
296
|
-
novelwriter/extensions/pagedsidebar.py,sha256
|
297
|
-
novelwriter/extensions/simpleprogress.py,sha256=
|
298
|
-
novelwriter/extensions/statusled.py,sha256=
|
299
|
-
novelwriter/extensions/switch.py,sha256=
|
300
|
-
novelwriter/extensions/switchbox.py,sha256=
|
295
|
+
novelwriter/extensions/pagedsidebar.py,sha256=X0AYo6oKM7gKr57662v-ZZWUTCVf5AbvIUCoLQai8fk,7369
|
296
|
+
novelwriter/extensions/simpleprogress.py,sha256=13SrFQ9TZTDICyXCdTHeCX0MOtpw4UbBEgxiAmSOjyQ,1836
|
297
|
+
novelwriter/extensions/statusled.py,sha256=640phDm3ZcLvM9EC_uwVPjG9LD5W3pAjtoqU4QbsZUU,2315
|
298
|
+
novelwriter/extensions/switch.py,sha256=sZBNX5Wj1qkVA6cHh04GjuWOTbejaatHgLZ5yGzXGv4,4346
|
299
|
+
novelwriter/extensions/switchbox.py,sha256=y6yuoCAZYYL7miaFlC8h5ymtuB0Xyk2AMmxAFYOYPDA,4210
|
301
300
|
novelwriter/extensions/versioninfo.py,sha256=eUJzO6eV6SFXgp71uxr9696rjUQctGm84CA7XqxFhGc,5120
|
302
|
-
novelwriter/gui/
|
303
|
-
novelwriter/gui/
|
304
|
-
novelwriter/gui/
|
305
|
-
novelwriter/gui/
|
306
|
-
novelwriter/gui/
|
307
|
-
novelwriter/gui/
|
308
|
-
novelwriter/gui/itemdetails.py,sha256=NJUieAG_uadQIySk2Gpawgv0Rpq_XA0On8yeAwOTZJw,9789
|
301
|
+
novelwriter/gui/doceditor.py,sha256=255ABHnUOL8SSMbwFxlGwEDYPolhiZaVWni7tYNA5OQ,113649
|
302
|
+
novelwriter/gui/dochighlight.py,sha256=eWBxFm-jU8I3hu8jZg_v0r5tZf3Nsz4PxNOkbQO3r08,16579
|
303
|
+
novelwriter/gui/docviewer.py,sha256=8p_T7e_NbZ7fLrBiE1_XWeW-iHLzJ5an2hPldn4trUw,33089
|
304
|
+
novelwriter/gui/docviewerpanel.py,sha256=IcQGLN49MmVGfIPg-8IzLGKYn9DbJqfdXWG6jd_JaAI,20009
|
305
|
+
novelwriter/gui/editordocument.py,sha256=jxODONgq80Kf63lRezzbYtyEelaC-GpvgPEMKQ3m_sg,4116
|
306
|
+
novelwriter/gui/itemdetails.py,sha256=VIfWDtn9g0IRBYSDFT_AhZgluQ0d7sK5C14lENyvzHg,9774
|
309
307
|
novelwriter/gui/mainmenu.py,sha256=63rvJgvqFtMQGDR0d_p-Z7zSTHyW6ioATlO6U_61MTg,38693
|
310
|
-
novelwriter/gui/noveltree.py,sha256
|
311
|
-
novelwriter/gui/outline.py,sha256=
|
312
|
-
novelwriter/gui/projtree.py,sha256=
|
313
|
-
novelwriter/gui/search.py,sha256=
|
314
|
-
novelwriter/gui/sidebar.py,sha256=
|
315
|
-
novelwriter/gui/statusbar.py,sha256=
|
316
|
-
novelwriter/gui/theme.py,sha256=
|
317
|
-
novelwriter/text/__init__.py,sha256=oZj7LkFht3O2jjVKqZP3QtWNdpjG5mlXo5aOjp040fk,44
|
308
|
+
novelwriter/gui/noveltree.py,sha256=-XlISrM8y69_HgKHSWsXRSlLTyjQE9x1XG22A4D_5tg,27966
|
309
|
+
novelwriter/gui/outline.py,sha256=XuM-zG74iwPgshqXUQ4ACsPIw_Z-3KNae5iMRX4VCdU,42265
|
310
|
+
novelwriter/gui/projtree.py,sha256=euhQoitT5g49za8elmb_w5kpGqWCIZVZndiToC3qs54,77867
|
311
|
+
novelwriter/gui/search.py,sha256=KJuGMh-V3o8t4bqLvaw2wkDrZyoz0hOALQtYgjSyZAg,12980
|
312
|
+
novelwriter/gui/sidebar.py,sha256=kidGGzXQ5RNQvKuH0kFh-lwoUSlkXffBucEoL15RMd4,6258
|
313
|
+
novelwriter/gui/statusbar.py,sha256=ru-4pyg8owWkwkXGgj5GEupfq9fbIykYwGpomwzaINk,9353
|
314
|
+
novelwriter/gui/theme.py,sha256=B8HzV7yP1jyRKwYlvPj3fU-JHeZrUsrpUFZuqmtmYnk,32354
|
318
315
|
novelwriter/text/counting.py,sha256=TTQoXgK_RThdOkDcM1B3u0X80HxFgKLgvhBgZkNLefM,4236
|
319
|
-
novelwriter/tools/
|
320
|
-
novelwriter/tools/
|
321
|
-
novelwriter/tools/
|
322
|
-
novelwriter/tools/
|
323
|
-
novelwriter/tools/
|
324
|
-
novelwriter/tools/
|
325
|
-
novelwriter/tools/
|
326
|
-
novelwriter/tools/
|
327
|
-
|
328
|
-
novelWriter-2.
|
329
|
-
novelWriter-2.
|
330
|
-
novelWriter-2.
|
331
|
-
novelWriter-2.
|
332
|
-
novelWriter-2.
|
333
|
-
novelWriter-2.4b1.dist-info/RECORD,,
|
316
|
+
novelwriter/tools/dictionaries.py,sha256=wnlVjRVBAghRXZhN1pBgoXN5qC7Qp7inQ8EG2uyOHMk,9215
|
317
|
+
novelwriter/tools/lipsum.py,sha256=d-qdRSrXLfTkTdzi7vhjeBlWawwGwWQ9Qd_zRSwzgpQ,4901
|
318
|
+
novelwriter/tools/manusbuild.py,sha256=wo7Th5nYWmg4h7Wfg7WYrXg_qGgoN-uX41nOue1lXSU,13946
|
319
|
+
novelwriter/tools/manuscript.py,sha256=Ql4KtzefNr-2LXyNT3vVOnEneOZbXkrkjTA3NXZ08Sc,40043
|
320
|
+
novelwriter/tools/manussettings.py,sha256=4V9M2SaDuvjszYx6oXQVEHW5FmNtYAnNAo5gdSDKX3Q,55781
|
321
|
+
novelwriter/tools/noveldetails.py,sha256=KoENyz0hH3TlXfRCEJvRTZ0h7ruOgTIv85AgCl1Ur5o,18503
|
322
|
+
novelwriter/tools/welcome.py,sha256=3lysgIhIu8DCux3XhTqT2Boc4s5qx9spVvmI48lS2d8,27993
|
323
|
+
novelwriter/tools/writingstats.py,sha256=IubrbbLB_Qlnwp9B3muKkeD84xtckPvmTax7E4LnI5g,22797
|
324
|
+
novelWriter-2.4rc1.dist-info/LICENSE.md,sha256=2GirkkLrPfQqx7fACKRJjtKJUegKc8067erGvcDVQHM,32197
|
325
|
+
novelWriter-2.4rc1.dist-info/METADATA,sha256=aPPGvSD_mgrSCGxhnQ_psHjEbc6a3A5ROIlpdIhH_Ec,2583
|
326
|
+
novelWriter-2.4rc1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
327
|
+
novelWriter-2.4rc1.dist-info/entry_points.txt,sha256=YDUG1w361LtLsjD3YhxoTDTwM17JA5-nigjC6j5C74A,45
|
328
|
+
novelWriter-2.4rc1.dist-info/top_level.txt,sha256=wFFEucjEeNC_Ap5ULBuEutg5a1Uc0-YO9uFT5L2naNI,12
|
329
|
+
novelWriter-2.4rc1.dist-info/RECORD,,
|
novelwriter/__init__.py
CHANGED
@@ -42,9 +42,9 @@ __license__ = "GPLv3"
|
|
42
42
|
__author__ = "Veronica Berglyd Olsen"
|
43
43
|
__maintainer__ = "Veronica Berglyd Olsen"
|
44
44
|
__email__ = "code@vkbo.net"
|
45
|
-
__version__ = "2.
|
46
|
-
__hexversion__ = "
|
47
|
-
__date__ = "2024-
|
45
|
+
__version__ = "2.4rc1"
|
46
|
+
__hexversion__ = "0x020400c1"
|
47
|
+
__date__ = "2024-04-06"
|
48
48
|
__status__ = "Stable"
|
49
49
|
__domain__ = "novelwriter.io"
|
50
50
|
|
@@ -187,7 +187,7 @@ def main(sysArgs: list | None = None):
|
|
187
187
|
))
|
188
188
|
for errLine in errorData:
|
189
189
|
logger.critical(errLine)
|
190
|
-
errApp.
|
190
|
+
errApp.exec()
|
191
191
|
sys.exit(errorCode)
|
192
192
|
|
193
193
|
# Finish initialising config
|
@@ -237,6 +237,6 @@ def main(sysArgs: list | None = None):
|
|
237
237
|
nwGUI = GuiMain()
|
238
238
|
nwGUI.postLaunchTasks(cmdOpen)
|
239
239
|
|
240
|
-
sys.exit(nwApp.
|
240
|
+
sys.exit(nwApp.exec())
|
241
241
|
|
242
242
|
# END Function main
|
@@ -100,8 +100,8 @@ status_time = typ_stopwatch-grey.svg
|
|
100
100
|
sticky-off = typ_pin-outline.svg
|
101
101
|
sticky-on = typ_pin.svg
|
102
102
|
unchecked = mixed_input-unchecked.svg
|
103
|
-
unfold-hide =
|
104
|
-
unfold-show =
|
103
|
+
unfold-hide = typ_unfold-hidden.svg
|
104
|
+
unfold-show = typ_unfold-visible.svg
|
105
105
|
up = typ_chevron-up.svg
|
106
106
|
view = typ_eye.svg
|
107
107
|
view_build = typ_export-grey.svg
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<path d="m9.8767 17.723 5.8157-5.723-5.8157-5.723c-0.18462-0.18462-0.46155-0.27693-0.64616-0.27693-0.18462 0-0.46155 0.092309-0.64616 0.27693-0.18462 0.18462-0.27693 0.36924-0.27693 0.64616v10.154c0 0.27693 0.092309 0.46154 0.27693 0.64616 0.18462 0.18462 0.46155 0.27693 0.64616 0.27693 0.18462 0 0.46155-0.09231 0.64616-0.27693z" fill="#aeaeae" stroke-width=".92309"/>
|
4
|
+
</svg>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<path d="m6.277 9.8767 5.723 5.8157 5.723-5.8157c0.18462-0.18462 0.27693-0.46155 0.27693-0.64616 0-0.18462-0.092309-0.46155-0.27693-0.64616-0.18462-0.18462-0.36924-0.27693-0.64616-0.27693h-10.154c-0.27693 0-0.46155 0.092309-0.64616 0.27693-0.18462 0.18462-0.27693 0.46155-0.27693 0.64616 0 0.18462 0.092309 0.46155 0.27693 0.64616z" fill="#aeaeae" stroke-width=".92309"/>
|
4
|
+
</svg>
|
@@ -100,8 +100,8 @@ status_time = typ_stopwatch-grey.svg
|
|
100
100
|
sticky-off = typ_pin-outline.svg
|
101
101
|
sticky-on = typ_pin.svg
|
102
102
|
unchecked = mixed_input-unchecked.svg
|
103
|
-
unfold-hide =
|
104
|
-
unfold-show =
|
103
|
+
unfold-hide = typ_unfold-hidden.svg
|
104
|
+
unfold-show = typ_unfold-visible.svg
|
105
105
|
up = typ_chevron-up.svg
|
106
106
|
view = typ_eye.svg
|
107
107
|
view_build = typ_export-grey.svg
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<path d="m9.8767 17.723 5.8157-5.723-5.8157-5.723c-0.18462-0.18462-0.46155-0.27693-0.64616-0.27693-0.18462 0-0.46155 0.092309-0.64616 0.27693-0.18462 0.18462-0.27693 0.36924-0.27693 0.64616v10.154c0 0.27693 0.092309 0.46154 0.27693 0.64616 0.18462 0.18462 0.46155 0.27693 0.64616 0.27693 0.18462 0 0.46155-0.09231 0.64616-0.27693z" fill-opacity=".78039" stroke-width="1.6923"/>
|
4
|
+
</svg>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<path d="m6.277 9.8767 5.723 5.8157 5.723-5.8157c0.18462-0.18462 0.27693-0.46155 0.27693-0.64616 0-0.18462-0.09231-0.46155-0.27693-0.64616-0.18462-0.18462-0.36924-0.27693-0.64616-0.27693h-10.154c-0.27693 0-0.46155 0.092309-0.64616 0.27693-0.18462 0.18462-0.27693 0.46155-0.27693 0.64616 0 0.18462 0.092309 0.46155 0.27693 0.64616z" fill-opacity=".78039" stroke-width="1.6923"/>
|
4
|
+
</svg>
|
novelwriter/assets/manual.pdf
CHANGED
Binary file
|
novelwriter/assets/sample.zip
CHANGED
Binary file
|
novelwriter/common.py
CHANGED
@@ -36,7 +36,7 @@ from configparser import ConfigParser
|
|
36
36
|
from urllib.parse import urljoin
|
37
37
|
from urllib.request import pathname2url
|
38
38
|
|
39
|
-
from PyQt5.QtGui import QDesktopServices
|
39
|
+
from PyQt5.QtGui import QColor, QDesktopServices
|
40
40
|
from PyQt5.QtCore import QCoreApplication, QUrl
|
41
41
|
|
42
42
|
from novelwriter.enum import nwItemClass, nwItemType, nwItemLayout
|
@@ -382,6 +382,11 @@ def numberToRoman(value: int, toLower: bool = False) -> str:
|
|
382
382
|
return roman.lower() if toLower else roman
|
383
383
|
|
384
384
|
|
385
|
+
def cssCol(col: QColor, alpha: int | None = None) -> str:
|
386
|
+
"""Convert a QColor object to an rgba entry to use in CSS."""
|
387
|
+
return f"rgba({col.red()}, {col.green()}, {col.blue()}, {alpha or col.alpha()})"
|
388
|
+
|
389
|
+
|
385
390
|
##
|
386
391
|
# Encoder Functions
|
387
392
|
##
|
novelwriter/config.py
CHANGED
@@ -61,8 +61,12 @@ class Config:
|
|
61
61
|
self.appHandle = "novelwriter"
|
62
62
|
|
63
63
|
# Set Paths
|
64
|
-
confRoot = Path(QStandardPaths.writableLocation(
|
65
|
-
|
64
|
+
confRoot = Path(QStandardPaths.writableLocation(
|
65
|
+
QStandardPaths.StandardLocation.ConfigLocation)
|
66
|
+
)
|
67
|
+
dataRoot = Path(QStandardPaths.writableLocation(
|
68
|
+
QStandardPaths.StandardLocation.AppDataLocation)
|
69
|
+
)
|
66
70
|
|
67
71
|
self._confPath = confRoot.absolute() / self.appHandle # The user config location
|
68
72
|
self._dataPath = dataRoot.absolute() / self.appHandle # The user data location
|
@@ -83,7 +87,7 @@ class Config:
|
|
83
87
|
# Localisation
|
84
88
|
# Note that these paths must be strings
|
85
89
|
self._nwLangPath = self._appPath / "assets" / "i18n"
|
86
|
-
self._qtLangPath = QLibraryInfo.location(QLibraryInfo.TranslationsPath)
|
90
|
+
self._qtLangPath = QLibraryInfo.location(QLibraryInfo.LibraryLocation.TranslationsPath)
|
87
91
|
|
88
92
|
hasLocale = (self._nwLangPath / f"nw_{QLocale.system().name()}.qm").exists()
|
89
93
|
self._qLocale = QLocale.system() if hasLocale else QLocale("en_GB")
|
@@ -369,7 +373,7 @@ class Config:
|
|
369
373
|
elif self.osDarwin and "Helvetica" in fontFam:
|
370
374
|
self.textFont = "Helvetica"
|
371
375
|
else:
|
372
|
-
self.textFont = fontDB.systemFont(QFontDatabase.GeneralFont).family()
|
376
|
+
self.textFont = fontDB.systemFont(QFontDatabase.SystemFont.GeneralFont).family()
|
373
377
|
else:
|
374
378
|
self.textFont = family
|
375
379
|
return
|
novelwriter/core/coretools.py
CHANGED
@@ -337,32 +337,32 @@ class DocSearch:
|
|
337
337
|
"""Iteratively search through documents in a project."""
|
338
338
|
self._regEx.setPattern(self._buildPattern(search))
|
339
339
|
logger.debug("Searching with pattern '%s'", self._regEx.pattern())
|
340
|
-
|
341
|
-
num = len(search)
|
342
340
|
storage = project.storage
|
343
341
|
for item in project.tree:
|
344
342
|
if item.isFileType():
|
345
|
-
|
346
|
-
rxItt = self._regEx.globalMatch(text)
|
347
|
-
count = 0
|
348
|
-
capped = False
|
349
|
-
results = []
|
350
|
-
while rxItt.hasNext():
|
351
|
-
rxMatch = rxItt.next()
|
352
|
-
pos = rxMatch.capturedStart()
|
353
|
-
num = rxMatch.capturedLength()
|
354
|
-
context = text[pos:pos+100].partition("\n")[0]
|
355
|
-
if context:
|
356
|
-
results.append((pos, num, context))
|
357
|
-
count += 1
|
358
|
-
if count >= nwConst.MAX_SEARCH_RESULT:
|
359
|
-
capped = True
|
360
|
-
break
|
361
|
-
|
343
|
+
results, capped = self.searchText(storage.getDocumentText(item.itemHandle))
|
362
344
|
yield item, results, capped
|
363
|
-
|
364
345
|
return
|
365
346
|
|
347
|
+
def searchText(self, text: str) -> tuple[list[tuple[int, int, str]], bool]:
|
348
|
+
"""Search a piece of text for RegEx matches."""
|
349
|
+
rxItt = self._regEx.globalMatch(text)
|
350
|
+
count = 0
|
351
|
+
capped = False
|
352
|
+
results = []
|
353
|
+
while rxItt.hasNext():
|
354
|
+
rxMatch = rxItt.next()
|
355
|
+
pos = rxMatch.capturedStart()
|
356
|
+
num = rxMatch.capturedLength()
|
357
|
+
context = text[pos:pos+100].partition("\n")[0]
|
358
|
+
if context:
|
359
|
+
results.append((pos, num, context))
|
360
|
+
count += 1
|
361
|
+
if count >= nwConst.MAX_SEARCH_RESULT:
|
362
|
+
capped = True
|
363
|
+
break
|
364
|
+
return results, capped
|
365
|
+
|
366
366
|
##
|
367
367
|
# Internal Functions
|
368
368
|
##
|
@@ -382,8 +382,7 @@ class DocSearch:
|
|
382
382
|
escaped += f"\\{c}"
|
383
383
|
search = escaped
|
384
384
|
if self._words:
|
385
|
-
search =
|
386
|
-
search = search if search.endswith("\\b") else f"{search}\\b"
|
385
|
+
search = f"(?:^|\\b){search}(?:$|\\b)"
|
387
386
|
return search
|
388
387
|
|
389
388
|
# END Class DocSearch
|
novelwriter/core/status.py
CHANGED
@@ -35,6 +35,7 @@ from PyQt5.QtCore import QRectF
|
|
35
35
|
|
36
36
|
from novelwriter import CONFIG
|
37
37
|
from novelwriter.common import minmax, simplified
|
38
|
+
from novelwriter.types import QtPaintAnitAlias, QtTransparent
|
38
39
|
|
39
40
|
if TYPE_CHECKING: # pragma: no cover
|
40
41
|
from typing import TypeGuard # Requires Python 3.10
|
@@ -248,10 +249,10 @@ class NWStatus:
|
|
248
249
|
def _createIcon(self, red: int, green: int, blue: int) -> QIcon:
|
249
250
|
"""Generate an icon for a status label."""
|
250
251
|
pixmap = QPixmap(self._iPX, self._iPX)
|
251
|
-
pixmap.fill(
|
252
|
+
pixmap.fill(QtTransparent)
|
252
253
|
|
253
254
|
painter = QPainter(pixmap)
|
254
|
-
painter.setRenderHint(
|
255
|
+
painter.setRenderHint(QtPaintAnitAlias)
|
255
256
|
painter.fillPath(self._iconPath, QColor(red, green, blue))
|
256
257
|
painter.end()
|
257
258
|
|