novelWriter 2.4b1__tar.gz → 2.4.1__tar.gz

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 (413) hide show
  1. {novelWriter-2.4b1 → novelwriter-2.4.1}/CHANGELOG.md +126 -3
  2. {novelWriter-2.4b1 → novelwriter-2.4.1}/PKG-INFO +5 -6
  3. {novelWriter-2.4b1 → novelwriter-2.4.1}/README.md +4 -0
  4. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelWriter.egg-info/PKG-INFO +5 -6
  5. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelWriter.egg-info/SOURCES.txt +7 -12
  6. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/__init__.py +15 -8
  7. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/nw_de_DE.qm +0 -0
  8. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/nw_en_US.qm +0 -0
  9. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/nw_es_419.qm +0 -0
  10. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/nw_fr_FR.qm +0 -0
  11. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/nw_it_IT.qm +0 -0
  12. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/nw_ja_JP.qm +0 -0
  13. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/nw_nb_NO.qm +0 -0
  14. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/nw_nl_NL.qm +0 -0
  15. novelwriter-2.4.1/novelwriter/assets/i18n/nw_pt_BR.qm +0 -0
  16. novelwriter-2.4.1/novelwriter/assets/i18n/nw_zh_CN.qm +0 -0
  17. novelwriter-2.4.1/novelwriter/assets/icons/none.svg +4 -0
  18. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/icons.conf +2 -2
  19. novelwriter-2.4.1/novelwriter/assets/icons/typicons_dark/typ_unfold-hidden.svg +4 -0
  20. novelwriter-2.4.1/novelwriter/assets/icons/typicons_dark/typ_unfold-visible.svg +4 -0
  21. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/icons.conf +2 -2
  22. novelwriter-2.4.1/novelwriter/assets/icons/typicons_light/typ_unfold-hidden.svg +4 -0
  23. novelwriter-2.4.1/novelwriter/assets/icons/typicons_light/typ_unfold-visible.svg +4 -0
  24. novelwriter-2.4.1/novelwriter/assets/manual.pdf +0 -0
  25. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/sample.zip +0 -0
  26. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/common.py +11 -3
  27. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/config.py +12 -4
  28. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/buildsettings.py +7 -7
  29. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/coretools.py +21 -22
  30. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/docbuild.py +2 -2
  31. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/projectxml.py +1 -1
  32. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/spellcheck.py +3 -3
  33. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/status.py +3 -2
  34. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/tokenizer.py +3 -3
  35. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/toodt.py +333 -356
  36. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/dialogs/about.py +9 -11
  37. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/dialogs/docmerge.py +17 -14
  38. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/dialogs/docsplit.py +14 -12
  39. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/dialogs/editlabel.py +5 -4
  40. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/dialogs/preferences.py +29 -34
  41. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/dialogs/projectsettings.py +31 -28
  42. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/dialogs/quotes.py +10 -9
  43. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/dialogs/wordlist.py +17 -14
  44. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/error.py +14 -12
  45. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/extensions/circularprogress.py +12 -8
  46. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/extensions/configlayout.py +1 -3
  47. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/extensions/modified.py +33 -2
  48. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/extensions/pagedsidebar.py +16 -14
  49. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/extensions/simpleprogress.py +3 -1
  50. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/extensions/statusled.py +3 -1
  51. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/extensions/switch.py +10 -9
  52. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/extensions/switchbox.py +14 -13
  53. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/gui/doceditor.py +205 -246
  54. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/gui/dochighlight.py +26 -9
  55. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/gui/docviewer.py +55 -59
  56. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/gui/docviewerpanel.py +16 -13
  57. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/gui/editordocument.py +4 -4
  58. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/gui/itemdetails.py +45 -48
  59. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/gui/mainmenu.py +2 -2
  60. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/gui/noveltree.py +23 -21
  61. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/gui/outline.py +93 -94
  62. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/gui/projtree.py +32 -30
  63. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/gui/search.py +75 -29
  64. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/gui/sidebar.py +24 -28
  65. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/gui/statusbar.py +14 -14
  66. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/gui/theme.py +61 -39
  67. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/guimain.py +37 -33
  68. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/shared.py +21 -9
  69. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/text/counting.py +1 -0
  70. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/tools/dictionaries.py +15 -14
  71. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/tools/lipsum.py +20 -17
  72. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/tools/manusbuild.py +44 -35
  73. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/tools/manuscript.py +112 -112
  74. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/tools/manussettings.py +91 -98
  75. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/tools/noveldetails.py +20 -18
  76. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/tools/welcome.py +51 -48
  77. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/tools/writingstats.py +61 -55
  78. novelwriter-2.4.1/novelwriter/types.py +90 -0
  79. {novelWriter-2.4b1 → novelwriter-2.4.1}/pkgutils.py +82 -58
  80. novelwriter-2.4.1/pyproject.toml +67 -0
  81. novelwriter-2.4.1/setup/launchpad_setup.cfg +48 -0
  82. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/macos/build.sh +22 -9
  83. novelwriter-2.4.1/setup.cfg +4 -0
  84. novelWriter-2.4b1/novelWriter.egg-info/not-zip-safe +0 -1
  85. novelWriter-2.4b1/novelwriter/assets/i18n/nw_pt_BR.qm +0 -0
  86. novelWriter-2.4b1/novelwriter/assets/i18n/nw_zh_CN.qm +0 -0
  87. novelWriter-2.4b1/novelwriter/assets/icons/typicons_dark/typ_arrow-down.svg +0 -4
  88. novelWriter-2.4b1/novelwriter/assets/icons/typicons_dark/typ_arrow-right.svg +0 -4
  89. novelWriter-2.4b1/novelwriter/assets/icons/typicons_light/typ_arrow-down.svg +0 -4
  90. novelWriter-2.4b1/novelwriter/assets/icons/typicons_light/typ_arrow-right.svg +0 -4
  91. novelWriter-2.4b1/novelwriter/assets/manual.pdf +0 -0
  92. novelWriter-2.4b1/novelwriter/core/__init__.py +0 -3
  93. novelWriter-2.4b1/novelwriter/dialogs/__init__.py +0 -3
  94. novelWriter-2.4b1/novelwriter/extensions/__init__.py +0 -3
  95. novelWriter-2.4b1/novelwriter/gui/__init__.py +0 -3
  96. novelWriter-2.4b1/novelwriter/text/__init__.py +0 -3
  97. novelWriter-2.4b1/novelwriter/tools/__init__.py +0 -3
  98. novelWriter-2.4b1/pyproject.toml +0 -3
  99. novelWriter-2.4b1/setup.cfg +0 -58
  100. {novelWriter-2.4b1 → novelwriter-2.4.1}/CREDITS.md +0 -0
  101. {novelWriter-2.4b1 → novelwriter-2.4.1}/LICENSE.md +0 -0
  102. {novelWriter-2.4b1 → novelwriter-2.4.1}/MANIFEST.in +0 -0
  103. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelWriter.egg-info/dependency_links.txt +0 -0
  104. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelWriter.egg-info/entry_points.txt +0 -0
  105. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelWriter.egg-info/requires.txt +0 -0
  106. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelWriter.egg-info/top_level.txt +0 -0
  107. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/project_de_DE.json +0 -0
  108. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/project_en_GB.json +0 -0
  109. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/project_en_US.json +0 -0
  110. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/project_es_419.json +0 -0
  111. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/project_fr_FR.json +0 -0
  112. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/project_it_IT.json +0 -0
  113. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/project_ja_JP.json +0 -0
  114. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/project_nb_NO.json +0 -0
  115. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/project_nl_NL.json +0 -0
  116. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/project_nn_NO.json +0 -0
  117. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/project_pt_BR.json +0 -0
  118. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/project_ru_RU.json +0 -0
  119. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/i18n/project_zh_CN.json +0 -0
  120. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/novelwriter.ico +0 -0
  121. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/novelwriter.svg +0 -0
  122. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/README.md +0 -0
  123. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/mixed_document-chapter.svg +0 -0
  124. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/mixed_document-new.svg +0 -0
  125. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/mixed_document-note.svg +0 -0
  126. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/mixed_document-scene.svg +0 -0
  127. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/mixed_document-section.svg +0 -0
  128. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/mixed_document-title.svg +0 -0
  129. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/mixed_edit.svg +0 -0
  130. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/mixed_import.svg +0 -0
  131. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg +0 -0
  132. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/mixed_input-none.svg +0 -0
  133. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg +0 -0
  134. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/mixed_search-replace.svg +0 -0
  135. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_deco-h0.svg +0 -0
  136. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_deco-h1.svg +0 -0
  137. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_deco-h2-narrow.svg +0 -0
  138. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_deco-h2.svg +0 -0
  139. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_deco-h3-narrow.svg +0 -0
  140. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_deco-h3.svg +0 -0
  141. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_deco-h4-narrow.svg +0 -0
  142. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_deco-h4.svg +0 -0
  143. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_deco-note.svg +0 -0
  144. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_deco-noveltree-more.svg +0 -0
  145. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_panel.svg +0 -0
  146. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_search-case.svg +0 -0
  147. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_search-preserve.svg +0 -0
  148. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_search-regex.svg +0 -0
  149. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_search-word.svg +0 -0
  150. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_tb-bold-md.svg +0 -0
  151. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_tb-bold.svg +0 -0
  152. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_tb-italic-md.svg +0 -0
  153. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_tb-italic.svg +0 -0
  154. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_tb-mark.svg +0 -0
  155. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_tb-strike-md.svg +0 -0
  156. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_tb-strike.svg +0 -0
  157. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg +0 -0
  158. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg +0 -0
  159. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg +0 -0
  160. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_arrow-down-thick-grey.svg +0 -0
  161. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg +0 -0
  162. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_arrow-maximise.svg +0 -0
  163. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_arrow-minimise.svg +0 -0
  164. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_arrow-repeat-grey.svg +0 -0
  165. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_book-grey.svg +0 -0
  166. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_book.svg +0 -0
  167. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_bookmark.svg +0 -0
  168. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_calendar.svg +0 -0
  169. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_cancel-grey.svg +0 -0
  170. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_cancel.svg +0 -0
  171. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_chart-bar-grey.svg +0 -0
  172. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_chevron-down.svg +0 -0
  173. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_chevron-left.svg +0 -0
  174. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_chevron-right.svg +0 -0
  175. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_chevron-up.svg +0 -0
  176. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_cog.svg +0 -0
  177. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_delete-full.svg +0 -0
  178. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_delete.svg +0 -0
  179. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_directions-full.svg +0 -0
  180. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_document-add.svg +0 -0
  181. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_document-text.svg +0 -0
  182. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_document.svg +0 -0
  183. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_export-grey.svg +0 -0
  184. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_export.svg +0 -0
  185. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_eye.svg +0 -0
  186. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_flag.svg +0 -0
  187. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_folder-open.svg +0 -0
  188. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_folder.svg +0 -0
  189. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_globe-grey.svg +0 -0
  190. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_key.svg +0 -0
  191. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_lightbulb-full.svg +0 -0
  192. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_location.svg +0 -0
  193. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_media-pause-grey.svg +0 -0
  194. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_media-record-outline.svg +0 -0
  195. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_media-record.svg +0 -0
  196. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_minus.svg +0 -0
  197. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_pencil.svg +0 -0
  198. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_pin-outline.svg +0 -0
  199. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_pin.svg +0 -0
  200. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_plus.svg +0 -0
  201. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_puzzle-outline.svg +0 -0
  202. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_puzzle.svg +0 -0
  203. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_refresh-flipped.svg +0 -0
  204. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_refresh.svg +0 -0
  205. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_search-grey.svg +0 -0
  206. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_search.svg +0 -0
  207. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_star.svg +0 -0
  208. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_stopwatch-grey.svg +0 -0
  209. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_th-dot-menu.svg +0 -0
  210. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_th-dot-more.svg +0 -0
  211. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_th-list-grey.svg +0 -0
  212. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_th-list.svg +0 -0
  213. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_times.svg +0 -0
  214. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_trash.svg +0 -0
  215. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_user.svg +0 -0
  216. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_dark/typ_warning-full.svg +0 -0
  217. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/README.md +0 -0
  218. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/mixed_document-chapter.svg +0 -0
  219. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/mixed_document-new.svg +0 -0
  220. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/mixed_document-note.svg +0 -0
  221. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/mixed_document-scene.svg +0 -0
  222. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/mixed_document-section.svg +0 -0
  223. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/mixed_document-title.svg +0 -0
  224. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/mixed_edit.svg +0 -0
  225. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/mixed_import.svg +0 -0
  226. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/mixed_input-checked.svg +0 -0
  227. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/mixed_input-none.svg +0 -0
  228. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg +0 -0
  229. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/mixed_search-replace.svg +0 -0
  230. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_deco-h0.svg +0 -0
  231. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_deco-h1.svg +0 -0
  232. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_deco-h2-narrow.svg +0 -0
  233. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_deco-h2.svg +0 -0
  234. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_deco-h3-narrow.svg +0 -0
  235. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_deco-h3.svg +0 -0
  236. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_deco-h4-narrow.svg +0 -0
  237. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_deco-h4.svg +0 -0
  238. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_deco-note.svg +0 -0
  239. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_deco-noveltree-more.svg +0 -0
  240. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_panel.svg +0 -0
  241. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_search-case.svg +0 -0
  242. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_search-preserve.svg +0 -0
  243. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_search-regex.svg +0 -0
  244. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_search-word.svg +0 -0
  245. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_tb-bold-md.svg +0 -0
  246. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_tb-bold.svg +0 -0
  247. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_tb-italic-md.svg +0 -0
  248. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_tb-italic.svg +0 -0
  249. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_tb-mark.svg +0 -0
  250. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_tb-strike-md.svg +0 -0
  251. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_tb-strike.svg +0 -0
  252. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg +0 -0
  253. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg +0 -0
  254. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/nw_tb-underline.svg +0 -0
  255. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_arrow-down-thick-grey.svg +0 -0
  256. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg +0 -0
  257. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_arrow-maximise.svg +0 -0
  258. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_arrow-minimise.svg +0 -0
  259. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_arrow-repeat-grey.svg +0 -0
  260. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_book-grey.svg +0 -0
  261. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_book.svg +0 -0
  262. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_bookmark.svg +0 -0
  263. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_calendar.svg +0 -0
  264. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_cancel-grey.svg +0 -0
  265. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_cancel.svg +0 -0
  266. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_chart-bar-grey.svg +0 -0
  267. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_chevron-down.svg +0 -0
  268. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_chevron-left.svg +0 -0
  269. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_chevron-right.svg +0 -0
  270. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_chevron-up.svg +0 -0
  271. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_cog.svg +0 -0
  272. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_delete-full.svg +0 -0
  273. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_delete.svg +0 -0
  274. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_directions-full.svg +0 -0
  275. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_document-add.svg +0 -0
  276. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_document-text.svg +0 -0
  277. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_document.svg +0 -0
  278. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_export-grey.svg +0 -0
  279. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_export.svg +0 -0
  280. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_eye.svg +0 -0
  281. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_flag.svg +0 -0
  282. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_folder-open.svg +0 -0
  283. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_folder.svg +0 -0
  284. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_globe-grey.svg +0 -0
  285. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_key.svg +0 -0
  286. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_lightbulb-full.svg +0 -0
  287. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_location.svg +0 -0
  288. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_media-pause-grey.svg +0 -0
  289. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_media-record-outline.svg +0 -0
  290. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_media-record.svg +0 -0
  291. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_minus.svg +0 -0
  292. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_pencil.svg +0 -0
  293. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_pin-outline.svg +0 -0
  294. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_pin.svg +0 -0
  295. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_plus.svg +0 -0
  296. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_puzzle-outline.svg +0 -0
  297. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_puzzle.svg +0 -0
  298. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_refresh-flipped.svg +0 -0
  299. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_refresh.svg +0 -0
  300. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_search-grey.svg +0 -0
  301. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_search.svg +0 -0
  302. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_star.svg +0 -0
  303. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_stopwatch-grey.svg +0 -0
  304. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_th-dot-menu.svg +0 -0
  305. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_th-dot-more.svg +0 -0
  306. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_th-list-grey.svg +0 -0
  307. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_th-list.svg +0 -0
  308. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_times.svg +0 -0
  309. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_trash.svg +0 -0
  310. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_user.svg +0 -0
  311. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/typicons_light/typ_warning-full.svg +0 -0
  312. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/x-novelwriter-project.ico +0 -0
  313. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/icons/x-novelwriter-project.svg +0 -0
  314. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/images/novelwriter-text-dark.svg +0 -0
  315. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/images/novelwriter-text-light.svg +0 -0
  316. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/images/welcome-dark.jpg +0 -0
  317. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/images/welcome-light.jpg +0 -0
  318. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/syntax/cyberpunk_night.conf +0 -0
  319. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/syntax/default_dark.conf +0 -0
  320. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/syntax/default_light.conf +0 -0
  321. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/syntax/grey_dark.conf +0 -0
  322. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/syntax/grey_light.conf +0 -0
  323. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/syntax/light_owl.conf +0 -0
  324. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/syntax/night_owl.conf +0 -0
  325. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/syntax/solarized_dark.conf +0 -0
  326. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/syntax/solarized_light.conf +0 -0
  327. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/syntax/tango.conf +0 -0
  328. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/syntax/tomorrow.conf +0 -0
  329. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/syntax/tomorrow_night.conf +0 -0
  330. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/syntax/tomorrow_night_blue.conf +0 -0
  331. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/syntax/tomorrow_night_bright.conf +0 -0
  332. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/syntax/tomorrow_night_eighties.conf +0 -0
  333. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/text/credits_en.htm +0 -0
  334. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/text/lipsum.txt +0 -0
  335. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/themes/cyberpunk_night.conf +0 -0
  336. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/themes/default.conf +0 -0
  337. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/themes/default_dark.conf +0 -0
  338. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/themes/default_light.conf +0 -0
  339. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/themes/solarized_dark.conf +0 -0
  340. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/assets/themes/solarized_light.conf +0 -0
  341. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/constants.py +0 -0
  342. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/document.py +0 -0
  343. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/index.py +0 -0
  344. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/item.py +0 -0
  345. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/options.py +0 -0
  346. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/project.py +0 -0
  347. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/projectdata.py +0 -0
  348. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/sessions.py +0 -0
  349. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/storage.py +0 -0
  350. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/tohtml.py +0 -0
  351. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/tomd.py +0 -0
  352. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/core/tree.py +0 -0
  353. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/enum.py +0 -0
  354. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/extensions/eventfilters.py +0 -0
  355. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/extensions/novelselector.py +0 -0
  356. {novelWriter-2.4b1 → novelwriter-2.4.1}/novelwriter/extensions/versioninfo.py +0 -0
  357. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/appimage_launcher.sh +0 -0
  358. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/128x128/apps/novelwriter.png +0 -0
  359. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/128x128/mimetypes/application-x-novelwriter-project.png +0 -0
  360. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/16x16/apps/novelwriter.png +0 -0
  361. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/16x16/mimetypes/application-x-novelwriter-project.png +0 -0
  362. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/24x24/apps/novelwriter.png +0 -0
  363. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/24x24/mimetypes/application-x-novelwriter-project.png +0 -0
  364. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/256x256/apps/novelwriter.png +0 -0
  365. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/256x256/mimetypes/application-x-novelwriter-project.png +0 -0
  366. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/32x32/apps/novelwriter.png +0 -0
  367. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/32x32/mimetypes/application-x-novelwriter-project.png +0 -0
  368. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/48x48/apps/novelwriter.png +0 -0
  369. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/48x48/mimetypes/application-x-novelwriter-project.png +0 -0
  370. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/512x512/apps/novelwriter.png +0 -0
  371. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/512x512/mimetypes/application-x-novelwriter-project.png +0 -0
  372. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/64x64/apps/novelwriter.png +0 -0
  373. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/64x64/mimetypes/application-x-novelwriter-project.png +0 -0
  374. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/scalable/apps/novelwriter.svg +0 -0
  375. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/hicolor/scalable/mimetypes/application-x-novelwriter-project.svg +0 -0
  376. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/novelwriter.desktop +0 -0
  377. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/novelwriter.png +0 -0
  378. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/data/x-novelwriter-project.xml +0 -0
  379. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/debian/compat +0 -0
  380. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/debian/control +0 -0
  381. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/debian/copyright +0 -0
  382. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/debian/install +0 -0
  383. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/debian/py3dist-overrides +0 -0
  384. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/debian/rules +0 -0
  385. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/debian/source/format +0 -0
  386. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/description_pypi.md +0 -0
  387. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/description_short.txt +0 -0
  388. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/icons/novelwriter.ico +0 -0
  389. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/icons/novelwriter.svg +0 -0
  390. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/icons/x-novelwriter-project.ico +0 -0
  391. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/icons/x-novelwriter-project.svg +0 -0
  392. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/iss_license.txt +0 -0
  393. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/macos/App.entitlements +0 -0
  394. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/macos/Info.plist.template +0 -0
  395. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/macos/novelwriter.iconset/icon_128x128.png +0 -0
  396. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/macos/novelwriter.iconset/icon_128x128@2x.png +0 -0
  397. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/macos/novelwriter.iconset/icon_16x16.png +0 -0
  398. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/macos/novelwriter.iconset/icon_16x16@2x.png +0 -0
  399. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/macos/novelwriter.iconset/icon_256x256.png +0 -0
  400. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/macos/novelwriter.iconset/icon_256x256@2x.png +0 -0
  401. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/macos/novelwriter.iconset/icon_32x32.png +0 -0
  402. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/macos/novelwriter.iconset/icon_32x32@2x.png +0 -0
  403. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/macos/novelwriter.iconset/icon_512x512.png +0 -0
  404. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/macos/novelwriter.iconset/icon_512x512@2x.png +0 -0
  405. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/make_clean.sh +0 -0
  406. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/make_pip.sh +0 -0
  407. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/make_release.sh +0 -0
  408. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/novelwriter.appdata.xml +0 -0
  409. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/novelwriter_readme.png +0 -0
  410. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/novelwriter_text.png +0 -0
  411. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/win_setup_embed.iss +0 -0
  412. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/windows_install.bat +0 -0
  413. {novelWriter-2.4b1 → novelwriter-2.4.1}/setup/windows_uninstall.bat +0 -0
