novelWriter 2.5b1__tar.gz → 2.5rc1__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 (406) hide show
  1. {novelwriter-2.5b1 → novelwriter-2.5rc1}/CHANGELOG.md +97 -6
  2. {novelwriter-2.5b1 → novelwriter-2.5rc1}/PKG-INFO +1 -1
  3. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelWriter.egg-info/PKG-INFO +1 -1
  4. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelWriter.egg-info/SOURCES.txt +2 -2
  5. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/__init__.py +3 -3
  6. novelwriter-2.5rc1/novelwriter/assets/i18n/nw_pt_BR.qm +0 -0
  7. novelwriter-2.5rc1/novelwriter/assets/i18n/project_pt_BR.json +116 -0
  8. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/manual.pdf +0 -0
  9. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/sample.zip +0 -0
  10. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/themes/cyberpunk_night.conf +1 -0
  11. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/themes/default_dark.conf +1 -0
  12. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/themes/default_light.conf +1 -0
  13. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/themes/dracula.conf +1 -0
  14. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/themes/solarized_dark.conf +1 -0
  15. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/themes/solarized_light.conf +1 -0
  16. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/common.py +2 -3
  17. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/config.py +67 -15
  18. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/constants.py +8 -10
  19. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/buildsettings.py +5 -3
  20. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/coretools.py +3 -1
  21. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/docbuild.py +1 -0
  22. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/tohtml.py +69 -29
  23. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/tokenizer.py +83 -14
  24. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/toodt.py +48 -21
  25. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/toqdoc.py +25 -9
  26. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/about.py +10 -15
  27. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/docmerge.py +16 -16
  28. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/docsplit.py +16 -16
  29. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/editlabel.py +6 -8
  30. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/preferences.py +94 -68
  31. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/projectsettings.py +10 -10
  32. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/quotes.py +9 -5
  33. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/wordlist.py +6 -6
  34. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/enum.py +4 -5
  35. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/configlayout.py +23 -4
  36. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/modified.py +22 -3
  37. novelwriter-2.5b1/novelwriter/extensions/circularprogress.py → novelwriter-2.5rc1/novelwriter/extensions/progressbars.py +26 -3
  38. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/statusled.py +28 -22
  39. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/doceditor.py +20 -11
  40. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/dochighlight.py +30 -39
  41. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/docviewer.py +21 -14
  42. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/mainmenu.py +11 -11
  43. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/outline.py +3 -3
  44. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/projtree.py +19 -28
  45. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/search.py +10 -1
  46. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/statusbar.py +25 -29
  47. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/theme.py +3 -0
  48. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/guimain.py +91 -84
  49. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/shared.py +10 -8
  50. novelwriter-2.5rc1/novelwriter/text/patterns.py +113 -0
  51. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/dictionaries.py +2 -8
  52. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/lipsum.py +8 -12
  53. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/manusbuild.py +9 -9
  54. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/manuscript.py +10 -5
  55. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/manussettings.py +7 -3
  56. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/noveldetails.py +10 -10
  57. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/welcome.py +10 -10
  58. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/writingstats.py +3 -3
  59. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/types.py +5 -2
  60. {novelwriter-2.5b1 → novelwriter-2.5rc1}/pkgutils.py +7 -3
  61. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/win_setup_embed.iss +8 -5
  62. novelwriter-2.5b1/novelwriter/assets/i18n/nw_pt_BR.qm +0 -0
  63. novelwriter-2.5b1/novelwriter/assets/i18n/project_pt_BR.json +0 -116
  64. novelwriter-2.5b1/novelwriter/extensions/simpleprogress.py +0 -53
  65. {novelwriter-2.5b1 → novelwriter-2.5rc1}/CREDITS.md +0 -0
  66. {novelwriter-2.5b1 → novelwriter-2.5rc1}/LICENSE.md +0 -0
  67. {novelwriter-2.5b1 → novelwriter-2.5rc1}/MANIFEST.in +0 -0
  68. {novelwriter-2.5b1 → novelwriter-2.5rc1}/README.md +0 -0
  69. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelWriter.egg-info/dependency_links.txt +0 -0
  70. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelWriter.egg-info/entry_points.txt +0 -0
  71. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelWriter.egg-info/requires.txt +0 -0
  72. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelWriter.egg-info/top_level.txt +0 -0
  73. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_de_DE.qm +0 -0
  74. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_en_US.qm +0 -0
  75. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_es_419.qm +0 -0
  76. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_fr_FR.qm +0 -0
  77. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_it_IT.qm +0 -0
  78. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_ja_JP.qm +0 -0
  79. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_nb_NO.qm +0 -0
  80. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_nl_NL.qm +0 -0
  81. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_zh_CN.qm +0 -0
  82. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_de_DE.json +0 -0
  83. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_en_GB.json +0 -0
  84. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_en_US.json +0 -0
  85. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_es_419.json +0 -0
  86. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_fr_FR.json +0 -0
  87. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_it_IT.json +0 -0
  88. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_ja_JP.json +0 -0
  89. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_nb_NO.json +0 -0
  90. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_nl_NL.json +0 -0
  91. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_nn_NO.json +0 -0
  92. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_ru_RU.json +0 -0
  93. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_zh_CN.json +0 -0
  94. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/none.svg +0 -0
  95. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/novelwriter.ico +0 -0
  96. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/novelwriter.svg +0 -0
  97. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/README.md +0 -0
  98. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/icons.conf +0 -0
  99. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_document-chapter.svg +0 -0
  100. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_document-new.svg +0 -0
  101. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_document-note.svg +0 -0
  102. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_document-scene.svg +0 -0
  103. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_document-section.svg +0 -0
  104. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_document-title.svg +0 -0
  105. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_edit.svg +0 -0
  106. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_import.svg +0 -0
  107. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg +0 -0
  108. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_input-none.svg +0 -0
  109. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg +0 -0
  110. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_search-replace.svg +0 -0
  111. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h0.svg +0 -0
  112. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h1.svg +0 -0
  113. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h2-narrow.svg +0 -0
  114. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h2.svg +0 -0
  115. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h3-narrow.svg +0 -0
  116. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h3.svg +0 -0
  117. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h4-narrow.svg +0 -0
  118. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h4.svg +0 -0
  119. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-note.svg +0 -0
  120. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-noveltree-more.svg +0 -0
  121. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_font.svg +0 -0
  122. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_panel.svg +0 -0
  123. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_quote.svg +0 -0
  124. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_search-case.svg +0 -0
  125. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_search-preserve.svg +0 -0
  126. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_search-regex.svg +0 -0
  127. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_search-word.svg +0 -0
  128. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-bold-md.svg +0 -0
  129. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-bold.svg +0 -0
  130. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-italic-md.svg +0 -0
  131. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-italic.svg +0 -0
  132. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-mark.svg +0 -0
  133. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-strike-md.svg +0 -0
  134. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-strike.svg +0 -0
  135. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg +0 -0
  136. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg +0 -0
  137. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg +0 -0
  138. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_arrow-down-thick-grey.svg +0 -0
  139. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg +0 -0
  140. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_arrow-maximise.svg +0 -0
  141. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_arrow-minimise.svg +0 -0
  142. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_arrow-repeat-grey.svg +0 -0
  143. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_book-grey.svg +0 -0
  144. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_book.svg +0 -0
  145. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_bookmark.svg +0 -0
  146. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_calendar.svg +0 -0
  147. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_cancel-grey.svg +0 -0
  148. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_cancel.svg +0 -0
  149. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_chart-bar-grey.svg +0 -0
  150. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_chevron-down.svg +0 -0
  151. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_chevron-left.svg +0 -0
  152. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_chevron-right.svg +0 -0
  153. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_chevron-up.svg +0 -0
  154. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_cog.svg +0 -0
  155. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_delete-full.svg +0 -0
  156. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_delete.svg +0 -0
  157. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_directions-full.svg +0 -0
  158. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_document-add.svg +0 -0
  159. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_document-text.svg +0 -0
  160. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_document.svg +0 -0
  161. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_export-grey.svg +0 -0
  162. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_export.svg +0 -0
  163. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_eye.svg +0 -0
  164. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_flag.svg +0 -0
  165. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_folder-open.svg +0 -0
  166. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_folder.svg +0 -0
  167. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_globe-grey.svg +0 -0
  168. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_key.svg +0 -0
  169. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_lightbulb-full.svg +0 -0
  170. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_location.svg +0 -0
  171. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_media-pause-grey.svg +0 -0
  172. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_media-record-outline.svg +0 -0
  173. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_media-record.svg +0 -0
  174. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_minus.svg +0 -0
  175. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_pencil.svg +0 -0
  176. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_pin-outline.svg +0 -0
  177. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_pin.svg +0 -0
  178. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_plus.svg +0 -0
  179. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_puzzle-outline.svg +0 -0
  180. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_puzzle.svg +0 -0
  181. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_refresh-flipped.svg +0 -0
  182. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_refresh.svg +0 -0
  183. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_search-grey.svg +0 -0
  184. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_search.svg +0 -0
  185. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_star.svg +0 -0
  186. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_stopwatch-grey.svg +0 -0
  187. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_th-dot-menu.svg +0 -0
  188. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_th-dot-more.svg +0 -0
  189. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_th-list-grey.svg +0 -0
  190. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_th-list.svg +0 -0
  191. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_times.svg +0 -0
  192. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_trash.svg +0 -0
  193. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_unfold-hidden.svg +0 -0
  194. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_unfold-visible.svg +0 -0
  195. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_user.svg +0 -0
  196. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_warning-full.svg +0 -0
  197. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/README.md +0 -0
  198. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/icons.conf +0 -0
  199. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_document-chapter.svg +0 -0
  200. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_document-new.svg +0 -0
  201. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_document-note.svg +0 -0
  202. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_document-scene.svg +0 -0
  203. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_document-section.svg +0 -0
  204. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_document-title.svg +0 -0
  205. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_edit.svg +0 -0
  206. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_import.svg +0 -0
  207. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_input-checked.svg +0 -0
  208. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_input-none.svg +0 -0
  209. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg +0 -0
  210. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_search-replace.svg +0 -0
  211. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h0.svg +0 -0
  212. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h1.svg +0 -0
  213. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h2-narrow.svg +0 -0
  214. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h2.svg +0 -0
  215. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h3-narrow.svg +0 -0
  216. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h3.svg +0 -0
  217. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h4-narrow.svg +0 -0
  218. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h4.svg +0 -0
  219. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-note.svg +0 -0
  220. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-noveltree-more.svg +0 -0
  221. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_font.svg +0 -0
  222. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_panel.svg +0 -0
  223. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_quote.svg +0 -0
  224. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_search-case.svg +0 -0
  225. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_search-preserve.svg +0 -0
  226. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_search-regex.svg +0 -0
  227. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_search-word.svg +0 -0
  228. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-bold-md.svg +0 -0
  229. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-bold.svg +0 -0
  230. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-italic-md.svg +0 -0
  231. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-italic.svg +0 -0
  232. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-mark.svg +0 -0
  233. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-strike-md.svg +0 -0
  234. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-strike.svg +0 -0
  235. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg +0 -0
  236. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg +0 -0
  237. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-underline.svg +0 -0
  238. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_arrow-down-thick-grey.svg +0 -0
  239. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg +0 -0
  240. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_arrow-maximise.svg +0 -0
  241. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_arrow-minimise.svg +0 -0
  242. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_arrow-repeat-grey.svg +0 -0
  243. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_book-grey.svg +0 -0
  244. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_book.svg +0 -0
  245. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_bookmark.svg +0 -0
  246. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_calendar.svg +0 -0
  247. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_cancel-grey.svg +0 -0
  248. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_cancel.svg +0 -0
  249. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_chart-bar-grey.svg +0 -0
  250. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_chevron-down.svg +0 -0
  251. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_chevron-left.svg +0 -0
  252. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_chevron-right.svg +0 -0
  253. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_chevron-up.svg +0 -0
  254. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_cog.svg +0 -0
  255. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_delete-full.svg +0 -0
  256. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_delete.svg +0 -0
  257. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_directions-full.svg +0 -0
  258. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_document-add.svg +0 -0
  259. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_document-text.svg +0 -0
  260. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_document.svg +0 -0
  261. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_export-grey.svg +0 -0
  262. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_export.svg +0 -0
  263. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_eye.svg +0 -0
  264. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_flag.svg +0 -0
  265. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_folder-open.svg +0 -0
  266. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_folder.svg +0 -0
  267. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_globe-grey.svg +0 -0
  268. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_key.svg +0 -0
  269. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_lightbulb-full.svg +0 -0
  270. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_location.svg +0 -0
  271. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_media-pause-grey.svg +0 -0
  272. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_media-record-outline.svg +0 -0
  273. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_media-record.svg +0 -0
  274. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_minus.svg +0 -0
  275. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_pencil.svg +0 -0
  276. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_pin-outline.svg +0 -0
  277. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_pin.svg +0 -0
  278. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_plus.svg +0 -0
  279. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_puzzle-outline.svg +0 -0
  280. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_puzzle.svg +0 -0
  281. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_refresh-flipped.svg +0 -0
  282. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_refresh.svg +0 -0
  283. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_search-grey.svg +0 -0
  284. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_search.svg +0 -0
  285. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_star.svg +0 -0
  286. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_stopwatch-grey.svg +0 -0
  287. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_th-dot-menu.svg +0 -0
  288. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_th-dot-more.svg +0 -0
  289. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_th-list-grey.svg +0 -0
  290. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_th-list.svg +0 -0
  291. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_times.svg +0 -0
  292. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_trash.svg +0 -0
  293. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_unfold-hidden.svg +0 -0
  294. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_unfold-visible.svg +0 -0
  295. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_user.svg +0 -0
  296. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_warning-full.svg +0 -0
  297. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/x-novelwriter-project.ico +0 -0
  298. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/x-novelwriter-project.svg +0 -0
  299. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/images/novelwriter-text-dark.svg +0 -0
  300. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/images/novelwriter-text-light.svg +0 -0
  301. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/images/welcome-dark.jpg +0 -0
  302. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/images/welcome-light.jpg +0 -0
  303. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/cyberpunk_night.conf +0 -0
  304. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/default_dark.conf +0 -0
  305. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/default_light.conf +0 -0
  306. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/dracula.conf +0 -0
  307. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/grey_dark.conf +0 -0
  308. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/grey_light.conf +0 -0
  309. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/light_owl.conf +0 -0
  310. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/night_owl.conf +0 -0
  311. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/snazzy.conf +0 -0
  312. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/solarized_dark.conf +0 -0
  313. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/solarized_light.conf +0 -0
  314. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/tango.conf +0 -0
  315. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/tomorrow.conf +0 -0
  316. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/tomorrow_night.conf +0 -0
  317. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/tomorrow_night_blue.conf +0 -0
  318. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/tomorrow_night_bright.conf +0 -0
  319. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/tomorrow_night_eighties.conf +0 -0
  320. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/text/credits_en.htm +0 -0
  321. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/text/lipsum.txt +0 -0
  322. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/themes/default.conf +0 -0
  323. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/document.py +0 -0
  324. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/index.py +0 -0
  325. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/item.py +0 -0
  326. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/options.py +0 -0
  327. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/project.py +0 -0
  328. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/projectdata.py +0 -0
  329. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/projectxml.py +0 -0
  330. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/sessions.py +0 -0
  331. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/spellcheck.py +0 -0
  332. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/status.py +0 -0
  333. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/storage.py +0 -0
  334. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/tomarkdown.py +0 -0
  335. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/tree.py +0 -0
  336. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/error.py +0 -0
  337. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/eventfilters.py +0 -0
  338. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/novelselector.py +0 -0
  339. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/pagedsidebar.py +0 -0
  340. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/switch.py +0 -0
  341. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/switchbox.py +0 -0
  342. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/versioninfo.py +0 -0
  343. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/docviewerpanel.py +0 -0
  344. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/editordocument.py +0 -0
  345. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/itemdetails.py +0 -0
  346. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/noveltree.py +0 -0
  347. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/sidebar.py +0 -0
  348. {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/text/counting.py +0 -0
  349. {novelwriter-2.5b1 → novelwriter-2.5rc1}/pyproject.toml +0 -0
  350. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/appimage_launcher.sh +0 -0
  351. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/128x128/apps/novelwriter.png +0 -0
  352. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/128x128/mimetypes/application-x-novelwriter-project.png +0 -0
  353. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/16x16/apps/novelwriter.png +0 -0
  354. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/16x16/mimetypes/application-x-novelwriter-project.png +0 -0
  355. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/24x24/apps/novelwriter.png +0 -0
  356. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/24x24/mimetypes/application-x-novelwriter-project.png +0 -0
  357. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/256x256/apps/novelwriter.png +0 -0
  358. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/256x256/mimetypes/application-x-novelwriter-project.png +0 -0
  359. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/32x32/apps/novelwriter.png +0 -0
  360. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/32x32/mimetypes/application-x-novelwriter-project.png +0 -0
  361. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/48x48/apps/novelwriter.png +0 -0
  362. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/48x48/mimetypes/application-x-novelwriter-project.png +0 -0
  363. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/512x512/apps/novelwriter.png +0 -0
  364. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/512x512/mimetypes/application-x-novelwriter-project.png +0 -0
  365. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/64x64/apps/novelwriter.png +0 -0
  366. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/64x64/mimetypes/application-x-novelwriter-project.png +0 -0
  367. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/scalable/apps/novelwriter.svg +0 -0
  368. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/scalable/mimetypes/application-x-novelwriter-project.svg +0 -0
  369. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/novelwriter.desktop +0 -0
  370. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/novelwriter.png +0 -0
  371. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/x-novelwriter-project.xml +0 -0
  372. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/debian/compat +0 -0
  373. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/debian/control +0 -0
  374. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/debian/copyright +0 -0
  375. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/debian/install +0 -0
  376. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/debian/py3dist-overrides +0 -0
  377. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/debian/rules +0 -0
  378. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/debian/source/format +0 -0
  379. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/description_pypi.md +0 -0
  380. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/description_short.txt +0 -0
  381. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/icons/novelwriter.ico +0 -0
  382. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/icons/novelwriter.svg +0 -0
  383. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/icons/x-novelwriter-project.ico +0 -0
  384. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/icons/x-novelwriter-project.svg +0 -0
  385. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/iss_license.txt +0 -0
  386. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/launchpad_setup.cfg +0 -0
  387. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/App.entitlements +0 -0
  388. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/Info.plist.template +0 -0
  389. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/build.sh +0 -0
  390. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_128x128.png +0 -0
  391. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_128x128@2x.png +0 -0
  392. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_16x16.png +0 -0
  393. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_16x16@2x.png +0 -0
  394. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_256x256.png +0 -0
  395. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_256x256@2x.png +0 -0
  396. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_32x32.png +0 -0
  397. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_32x32@2x.png +0 -0
  398. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_512x512.png +0 -0
  399. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_512x512@2x.png +0 -0
  400. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/make_clean.sh +0 -0
  401. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/make_pip.sh +0 -0
  402. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/make_release.sh +0 -0
  403. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/novelwriter.appdata.xml +0 -0
  404. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/novelwriter_readme.png +0 -0
  405. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/novelwriter_text.png +0 -0
  406. {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup.cfg +0 -0
@@ -1,5 +1,70 @@
1
1
  # novelWriter Changelog
2
2
 
3
+ ## Version 2.5 RC 1 [2024-06-22]
4
+
5
+ ### Release Notes
6
+
7
+ This is a release candidate of the next release version, and is intended for testing purposes.
8
+ Please be careful when using this version on live writing projects, and make sure you take frequent
9
+ backups.
10
+
11
+ ### Detailed Changelog
12
+
13
+ **Bugfixes**
14
+
15
+ * The Status bar LEDs are now properly updated when the theme changes. Issue #1893. PR #1906.
16
+ * All HTML tags are now properly closed at the end of each paragraph in HTML output. After
17
+ shortcodes were introduced, it was possible to leave formatting tags open. Issue #1919. PR #1926.
18
+
19
+ **Improvements**
20
+
21
+ * Move the first line indent setting from being an Open Document feature to a general build
22
+ settings feature that also applies to HTML, and make it visible in the Manuscript build tool
23
+ preview. Issue #1839 and #1858. PR #1898.
24
+ * Make sure the document in the editor is saved before the same document is opened in the viewer.
25
+ Issue #1884. PR #1902.
26
+ * The project name now appears before "novelWriter" in the main window title, which improves the
27
+ task bar label on at least Linux Mint Cinnamon, and Windows. Issue #1910. PR #1911.
28
+ * Dialogue highlighting now only applies to novel documents, not notes. It is also possible to
29
+ apply it to HTML and ODT manuscripts, and it also shows up in the preview and in the document
30
+ viewer. Issue #1774. PR #1908.
31
+ * The Welcome dialog and other tools that use the project name to generate files of folder names
32
+ are now less restrictive on what characters it allows in the file or folder names. Issue #1917.
33
+ PR #1922.
34
+ * Last used folder paths are now remembered individually for each tool or feature that requires
35
+ path input from the user. Issues #1930 and #1933. PR #1934.
36
+ * The Manuscript preview will now show line height as set in build settings. Issue #1920. PR #1935.
37
+ * Global search now refreshes if any of the search option buttons are toggled, and the search
38
+ result will show the complete word if the search term only matches part of a word. Issue #1830.
39
+ PR #1936.
40
+ * When a new note is created from a reference tag in the editor, the syntax highlighting is
41
+ properly updated to indicate the tag is now valid. Issue #1916. PR #1938.
42
+ * The `Ctrl+E` shortcut now toggles focus between editor and viewer instead of just going to the
43
+ editor. The header text colour changes to indicate which panel has focus. This should make it
44
+ easier to scroll the content of the viewer without having to click it with the mouse first.
45
+ Issue #1387. PRs #1940 and #1941.
46
+
47
+ **Code Improvements**
48
+
49
+ * Change how dialogs are handled in memory, and drop the calls to deleteLater for the underlying Qt
50
+ object as it caused problems in some cases. Instead, the dialog is disconnected from the parent
51
+ object, which seems to let the Python and Qt garbage collectors to kick in.
52
+ PRs #1899. #1913 and #1921.
53
+ * Overload the reject call for dialogs rather to call close, which the default implementation does
54
+ not. This simplifies the logic when closing dialogs, as reject() is also a slot, which close() is
55
+ not. Issue #1915. PR #1918.
56
+ * Processing of dialogue highlighting has been added to the Tokenizer class, and the RegEx handling
57
+ moved to a separate factory class. PR #1908.
58
+ * The progress bar widgets have been moved to a single module, and test coverage added. PR #1937.
59
+
60
+ **Packaging**
61
+
62
+ * The Windows installer is now built with Inno Setup 6.3, and uses zip compression rather than
63
+ lzma. It also properly sets the undelete icon, and the undelete process is better at cleaning up
64
+ files. PR #1932.
65
+
66
+ ----
67
+
3
68
  ## Version 2.5 Beta 1 [2024-05-26]
4
69
 
5
70
  ### Release Notes
@@ -98,6 +163,32 @@ careful when using this version on live writing projects, and make sure you take
98
163
 
99
164
  ----
100
165
 
166
+ ## Version 2.4.4 [2024-06-12]
167
+
168
+ ### Release Notes
169
+
170
+ This is a patch release that fixes a usage issue when setting document label from an unsaved
171
+ document, fixes a rare chance of a crash when closing the Manuscript tool, and updates the
172
+ Portuguese translation.
173
+
174
+ ### Detailed Changelog
175
+
176
+ **Bugfixes**
177
+
178
+ * Backported some memory improvements from the upcoming 2.5 release. This also fixes a potential,
179
+ but low probability crash in the Manuscript tool. If the tool is closed during the milliseconds
180
+ long window when the clock on the yellow label is updated, the app can crash with a segmentation
181
+ fault. PRs #1903 and #1905.
182
+ * Fixed an issue where changing a document's label to match the document heading would suggest the
183
+ wrong title if the document was open in the editor, but in an unsaved state. An easy condition to
184
+ encounter when creating a new document and setting the heading first. Issue #1914. PR #1923.
185
+
186
+ **Internationalisation**
187
+
188
+ * Portuguese translation updated by Oli Maia. PR #1904.
189
+
190
+ ----
191
+
101
192
  ## Version 2.4.3 [2024-05-20]
102
193
 
103
194
  ### Release Notes
@@ -110,14 +201,14 @@ the spell check dictionary install tool.
110
201
 
111
202
  **Bugfixes**
112
203
 
113
- * Fix a crash in the dictionaries install tool on Windows if the config folder reported by the
204
+ * Fixed a crash in the dictionaries install tool on Windows if the config folder reported by the
114
205
  third party Enchant spell checker tool didn't already exist prior to adding new dictionaries.
115
206
  The folder is now created when the tool is opened if it doesn't exist. Issue #1874. PR #1876.
116
- * Fix issues setting a different text font for the editor and viewer, and related issues with the
117
- preview in the Manuscript Build tool, on certain platforms. Changing the font and setting
118
- non-standard font sizes produced unexpected results when reloading. The issue seems to be related
119
- to Qt 5.15.3, but that is not fully confirmed. However, the only place so far where the issue is
120
- observed is on Mint 21.3. Issues #1862 and #1875. PR #1877.
207
+ * Fixed issues when setting a different text font for the editor and viewer, and related issues
208
+ with the preview in the Manuscript Build tool, on certain platforms. Changing the font and
209
+ setting non-standard font sizes produced unexpected results when reloading. The issue seems to be
210
+ related to Qt 5.15.3, but that is not fully confirmed. However, the only place so far where the
211
+ issue is observed is on Mint 21.3. Issues #1862 and #1875. PR #1877.
121
212
 
122
213
  ----
123
214
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: novelWriter
3
- Version: 2.5b1
3
+ Version: 2.5rc1
4
4
  Summary: A markdown-like text editor for planning and writing novels
5
5
  Author-email: Veronica Berglyd Olsen <code@vkbo.net>
6
6
  License: GNU General Public License v3
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: novelWriter
3
- Version: 2.5b1
3
+ Version: 2.5rc1
4
4
  Summary: A markdown-like text editor for planning and writing novels
5
5
  Author-email: Veronica Berglyd Olsen <code@vkbo.net>
6
6
  License: GNU General Public License v3
@@ -308,13 +308,12 @@ novelwriter/dialogs/preferences.py
308
308
  novelwriter/dialogs/projectsettings.py
309
309
  novelwriter/dialogs/quotes.py
310
310
  novelwriter/dialogs/wordlist.py
311
- novelwriter/extensions/circularprogress.py
312
311
  novelwriter/extensions/configlayout.py
313
312
  novelwriter/extensions/eventfilters.py
314
313
  novelwriter/extensions/modified.py
315
314
  novelwriter/extensions/novelselector.py
316
315
  novelwriter/extensions/pagedsidebar.py
317
- novelwriter/extensions/simpleprogress.py
316
+ novelwriter/extensions/progressbars.py
318
317
  novelwriter/extensions/statusled.py
319
318
  novelwriter/extensions/switch.py
320
319
  novelwriter/extensions/switchbox.py
@@ -334,6 +333,7 @@ novelwriter/gui/sidebar.py
334
333
  novelwriter/gui/statusbar.py
335
334
  novelwriter/gui/theme.py
336
335
  novelwriter/text/counting.py
336
+ novelwriter/text/patterns.py
337
337
  novelwriter/tools/dictionaries.py
338
338
  novelwriter/tools/lipsum.py
339
339
  novelwriter/tools/manusbuild.py
@@ -47,9 +47,9 @@ __license__ = "GPLv3"
47
47
  __author__ = "Veronica Berglyd Olsen"
48
48
  __maintainer__ = "Veronica Berglyd Olsen"
49
49
  __email__ = "code@vkbo.net"
50
- __version__ = "2.5b1"
51
- __hexversion__ = "0x020500b1"
52
- __date__ = "2024-05-26"
50
+ __version__ = "2.5rc1"
51
+ __hexversion__ = "0x020500c1"
52
+ __date__ = "2024-06-22"
53
53
  __status__ = "Stable"
54
54
  __domain__ = "novelwriter.io"
55
55
 
@@ -0,0 +1,116 @@
1
+ {
2
+ "Synopsis": "Sinopse",
3
+ "Short Description": "Descrição breve",
4
+ "Comment": "Comentário",
5
+ "Notes": "Notas",
6
+ "Tag": "Etiqueta",
7
+ "Point of View": "Ponto de vista",
8
+ "Focus": "Foco",
9
+ "Characters": "Personagens",
10
+ "Plot": "Trama",
11
+ "Timeline": "Linha do tempo",
12
+ "Locations": "Lugares",
13
+ "Objects": "Objetos",
14
+ "Entities": "Entidades",
15
+ "Custom": "Outros",
16
+ "0": "Zero",
17
+ "1": "Um",
18
+ "2": "Dois",
19
+ "3": "Três",
20
+ "4": "Quatro",
21
+ "5": "Cinco",
22
+ "6": "Seis",
23
+ "7": "Sete",
24
+ "8": "Oito",
25
+ "9": "Nove",
26
+ "10": "Dez",
27
+ "11": "Onze",
28
+ "12": "Doze",
29
+ "13": "Treze",
30
+ "14": "Quatorze",
31
+ "15": "Quinze",
32
+ "16": "Dezesseis",
33
+ "17": "Dezessete",
34
+ "18": "Dezoito",
35
+ "19": "Dezenove",
36
+ "20": "Vinte",
37
+ "21": "Vinte e um",
38
+ "22": "Vinte e dois",
39
+ "23": "Vinte e três",
40
+ "24": "Vinte e quatro",
41
+ "25": "Vinte e cinco",
42
+ "26": "Vinte e seis",
43
+ "27": "Vinte e sete",
44
+ "28": "Vinte e oito",
45
+ "29": "Vinte e nove",
46
+ "30": "Trinta",
47
+ "31": "Trinta e um",
48
+ "32": "Trinta e dois",
49
+ "33": "Trinta e três",
50
+ "34": "Trinta e quatro",
51
+ "35": "Trinta e cinco",
52
+ "36": "Trinta e seis",
53
+ "37": "Trinta e sete",
54
+ "38": "Trinta e oito",
55
+ "39": "Trinta e nove",
56
+ "40": "Quarenta",
57
+ "41": "Quarenta e um",
58
+ "42": "Quarenta e dois",
59
+ "43": "Quarenta e três",
60
+ "44": "Quarenta e quatro",
61
+ "45": "Quarenta e cinco",
62
+ "46": "Quarenta e seis",
63
+ "47": "Quarenta e sete",
64
+ "48": "Quarenta e oito",
65
+ "49": "Quarenta e nove",
66
+ "50": "Cinquenta",
67
+ "51": "Cinquenta e um",
68
+ "52": "Cinquenta e dois",
69
+ "53": "Cinquenta e três",
70
+ "54": "Cinquenta e quatro",
71
+ "55": "Cinquenta e cinco",
72
+ "56": "Cinquenta e seis",
73
+ "57": "Cinquenta e sete",
74
+ "58": "Cinquenta e oito",
75
+ "59": "Cinquenta e nove",
76
+ "60": "Sessenta",
77
+ "61": "Sessenta e um",
78
+ "62": "Sessenta e dois",
79
+ "63": "Sessenta e três",
80
+ "64": "Sessenta e quatro",
81
+ "65": "Sessenta e cinco",
82
+ "66": "Sessenta e seis",
83
+ "67": "Sessenta e sete",
84
+ "68": "Sessenta e oito",
85
+ "69": "Sessenta e nove",
86
+ "70": "Setenta",
87
+ "71": "Setenta e um",
88
+ "72": "Setenta e dois",
89
+ "73": "Setenta e três",
90
+ "74": "Setenta e quatro",
91
+ "75": "Setenta e cinco",
92
+ "76": "Setenta e seis",
93
+ "77": "Setenta e sete",
94
+ "78": "Setenta e oito",
95
+ "79": "Setenta e nove",
96
+ "80": "Oitenta",
97
+ "81": "Oitenta e um",
98
+ "82": "Oitenta e dois",
99
+ "83": "Oitenta e três",
100
+ "84": "Oitenta e quatro",
101
+ "85": "Oitenta e cinco",
102
+ "86": "Oitenta e seis",
103
+ "87": "Oitenta e sete",
104
+ "88": "Oitenta e oito",
105
+ "89": "Oitenta e nove",
106
+ "90": "Noventa",
107
+ "91": "Noventa e um",
108
+ "92": "Noventa e dois",
109
+ "93": "Noventa e três",
110
+ "94": "Noventa e quatro",
111
+ "95": "Noventa e cinco",
112
+ "96": "Noventa e seis",
113
+ "97": "Noventa e sete",
114
+ "98": "Noventa e oito",
115
+ "99": "Noventa e nove"
116
+ }
@@ -25,6 +25,7 @@ linkvisited = 50, 0, 80
25
25
 
26
26
  [GUI]
27
27
  helptext = 97, 97, 97
28
+ fadedtext = 97, 97, 97
28
29
  errortext = 255, 77, 77
29
30
  statusnone = 50, 50, 50
30
31
  statussaved = 77, 255, 77
@@ -26,6 +26,7 @@ linkvisited = 102, 153, 204
26
26
 
27
27
  [GUI]
28
28
  helptext = 164, 164, 164
29
+ fadedtext = 148, 148, 148
29
30
  errortext = 255, 164, 164
30
31
  statusnone = 150, 152, 150
31
32
  statussaved = 39, 135, 78
@@ -26,6 +26,7 @@ linkvisited = 66, 113, 174
26
26
 
27
27
  [GUI]
28
28
  helptext = 92, 92, 92
29
+ fadedtext = 108, 108, 108
29
30
  errortext = 255, 92, 92
30
31
  statusnone = 120, 120, 120
31
32
  statussaved = 200, 15, 39
@@ -41,6 +41,7 @@ linkvisited = 139, 233, 253
41
41
 
42
42
  [GUI]
43
43
  helptext = 204, 172, 249
44
+ fadedtext = 98, 114, 164
44
45
  errortext = 255, 85, 85
45
46
  statusnone = 98, 114, 164
46
47
  statussaved = 80, 250, 123
@@ -25,6 +25,7 @@ linkvisited = 38, 139, 210
25
25
 
26
26
  [GUI]
27
27
  helptext = 166, 161, 149
28
+ fadedtext = 166, 161, 149
28
29
  errortext = 255, 161, 149
29
30
  statusnone = 88, 110, 117
30
31
  statussaved = 42, 161, 152
@@ -25,6 +25,7 @@ linkvisited = 38, 139, 210
25
25
 
26
26
  [GUI]
27
27
  helptext = 78, 91, 95
28
+ fadedtext = 78, 91, 95
28
29
  errortext = 255, 91, 95
29
30
  statusnone = 88, 110, 117
30
31
  statussaved = 42, 161, 152
@@ -523,12 +523,11 @@ def readTextFile(path: str | Path) -> str:
523
523
 
524
524
 
525
525
  def makeFileNameSafe(text: str) -> str:
526
- """Return a filename safe string.
526
+ """Return a filename-safe string.
527
527
  See: https://unicode.org/reports/tr15/#Norm_Forms
528
528
  """
529
529
  text = unicodedata.normalize("NFKC", text).strip()
530
- allowed = (" ", ".", "-", "_")
531
- return "".join(c for c in text if c.isalnum() or c in allowed)
530
+ return "".join(c for c in text if c.isprintable() and c not in r'\/:*?"<>|')
532
531
 
533
532
 
534
533
  def getFileSize(path: Path) -> int:
@@ -5,6 +5,7 @@ novelWriter – Config Class
5
5
  File History:
6
6
  Created: 2018-09-22 [0.0.1] Config
7
7
  Created: 2022-11-09 [2.0rc2] RecentProjects
8
+ Created: 2024-06-16 [2.5rc1] RecentPaths
8
9
 
9
10
  This file is a part of novelWriter
10
11
  Copyright 2018–2024, Veronica Berglyd Olsen
@@ -103,7 +104,8 @@ class Config:
103
104
  # User Settings
104
105
  # =============
105
106
 
106
- self._recentObj = RecentProjects(self)
107
+ self._recentProjects = RecentProjects(self)
108
+ self._recentPaths = RecentPaths(self)
107
109
 
108
110
  # General GUI Settings
109
111
  self.guiLocale = self._qLocale.name()
@@ -180,7 +182,6 @@ class Config:
180
182
  self.fmtPadThin = False
181
183
 
182
184
  # User Paths
183
- self._lastPath = self._homePath # The user's last used path
184
185
  self._backupPath = self._backPath # Backup path to use, can be none
185
186
 
186
187
  # Spell Checking Settings
@@ -253,7 +254,7 @@ class Config:
253
254
 
254
255
  @property
255
256
  def recentProjects(self) -> RecentProjects:
256
- return self._recentObj
257
+ return self._recentProjects
257
258
 
258
259
  @property
259
260
  def mainWinSize(self) -> list[int]:
@@ -343,7 +344,7 @@ class Config:
343
344
  self._outlnPanePos = [int(x/self.guiScale) for x in pos]
344
345
  return
345
346
 
346
- def setLastPath(self, path: str | Path) -> None:
347
+ def setLastPath(self, key: str, path: str | Path) -> None:
347
348
  """Set the last used path. Only the folder is saved, so if the
348
349
  path is not a folder, the parent of the path is used instead.
349
350
  """
@@ -352,8 +353,7 @@ class Config:
352
353
  if not path.is_dir():
353
354
  path = path.parent
354
355
  if path.is_dir():
355
- self._lastPath = path
356
- logger.debug("Last path updated: %s" % self._lastPath)
356
+ self._recentPaths.setPath(key, path)
357
357
  return
358
358
 
359
359
  def setBackupPath(self, path: Path | str) -> None:
@@ -438,11 +438,12 @@ class Config:
438
438
  return self._appPath / "assets" / target
439
439
  return self._appPath / "assets"
440
440
 
441
- def lastPath(self) -> Path:
441
+ def lastPath(self, key: str) -> Path:
442
442
  """Return the last path used by the user, if it exists."""
443
- if isinstance(self._lastPath, Path):
444
- if self._lastPath.is_dir():
445
- return self._lastPath
443
+ if path := self._recentPaths.getPath(key):
444
+ asPath = Path(path)
445
+ if asPath.is_dir():
446
+ return asPath
446
447
  return self._homePath
447
448
 
448
449
  def backupPath(self) -> Path:
@@ -516,7 +517,6 @@ class Config:
516
517
  logger.debug("Data Path: %s", self._dataPath)
517
518
  logger.debug("App Root: %s", self._appRoot)
518
519
  logger.debug("App Path: %s", self._appPath)
519
- logger.debug("Last Path: %s", self._lastPath)
520
520
  logger.debug("PDF Manual: %s", self.pdfDocs)
521
521
 
522
522
  # If the config and data folders don't exist, create them
@@ -531,7 +531,8 @@ class Config:
531
531
  (self._dataPath / "syntax").mkdir(exist_ok=True)
532
532
  (self._dataPath / "themes").mkdir(exist_ok=True)
533
533
 
534
- self._recentObj.loadCache()
534
+ self._recentPaths.loadCache()
535
+ self._recentProjects.loadCache()
535
536
  self._checkOptionalPackages()
536
537
 
537
538
  logger.debug("Config instance initialised")
@@ -600,7 +601,6 @@ class Config:
600
601
  self.hideHScroll = conf.rdBool(sec, "hidehscroll", self.hideHScroll)
601
602
  self.lastNotes = conf.rdStr(sec, "lastnotes", self.lastNotes)
602
603
  self.nativeFont = conf.rdBool(sec, "nativefont", self.nativeFont)
603
- self._lastPath = conf.rdPath(sec, "lastpath", self._lastPath)
604
604
 
605
605
  # Sizes
606
606
  sec = "Sizes"
@@ -710,7 +710,6 @@ class Config:
710
710
  "hidehscroll": str(self.hideHScroll),
711
711
  "lastnotes": str(self.lastNotes),
712
712
  "nativefont": str(self.nativeFont),
713
- "lastpath": str(self._lastPath),
714
713
  }
715
714
 
716
715
  conf["Sizes"] = {
@@ -811,7 +810,7 @@ class Config:
811
810
  """Pack a list of items into a comma-separated string for saving
812
811
  to the config file.
813
812
  """
814
- return ", ".join([str(inVal) for inVal in data])
813
+ return ", ".join(str(inVal) for inVal in data)
815
814
 
816
815
  def _checkOptionalPackages(self) -> None:
817
816
  """Check optional packages used by some features."""
@@ -893,3 +892,56 @@ class RecentProjects:
893
892
  logger.debug("Removed recent: %s", path)
894
893
  self.saveCache()
895
894
  return
895
+
896
+
897
+ class RecentPaths:
898
+
899
+ KEYS = ["default", "project", "import", "outline", "stats"]
900
+
901
+ def __init__(self, config: Config) -> None:
902
+ self._conf = config
903
+ self._data = {}
904
+ return
905
+
906
+ def setPath(self, key: str, path: Path | str) -> None:
907
+ """Set a path for a given key, and save the cache."""
908
+ if key in self.KEYS:
909
+ self._data[key] = str(path)
910
+ self.saveCache()
911
+ return
912
+
913
+ def getPath(self, key: str) -> str | None:
914
+ """Get a path for a given key, or return None."""
915
+ return self._data.get(key)
916
+
917
+ def loadCache(self) -> bool:
918
+ """Load the cache file for recent paths."""
919
+ self._data = {}
920
+ cacheFile = self._conf.dataPath(nwFiles.RECENT_PATH)
921
+ if cacheFile.is_file():
922
+ try:
923
+ with open(cacheFile, mode="r", encoding="utf-8") as inFile:
924
+ data = json.load(inFile)
925
+ if isinstance(data, dict):
926
+ for key, path in data.items():
927
+ if key in self.KEYS and isinstance(path, str):
928
+ self._data[key] = path
929
+ except Exception:
930
+ logger.error("Could not load recent paths cache")
931
+ logException()
932
+ return False
933
+ return True
934
+
935
+ def saveCache(self) -> bool:
936
+ """Save the cache dictionary of recent paths."""
937
+ cacheFile = self._conf.dataPath(nwFiles.RECENT_PATH)
938
+ cacheTemp = cacheFile.with_suffix(".tmp")
939
+ try:
940
+ with open(cacheTemp, mode="w+", encoding="utf-8") as outFile:
941
+ json.dump(self._data, outFile, indent=2)
942
+ cacheTemp.replace(cacheFile)
943
+ except Exception:
944
+ logger.error("Could not save recent paths cache")
945
+ logException()
946
+ return False
947
+ return True
@@ -57,17 +57,14 @@ class nwConst:
57
57
  STATUS_MSG_TIMEOUT = 15000 # milliseconds
58
58
  MAX_SEARCH_RESULT = 1000
59
59
 
60
- # Dialogs
61
- DLG_FINISHED = 2
62
-
63
60
 
64
61
  class nwRegEx:
65
62
 
66
63
  FMT_EI = r"(?<![\w\\])(_)(?![\s_])(.+?)(?<![\s\\])(\1)(?!\w)"
67
- FMT_EB = r"(?<![\w\\])([\*]{2})(?![\s\*])(.+?)(?<![\s\\])(\1)(?!\w)"
68
- FMT_ST = r"(?<![\w\\])([~]{2})(?![\s~])(.+?)(?<![\s\\])(\1)(?!\w)"
69
- FMT_SC = r"(?i)(?<!\\)(\[[\/\!]?(?:i|b|s|u|m|sup|sub)\])"
70
- FMT_SV = r"(?<!\\)(\[(?i)(?:footnote):)(.+?)(?<!\\)(\])"
64
+ FMT_EB = r"(?<![\w\\])(\*{2})(?![\s\*])(.+?)(?<![\s\\])(\1)(?!\w)"
65
+ FMT_ST = r"(?<![\w\\])(~{2})(?![\s~])(.+?)(?<![\s\\])(\1)(?!\w)"
66
+ FMT_SC = r"(?i)(?<!\\)(\[[\/\!]?(?:b|i|s|u|m|sup|sub)\])"
67
+ FMT_SV = r"(?i)(?<!\\)(\[(?:footnote):)(.+?)(?<!\\)(\])"
71
68
 
72
69
 
73
70
  class nwShortcode:
@@ -107,6 +104,7 @@ class nwFiles:
107
104
  # Config Files
108
105
  CONF_FILE = "novelwriter.conf"
109
106
  RECENT_FILE = "recentProjects.json"
107
+ RECENT_PATH = "recentPaths.json"
110
108
 
111
109
  # Project Root Files
112
110
  PROJ_FILE = "nwProject.nwx"
@@ -414,7 +412,7 @@ class nwUnicode:
414
412
  U_EMDASH = "\u2014" # Long dash
415
413
  U_HBAR = "\u2015" # Horizontal bar
416
414
  U_HELLIP = "\u2026" # Ellipsis
417
- U_MAPOSS = "\u02bc" # Modifier letter single apostrophe
415
+ U_MAPOS = "\u02bc" # Modifier letter single apostrophe
418
416
  U_PRIME = "\u2032" # Prime
419
417
  U_DPRIME = "\u2033" # Double prime
420
418
 
@@ -481,7 +479,7 @@ class nwUnicode:
481
479
  H_EMDASH = "&mdash;"
482
480
  H_HBAR = "&#8213;"
483
481
  H_HELLIP = "&hellip;"
484
- H_MAPOSS = "&#700;"
482
+ H_MAPOS = "&#700;"
485
483
  H_PRIME = "&prime;"
486
484
  H_DPRIME = "&#8243;"
487
485
 
@@ -546,7 +544,7 @@ class nwHtmlUnicode():
546
544
  nwUnicode.U_EMDASH: nwUnicode.H_EMDASH,
547
545
  nwUnicode.U_HBAR: nwUnicode.H_HBAR,
548
546
  nwUnicode.U_HELLIP: nwUnicode.H_HELLIP,
549
- nwUnicode.U_MAPOSS: nwUnicode.H_MAPOSS,
547
+ nwUnicode.U_MAPOS: nwUnicode.H_MAPOS,
550
548
  nwUnicode.U_PRIME: nwUnicode.H_PRIME,
551
549
  nwUnicode.U_DPRIME: nwUnicode.H_DPRIME,
552
550
 
@@ -82,6 +82,7 @@ SETTINGS_TEMPLATE = {
82
82
  "format.stripUnicode": (bool, False),
83
83
  "format.replaceTabs": (bool, False),
84
84
  "format.keepBreaks": (bool, True),
85
+ "format.showDialogue": (bool, False),
85
86
  "format.firstLineIndent": (bool, False),
86
87
  "format.firstIndentWidth": (float, 1.4),
87
88
  "format.indentFirstPar": (bool, False),
@@ -131,6 +132,7 @@ SETTINGS_LABELS = {
131
132
  "format.stripUnicode": QT_TRANSLATE_NOOP("Builds", "Replace Unicode Characters"),
132
133
  "format.replaceTabs": QT_TRANSLATE_NOOP("Builds", "Replace Tabs with Spaces"),
133
134
  "format.keepBreaks": QT_TRANSLATE_NOOP("Builds", "Preserve Hard Line Breaks"),
135
+ "format.showDialogue": QT_TRANSLATE_NOOP("Builds", "Apply Dialogue Highlighting"),
134
136
 
135
137
  "format.grpParIndent": QT_TRANSLATE_NOOP("Builds", "First Line Indent"),
136
138
  "format.firstLineIndent": QT_TRANSLATE_NOOP("Builds", "Enable Indent"),
@@ -217,7 +219,7 @@ class BuildSettings:
217
219
  return self._order
218
220
 
219
221
  @property
220
- def lastPath(self) -> Path:
222
+ def lastBuildPath(self) -> Path:
221
223
  """The last used build path."""
222
224
  if self._path.is_dir():
223
225
  return self._path
@@ -291,7 +293,7 @@ class BuildSettings:
291
293
  self._order = value
292
294
  return
293
295
 
294
- def setLastPath(self, path: Path | str | None) -> None:
296
+ def setLastBuildPath(self, path: Path | str | None) -> None:
295
297
  """Set the last used build path."""
296
298
  if isinstance(path, str):
297
299
  path = Path(path)
@@ -459,7 +461,7 @@ class BuildSettings:
459
461
  self.setName(data.get("name", ""))
460
462
  self.setBuildID(data.get("uuid", ""))
461
463
  self.setOrder(data.get("order", 0))
462
- self.setLastPath(data.get("path", None))
464
+ self.setLastBuildPath(data.get("path", None))
463
465
  self.setLastBuildName(data.get("build", ""))
464
466
 
465
467
  buildFmt = str(data.get("format", ""))
@@ -348,7 +348,9 @@ class DocSearch:
348
348
  rxMatch = rxItt.next()
349
349
  pos = rxMatch.capturedStart()
350
350
  num = rxMatch.capturedLength()
351
- context = text[pos:pos+100].partition("\n")[0]
351
+ lim = text[:pos].rfind("\n") + 1
352
+ cut = text[lim:pos].rfind(" ") + lim + 1
353
+ context = text[cut:cut+100].partition("\n")[0]
352
354
  if context:
353
355
  results.append((pos, num, context))
354
356
  count += 1
@@ -338,6 +338,7 @@ class NWBuildDocument:
338
338
  bldObj.setJustify(self._build.getBool("format.justifyText"))
339
339
  bldObj.setLineHeight(self._build.getFloat("format.lineHeight"))
340
340
  bldObj.setKeepLineBreaks(self._build.getBool("format.keepBreaks"))
341
+ bldObj.setDialogueHighlight(self._build.getBool("format.showDialogue"))
341
342
  bldObj.setFirstLineIndent(
342
343
  self._build.getBool("format.firstLineIndent"),
343
344
  self._build.getFloat("format.firstIndentWidth"),