novelWriter 2.2b1__py3-none-any.whl → 2.2rc1__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.
Files changed (62) hide show
  1. {novelWriter-2.2b1.dist-info → novelWriter-2.2rc1.dist-info}/METADATA +3 -3
  2. {novelWriter-2.2b1.dist-info → novelWriter-2.2rc1.dist-info}/RECORD +60 -48
  3. novelwriter/__init__.py +3 -3
  4. novelwriter/assets/i18n/project_en_GB.json +1 -0
  5. novelwriter/assets/icons/novelwriter.ico +0 -0
  6. novelwriter/assets/icons/typicons_dark/icons.conf +8 -1
  7. novelwriter/assets/icons/typicons_dark/nw_deco-h2-narrow.svg +4 -0
  8. novelwriter/assets/icons/typicons_dark/nw_deco-h3-narrow.svg +4 -0
  9. novelwriter/assets/icons/typicons_dark/nw_deco-h4-narrow.svg +4 -0
  10. novelwriter/assets/icons/typicons_dark/nw_deco-note.svg +4 -0
  11. novelwriter/assets/icons/typicons_dark/nw_panel.svg +4 -0
  12. novelwriter/assets/icons/typicons_dark/typ_eye.svg +4 -0
  13. novelwriter/assets/icons/typicons_light/icons.conf +8 -1
  14. novelwriter/assets/icons/typicons_light/nw_deco-h2-narrow.svg +4 -0
  15. novelwriter/assets/icons/typicons_light/nw_deco-h3-narrow.svg +4 -0
  16. novelwriter/assets/icons/typicons_light/nw_deco-h4-narrow.svg +4 -0
  17. novelwriter/assets/icons/typicons_light/nw_deco-note.svg +4 -0
  18. novelwriter/assets/icons/typicons_light/nw_panel.svg +4 -0
  19. novelwriter/assets/icons/typicons_light/typ_eye.svg +4 -0
  20. novelwriter/assets/icons/x-novelwriter-project.ico +0 -0
  21. novelwriter/assets/manual.pdf +0 -0
  22. novelwriter/assets/sample.zip +0 -0
  23. novelwriter/assets/text/release_notes.htm +4 -4
  24. novelwriter/common.py +22 -1
  25. novelwriter/config.py +12 -27
  26. novelwriter/constants.py +20 -3
  27. novelwriter/core/buildsettings.py +1 -1
  28. novelwriter/core/coretools.py +6 -1
  29. novelwriter/core/index.py +100 -34
  30. novelwriter/core/options.py +3 -0
  31. novelwriter/core/project.py +2 -2
  32. novelwriter/core/projectdata.py +1 -1
  33. novelwriter/core/tohtml.py +9 -3
  34. novelwriter/core/tokenizer.py +27 -20
  35. novelwriter/core/tomd.py +4 -0
  36. novelwriter/core/toodt.py +11 -4
  37. novelwriter/dialogs/preferences.py +80 -82
  38. novelwriter/dialogs/updates.py +25 -14
  39. novelwriter/enum.py +14 -4
  40. novelwriter/gui/doceditor.py +282 -177
  41. novelwriter/gui/dochighlight.py +7 -9
  42. novelwriter/gui/docviewer.py +142 -319
  43. novelwriter/gui/docviewerpanel.py +457 -0
  44. novelwriter/gui/editordocument.py +1 -1
  45. novelwriter/gui/mainmenu.py +16 -7
  46. novelwriter/gui/outline.py +10 -6
  47. novelwriter/gui/projtree.py +461 -376
  48. novelwriter/gui/sidebar.py +3 -3
  49. novelwriter/gui/statusbar.py +1 -1
  50. novelwriter/gui/theme.py +21 -2
  51. novelwriter/guimain.py +86 -32
  52. novelwriter/shared.py +23 -1
  53. novelwriter/tools/dictionaries.py +268 -0
  54. novelwriter/tools/manusbuild.py +17 -6
  55. novelwriter/tools/manuscript.py +1 -1
  56. novelwriter/tools/writingstats.py +1 -1
  57. novelwriter/assets/icons/typicons_dark/typ_at.svg +0 -4
  58. novelwriter/assets/icons/typicons_light/typ_at.svg +0 -4
  59. {novelWriter-2.2b1.dist-info → novelWriter-2.2rc1.dist-info}/LICENSE.md +0 -0
  60. {novelWriter-2.2b1.dist-info → novelWriter-2.2rc1.dist-info}/WHEEL +0 -0
  61. {novelWriter-2.2b1.dist-info → novelWriter-2.2rc1.dist-info}/entry_points.txt +0 -0
  62. {novelWriter-2.2b1.dist-info → novelWriter-2.2rc1.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: novelWriter
3
- Version: 2.2b1
3
+ Version: 2.2rc1
4
4
  Summary: A markdown-like text editor for planning and writing novels
5
5
  Home-page: https://novelwriter.io
6
6
  Author: Veronica Berglyd Olsen
@@ -40,9 +40,9 @@ synchronisation tools. All text is saved as plain text files with a meta data he
40
40
  project structure is stored in a single project XML file, and other meta data is primarily saved as
41
41
  JSON files.
42
42
 
43
- The application is written with Python 3 (3.8+) using Qt5 and PyQt5 (5.3+). It is developed on
43
+ The application is written with Python 3 (3.8+) using Qt5 and PyQt5 (5.10+). It is developed on
44
44
  Linux, but should in principle work fine on other operating systems as well as long as dependencies
45
- are met. It is regularly tested on Debian and Ubuntu Linux, Windows, and macOS.
45
+ are met. It is regularly tested on Debian and Ubuntu Linux, Windows, and MacOS.
46
46
 
47
47
  novelWriter is developed and maintained by [Veronica Berglyd Olsen](https://github.com/vkbo).
48
48
 
@@ -1,13 +1,13 @@
1
- novelwriter/__init__.py,sha256=cPg0E43d0bdvMs_cdCiseZvUaCDhZTPGIs4wdD88dgE,7368
2
- novelwriter/common.py,sha256=Tk3gA5dA-ugkKxtuHxaxLT0ey4wr13XQpBbxSIoPgtY,17792
3
- novelwriter/config.py,sha256=fOrhtqtPkKxg9ekisUvuenBy6G-UR2t7t90ZneaxUo8,35452
4
- novelwriter/constants.py,sha256=mF3AMFt2cQ5Si_KzVTerVqQHD5wV-iF9VBjaXRjamJw,18662
5
- novelwriter/enum.py,sha256=uht74AVcQlyyyjEc0TZv-bpaRjbRvA2hAfsNWyCSR2U,3077
1
+ novelwriter/__init__.py,sha256=Z7kta_joip5E8xppMHYnMszF1SGclC5dmkBkFscT6Eg,7366
2
+ novelwriter/common.py,sha256=J9YAOC6Jlymn60nArjZ8K4x3ewRgzsMxGwLT3O43ZlE,18348
3
+ novelwriter/config.py,sha256=BNJiwuzvHY4bNRr3rVo4vHw71XgxVqcIdagKIt2KfMQ,34580
4
+ novelwriter/constants.py,sha256=Ugz41uRVKTlS3ATlw83Arc9ZXfx2VD2jcrbGKii15GQ,19003
5
+ novelwriter/enum.py,sha256=rslYLYDcd-6CZvaNFCApxGRvoTOQXVat8CjuWo2v_DE,3194
6
6
  novelwriter/error.py,sha256=7zjvsW91F4GgHJeENXjaF0fwjG7I1MV994HPqnw-Q8Q,7125
7
- novelwriter/guimain.py,sha256=i8zOLDv4Il64lOe_SLTzkIPk8JDp11-UffSR5hn8bZM,54322
8
- novelwriter/shared.py,sha256=JFSHbvXlCSgTLojgEMCRucXKssUDawJ3Jd6Pl0wTw74,11337
9
- novelwriter/assets/manual.pdf,sha256=jFuphICEqE_zW3TdB0XY748N9Hk4_QrJFUx9mZmfCI4,2064948
10
- novelwriter/assets/sample.zip,sha256=vJzraQhRjyuIF50onLm3cvYjqkZ7Expz6P2EoVOmLe4,24944
7
+ novelwriter/guimain.py,sha256=KVgmBPaC1y6W8zyPsmHZWnlK1hldGJ_IzYpUOwzfY8M,57176
8
+ novelwriter/shared.py,sha256=YrP9MbDez5rI9JIGEXG4_mZmULlWH4YwxWRu6dTFJu0,12110
9
+ novelwriter/assets/manual.pdf,sha256=6pLVmT6LZfflWiveItFJRNwCXGAPSZt5P83CGsLWfhM,2065193
10
+ novelwriter/assets/sample.zip,sha256=JtPig51XDei34apZYEnVeYRdyr-u5YGGkQyhvzV7h7s,24990
11
11
  novelwriter/assets/i18n/nw_de_DE.qm,sha256=Gv5bnDBWPvCIDT6AhsToQxyy7kjrgdJewUzxjaY9hTM,91303
12
12
  novelwriter/assets/i18n/nw_en_US.qm,sha256=lx4O2_Q8XZbrpa2q_l5PYdQO2pZODzflgijtp-d3vu0,94288
13
13
  novelwriter/assets/i18n/nw_es_419.qm,sha256=Rq4jalFWScVRH-jPn2hQHI0fFaQ7YC7hYR7YxDONAgQ,104427
@@ -19,7 +19,7 @@ novelwriter/assets/i18n/nw_nl_NL.qm,sha256=vyljBV5rlP5o4dmVQUj29qKRINjDlqHIYHZsi
19
19
  novelwriter/assets/i18n/nw_pt_BR.qm,sha256=JvZ2tXyDdhlfnm25zIq13pcxbvnch5cGte44ENix3LE,103080
20
20
  novelwriter/assets/i18n/nw_zh_CN.qm,sha256=CZKdeKlcqeAyKHirV9BrmZoSLpHwIJ4qF3ywSA7zQHM,61625
21
21
  novelwriter/assets/i18n/project_de_DE.json,sha256=tcq7X3oSsTBx3qH--QT8fevbsaWRVz40Ix9PC5iN6kw,2775
22
- novelwriter/assets/i18n/project_en_GB.json,sha256=bT6FMLywiGlsTx4pyUplKbyWzhOpopHACkG5tJ7nRso,2439
22
+ novelwriter/assets/i18n/project_en_GB.json,sha256=EcQAVEiQgRL3qobuzkPTfOWIxAc3Om-tA7nXUFFXEdI,2483
23
23
  novelwriter/assets/i18n/project_en_US.json,sha256=bT6FMLywiGlsTx4pyUplKbyWzhOpopHACkG5tJ7nRso,2439
24
24
  novelwriter/assets/i18n/project_es_419.json,sha256=_fJ3H7bC0Ffj5OiRuECl7fmEZGywGZ_nX4DSHy5ewVQ,2423
25
25
  novelwriter/assets/i18n/project_fr_FR.json,sha256=etTyCkpNEfE37x8lOV6rHTzXC6AAXVKMXvbUtyM4Rg4,2479
@@ -31,12 +31,12 @@ novelwriter/assets/i18n/project_nn_NO.json,sha256=7ZfmtFWHcDMiLVqdOEDHQWHbpoC_bv
31
31
  novelwriter/assets/i18n/project_pt_BR.json,sha256=2eZNZeGs6l8_ghbGkAziuo3ERFNZ2hxTnZtB2PR1wFY,2461
32
32
  novelwriter/assets/i18n/project_ru_RU.json,sha256=F4QkD6VVDCtGdil7uoXCmuczvUpe9tv-1L-3Eyc8sKE,3699
33
33
  novelwriter/assets/i18n/project_zh_CN.json,sha256=0Uzhrh7EjUllPTfJ0y0RV5WB_GXGIYBZmmHxDr9TRW4,2044
34
- novelwriter/assets/icons/novelwriter.ico,sha256=gHwlOkpSzKapfbPLG46XcNtoSlgnY6PQ2P9K8eIsSLw,9192
34
+ novelwriter/assets/icons/novelwriter.ico,sha256=OJRIeeUcmS7Di51NA3uF5_Ov4V8T47gQ9qWv6C7qDeA,171059
35
35
  novelwriter/assets/icons/novelwriter.svg,sha256=Ad_SgOdXSDJtFR3DLCx6Afme15I78r38_YxCfO9F2z4,8511
36
- novelwriter/assets/icons/x-novelwriter-project.ico,sha256=y6jk8SkVPJ1aCqmz2XQRqdMq5bFUKPtrw4L8Wm6_ekY,8807
36
+ novelwriter/assets/icons/x-novelwriter-project.ico,sha256=MXdZSYi3j95aIsT5bZo6CkhxmS75cThP9O_38UR7sjg,170697
37
37
  novelwriter/assets/icons/x-novelwriter-project.svg,sha256=VHf1aClkA91tZVYb3LFk9bi_Dw25QBVSjUJAjSD-YX4,5143
38
38
  novelwriter/assets/icons/typicons_dark/README.md,sha256=6ZxJq-19PNrMdeuVeVg84aLjxhr9oF7dLwuMFVGQyq0,1065
39
- novelwriter/assets/icons/typicons_dark/icons.conf,sha256=uNkY4QTnXdify9HIP6r_xbPIwF2KyJtnn-jUXaWk8yQ,3703
39
+ novelwriter/assets/icons/typicons_dark/icons.conf,sha256=vHRXnwxahIQmDr2ml_qGUN85l-NUlOxj2yc1kLiM-yA,3956
40
40
  novelwriter/assets/icons/typicons_dark/mixed_document-chapter.svg,sha256=POP_Cs3bkkKAmrS_fTgjj90eyNK0bipNGgOhDDlXKu0,1650
41
41
  novelwriter/assets/icons/typicons_dark/mixed_document-note.svg,sha256=OaPRbvkA7h4GA4mnFXJRORv80h2nAsJTmlIR8Msrwt8,1650
42
42
  novelwriter/assets/icons/typicons_dark/mixed_document-scene.svg,sha256=9vXiKJZzzTJCfUDxGNr57IAvw2LQ7pitW7GwOOhrEN8,1647
@@ -49,10 +49,15 @@ novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg,sha256=Ml28wWsp
49
49
  novelwriter/assets/icons/typicons_dark/mixed_search-replace.svg,sha256=h2tBf_BthV5HnR9GB861PDMpIsc4OzzccuiKaUgBRAE,2163
50
50
  novelwriter/assets/icons/typicons_dark/nw_deco-h0.svg,sha256=ssrqNUVY1vz4LtYE5pdINmP6qI5IZHFbokfYPzG-CTM,225
51
51
  novelwriter/assets/icons/typicons_dark/nw_deco-h1.svg,sha256=nY2JYxPpGTsKCgp8pM0BdscFk6OoESNDVj53m4PMkM0,222
52
+ novelwriter/assets/icons/typicons_dark/nw_deco-h2-narrow.svg,sha256=NkZKLECgrrhPF9oI3OuZeSyuMiSN93T-qUGg2n99c_0,225
52
53
  novelwriter/assets/icons/typicons_dark/nw_deco-h2.svg,sha256=Y932Dy4Z_ooeatDIkOTpOqJ4GMOTdUMKFxb5jJgo5xw,234
54
+ novelwriter/assets/icons/typicons_dark/nw_deco-h3-narrow.svg,sha256=0e0YurPmRY03zwkUwNX-a1VimOuJ0k3HT_uSI_6IbZ8,222
53
55
  novelwriter/assets/icons/typicons_dark/nw_deco-h3.svg,sha256=kVfLtW7OcsZdIihfCbcSNtxpmQLWt4O6q016a19rstI,231
56
+ novelwriter/assets/icons/typicons_dark/nw_deco-h4-narrow.svg,sha256=9dksKdaZnYtJYp97b9aGzhcQM_X32eguEB5IrBo08rk,222
54
57
  novelwriter/assets/icons/typicons_dark/nw_deco-h4.svg,sha256=ZQzYLzxDZS0vY-EED-4stwaPXKSdlHgUaddrTA004pc,231
58
+ novelwriter/assets/icons/typicons_dark/nw_deco-note.svg,sha256=aAsfGV-UzemXM4nUFyZ5cS57S8PnUAUvOvPVZVSqQlo,225
55
59
  novelwriter/assets/icons/typicons_dark/nw_deco-noveltree-more.svg,sha256=Vt76I_GrMA0RvB0-0XTUTOgcHqgR8h4SuEIZiuspZns,314
60
+ novelwriter/assets/icons/typicons_dark/nw_panel.svg,sha256=ARAHkSVrLwsQmaEYkNU13UXegIG2Q5p6rnlKxdqAzto,912
56
61
  novelwriter/assets/icons/typicons_dark/nw_search-case.svg,sha256=RTXth9FpdP83AjWpSq4-1VSOO_522dP3_MnHOJatO2w,950
57
62
  novelwriter/assets/icons/typicons_dark/nw_search-preserve.svg,sha256=PSjnk3BbKXGdCOnpaIK623EJml-75gRILs2cJrqo_B4,854
58
63
  novelwriter/assets/icons/typicons_dark/nw_search-regex.svg,sha256=j5u8KQD1LqwWHe7FG_fpyljN3KDWtbsrhI9Jp0eOGcw,746
@@ -70,7 +75,6 @@ novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg,sha256=Io2wWbs2Z0z5
70
75
  novelwriter/assets/icons/typicons_dark/typ_arrow-maximise.svg,sha256=m4w3ZUHy3R2aTtvLKZpmd6FPijjkaG6A5jhiqfTp9mg,1029
71
76
  novelwriter/assets/icons/typicons_dark/typ_arrow-minimise.svg,sha256=4XVXvgIN00s6UfHmL3jXSTu5cRjeTKH_WtbS1ZRcCuM,1135
72
77
  novelwriter/assets/icons/typicons_dark/typ_arrow-repeat-grey.svg,sha256=RNhpFR1pmej9rKW-kvxHZa8zFFK3nVfdyP5NksUDDqM,1217
73
- novelwriter/assets/icons/typicons_dark/typ_at.svg,sha256=ds2Ju9UYwAdQx7KwzjWVjb7esOgnt-PXD8I0wSulVQU,944
74
78
  novelwriter/assets/icons/typicons_dark/typ_book-grey.svg,sha256=Nl-pghkCn8BG28Cga1vyVtLMDNgMDjL15Tc4s4DVz7k,807
75
79
  novelwriter/assets/icons/typicons_dark/typ_book.svg,sha256=MaUaVtd_hXt6yGGj2C1UUZGqhkEUzDWL5wmByT4UE7U,1490
76
80
  novelwriter/assets/icons/typicons_dark/typ_bookmark.svg,sha256=I2KqO-t22-kA4ELUYnkKLge3HHcQSH3Lw02PsWRsiq0,909
@@ -89,6 +93,7 @@ novelwriter/assets/icons/typicons_dark/typ_directions-full.svg,sha256=zdoD3rN51b
89
93
  novelwriter/assets/icons/typicons_dark/typ_document-text.svg,sha256=YLIx9UGJOH-TZVFQy-9DZRVV4NcyGUSLHURfeFmoNVM,2359
90
94
  novelwriter/assets/icons/typicons_dark/typ_export-grey.svg,sha256=B17RWooBQ-QdI1x9Wnc_qzU5R-QnNxLIc6cC3AFNLyc,784
91
95
  novelwriter/assets/icons/typicons_dark/typ_export.svg,sha256=W0474TDm4hGFR3L1l4EI2lnrgwPbzvLF98B3qADnTOQ,772
96
+ novelwriter/assets/icons/typicons_dark/typ_eye.svg,sha256=i50mrAYP-CIA5GWVw1HoQ37fF42mOsumvdJ4QGFaFK8,872
92
97
  novelwriter/assets/icons/typicons_dark/typ_flag.svg,sha256=CsL5ymuzeRoC7BihBqTSKx2Uzgiv_FVOa8sBY-fALpU,645
93
98
  novelwriter/assets/icons/typicons_dark/typ_folder-open.svg,sha256=bbaKJV_iAl7eXCchQOHcvpMuqzKpob2OBpxH8Mxvwjk,873
94
99
  novelwriter/assets/icons/typicons_dark/typ_folder.svg,sha256=udF27ClfcuOwwxiW3fFMla6HRgsqYxnQK_WJXyNA22o,959
@@ -118,7 +123,7 @@ novelwriter/assets/icons/typicons_dark/typ_trash.svg,sha256=XjO0SRcnPDrg9Qe8zR5W
118
123
  novelwriter/assets/icons/typicons_dark/typ_user.svg,sha256=00gZEDr59B1A7A4o0w5VjCJOHnQHANsgXBhnB_VTMU4,733
119
124
  novelwriter/assets/icons/typicons_dark/typ_warning-full.svg,sha256=zqqV82C37dWH_yHoSuPo-BLsErg0sl8_VlB6fzXL4VE,970
120
125
  novelwriter/assets/icons/typicons_light/README.md,sha256=nyGvWLJ8cusLYP8YsjX_l213NkDE_GHrwctZ-I_JQUg,1066
121
- novelwriter/assets/icons/typicons_light/icons.conf,sha256=BV-W64PGTH7QlXnY752MDgluAS4MGw2sXijd7uLyFB4,3706
126
+ novelwriter/assets/icons/typicons_light/icons.conf,sha256=_yPksV343cSJ3qPI2rSzD4QLJ8X0e-Tb1qkiilDRsUk,3959
122
127
  novelwriter/assets/icons/typicons_light/mixed_document-chapter.svg,sha256=kXNwPbeKR3eupIrqtDQrNGq5sL8vdExLfPMrMX2sEsw,1650
123
128
  novelwriter/assets/icons/typicons_light/mixed_document-note.svg,sha256=XpKQ2Fj7J3I3BT9mAQkjk_A4eP7uy94vPeDBA62fOYI,1650
124
129
  novelwriter/assets/icons/typicons_light/mixed_document-scene.svg,sha256=kwNPNaCJixTSpTPRFYxEHt3hVqhpwGJTCfZfu8rJvYE,1650
@@ -131,10 +136,15 @@ novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg,sha256=uKyenea
131
136
  novelwriter/assets/icons/typicons_light/mixed_search-replace.svg,sha256=eGKRJPxZhtwX9qQZ-kw3UmfLBdZqovqn7GVR2g4drnQ,2169
132
137
  novelwriter/assets/icons/typicons_light/nw_deco-h0.svg,sha256=ssrqNUVY1vz4LtYE5pdINmP6qI5IZHFbokfYPzG-CTM,225
133
138
  novelwriter/assets/icons/typicons_light/nw_deco-h1.svg,sha256=nuzuJ9h9Lb1HpdOq6NfRKzSGlUVo53fC4TnHHpdkOu0,225
139
+ novelwriter/assets/icons/typicons_light/nw_deco-h2-narrow.svg,sha256=dkAEvmLO4DkRDe_rfRB-0L7yM7mEGj24XW1gFf3B-BA,225
134
140
  novelwriter/assets/icons/typicons_light/nw_deco-h2.svg,sha256=E8TauJ4lm33Jg2fyguO30H64s_-EVpuMPQ2uAo0Ly8I,234
141
+ novelwriter/assets/icons/typicons_light/nw_deco-h3-narrow.svg,sha256=0hPf33_jESLZUpwabV3xdOnyWpBy483C-28XcJLhkF0,225
135
142
  novelwriter/assets/icons/typicons_light/nw_deco-h3.svg,sha256=lezYcWdf_d0hDu3MZpSDlgxFq5zN8BeR5jHcoiU4p3c,234
143
+ novelwriter/assets/icons/typicons_light/nw_deco-h4-narrow.svg,sha256=yKz154CJ85zwE3qwmd--0jsjGMNp6j_mCcbteeyjy9c,222
136
144
  novelwriter/assets/icons/typicons_light/nw_deco-h4.svg,sha256=Fr___Gtm93VfZUwORTVQ_IHXEWJ0FdSZI8KpsfbAcpM,231
145
+ novelwriter/assets/icons/typicons_light/nw_deco-note.svg,sha256=99VNGOW5qg0V6avQokkwbur3O9TTv27E94mWwSa0o1k,225
137
146
  novelwriter/assets/icons/typicons_light/nw_deco-noveltree-more.svg,sha256=Vt76I_GrMA0RvB0-0XTUTOgcHqgR8h4SuEIZiuspZns,314
147
+ novelwriter/assets/icons/typicons_light/nw_panel.svg,sha256=_btLJwklPw8EzpGnEvbTjvFuFy5Fi5yT2I7fQchJ6z8,919
138
148
  novelwriter/assets/icons/typicons_light/nw_search-case.svg,sha256=cU9e-bOh0vCrI_REFC38aeUmmf45oH2rVE0x-GZKsKQ,974
139
149
  novelwriter/assets/icons/typicons_light/nw_search-preserve.svg,sha256=ggEvIlqfEyjxR_IzP0R0TwVXK5nTaIxyWP4TGgmpLvs,885
140
150
  novelwriter/assets/icons/typicons_light/nw_search-regex.svg,sha256=uYWEIptuiwsVhp5Q30JalDsUTqfMktPosteARZbSXkI,760
@@ -152,7 +162,6 @@ novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg,sha256=vDYZrsNe2Af
152
162
  novelwriter/assets/icons/typicons_light/typ_arrow-maximise.svg,sha256=bz93DwuiB_2Baf-oG5SsMdWGccYogyNqR2Yq3OQ4bDY,1032
153
163
  novelwriter/assets/icons/typicons_light/typ_arrow-minimise.svg,sha256=PcnZfvRheewpelAsfj_OF09a0JmB0PPuU_3Yn4buztc,1138
154
164
  novelwriter/assets/icons/typicons_light/typ_arrow-repeat-grey.svg,sha256=HV86TeWDyw24qRllBsIpxn1bT2Oj74hrHJuSKfyLx_0,1224
155
- novelwriter/assets/icons/typicons_light/typ_at.svg,sha256=O64OqPdL0TH2AA-eyDSbZDvuNJmDLtV6QV28-g8axR8,947
156
165
  novelwriter/assets/icons/typicons_light/typ_book-grey.svg,sha256=T4pOeWLJxx-Z-gNPTCiIZzryHQ7efwbRcdMcL8pil-g,814
157
166
  novelwriter/assets/icons/typicons_light/typ_book.svg,sha256=vRlJHH06q1982IZHCx56ouOezyVw31SJ2uogs2xUj2k,1490
158
167
  novelwriter/assets/icons/typicons_light/typ_bookmark.svg,sha256=q3I2j4AsNN12OGwr2zvtFXPVmnLAMoPuKw69wW4SnrM,912
@@ -171,6 +180,7 @@ novelwriter/assets/icons/typicons_light/typ_directions-full.svg,sha256=U8zciM3cN
171
180
  novelwriter/assets/icons/typicons_light/typ_document-text.svg,sha256=AckgX3ABVx5HXrpJH0IG-nKqhaaGhwtS6Vv0g-ydXR0,2262
172
181
  novelwriter/assets/icons/typicons_light/typ_export-grey.svg,sha256=L9YMhoVE0L3lGa0Vlfn7KoI6eHD4gNiCD9Ou5TOLtsE,791
173
182
  novelwriter/assets/icons/typicons_light/typ_export.svg,sha256=qAUqhrxBlNBrpQ6btO_30pbR2QSHWXEgGjxOMuCIAHs,775
183
+ novelwriter/assets/icons/typicons_light/typ_eye.svg,sha256=GpkDqhF_WvtdOMYbl_iI_ihFc3PJ-5FMM01wbOsrYv4,875
174
184
  novelwriter/assets/icons/typicons_light/typ_flag.svg,sha256=_AKaSDc3Bp-hgTnArc_v2BuHXLegPBy1gl1gXJ_lISU,645
175
185
  novelwriter/assets/icons/typicons_light/typ_folder-open.svg,sha256=ANWrMMQd6WOr1pqfzF7QBuclkHYXbnQw2qGbktBofXQ,880
176
186
  novelwriter/assets/icons/typicons_light/typ_folder.svg,sha256=us9UN7ZOoxY5LrQiH7LizrKTo5XEEZRemlGuC2ZNsDk,959
@@ -216,43 +226,43 @@ novelwriter/assets/syntax/tomorrow_night_eighties.conf,sha256=X6uKDP14Ysy3Irmf9I
216
226
  novelwriter/assets/text/credits_en.htm,sha256=G1xGdZ2EbhIa3gO3idywyH7C1gTnsxhyhQjw__VMKOQ,3415
217
227
  novelwriter/assets/text/gplv3_en.htm,sha256=SZ3fBrGvJ5385SxMPqeJOInhI4gMrK4W5jJBUhYt83s,34517
218
228
  novelwriter/assets/text/lipsum.txt,sha256=sGA6AC_p4jrUifxLxy3cSODeRwkpBNXDPGgX6YRTm2s,62937
219
- novelwriter/assets/text/release_notes.htm,sha256=nNFuLTzhJ8LCgSWuD8y2RHDRXZffJ5Zfb5YizeTyfSE,634
229
+ novelwriter/assets/text/release_notes.htm,sha256=ju0_lVd_AijV6LStW7Nb-vcIfizwhAlppyoBXHNZvbQ,637
220
230
  novelwriter/assets/themes/default.conf,sha256=K0LZ64lODpCtUg3pISTAP4UKvEYMvPkmIYN9RDEaWwk,72
221
231
  novelwriter/assets/themes/default_dark.conf,sha256=oAYqk2l1U8zIpHRlGi0Hm4T2eWE0FfH8O7ilqaeoptw,925
222
232
  novelwriter/assets/themes/default_light.conf,sha256=H1raSvgmlCl63rmcQQbx4rfqa1ZvJeRenaCv9BUrrUI,928
223
233
  novelwriter/assets/themes/solarized_dark.conf,sha256=HIP9icMtRljUmMH7PmU0IrcLGUSXVDaG97070Hc0UVM,852
224
234
  novelwriter/assets/themes/solarized_light.conf,sha256=jUfaCnWXM4GAOI1eUioj_nP0RiMrnr8MEOprSg7qUU4,854
225
235
  novelwriter/core/__init__.py,sha256=IrBU9r8-lBnwqAD79xtpaDMortj23X-t6zQ1RIWluY4,39
226
- novelwriter/core/buildsettings.py,sha256=l84leG9YijEvkAlFYd1ZUeRrBmWtKqAbobgee5gWu_U,21135
227
- novelwriter/core/coretools.py,sha256=7oT4D22ElxXx-bl4QlXeQ6_CmpDnOsYxdhIrTxxTrVs,16789
236
+ novelwriter/core/buildsettings.py,sha256=_VNtLKSD7DoSY7pnVnI18V57W1uMDZyJvq7XQu8TEuQ,21134
237
+ novelwriter/core/coretools.py,sha256=jp-w8nrKrswyNkQijXnG4BQfR4Ikum1uYnkotrZ9AcE,16981
228
238
  novelwriter/core/docbuild.py,sha256=J8tKRVyuxdJZzrkaMWPPiaa7THMV-mC5gMKChhiZVKo,11467
229
239
  novelwriter/core/document.py,sha256=M6HVRO7bpI5f4JhHzsWBNdDVk1fd1xImS44Z1d5Wslg,11405
230
- novelwriter/core/index.py,sha256=8lZ6J_PqB58ICCUcBKuvGrPeqi9O0aEa6yTSfV5AN0k,44243
240
+ novelwriter/core/index.py,sha256=9vRheMyGvZcvK1uMDuZRbZ81BEhKmEHtHCvF7v58FHQ,47007
231
241
  novelwriter/core/item.py,sha256=9egKCeMpQtZOvSuTuJ-CfsT-aOKUF00wbmvZLrU-sZU,17690
232
- novelwriter/core/options.py,sha256=J2G5VBSMzJa2bVW2hbI7vS0E_hQpgR7Fd0JSvywaSO4,7262
233
- novelwriter/core/project.py,sha256=I-uy3ptRjjYVLHZ7Y3REXitRpfVZFKT5PBMneRVA3Qs,21862
234
- novelwriter/core/projectdata.py,sha256=tFAaQWsaDF1v_toI5QPXkDCPdelDSVJs3AqAxRwJqh8,10187
242
+ novelwriter/core/options.py,sha256=EzPJ0G1hv7w_fUskjz-VHjY7DPwC1A9J-QgGIBDbUj4,7316
243
+ novelwriter/core/project.py,sha256=6y6DGk0khmU1mLB35BFDojDubufHDPYBmquhH3rWuFk,21873
244
+ novelwriter/core/projectdata.py,sha256=RcN1vhYtKPxeTqU-mwJ7IRRk1NaiUUY_zk5VeSPhHoc,10188
235
245
  novelwriter/core/projectxml.py,sha256=i56PV_-vXEkhIjGE2peie4hvzOp1u7MrIZqNwKdDAQo,23002
236
246
  novelwriter/core/sessions.py,sha256=ljF9d49-V-wRHzEqPH_Y_NxP1U5mSOv-ZYo6uj_ACV4,4393
237
247
  novelwriter/core/spellcheck.py,sha256=SOQOun8qMpmDXIqOM-I8HqOYccS0M-sF67s8gnBBJjM,7142
238
248
  novelwriter/core/status.py,sha256=2AD6Iigi2T0DiK0o5Yitl78SV9PusCDcEMxTAGzgcyk,8662
239
249
  novelwriter/core/storage.py,sha256=TYntje53e1CqzxG5IlQgKrqKdCRnxtmBTNP7rsJcBro,19239
240
- novelwriter/core/tohtml.py,sha256=QWkCld0P3Lt5Abx5oQNeHTksnac8PZKhuJBRUH5IWCU,16950
241
- novelwriter/core/tokenizer.py,sha256=yCGKU7FJe-Ffyzd6nbqoi60TbnyJHBf_3fyvX4M2eWE,30393
242
- novelwriter/core/tomd.py,sha256=FbrQFKUk_uhtNLxqGqzT4foVFtQcv5FWjUI36NdwhVA,6879
243
- novelwriter/core/toodt.py,sha256=j0Zy4pjhWoH65RL-0m0obJZKf0d62Rz_-uEyEzG3e5k,55886
250
+ novelwriter/core/tohtml.py,sha256=yH0_T6FCcwMohpNj0jFuVNWCT3aY0mRBYYpXjG0mpNE,17198
251
+ novelwriter/core/tokenizer.py,sha256=xadHfEh82gcE-55ZVInHm35Dg4vBoFwLsWDJL-PBVsk,30761
252
+ novelwriter/core/tomd.py,sha256=7NukmXC6n1WJr437qDIBKtmeg5SUU0OGo_Vl6Hm5HA8,7062
253
+ novelwriter/core/toodt.py,sha256=2wenEYviOzsJoVjjInXJwR_UdElCWKIXQ4DYX0NDrmI,56216
244
254
  novelwriter/core/tree.py,sha256=qG8Q0gweO60CS-gkmx7RlfLiW2iOUxwCXwkpvou34ok,18549
245
255
  novelwriter/dialogs/__init__.py,sha256=8a0BuN7-dtzkgPhkwX2KNq8gG2rqpyCAwI-U06KhU5Y,42
246
256
  novelwriter/dialogs/about.py,sha256=4VOAy1aLO8TLGtx2QJaR6Zy05gyCz_GjJIi7Q61rEc0,8454
247
257
  novelwriter/dialogs/docmerge.py,sha256=y6E-lh5Ke-Wzj3D2EhzLS_89fP7hmn3PgnW8q6iRkko,5603
248
258
  novelwriter/dialogs/docsplit.py,sha256=3X8FZvrPTXXAN3kLFSfAP24Cz99uN0DBHQNgA1ULAeE,8665
249
259
  novelwriter/dialogs/editlabel.py,sha256=4gaELlZVqocb0G4UoRpEhoup3ZHN9wQgKIwN23NnigE,2478
250
- novelwriter/dialogs/preferences.py,sha256=5UWibzKMxDVN-u07I2qRk0Uq29JLZeUwhvd7Hc3Bx_E,38013
260
+ novelwriter/dialogs/preferences.py,sha256=LlNpPY_IPPehmQwNosFtTDK_Cm8fuyZaJPyp79fD7CA,38723
251
261
  novelwriter/dialogs/projdetails.py,sha256=vHCS7uR1GHCxzmga36BJwrJMZ3bgh-mADR-xxOZhmmY,17791
252
262
  novelwriter/dialogs/projload.py,sha256=OXhOSZ89CXeFY-js5JDmx7dMAlCFTbdCjE95U8nrajU,10045
253
263
  novelwriter/dialogs/projsettings.py,sha256=jT4P5Sxtql9v5D0NmMz7-egZod7C_RdaS5iQ8fmUrGg,24109
254
264
  novelwriter/dialogs/quotes.py,sha256=ErwylPacaqn4uuzSkoTzgOzH84psEovyYvSSgOzdW9E,4022
255
- novelwriter/dialogs/updates.py,sha256=GXaiRLmF6NBVAs2TMfgIHhCij4TsJBONIZ0aEVVCh3I,5086
265
+ novelwriter/dialogs/updates.py,sha256=dP1p0IlzsTZUuhEqRWHkCxmJ3QeODB3LW5eYGP0ogFY,5364
256
266
  novelwriter/dialogs/wordlist.py,sha256=Yn67GE52sA9r0o_6sGLobSYap1rTMEBocmLTkTG0M8s,5586
257
267
  novelwriter/extensions/__init__.py,sha256=ybwq7BzrU1QYw7pd-QC9iCKoB6MIh_FysriNkkHOSMo,51
258
268
  novelwriter/extensions/circularprogress.py,sha256=Do1KUmLUG0U8U0xCfkCuHPB1GO1m4nfejqXDkRRvUis,3736
@@ -266,28 +276,30 @@ novelwriter/extensions/switch.py,sha256=auwFeTdzCjlPb1P5Xia3NzI3UMtu4Md_c0iHeoGo
266
276
  novelwriter/extensions/switchbox.py,sha256=rpFA2DvI7Gezq0WmaaIi_2sN7gwpre8emvEMBDNwoUQ,4367
267
277
  novelwriter/extensions/wheeleventfilter.py,sha256=Lt7NSYFjs1KDI760raWaI8UKQSXqAdZ2IBmNJR_nr1Y,2234
268
278
  novelwriter/gui/__init__.py,sha256=8afC6rASWwWCc7KS_6s2whwTpboQt_495AvyGMLLatQ,38
269
- novelwriter/gui/doceditor.py,sha256=i9cwT1uOseJqcBsIr06qz98xL_sl-mFp3bjsSlUhVGQ,109140
270
- novelwriter/gui/dochighlight.py,sha256=TvUmJ9uMqsx4TZUZHzNjCZitp4_5Ikx34TMq06ghEME,17460
271
- novelwriter/gui/docviewer.py,sha256=DiC9puV0Mm-IR_Dcg4SHFVC0ZXtA43I5uNzWuvPzxV8,39606
272
- novelwriter/gui/editordocument.py,sha256=PX2jY7cfAf95A-arw_7VBcVT4_IRFe-sLzaMuaSIPmE,3607
279
+ novelwriter/gui/doceditor.py,sha256=6KHPrrmj7P9pUNyn9Ed1lCKK29h4fQFvr8P9qVQ8J_I,113913
280
+ novelwriter/gui/dochighlight.py,sha256=HoKLkMa7ELL5BYX5sg7hYCo4Yh3UYxpVNbmjnR1JQII,17436
281
+ novelwriter/gui/docviewer.py,sha256=uhxSkxGybj72K94nLe3NfbUfcBLK49XvHOF3V2z16bk,35041
282
+ novelwriter/gui/docviewerpanel.py,sha256=TYaZ7HG7eaqFomIMfMcBofRYXoGpgucS0f2N-Bn-46Y,16316
283
+ novelwriter/gui/editordocument.py,sha256=cd5dudLOQgGqb7OEjvmQXUn7luxqCkHuTu7Yt8fHEt8,3608
273
284
  novelwriter/gui/itemdetails.py,sha256=3OmdR37sXBCUK7jpkzRHDuqbdCu949UT-8P0wJdnMa4,9826
274
- novelwriter/gui/mainmenu.py,sha256=WvqKfZTSCbIQBBzds4tcq6jG-kr0zyBYU6Dpkx8GQEQ,37579
285
+ novelwriter/gui/mainmenu.py,sha256=2V-AP4gXeyyxYgFASXHp7wQg0LjsY6DpesUUf2VFx54,38017
275
286
  novelwriter/gui/noveltree.py,sha256=fpGw5fKRhzO8OhiRGl1T3xfYkIVWgpUeckBaIEjTFWs,28174
276
- novelwriter/gui/outline.py,sha256=J7NWs4Bt9zhUv2rZuBl-82Gw9aYxUQyEj_RQyLbUZfk,39954
277
- novelwriter/gui/projtree.py,sha256=-04tApen4FhIb5o0XelTo-ZBZVaFWKgPz70Jw_nE_w4,69799
278
- novelwriter/gui/sidebar.py,sha256=kJr8Ttle9Ku9c6KDp2e6c0N241u7FXkzLM5PbJagUx8,6508
279
- novelwriter/gui/statusbar.py,sha256=vZHuAcU_jbSX6M1-N6bZwPSM6Z2ydHFJ3jcW0H-WKlM,7795
280
- novelwriter/gui/theme.py,sha256=Yla02GaDWiuqC_SUK9-Qcfgz80fM4qQKcAmP2keA96Y,28495
287
+ novelwriter/gui/outline.py,sha256=U7yUDCmn3ElhdbomXpl48jHwc4WV7U8SmFKxbzRtJ7A,39956
288
+ novelwriter/gui/projtree.py,sha256=8UzVJcQ-jibidA4KEiYkSk7z1RN_hbj4L8Rj056jz-M,73389
289
+ novelwriter/gui/sidebar.py,sha256=a5nV56qbuWD9uXlMHsQhW2HwNHUtyVDVwMai4SZeH38,6493
290
+ novelwriter/gui/statusbar.py,sha256=0mBqExQATsDiWhx64TYjg3LhypB8zwUmiZJvIMGf0qA,7795
291
+ novelwriter/gui/theme.py,sha256=2BxMYVhtxzLhUn8pGY1MVLnyWwpHd9OEytRsGLMJ_Ik,29480
281
292
  novelwriter/tools/__init__.py,sha256=1MVOieA7WQw_xjH7d944hko81I4OM7gPAdSomN8zz3M,40
293
+ novelwriter/tools/dictionaries.py,sha256=ul7fyOJOULi0bnUMmYt1VQrjm_T3PU673DL2Ny6_LNo,9154
282
294
  novelwriter/tools/lipsum.py,sha256=eeYNIHpQDgIv-aQI6gEFh6RDjapyhoT-vL0fW79Qj9c,4478
283
- novelwriter/tools/manusbuild.py,sha256=N9Jme4P2OuN3ovf2hS3xLqHP5CFjT5c5lOF_geUsA04,13192
284
- novelwriter/tools/manuscript.py,sha256=LTC0Om3SixvUUThmiwUYYRrSTctY9X59Ht5v64DFo7w,29778
295
+ novelwriter/tools/manusbuild.py,sha256=B6rYxQmfpzwQCCY2fIymZyeK-4YK44R_H6J48YNQnVI,13776
296
+ novelwriter/tools/manuscript.py,sha256=BDsy6OUkZgBpj9VzBoHQ7KEFjGfAUmPkU0lK0oLKjqA,29778
285
297
  novelwriter/tools/manussettings.py,sha256=bLdRrX4B-ZqmEAvmiRoNbEEzat499CwONcS5eVXIfT4,48986
286
298
  novelwriter/tools/projwizard.py,sha256=nnH71IEwiws7bxxFbYIvqqh5kD53Hr2nYhv3AfVPqOU,16408
287
- novelwriter/tools/writingstats.py,sha256=JDe6aWDyIUqC-OxEiEE4IWVCgpFQJvYax42yG0T3rcs,22283
288
- novelWriter-2.2b1.dist-info/LICENSE.md,sha256=2GirkkLrPfQqx7fACKRJjtKJUegKc8067erGvcDVQHM,32197
289
- novelWriter-2.2b1.dist-info/METADATA,sha256=9CPA9G2SwSra9CQbweeFHCasqq9BTm7sTnbudzNBxBQ,2581
290
- novelWriter-2.2b1.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
291
- novelWriter-2.2b1.dist-info/entry_points.txt,sha256=lN-EspQDlSi_RtYp_OVKtyRsbwZEjPuaux0DK_9i3Ts,98
292
- novelWriter-2.2b1.dist-info/top_level.txt,sha256=wFFEucjEeNC_Ap5ULBuEutg5a1Uc0-YO9uFT5L2naNI,12
293
- novelWriter-2.2b1.dist-info/RECORD,,
299
+ novelwriter/tools/writingstats.py,sha256=RAZ-Vbh9rbprsj2Z2kIPK8HSLZwU5_WZ0rDoAidsj7c,22299
300
+ novelWriter-2.2rc1.dist-info/LICENSE.md,sha256=2GirkkLrPfQqx7fACKRJjtKJUegKc8067erGvcDVQHM,32197
301
+ novelWriter-2.2rc1.dist-info/METADATA,sha256=-DpoCjaQvZM6EmYffzusBV6tA9lPTmGUPVD65fPAsT8,2583
302
+ novelWriter-2.2rc1.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
303
+ novelWriter-2.2rc1.dist-info/entry_points.txt,sha256=lN-EspQDlSi_RtYp_OVKtyRsbwZEjPuaux0DK_9i3Ts,98
304
+ novelWriter-2.2rc1.dist-info/top_level.txt,sha256=wFFEucjEeNC_Ap5ULBuEutg5a1Uc0-YO9uFT5L2naNI,12
305
+ novelWriter-2.2rc1.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.2-beta1"
46
- __hexversion__ = "0x020200b1"
47
- __date__ = "2023-11-12"
45
+ __version__ = "2.2-rc1"
46
+ __hexversion__ = "0x020200c1"
47
+ __date__ = "2023-11-26"
48
48
  __status__ = "Stable"
49
49
  __domain__ = "novelwriter.io"
50
50
 
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "Synopsis": "Synopsis",
3
+ "Short Description": "Short Description",
3
4
  "Comment": "Comment",
4
5
  "Notes": "Notes",
5
6
  "Tag": "Tag",
Binary file
@@ -59,6 +59,7 @@ maximise = typ_arrow-maximise.svg
59
59
  menu = typ_th-dot-menu.svg
60
60
  minimise = typ_arrow-minimise.svg
61
61
  noncheckable = mixed_input-none.svg
62
+ panel = nw_panel.svg
62
63
  proj_chapter = mixed_document-chapter.svg
63
64
  proj_details = typ_th-list-grey.svg
64
65
  proj_document = typ_document-text.svg
@@ -68,7 +69,6 @@ proj_scene = mixed_document-scene.svg
68
69
  proj_section = mixed_document-section.svg
69
70
  proj_stats = typ_chart-bar-grey.svg
70
71
  proj_title = mixed_document-title.svg
71
- reference = typ_at.svg
72
72
  refresh = typ_refresh.svg
73
73
  remove = typ_minus.svg
74
74
  revert = typ_refresh-flipped.svg
@@ -91,14 +91,21 @@ sticky-off = typ_pin-outline.svg
91
91
  sticky-on = typ_pin.svg
92
92
  unchecked = mixed_input-unchecked.svg
93
93
  up = typ_chevron-up.svg
94
+ view = typ_eye.svg
94
95
  view_build = typ_export-grey.svg
95
96
  view_editor = mixed_edit.svg
96
97
  view_novel = typ_book-grey.svg
97
98
  view_outline = typ_puzzle-outline.svg
98
99
 
99
100
  deco_doc_h0 = nw_deco-h0.svg
101
+ deco_doc_h0_n = nw_deco-h0.svg
100
102
  deco_doc_h1 = nw_deco-h1.svg
103
+ deco_doc_h1_n = nw_deco-h1.svg
101
104
  deco_doc_h2 = nw_deco-h2.svg
105
+ deco_doc_h2_n = nw_deco-h2-narrow.svg
102
106
  deco_doc_h3 = nw_deco-h3.svg
107
+ deco_doc_h3_n = nw_deco-h3-narrow.svg
103
108
  deco_doc_h4 = nw_deco-h4.svg
109
+ deco_doc_h4_n = nw_deco-h4-narrow.svg
104
110
  deco_doc_more = nw_deco-noveltree-more.svg
111
+ deco_doc_nt_n = nw_deco-note.svg
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="4" height="24" version="1.2" viewBox="0 0 4 24" xmlns="http://www.w3.org/2000/svg">
3
+ <rect y="1" width="4" height="22" rx="2" ry="2" fill="#d64848" stroke-width="0"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="4" height="24" version="1.2" viewBox="0 0 4 24" xmlns="http://www.w3.org/2000/svg">
3
+ <rect y="1" width="4" height="22" rx="2" ry="2" fill="#69c" stroke-width="0"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="4" height="24" version="1.2" viewBox="0 0 4 24" xmlns="http://www.w3.org/2000/svg">
3
+ <rect y="1" width="4" height="22" rx="2" ry="2" fill="#fff" stroke-width="0"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="4" height="24" version="1.2" viewBox="0 0 4 24" xmlns="http://www.w3.org/2000/svg">
3
+ <rect y="1" width="4" height="22" rx="2" ry="2" fill="#ffff84" stroke-width="0"/>
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="m17.853 2.0017c-0.14248-0.00428-0.28548-1.936e-4 -0.42925 0.01171h-11.135c-2.3531-0.068148-4.4276 2.1102-4.2808 4.4518 0.00689 3.8473-0.014486 7.6959 0.00976 11.542 0.12963 2.1674 2.0751 4.0505 4.2711 3.9912 3.8794-0.0037 7.7592 0.0071 11.639-0.0059 2.3157-0.05864 4.2507-2.2581 4.0603-4.5591-0.0037-3.7862 0.0071-7.5728-0.0059-11.359-0.054966-2.1716-1.9914-4.0089-4.1286-4.0732zm-11.533 2.8514c0.10262-0.00515 0.20595 1.374e-4 0.30828 0.015613 2.2719-0.00131 4.5437 0.0026 6.8153-0.00195 1.5163 0.01818 3.0369-0.036922 4.5501 0.029275 0.83106 0.14317 1.246 1.0195 1.1395 1.7956-0.0023 1.7714-9.95e-4 3.543 0 5.3144h-14.271c-9.495e-4 -1.9468-0.0019-3.8929 0.00585-5.8394 0.049778-0.75434 0.73334-1.2775 1.4517-1.3135z" fill="#848484" stroke-width=".99912"/>
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="m22.803 11.373c-0.0913-0.1309-2.2682-3.2384-5.2724-5.3626-1.5576-1.1033-3.5222-1.7105-5.5309-1.7105-2.0075 0-3.9721 0.60721-5.5331 1.7105-3.0041 2.1241-5.1789 5.2317-5.2702 5.3626-0.2618 0.3773-0.2618 0.87781 0 1.2551 0.091301 0.1309 2.266 3.2384 5.2702 5.3626 1.5609 1.1022 3.5255 1.7094 5.5331 1.7094 2.0086 0 3.9732-0.60721 5.5309-1.7105 3.0041-2.1241 5.1811-5.2317 5.2724-5.3626 0.2629-0.3762 0.2629-0.87781 0-1.254zm-10.803 4.4771c-2.1274 0-3.85-1.727-3.85-3.85 0-2.1274 1.7226-3.85 3.85-3.85 2.123 0 3.85 1.7226 3.85 3.85 0 2.123-1.727 3.85-3.85 3.85zm2.2-3.85c0 1.2122-0.98781 2.2-2.2 2.2-1.2155 0-2.2-0.98781-2.2-2.2 0-1.2155 0.98451-2.2 2.2-2.2 1.2122 0 2.2 0.98451 2.2 2.2z" fill="#69c" stroke-width="1.1"/>
4
+ </svg>
@@ -59,6 +59,7 @@ maximise = typ_arrow-maximise.svg
59
59
  menu = typ_th-dot-menu.svg
60
60
  minimise = typ_arrow-minimise.svg
61
61
  noncheckable = mixed_input-none.svg
62
+ panel = nw_panel.svg
62
63
  proj_chapter = mixed_document-chapter.svg
63
64
  proj_details = typ_th-list-grey.svg
64
65
  proj_document = typ_document-text.svg
@@ -68,7 +69,6 @@ proj_scene = mixed_document-scene.svg
68
69
  proj_section = mixed_document-section.svg
69
70
  proj_stats = typ_chart-bar-grey.svg
70
71
  proj_title = mixed_document-title.svg
71
- reference = typ_at.svg
72
72
  refresh = typ_refresh.svg
73
73
  remove = typ_minus.svg
74
74
  revert = typ_refresh-flipped.svg
@@ -91,14 +91,21 @@ sticky-off = typ_pin-outline.svg
91
91
  sticky-on = typ_pin.svg
92
92
  unchecked = mixed_input-unchecked.svg
93
93
  up = typ_chevron-up.svg
94
+ view = typ_eye.svg
94
95
  view_build = typ_export-grey.svg
95
96
  view_editor = mixed_edit.svg
96
97
  view_novel = typ_book-grey.svg
97
98
  view_outline = typ_puzzle-outline.svg
98
99
 
99
100
  deco_doc_h0 = nw_deco-h0.svg
101
+ deco_doc_h0_n = nw_deco-h0.svg
100
102
  deco_doc_h1 = nw_deco-h1.svg
103
+ deco_doc_h1_n = nw_deco-h1.svg
101
104
  deco_doc_h2 = nw_deco-h2.svg
105
+ deco_doc_h2_n = nw_deco-h2-narrow.svg
102
106
  deco_doc_h3 = nw_deco-h3.svg
107
+ deco_doc_h3_n = nw_deco-h3-narrow.svg
103
108
  deco_doc_h4 = nw_deco-h4.svg
109
+ deco_doc_h4_n = nw_deco-h4-narrow.svg
104
110
  deco_doc_more = nw_deco-noveltree-more.svg
111
+ deco_doc_nt_n = nw_deco-note.svg
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="4" height="24" version="1.2" viewBox="0 0 4 24" xmlns="http://www.w3.org/2000/svg">
3
+ <rect y="1" width="4" height="22" rx="2" ry="2" fill="#c82829" stroke-width="0"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="4" height="24" version="1.2" viewBox="0 0 4 24" xmlns="http://www.w3.org/2000/svg">
3
+ <rect y="1" width="4" height="22" rx="2" ry="2" fill="#4271ae" stroke-width="0"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="4" height="24" version="1.2" viewBox="0 0 4 24" xmlns="http://www.w3.org/2000/svg">
3
+ <rect y="1" width="4" height="22" rx="2" ry="2" fill="#333" stroke-width="0"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="4" height="24" version="1.2" viewBox="0 0 4 24" xmlns="http://www.w3.org/2000/svg">
3
+ <rect y="1" width="4" height="22" rx="2" ry="2" fill="#ad8700" stroke-width="0"/>
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="m17.853 2.0017c-0.14248-0.00428-0.28548-1.936e-4 -0.42925 0.01171h-11.135c-2.3531-0.068148-4.4276 2.1102-4.2808 4.4518 0.00689 3.8473-0.014486 7.6959 0.00976 11.542 0.12963 2.1674 2.0751 4.0505 4.2711 3.9912 3.8794-0.0037 7.7592 0.0071 11.639-0.0059 2.3157-0.05864 4.2507-2.2581 4.0603-4.5591-0.0037-3.7862 0.0071-7.5728-0.0059-11.359-0.054966-2.1716-1.9914-4.0089-4.1286-4.0732zm-11.533 2.8514c0.10262-0.00515 0.20595 1.374e-4 0.30828 0.015613 2.2719-0.00131 4.5437 0.0026 6.8153-0.00195 1.5163 0.01818 3.0369-0.036922 4.5501 0.029275 0.83106 0.14317 1.246 1.0195 1.1395 1.7956-0.0023 1.7714-9.95e-4 3.543 0 5.3144h-14.271c-9.495e-4 -1.9468-0.0019-3.8929 0.00585-5.8394 0.049778-0.75434 0.73334-1.2775 1.4517-1.3135z" fill-opacity=".78039" stroke-width=".99912"/>
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="m22.803 11.373c-0.0913-0.1309-2.2682-3.2384-5.2724-5.3626-1.5576-1.1033-3.5222-1.7105-5.5309-1.7105-2.0075 0-3.9721 0.60721-5.5331 1.7105-3.0041 2.1241-5.1789 5.2317-5.2702 5.3626-0.2618 0.3773-0.2618 0.87781 0 1.2551 0.091301 0.1309 2.266 3.2384 5.2702 5.3626 1.5609 1.1022 3.5255 1.7094 5.5331 1.7094 2.0086 0 3.9732-0.60721 5.5309-1.7105 3.0041-2.1241 5.1811-5.2317 5.2724-5.3626 0.2629-0.3762 0.2629-0.87781 0-1.254zm-10.803 4.4771c-2.1274 0-3.85-1.727-3.85-3.85 0-2.1274 1.7226-3.85 3.85-3.85 2.123 0 3.85 1.7226 3.85 3.85 0 2.123-1.727 3.85-3.85 3.85zm2.2-3.85c0 1.2122-0.98781 2.2-2.2 2.2-1.2155 0-2.2-0.98781-2.2-2.2 0-1.2155 0.98451-2.2 2.2-2.2 1.2122 0 2.2 0.98451 2.2 2.2z" fill="#4271ae" stroke-width="1.1"/>
4
+ </svg>
Binary file
Binary file
@@ -2,11 +2,11 @@
2
2
  <html>
3
3
  <body>
4
4
 
5
- <h2>Release Notes for 2.2 Beta 1</h2>
6
- <p><i>Released on 11 November 2023</i></p>
5
+ <h2>Release Notes for 2.2 RC 1</h2>
6
+ <p><i>Released on 26 November 2023</i></p>
7
7
 
8
- <p>This is a beta release of the next release version, and is intended for testing purposes. Please
9
- be careful when using this version on live writing projects, and make sure you take frequent
8
+ <p>This is a release candidate of the next release version, and is intended for testing purposes.
9
+ Please be careful when using this version on live writing projects, and make sure you take frequent
10
10
  backups.</p>
11
11
  <p>Please check the changelog for an overview of changes. The full release notes will be added to
12
12
  the final release.</p>
novelwriter/common.py CHANGED
@@ -33,8 +33,11 @@ from typing import Any, Literal
33
33
  from pathlib import Path
34
34
  from datetime import datetime
35
35
  from configparser import ConfigParser
36
+ from urllib.parse import urljoin
37
+ from urllib.request import pathname2url
36
38
 
37
- from PyQt5.QtCore import QCoreApplication
39
+ from PyQt5.QtGui import QDesktopServices
40
+ from PyQt5.QtCore import QCoreApplication, QUrl
38
41
  from PyQt5.QtWidgets import QWidget, qApp
39
42
 
40
43
  from novelwriter.enum import nwItemClass, nwItemType, nwItemLayout
@@ -487,6 +490,24 @@ def makeFileNameSafe(text: str) -> str:
487
490
  return "".join(c for c in text if c.isalnum() or c in allowed)
488
491
 
489
492
 
493
+ def getFileSize(path: Path) -> int:
494
+ """Return the size of a file."""
495
+ try:
496
+ return path.stat().st_size
497
+ except Exception:
498
+ return -1
499
+
500
+
501
+ def openExternalPath(path: Path) -> bool:
502
+ """Open a path by passing it to the desktop environment."""
503
+ if Path(path).exists():
504
+ QDesktopServices.openUrl(
505
+ QUrl(urljoin("file:", pathname2url(str(path))))
506
+ )
507
+ return True
508
+ return False
509
+
510
+
490
511
  # =============================================================================================== #
491
512
  # Other Functions
492
513
  # =============================================================================================== #
novelwriter/config.py CHANGED
@@ -148,6 +148,7 @@ class Config:
148
148
 
149
149
  self.autoScroll = False # Typewriter-like scrolling
150
150
  self.autoScrollPos = 30 # Start point for typewriter-like scrolling
151
+ self.scrollPastEnd = True # Scroll past end of document, and centre cursor
151
152
 
152
153
  self.wordCountTimer = 5.0 # Interval for word count update in seconds
153
154
  self.incNotesWCount = True # The status bar word count includes notes
@@ -178,9 +179,9 @@ class Config:
178
179
  self.spellLanguage = "en"
179
180
 
180
181
  # State
181
- self.showRefPanel = True # The reference panel for the viewer is visible
182
+ self.showViewerPanel = True # The panel for the viewer is visible
182
183
  self.showEditToolBar = False # The document editor toolbar visibility
183
- self.useShortcodes = False # Use shorcodes for basic formatting
184
+ self.useShortcodes = False # Use shortcodes for basic formatting
184
185
  self.viewComments = True # Comments are shown in the viewer
185
186
  self.viewSynopsis = True # Synopsis is shown in the viewer
186
187
 
@@ -224,6 +225,7 @@ class Config:
224
225
  # Other System Info
225
226
  self.hostName = QSysInfo.machineHostName()
226
227
  self.kernelVer = QSysInfo.kernelVersion()
228
+ self.isDebug = False
227
229
 
228
230
  # Packages
229
231
  self.hasEnchant = False # The pyenchant package
@@ -391,8 +393,7 @@ class Config:
391
393
  return self._appPath / "assets"
392
394
 
393
395
  def lastPath(self) -> Path:
394
- """Return the last path used by the user, but ensure it exists.
395
- """
396
+ """Return the last path used by the user, if it exists."""
396
397
  if isinstance(self._lastPath, Path):
397
398
  if self._lastPath.is_dir():
398
399
  return self._lastPath
@@ -400,9 +401,8 @@ class Config:
400
401
 
401
402
  def backupPath(self) -> Path:
402
403
  """Return the backup path."""
403
- if isinstance(self._backupPath, Path):
404
- if self._backupPath.is_dir():
405
- return self._backupPath
404
+ if isinstance(self._backupPath, Path) and self._backupPath.is_dir():
405
+ return self._backupPath
406
406
  return self._backPath
407
407
 
408
408
  def errorText(self) -> str:
@@ -485,6 +485,7 @@ class Config:
485
485
 
486
486
  self._recentObj.loadCache()
487
487
  self._checkOptionalPackages()
488
+ self.isDebug = logger.getEffectiveLevel() == logging.DEBUG
488
489
 
489
490
  logger.debug("Config instance initialised")
490
491
 
@@ -577,6 +578,7 @@ class Config:
577
578
  self.doReplaceDots = conf.rdBool(sec, "repdots", self.doReplaceDots)
578
579
  self.autoScroll = conf.rdBool(sec, "autoscroll", self.autoScroll)
579
580
  self.autoScrollPos = conf.rdInt(sec, "autoscrollpos", self.autoScrollPos)
581
+ self.scrollPastEnd = conf.rdBool(sec, "scrollpastend", self.scrollPastEnd)
580
582
  self.fmtSQuoteOpen = conf.rdStr(sec, "fmtsquoteopen", self.fmtSQuoteOpen)
581
583
  self.fmtSQuoteClose = conf.rdStr(sec, "fmtsquoteclose", self.fmtSQuoteClose)
582
584
  self.fmtDQuoteOpen = conf.rdStr(sec, "fmtdquoteopen", self.fmtDQuoteOpen)
@@ -600,7 +602,7 @@ class Config:
600
602
 
601
603
  # State
602
604
  sec = "State"
603
- self.showRefPanel = conf.rdBool(sec, "showrefpanel", self.showRefPanel)
605
+ self.showViewerPanel = conf.rdBool(sec, "showviewerpanel", self.showViewerPanel)
604
606
  self.showEditToolBar = conf.rdBool(sec, "showedittoolbar", self.showEditToolBar)
605
607
  self.useShortcodes = conf.rdBool(sec, "useshortcodes", self.useShortcodes)
606
608
  self.viewComments = conf.rdBool(sec, "viewcomments", self.viewComments)
@@ -612,24 +614,6 @@ class Config:
612
614
  self.searchNextFile = conf.rdBool(sec, "searchnextfile", self.searchNextFile)
613
615
  self.searchMatchCap = conf.rdBool(sec, "searchmatchcap", self.searchMatchCap)
614
616
 
615
- # Deprecated Settings or Locations as of 2.0
616
- # ToDo: These will be loaded for a few minor releases until the users have converted them
617
- self.guiFont = conf.rdStr("Main", "guifont", self.guiFont)
618
- self.guiFontSize = conf.rdInt("Main", "guifontsize", self.guiFontSize)
619
- self.guiLocale = conf.rdStr("Main", "guilang", self.guiLocale)
620
- self._backupPath = conf.rdPath("Backup", "backuppath", self._backupPath)
621
- self.backupOnClose = conf.rdBool("Backup", "backuponclose", self.backupOnClose)
622
- self.askBeforeBackup = conf.rdBool("Backup", "askbeforebackup", self.askBeforeBackup)
623
- fmtSingleQuotes = conf.rdStrList(sec, "fmtsinglequote", [])
624
- fmtDoubleQuotes = conf.rdStrList(sec, "fmtdoublequote", [])
625
-
626
- if isinstance(fmtSingleQuotes, list) and len(fmtSingleQuotes) == 2:
627
- self.fmtSQuoteOpen = fmtSingleQuotes[0]
628
- self.fmtSQuoteClose = fmtSingleQuotes[1]
629
- if isinstance(fmtDoubleQuotes, list) and len(fmtDoubleQuotes) == 2:
630
- self.fmtDQuoteOpen = fmtDoubleQuotes[0]
631
- self.fmtDQuoteClose = fmtDoubleQuotes[1]
632
-
633
617
  # Check Values
634
618
  # ============
635
619
 
@@ -701,6 +685,7 @@ class Config:
701
685
  "repdots": str(self.doReplaceDots),
702
686
  "autoscroll": str(self.autoScroll),
703
687
  "autoscrollpos": str(self.autoScrollPos),
688
+ "scrollpastend": str(self.scrollPastEnd),
704
689
  "fmtsquoteopen": str(self.fmtSQuoteOpen),
705
690
  "fmtsquoteclose": str(self.fmtSQuoteClose),
706
691
  "fmtdquoteopen": str(self.fmtDQuoteOpen),
@@ -724,7 +709,7 @@ class Config:
724
709
  }
725
710
 
726
711
  conf["State"] = {
727
- "showrefpanel": str(self.showRefPanel),
712
+ "showviewerpanel": str(self.showViewerPanel),
728
713
  "showedittoolbar": str(self.showEditToolBar),
729
714
  "useshortcodes": str(self.useShortcodes),
730
715
  "viewcomments": str(self.viewComments),