@@ -1,5 +1,131 @@
1
1
  # novelWriter Changelog
2
2
 
3
+ ## Version 2.4.1 [2024-05-06]
4
+
5
+ ### Release Notes
6
+
7
+ This is a patch release that fixes a number of minor issues with the Manuscript Build tool. The
8
+ only critical fix is related to a potential crash when deleting a build entry when its settings
9
+ dialog is still open.
10
+
11
+ ### Detailed Changelog
12
+
13
+ **Bugfixes**
14
+
15
+ * Fixed an issue that could crash novelWriter if a build settings entry was deleted from the
16
+ Manuscript tool while its settings window was open. PR #1845.
17
+
18
+ **Improvements**
19
+
20
+ * Changed the font used for the document editor and viewer header and footer from the one used for
21
+ the document text to the one used for the user interface. Issue #1842. PR #1843.
22
+ * Added a save document step in the editor before running a manuscript build or a preview job. This
23
+ ensures that the text in the editor is included in the manuscript. Issue #1835. PR #1846.
24
+ * Restore preview panel scroll bar position after updating the preview on the Manuscript tool.
25
+ Issue #1837. PR #1846.
26
+ * Close all non-modal dialogs when a project is closed. PR #1848.
27
+
28
+ **Code Improvements**
29
+
30
+ * Fixed an issue with the Build Settings dialog that blocks the garbage collector from deleting the
31
+ dialog after it's been closed. PR #1843.
32
+ * Remove some deprecated translation entries from the translation files. PR #1850.
33
+
34
+ ----
35
+
36
+ ## Version 2.4 [2024-04-20]
37
+
38
+ ### Release Notes
39
+
40
+ This release adds a new global search feature. The tool is still relatively basic, and will likely
41
+ be extended in later releases.
42
+
43
+ Among new text editing features is the ability to highlight text using `[m]text[/m]` shortcodes.
44
+ The code `[m]` is for "mark", which is the equivalent code in HTML.
45
+
46
+ A second feature added for text editing is the ability to add an alternatively formatted scene
47
+ heading by adding a `!` to the markup, like for chapters and main titles. This allows to
48
+ distinguish between two scene formatting styles, `### Title` and `###! Title`, which can for
49
+ instance be used for soft and hard scene breaks.
50
+
51
+ The **Manuscript Build** tool has also been extended with multiple new formatting options.
52
+
53
+ See the website for complete [Release Notes](https://novelwriter.io/releases/release_2_4.html).
54
+
55
+ ### Detailed Changelog
56
+
57
+ **Bugfixes**
58
+
59
+ * Fixed background colour on some widgets on the new Project Search tool. PR #1800.
60
+ * Fixed a bug when using bold/italic/strike through toggle on an existing text selection in the
61
+ editor. Issue #1807. PR #1808.
62
+ * An index out of bounds error in the word counter has been fixed. It could only be triggered by a
63
+ single line only containing a ">" character. Issues #1816 and #1825. PR #1817.
64
+ * Fixed an issue where not all theme colours were completely reset before changing theme. PR #1820.
65
+ * Shortcodes are no longer passed to the spell checker. PR #1823.
66
+
67
+ **Improvements**
68
+
69
+ * Made placeholder text for search read as "Search for" and "Replace with". PR #1799.
70
+ * The initial count for adding chapter and scenes to new project in the Welcome dialog has been
71
+ changed to 0. The user must now select to add chapters and scenes. Issue #1811. PR #1815.
72
+
73
+ **Documentation**
74
+
75
+ * Updated the documentation for 2.4 features. PR #1818.
76
+
77
+ **Internationalisation**
78
+
79
+ * Norwegian and US English translations updated by Veronica Berglyd Olsen (@vkbo).
80
+ PRs #1799 and #1814.
81
+ * Latin American Spanish translation updated by Tommy Marplatt (@tmarplatt). PR #1814.
82
+ * Italian translation updated by Lou Cyper (loucyper1). PR #1814.
83
+ * Japanese translation updated by @hebekeg. PR #1814.
84
+ * French translation updated by Albert Aribaud (@aaribaud). PR #1821.
85
+ * German translation updated by Myian (@HeyMyian). PR #1821.
86
+
87
+ ----
88
+
89
+ ## Version 2.4 RC 1 [2024-04-06]
90
+
91
+ ### Release Notes
92
+
93
+ This is a release candidate of the next release version, and is intended for testing purposes.
94
+ Please be careful when using this version on writing projects, and make frequent backups.
95
+
96
+ ### Detailed Changelog
97
+
98
+ **Bugfixes**
99
+
100
+ * A number of issues GUI icon scaling has been fixed. Icons and buttons are supposed to scale
101
+ relative to the GUI font size, but several of them were not. Issue #1787. PR #1788.
102
+ * The persistence of button state for the editor search box has been improved. The present state
103
+ was only saved when the search box was actively closed, and there were several scenarios where
104
+ this didn't happen. The button states are now tracked in the central config, and will always be
105
+ preserved. Issue #1794. PR #1795.
106
+
107
+ **Other Improvements**
108
+
109
+ * A placeholder icon has been added for cases where users have their own icon theme, and icons are
110
+ missing. Issue #1780. PR #1781.
111
+ * The project search now refreshes the search results for the currently open document when it's
112
+ being edited. PR #1782.
113
+ * When activating project search from the editor while text is selected, the search box is
114
+ populated with this text. Issue #1789. PR #1790.
115
+
116
+ **Packaging**
117
+
118
+ * The project has moved from using a `setup.cfg` to only using the `pyproject.toml` meta data file
119
+ for packaging. This is the preferred file format now. PR #1791.
120
+
121
+ **Code Improvements**
122
+
123
+ * The part of the code related to Qt widgets and flags has been updated and refactored in
124
+ preparation for the eventual move to the Qt6 framework. Part of issue #1142. PR #1792.
125
+ * The Open Document writer class has been refactored and improved. PR #1796.
126
+
127
+ ----
128
+
3
129
  ## Version 2.4 Beta 1 [2024-03-26]
4
130
 
5
131
  ### Release Notes
@@ -7,9 +133,6 @@
7
133
  This is a beta release of the next release version, and is intended for testing purposes. Please be
8
134
  careful when using this version on live writing projects, and make sure you take frequent backups.
9
135
 
10
- Please check the changelog for an overview of changes. The full release notes will be added to the
11
- final release.
12
-
13
136
  ### Detailed Changelog
14
137
 
15
138
  **Major Features**
@@ -1,14 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: novelWriter
3
- Version: 2.4b1
3
+ Version: 2.4.1
4
4
  Summary: A markdown-like text editor for planning and writing novels
5
- Home-page: https://novelwriter.io
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: Bug Tracker, https://github.com/vkbo/novelWriter/issues
7
+ Project-URL: Homepage, https://novelwriter.io
10
8
  Project-URL: Documentation, https://docs.novelwriter.io
11
- Project-URL: Source Code, https://github.com/vkbo/novelWriter
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
@@ -49,6 +49,10 @@ code, please also read the full
49
49
 
50
50
  Project credits are available in [CREDITS.md](https://github.com/vkbo/novelWriter/blob/main/CREDITS.md).
51
51
 
52
+ **Note:** As of April 2024 only pre-releases are made from the `main` branch. Full releases are
53
+ made from the `release` branch. So if you're submitting a fix to a current release, **including
54
+ changes to documentation**, they must be made to the `release` branch.
55
+
52
56
  ### Translations
53
57
 
54
58
  New translations are always welcome. This project uses Crowdin to maintain translations, and you
@@ -1,14 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: novelWriter
3
- Version: 2.4b1
3
+ Version: 2.4.1
4
4
  Summary: A markdown-like text editor for planning and writing novels
5
- Home-page: https://novelwriter.io
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: Bug Tracker, https://github.com/vkbo/novelWriter/issues
7
+ Project-URL: Homepage, https://novelwriter.io
10
8
  Project-URL: Documentation, https://docs.novelwriter.io
11
- Project-URL: Source Code, https://github.com/vkbo/novelWriter
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
@@ -5,12 +5,10 @@ MANIFEST.in
5
5
  README.md
6
6
  pkgutils.py
7
7
  pyproject.toml
8
- setup.cfg
9
8
  novelWriter.egg-info/PKG-INFO
10
9
  novelWriter.egg-info/SOURCES.txt
11
10
  novelWriter.egg-info/dependency_links.txt
12
11
  novelWriter.egg-info/entry_points.txt
13
- novelWriter.egg-info/not-zip-safe
14
12
  novelWriter.egg-info/requires.txt
15
13
  novelWriter.egg-info/top_level.txt
16
14
  novelwriter/__init__.py
@@ -21,6 +19,7 @@ novelwriter/enum.py
21
19
  novelwriter/error.py
22
20
  novelwriter/guimain.py
23
21
  novelwriter/shared.py
22
+ novelwriter/types.py
24
23
  novelwriter/assets/manual.pdf
25
24
  novelwriter/assets/sample.zip
26
25
  novelwriter/assets/i18n/nw_de_DE.qm
@@ -46,6 +45,7 @@ novelwriter/assets/i18n/project_nn_NO.json
46
45
  novelwriter/assets/i18n/project_pt_BR.json
47
46
  novelwriter/assets/i18n/project_ru_RU.json
48
47
  novelwriter/assets/i18n/project_zh_CN.json
48
+ novelwriter/assets/icons/none.svg
49
49
  novelwriter/assets/icons/novelwriter.ico
50
50
  novelwriter/assets/icons/novelwriter.svg
51
51
  novelwriter/assets/icons/x-novelwriter-project.ico
@@ -90,12 +90,10 @@ novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg
90
90
  novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg
91
91
  novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg
92
92
  novelwriter/assets/icons/typicons_dark/typ_arrow-down-thick-grey.svg
93
- novelwriter/assets/icons/typicons_dark/typ_arrow-down.svg
94
93
  novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg
95
94
  novelwriter/assets/icons/typicons_dark/typ_arrow-maximise.svg
96
95
  novelwriter/assets/icons/typicons_dark/typ_arrow-minimise.svg
97
96
  novelwriter/assets/icons/typicons_dark/typ_arrow-repeat-grey.svg
98
- novelwriter/assets/icons/typicons_dark/typ_arrow-right.svg
99
97
  novelwriter/assets/icons/typicons_dark/typ_book-grey.svg
100
98
  novelwriter/assets/icons/typicons_dark/typ_book.svg
101
99
  novelwriter/assets/icons/typicons_dark/typ_bookmark.svg
@@ -146,6 +144,8 @@ novelwriter/assets/icons/typicons_dark/typ_th-list-grey.svg
146
144
  novelwriter/assets/icons/typicons_dark/typ_th-list.svg
147
145
  novelwriter/assets/icons/typicons_dark/typ_times.svg
148
146
  novelwriter/assets/icons/typicons_dark/typ_trash.svg
147
+ novelwriter/assets/icons/typicons_dark/typ_unfold-hidden.svg
148
+ novelwriter/assets/icons/typicons_dark/typ_unfold-visible.svg
149
149
  novelwriter/assets/icons/typicons_dark/typ_user.svg
150
150
  novelwriter/assets/icons/typicons_dark/typ_warning-full.svg
151
151
  novelwriter/assets/icons/typicons_light/README.md
@@ -188,12 +188,10 @@ novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg
188
188
  novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg
189
189
  novelwriter/assets/icons/typicons_light/nw_tb-underline.svg
190
190
  novelwriter/assets/icons/typicons_light/typ_arrow-down-thick-grey.svg
191
- novelwriter/assets/icons/typicons_light/typ_arrow-down.svg
192
191
  novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg
193
192
  novelwriter/assets/icons/typicons_light/typ_arrow-maximise.svg
194
193
  novelwriter/assets/icons/typicons_light/typ_arrow-minimise.svg
195
194
  novelwriter/assets/icons/typicons_light/typ_arrow-repeat-grey.svg
196
- novelwriter/assets/icons/typicons_light/typ_arrow-right.svg
197
195
  novelwriter/assets/icons/typicons_light/typ_book-grey.svg
198
196
  novelwriter/assets/icons/typicons_light/typ_book.svg
199
197
  novelwriter/assets/icons/typicons_light/typ_bookmark.svg
@@ -244,6 +242,8 @@ novelwriter/assets/icons/typicons_light/typ_th-list-grey.svg
244
242
  novelwriter/assets/icons/typicons_light/typ_th-list.svg
245
243
  novelwriter/assets/icons/typicons_light/typ_times.svg
246
244
  novelwriter/assets/icons/typicons_light/typ_trash.svg
245
+ novelwriter/assets/icons/typicons_light/typ_unfold-hidden.svg
246
+ novelwriter/assets/icons/typicons_light/typ_unfold-visible.svg
247
247
  novelwriter/assets/icons/typicons_light/typ_user.svg
248
248
  novelwriter/assets/icons/typicons_light/typ_warning-full.svg
249
249
  novelwriter/assets/images/novelwriter-text-dark.svg
@@ -273,7 +273,6 @@ novelwriter/assets/themes/default_dark.conf
273
273
  novelwriter/assets/themes/default_light.conf
274
274
  novelwriter/assets/themes/solarized_dark.conf
275
275
  novelwriter/assets/themes/solarized_light.conf
276
- novelwriter/core/__init__.py
277
276
  novelwriter/core/buildsettings.py
278
277
  novelwriter/core/coretools.py
279
278
  novelwriter/core/docbuild.py
@@ -293,7 +292,6 @@ novelwriter/core/tokenizer.py
293
292
  novelwriter/core/tomd.py
294
293
  novelwriter/core/toodt.py
295
294
  novelwriter/core/tree.py
296
- novelwriter/dialogs/__init__.py
297
295
  novelwriter/dialogs/about.py
298
296
  novelwriter/dialogs/docmerge.py
299
297
  novelwriter/dialogs/docsplit.py
@@ -302,7 +300,6 @@ novelwriter/dialogs/preferences.py
302
300
  novelwriter/dialogs/projectsettings.py
303
301
  novelwriter/dialogs/quotes.py
304
302
  novelwriter/dialogs/wordlist.py
305
- novelwriter/extensions/__init__.py
306
303
  novelwriter/extensions/circularprogress.py
307
304
  novelwriter/extensions/configlayout.py
308
305
  novelwriter/extensions/eventfilters.py
@@ -314,7 +311,6 @@ novelwriter/extensions/statusled.py
314
311
  novelwriter/extensions/switch.py
315
312
  novelwriter/extensions/switchbox.py
316
313
  novelwriter/extensions/versioninfo.py
317
- novelwriter/gui/__init__.py
318
314
  novelwriter/gui/doceditor.py
319
315
  novelwriter/gui/dochighlight.py
320
316
  novelwriter/gui/docviewer.py
@@ -329,9 +325,7 @@ novelwriter/gui/search.py
329
325
  novelwriter/gui/sidebar.py
330
326
  novelwriter/gui/statusbar.py
331
327
  novelwriter/gui/theme.py
332
- novelwriter/text/__init__.py
333
328
  novelwriter/text/counting.py
334
- novelwriter/tools/__init__.py
335
329
  novelwriter/tools/dictionaries.py
336
330
  novelwriter/tools/lipsum.py
337
331
  novelwriter/tools/manusbuild.py
@@ -344,6 +338,7 @@ setup/appimage_launcher.sh
344
338
  setup/description_pypi.md
345
339
  setup/description_short.txt
346
340
  setup/iss_license.txt
341
+ setup/launchpad_setup.cfg
347
342
  setup/make_clean.sh
348
343
  setup/make_pip.sh
349
344
  setup/make_release.sh
@@ -23,16 +23,21 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
23
23
  """
24
24
  from __future__ import annotations
25
25
 
26
- import sys
27
26
  import getopt
28
27
  import logging
28
+ import sys
29
+
30
+ from typing import TYPE_CHECKING
29
31
 
30
32
  from PyQt5.QtWidgets import QApplication, QErrorMessage
31
33
 
32
- from novelwriter.error import exceptionHandler, logException
33
34
  from novelwriter.config import Config
35
+ from novelwriter.error import exceptionHandler, logException
34
36
  from novelwriter.shared import SharedData
35
37
 
38
+ if TYPE_CHECKING: # pragma: no cover
39
+ from novelwriter.guimain import GuiMain
40
+
36
41
  # Package Meta
37
42
  # ============
38
43
 
@@ -42,9 +47,9 @@ __license__ = "GPLv3"
42
47
  __author__ = "Veronica Berglyd Olsen"
43
48
  __maintainer__ = "Veronica Berglyd Olsen"
44
49
  __email__ = "code@vkbo.net"
45
- __version__ = "2.4b1"
46
- __hexversion__ = "0x020400b1"
47
- __date__ = "2024-03-26"
50
+ __version__ = "2.4.1"
51
+ __hexversion__ = "0x020401f0"
52
+ __date__ = "2024-05-06"
48
53
  __status__ = "Stable"
49
54
  __domain__ = "novelwriter.io"
50
55
 
@@ -60,7 +65,7 @@ CONFIG = Config()
60
65
  SHARED = SharedData()
61
66
 
62
67
 
63
- def main(sysArgs: list | None = None):
68
+ def main(sysArgs: list | None = None) -> GuiMain | None:
64
69
  """Parse command line, set up logging, and launch main GUI."""
65
70
  if sysArgs is None:
66
71
  sysArgs = sys.argv[1:]
@@ -187,7 +192,7 @@ def main(sysArgs: list | None = None):
187
192
  ))
188
193
  for errLine in errorData:
189
194
  logger.critical(errLine)
190
- errApp.exec_()
195
+ errApp.exec()
191
196
  sys.exit(errorCode)
192
197
 
193
198
  # Finish initialising config
@@ -237,6 +242,8 @@ def main(sysArgs: list | None = None):
237
242
  nwGUI = GuiMain()
238
243
  nwGUI.postLaunchTasks(cmdOpen)
239
244
 
240
- sys.exit(nwApp.exec_())
245
+ sys.exit(nwApp.exec())
246
+
247
+ return None
241
248
 
242
249
  # END Function main
@@ -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="m0 0v4l8 8-8 8v4h4l8-8 8 8h4v-4l-8-8 8-8v-4h-4l-8 8-8-8h-4z" fill="#f00" stroke-width=".70711"/>
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 = typ_arrow-right.svg
104
- unfold-show = typ_arrow-down.svg
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 = typ_arrow-right.svg
104
- unfold-show = typ_arrow-down.svg
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>
@@ -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
  ##
@@ -444,7 +449,7 @@ def xmlIndent(tree: ET.Element | ET.ElementTree) -> None:
444
449
 
445
450
  indentations = ["\n"]
446
451
 
447
- def indentChildren(elem, level):
452
+ def indentChildren(elem: ET.Element, level: int) -> None:
448
453
  chLevel = level + 1
449
454
  try:
450
455
  chIndent = indentations[chLevel]
@@ -467,6 +472,8 @@ def xmlIndent(tree: ET.Element | ET.ElementTree) -> None:
467
472
  if last is not None:
468
473
  last.tail = indentations[level]
469
474
 
475
+ return
476
+
470
477
  if len(tree):
471
478
  indentChildren(tree, 0)
472
479
  tree.tail = "\n"
@@ -529,8 +536,9 @@ class NWConfigParser(ConfigParser):
529
536
  helper functions, and support for lists.
530
537
  """
531
538
 
532
- def __init__(self):
539
+ def __init__(self) -> None:
533
540
  super().__init__()
541
+ return
534
542
 
535
543
  def rdStr(self, section: str, option: str, default: str) -> str:
536
544
  """Read string value."""
@@ -61,8 +61,12 @@ class Config:
61
61
  self.appHandle = "novelwriter"
62
62
 
63
63
  # Set Paths
64
- confRoot = Path(QStandardPaths.writableLocation(QStandardPaths.ConfigLocation))
65
- dataRoot = Path(QStandardPaths.writableLocation(QStandardPaths.AppDataLocation))
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
@@ -386,6 +390,10 @@ class Config:
386
390
  """Un-scale fixed gui sizes by the screen scale factor."""
387
391
  return int(value/self.guiScale)
388
392
 
393
+ def homePath(self) -> Path:
394
+ """The user's home folder."""
395
+ return self._homePath
396
+
389
397
  def dataPath(self, target: str | None = None) -> Path:
390
398
  """Return a path in the data folder."""
391
399
  if isinstance(target, str):
@@ -56,13 +56,13 @@ SETTINGS_TEMPLATE = {
56
56
  "headings.fmtChapter": (str, nwHeadFmt.TITLE),
57
57
  "headings.fmtUnnumbered": (str, nwHeadFmt.TITLE),
58
58
  "headings.fmtScene": (str, "* * *"),
59
- "headings.fmtHardScene": (str, ""),
59
+ "headings.fmtAltScene": (str, ""),
60
60
  "headings.fmtSection": (str, ""),
61
61
  "headings.hideTitle": (bool, False),
62
62
  "headings.hideChapter": (bool, False),
63
63
  "headings.hideUnnumbered": (bool, False),
64
64
  "headings.hideScene": (bool, False),
65
- "headings.hideHardScene": (bool, False),
65
+ "headings.hideAltScene": (bool, False),
66
66
  "headings.hideSection": (bool, True),
67
67
  "headings.centerTitle": (bool, True),
68
68
  "headings.centerChapter": (bool, False),
@@ -110,7 +110,7 @@ SETTINGS_LABELS = {
110
110
  "headings.fmtChapter": QT_TRANSLATE_NOOP("Builds", "Chapter Format"),
111
111
  "headings.fmtUnnumbered": QT_TRANSLATE_NOOP("Builds", "Unnumbered Format"),
112
112
  "headings.fmtScene": QT_TRANSLATE_NOOP("Builds", "Scene Format"),
113
- "headings.fmtHardScene": QT_TRANSLATE_NOOP("Builds", "Hard Scene Format"),
113
+ "headings.fmtAltScene": QT_TRANSLATE_NOOP("Builds", "Alt. Scene Format"),
114
114
  "headings.fmtSection": QT_TRANSLATE_NOOP("Builds", "Section Format"),
115
115
 
116
116
  "text.grpContent": QT_TRANSLATE_NOOP("Builds", "Text Content"),
@@ -178,7 +178,7 @@ class BuildSettings:
178
178
  def __init__(self) -> None:
179
179
  self._name = ""
180
180
  self._uuid = str(uuid.uuid4())
181
- self._path = Path.home()
181
+ self._path = CONFIG.homePath()
182
182
  self._build = ""
183
183
  self._order = 0
184
184
  self._format = nwBuildFmt.ODT
@@ -220,7 +220,7 @@ class BuildSettings:
220
220
  """The last used build path."""
221
221
  if self._path.is_dir():
222
222
  return self._path
223
- return Path.home()
223
+ return CONFIG.homePath()
224
224
 
225
225
  @property
226
226
  def lastBuildName(self) -> str:
@@ -297,7 +297,7 @@ class BuildSettings:
297
297
  if isinstance(path, Path) and path.is_dir():
298
298
  self._path = path
299
299
  else:
300
- self._path = Path.home()
300
+ self._path = CONFIG.homePath()
301
301
  self._changed = True
302
302
  return
303
303
 
@@ -382,7 +382,7 @@ class BuildSettings:
382
382
 
383
383
  postponed = []
384
384
 
385
- def allowRoot(rHandle):
385
+ def allowRoot(rHandle: str | None) -> None:
386
386
  if rHandle in postponed and rHandle in result and rHandle is not None:
387
387
  result[rHandle] = (True, FilterMode.ROOT)
388
388
  postponed.remove(rHandle)