novelWriter 2.4.1__tar.gz → 2.4.3__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 (398) hide show
  1. {novelwriter-2.4.1 → novelwriter-2.4.3}/CHANGELOG.md +47 -0
  2. {novelwriter-2.4.1 → novelwriter-2.4.3}/PKG-INFO +1 -1
  3. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelWriter.egg-info/PKG-INFO +1 -1
  4. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/__init__.py +3 -3
  5. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/nw_nl_NL.qm +0 -0
  6. novelwriter-2.4.3/novelwriter/assets/i18n/nw_zh_CN.qm +0 -0
  7. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/manual.pdf +0 -0
  8. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/sample.zip +0 -0
  9. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/gui/doceditor.py +55 -27
  10. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/gui/docviewer.py +33 -21
  11. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/gui/theme.py +3 -3
  12. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/tools/dictionaries.py +5 -4
  13. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/tools/manuscript.py +11 -5
  14. novelwriter-2.4.1/novelwriter/assets/i18n/nw_zh_CN.qm +0 -0
  15. {novelwriter-2.4.1 → novelwriter-2.4.3}/CREDITS.md +0 -0
  16. {novelwriter-2.4.1 → novelwriter-2.4.3}/LICENSE.md +0 -0
  17. {novelwriter-2.4.1 → novelwriter-2.4.3}/MANIFEST.in +0 -0
  18. {novelwriter-2.4.1 → novelwriter-2.4.3}/README.md +0 -0
  19. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelWriter.egg-info/SOURCES.txt +0 -0
  20. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelWriter.egg-info/dependency_links.txt +0 -0
  21. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelWriter.egg-info/entry_points.txt +0 -0
  22. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelWriter.egg-info/requires.txt +0 -0
  23. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelWriter.egg-info/top_level.txt +0 -0
  24. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/nw_de_DE.qm +0 -0
  25. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/nw_en_US.qm +0 -0
  26. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/nw_es_419.qm +0 -0
  27. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/nw_fr_FR.qm +0 -0
  28. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/nw_it_IT.qm +0 -0
  29. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/nw_ja_JP.qm +0 -0
  30. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/nw_nb_NO.qm +0 -0
  31. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/nw_pt_BR.qm +0 -0
  32. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/project_de_DE.json +0 -0
  33. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/project_en_GB.json +0 -0
  34. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/project_en_US.json +0 -0
  35. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/project_es_419.json +0 -0
  36. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/project_fr_FR.json +0 -0
  37. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/project_it_IT.json +0 -0
  38. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/project_ja_JP.json +0 -0
  39. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/project_nb_NO.json +0 -0
  40. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/project_nl_NL.json +0 -0
  41. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/project_nn_NO.json +0 -0
  42. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/project_pt_BR.json +0 -0
  43. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/project_ru_RU.json +0 -0
  44. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/i18n/project_zh_CN.json +0 -0
  45. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/none.svg +0 -0
  46. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/novelwriter.ico +0 -0
  47. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/novelwriter.svg +0 -0
  48. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/README.md +0 -0
  49. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/icons.conf +0 -0
  50. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/mixed_document-chapter.svg +0 -0
  51. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/mixed_document-new.svg +0 -0
  52. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/mixed_document-note.svg +0 -0
  53. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/mixed_document-scene.svg +0 -0
  54. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/mixed_document-section.svg +0 -0
  55. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/mixed_document-title.svg +0 -0
  56. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/mixed_edit.svg +0 -0
  57. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/mixed_import.svg +0 -0
  58. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg +0 -0
  59. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/mixed_input-none.svg +0 -0
  60. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg +0 -0
  61. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/mixed_search-replace.svg +0 -0
  62. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_deco-h0.svg +0 -0
  63. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_deco-h1.svg +0 -0
  64. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_deco-h2-narrow.svg +0 -0
  65. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_deco-h2.svg +0 -0
  66. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_deco-h3-narrow.svg +0 -0
  67. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_deco-h3.svg +0 -0
  68. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_deco-h4-narrow.svg +0 -0
  69. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_deco-h4.svg +0 -0
  70. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_deco-note.svg +0 -0
  71. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_deco-noveltree-more.svg +0 -0
  72. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_panel.svg +0 -0
  73. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_search-case.svg +0 -0
  74. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_search-preserve.svg +0 -0
  75. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_search-regex.svg +0 -0
  76. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_search-word.svg +0 -0
  77. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_tb-bold-md.svg +0 -0
  78. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_tb-bold.svg +0 -0
  79. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_tb-italic-md.svg +0 -0
  80. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_tb-italic.svg +0 -0
  81. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_tb-mark.svg +0 -0
  82. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_tb-strike-md.svg +0 -0
  83. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_tb-strike.svg +0 -0
  84. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg +0 -0
  85. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg +0 -0
  86. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg +0 -0
  87. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_arrow-down-thick-grey.svg +0 -0
  88. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg +0 -0
  89. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_arrow-maximise.svg +0 -0
  90. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_arrow-minimise.svg +0 -0
  91. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_arrow-repeat-grey.svg +0 -0
  92. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_book-grey.svg +0 -0
  93. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_book.svg +0 -0
  94. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_bookmark.svg +0 -0
  95. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_calendar.svg +0 -0
  96. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_cancel-grey.svg +0 -0
  97. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_cancel.svg +0 -0
  98. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_chart-bar-grey.svg +0 -0
  99. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_chevron-down.svg +0 -0
  100. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_chevron-left.svg +0 -0
  101. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_chevron-right.svg +0 -0
  102. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_chevron-up.svg +0 -0
  103. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_cog.svg +0 -0
  104. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_delete-full.svg +0 -0
  105. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_delete.svg +0 -0
  106. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_directions-full.svg +0 -0
  107. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_document-add.svg +0 -0
  108. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_document-text.svg +0 -0
  109. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_document.svg +0 -0
  110. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_export-grey.svg +0 -0
  111. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_export.svg +0 -0
  112. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_eye.svg +0 -0
  113. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_flag.svg +0 -0
  114. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_folder-open.svg +0 -0
  115. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_folder.svg +0 -0
  116. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_globe-grey.svg +0 -0
  117. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_key.svg +0 -0
  118. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_lightbulb-full.svg +0 -0
  119. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_location.svg +0 -0
  120. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_media-pause-grey.svg +0 -0
  121. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_media-record-outline.svg +0 -0
  122. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_media-record.svg +0 -0
  123. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_minus.svg +0 -0
  124. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_pencil.svg +0 -0
  125. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_pin-outline.svg +0 -0
  126. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_pin.svg +0 -0
  127. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_plus.svg +0 -0
  128. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_puzzle-outline.svg +0 -0
  129. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_puzzle.svg +0 -0
  130. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_refresh-flipped.svg +0 -0
  131. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_refresh.svg +0 -0
  132. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_search-grey.svg +0 -0
  133. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_search.svg +0 -0
  134. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_star.svg +0 -0
  135. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_stopwatch-grey.svg +0 -0
  136. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_th-dot-menu.svg +0 -0
  137. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_th-dot-more.svg +0 -0
  138. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_th-list-grey.svg +0 -0
  139. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_th-list.svg +0 -0
  140. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_times.svg +0 -0
  141. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_trash.svg +0 -0
  142. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_unfold-hidden.svg +0 -0
  143. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_unfold-visible.svg +0 -0
  144. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_user.svg +0 -0
  145. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_dark/typ_warning-full.svg +0 -0
  146. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/README.md +0 -0
  147. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/icons.conf +0 -0
  148. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/mixed_document-chapter.svg +0 -0
  149. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/mixed_document-new.svg +0 -0
  150. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/mixed_document-note.svg +0 -0
  151. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/mixed_document-scene.svg +0 -0
  152. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/mixed_document-section.svg +0 -0
  153. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/mixed_document-title.svg +0 -0
  154. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/mixed_edit.svg +0 -0
  155. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/mixed_import.svg +0 -0
  156. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/mixed_input-checked.svg +0 -0
  157. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/mixed_input-none.svg +0 -0
  158. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg +0 -0
  159. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/mixed_search-replace.svg +0 -0
  160. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_deco-h0.svg +0 -0
  161. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_deco-h1.svg +0 -0
  162. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_deco-h2-narrow.svg +0 -0
  163. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_deco-h2.svg +0 -0
  164. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_deco-h3-narrow.svg +0 -0
  165. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_deco-h3.svg +0 -0
  166. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_deco-h4-narrow.svg +0 -0
  167. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_deco-h4.svg +0 -0
  168. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_deco-note.svg +0 -0
  169. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_deco-noveltree-more.svg +0 -0
  170. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_panel.svg +0 -0
  171. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_search-case.svg +0 -0
  172. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_search-preserve.svg +0 -0
  173. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_search-regex.svg +0 -0
  174. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_search-word.svg +0 -0
  175. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_tb-bold-md.svg +0 -0
  176. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_tb-bold.svg +0 -0
  177. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_tb-italic-md.svg +0 -0
  178. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_tb-italic.svg +0 -0
  179. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_tb-mark.svg +0 -0
  180. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_tb-strike-md.svg +0 -0
  181. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_tb-strike.svg +0 -0
  182. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg +0 -0
  183. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg +0 -0
  184. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/nw_tb-underline.svg +0 -0
  185. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_arrow-down-thick-grey.svg +0 -0
  186. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg +0 -0
  187. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_arrow-maximise.svg +0 -0
  188. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_arrow-minimise.svg +0 -0
  189. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_arrow-repeat-grey.svg +0 -0
  190. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_book-grey.svg +0 -0
  191. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_book.svg +0 -0
  192. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_bookmark.svg +0 -0
  193. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_calendar.svg +0 -0
  194. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_cancel-grey.svg +0 -0
  195. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_cancel.svg +0 -0
  196. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_chart-bar-grey.svg +0 -0
  197. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_chevron-down.svg +0 -0
  198. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_chevron-left.svg +0 -0
  199. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_chevron-right.svg +0 -0
  200. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_chevron-up.svg +0 -0
  201. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_cog.svg +0 -0
  202. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_delete-full.svg +0 -0
  203. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_delete.svg +0 -0
  204. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_directions-full.svg +0 -0
  205. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_document-add.svg +0 -0
  206. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_document-text.svg +0 -0
  207. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_document.svg +0 -0
  208. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_export-grey.svg +0 -0
  209. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_export.svg +0 -0
  210. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_eye.svg +0 -0
  211. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_flag.svg +0 -0
  212. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_folder-open.svg +0 -0
  213. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_folder.svg +0 -0
  214. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_globe-grey.svg +0 -0
  215. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_key.svg +0 -0
  216. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_lightbulb-full.svg +0 -0
  217. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_location.svg +0 -0
  218. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_media-pause-grey.svg +0 -0
  219. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_media-record-outline.svg +0 -0
  220. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_media-record.svg +0 -0
  221. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_minus.svg +0 -0
  222. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_pencil.svg +0 -0
  223. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_pin-outline.svg +0 -0
  224. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_pin.svg +0 -0
  225. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_plus.svg +0 -0
  226. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_puzzle-outline.svg +0 -0
  227. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_puzzle.svg +0 -0
  228. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_refresh-flipped.svg +0 -0
  229. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_refresh.svg +0 -0
  230. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_search-grey.svg +0 -0
  231. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_search.svg +0 -0
  232. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_star.svg +0 -0
  233. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_stopwatch-grey.svg +0 -0
  234. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_th-dot-menu.svg +0 -0
  235. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_th-dot-more.svg +0 -0
  236. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_th-list-grey.svg +0 -0
  237. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_th-list.svg +0 -0
  238. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_times.svg +0 -0
  239. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_trash.svg +0 -0
  240. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_unfold-hidden.svg +0 -0
  241. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_unfold-visible.svg +0 -0
  242. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_user.svg +0 -0
  243. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/typicons_light/typ_warning-full.svg +0 -0
  244. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/x-novelwriter-project.ico +0 -0
  245. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/icons/x-novelwriter-project.svg +0 -0
  246. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/images/novelwriter-text-dark.svg +0 -0
  247. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/images/novelwriter-text-light.svg +0 -0
  248. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/images/welcome-dark.jpg +0 -0
  249. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/images/welcome-light.jpg +0 -0
  250. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/syntax/cyberpunk_night.conf +0 -0
  251. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/syntax/default_dark.conf +0 -0
  252. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/syntax/default_light.conf +0 -0
  253. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/syntax/grey_dark.conf +0 -0
  254. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/syntax/grey_light.conf +0 -0
  255. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/syntax/light_owl.conf +0 -0
  256. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/syntax/night_owl.conf +0 -0
  257. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/syntax/solarized_dark.conf +0 -0
  258. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/syntax/solarized_light.conf +0 -0
  259. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/syntax/tango.conf +0 -0
  260. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/syntax/tomorrow.conf +0 -0
  261. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/syntax/tomorrow_night.conf +0 -0
  262. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/syntax/tomorrow_night_blue.conf +0 -0
  263. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/syntax/tomorrow_night_bright.conf +0 -0
  264. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/syntax/tomorrow_night_eighties.conf +0 -0
  265. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/text/credits_en.htm +0 -0
  266. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/text/lipsum.txt +0 -0
  267. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/themes/cyberpunk_night.conf +0 -0
  268. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/themes/default.conf +0 -0
  269. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/themes/default_dark.conf +0 -0
  270. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/themes/default_light.conf +0 -0
  271. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/themes/solarized_dark.conf +0 -0
  272. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/assets/themes/solarized_light.conf +0 -0
  273. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/common.py +0 -0
  274. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/config.py +0 -0
  275. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/constants.py +0 -0
  276. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/buildsettings.py +0 -0
  277. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/coretools.py +0 -0
  278. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/docbuild.py +0 -0
  279. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/document.py +0 -0
  280. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/index.py +0 -0
  281. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/item.py +0 -0
  282. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/options.py +0 -0
  283. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/project.py +0 -0
  284. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/projectdata.py +0 -0
  285. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/projectxml.py +0 -0
  286. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/sessions.py +0 -0
  287. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/spellcheck.py +0 -0
  288. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/status.py +0 -0
  289. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/storage.py +0 -0
  290. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/tohtml.py +0 -0
  291. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/tokenizer.py +0 -0
  292. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/tomd.py +0 -0
  293. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/toodt.py +0 -0
  294. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/core/tree.py +0 -0
  295. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/dialogs/about.py +0 -0
  296. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/dialogs/docmerge.py +0 -0
  297. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/dialogs/docsplit.py +0 -0
  298. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/dialogs/editlabel.py +0 -0
  299. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/dialogs/preferences.py +0 -0
  300. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/dialogs/projectsettings.py +0 -0
  301. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/dialogs/quotes.py +0 -0
  302. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/dialogs/wordlist.py +0 -0
  303. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/enum.py +0 -0
  304. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/error.py +0 -0
  305. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/extensions/circularprogress.py +0 -0
  306. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/extensions/configlayout.py +0 -0
  307. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/extensions/eventfilters.py +0 -0
  308. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/extensions/modified.py +0 -0
  309. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/extensions/novelselector.py +0 -0
  310. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/extensions/pagedsidebar.py +0 -0
  311. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/extensions/simpleprogress.py +0 -0
  312. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/extensions/statusled.py +0 -0
  313. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/extensions/switch.py +0 -0
  314. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/extensions/switchbox.py +0 -0
  315. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/extensions/versioninfo.py +0 -0
  316. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/gui/dochighlight.py +0 -0
  317. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/gui/docviewerpanel.py +0 -0
  318. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/gui/editordocument.py +0 -0
  319. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/gui/itemdetails.py +0 -0
  320. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/gui/mainmenu.py +0 -0
  321. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/gui/noveltree.py +0 -0
  322. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/gui/outline.py +0 -0
  323. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/gui/projtree.py +0 -0
  324. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/gui/search.py +0 -0
  325. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/gui/sidebar.py +0 -0
  326. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/gui/statusbar.py +0 -0
  327. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/guimain.py +0 -0
  328. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/shared.py +0 -0
  329. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/text/counting.py +0 -0
  330. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/tools/lipsum.py +0 -0
  331. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/tools/manusbuild.py +0 -0
  332. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/tools/manussettings.py +0 -0
  333. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/tools/noveldetails.py +0 -0
  334. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/tools/welcome.py +0 -0
  335. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/tools/writingstats.py +0 -0
  336. {novelwriter-2.4.1 → novelwriter-2.4.3}/novelwriter/types.py +0 -0
  337. {novelwriter-2.4.1 → novelwriter-2.4.3}/pkgutils.py +0 -0
  338. {novelwriter-2.4.1 → novelwriter-2.4.3}/pyproject.toml +0 -0
  339. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/appimage_launcher.sh +0 -0
  340. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/128x128/apps/novelwriter.png +0 -0
  341. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/128x128/mimetypes/application-x-novelwriter-project.png +0 -0
  342. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/16x16/apps/novelwriter.png +0 -0
  343. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/16x16/mimetypes/application-x-novelwriter-project.png +0 -0
  344. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/24x24/apps/novelwriter.png +0 -0
  345. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/24x24/mimetypes/application-x-novelwriter-project.png +0 -0
  346. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/256x256/apps/novelwriter.png +0 -0
  347. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/256x256/mimetypes/application-x-novelwriter-project.png +0 -0
  348. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/32x32/apps/novelwriter.png +0 -0
  349. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/32x32/mimetypes/application-x-novelwriter-project.png +0 -0
  350. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/48x48/apps/novelwriter.png +0 -0
  351. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/48x48/mimetypes/application-x-novelwriter-project.png +0 -0
  352. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/512x512/apps/novelwriter.png +0 -0
  353. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/512x512/mimetypes/application-x-novelwriter-project.png +0 -0
  354. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/64x64/apps/novelwriter.png +0 -0
  355. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/64x64/mimetypes/application-x-novelwriter-project.png +0 -0
  356. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/scalable/apps/novelwriter.svg +0 -0
  357. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/hicolor/scalable/mimetypes/application-x-novelwriter-project.svg +0 -0
  358. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/novelwriter.desktop +0 -0
  359. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/novelwriter.png +0 -0
  360. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/data/x-novelwriter-project.xml +0 -0
  361. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/debian/compat +0 -0
  362. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/debian/control +0 -0
  363. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/debian/copyright +0 -0
  364. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/debian/install +0 -0
  365. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/debian/py3dist-overrides +0 -0
  366. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/debian/rules +0 -0
  367. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/debian/source/format +0 -0
  368. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/description_pypi.md +0 -0
  369. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/description_short.txt +0 -0
  370. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/icons/novelwriter.ico +0 -0
  371. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/icons/novelwriter.svg +0 -0
  372. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/icons/x-novelwriter-project.ico +0 -0
  373. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/icons/x-novelwriter-project.svg +0 -0
  374. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/iss_license.txt +0 -0
  375. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/launchpad_setup.cfg +0 -0
  376. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/macos/App.entitlements +0 -0
  377. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/macos/Info.plist.template +0 -0
  378. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/macos/build.sh +0 -0
  379. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/macos/novelwriter.iconset/icon_128x128.png +0 -0
  380. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/macos/novelwriter.iconset/icon_128x128@2x.png +0 -0
  381. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/macos/novelwriter.iconset/icon_16x16.png +0 -0
  382. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/macos/novelwriter.iconset/icon_16x16@2x.png +0 -0
  383. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/macos/novelwriter.iconset/icon_256x256.png +0 -0
  384. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/macos/novelwriter.iconset/icon_256x256@2x.png +0 -0
  385. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/macos/novelwriter.iconset/icon_32x32.png +0 -0
  386. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/macos/novelwriter.iconset/icon_32x32@2x.png +0 -0
  387. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/macos/novelwriter.iconset/icon_512x512.png +0 -0
  388. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/macos/novelwriter.iconset/icon_512x512@2x.png +0 -0
  389. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/make_clean.sh +0 -0
  390. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/make_pip.sh +0 -0
  391. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/make_release.sh +0 -0
  392. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/novelwriter.appdata.xml +0 -0
  393. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/novelwriter_readme.png +0 -0
  394. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/novelwriter_text.png +0 -0
  395. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/win_setup_embed.iss +0 -0
  396. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/windows_install.bat +0 -0
  397. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup/windows_uninstall.bat +0 -0
  398. {novelwriter-2.4.1 → novelwriter-2.4.3}/setup.cfg +0 -0
@@ -1,5 +1,52 @@
1
1
  # novelWriter Changelog
2
2
 
3
+ ## Version 2.4.3 [2024-05-20]
4
+
5
+ ### Release Notes
6
+
7
+ This is a patch release that fixes issues with the document font in the editor, viewer and
8
+ manuscript preview on some Linux distros, and also fixes a potential crash on Windows when using
9
+ the spell check dictionary install tool.
10
+
11
+ ### Detailed Changelog
12
+
13
+ **Bugfixes**
14
+
15
+ * Fix a crash in the dictionaries install tool on Windows if the config folder reported by the
16
+ third party Enchant spell checker tool didn't already exist prior to adding new dictionaries.
17
+ The folder is now created when the tool is opened if it doesn't exist. Issue #1874. PR #1876.
18
+ * Fix issues setting a different text font for the editor and viewer, and related issues with the
19
+ preview in the Manuscript Build tool, on certain platforms. Changing the font and setting
20
+ non-standard font sizes produced unexpected results when reloading. The issue seems to be related
21
+ to Qt 5.15.3, but that is not fully confirmed. However, the only place so far where the issue is
22
+ observed is on Mint 21.3. Issues #1862 and #1875. PR #1877.
23
+
24
+ ----
25
+
26
+ ## Version 2.4.2 [2024-05-18]
27
+
28
+ ### Release Notes
29
+
30
+ This is a patch release that fixes two minor font issues and updates the Dutch and Chinese
31
+ translations.
32
+
33
+ ### Detailed Changelog
34
+
35
+ **Bugfixes**
36
+
37
+ * Change the preview widget in the Manuscript Build tool to use the document font only for the
38
+ document itself, not the yellow heading stating the age of the previewed text. PR #1863.
39
+ * Fixes the syntax highlighter so that it is re-initialised when the document editor is
40
+ re-initialised, so that changes to document font size regenerates the heading font sizes as well.
41
+ Issue #1865. PR #1866.
42
+
43
+ **Internationalisation**
44
+
45
+ * Dutch translation updated by Martijn van der Kleijn (@mvdkleijn). PR #1872.
46
+ * Chinese translation updated by @longqzh. PR #1872.
47
+
48
+ ----
49
+
3
50
  ## Version 2.4.1 [2024-05-06]
4
51
 
5
52
  ### Release Notes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: novelWriter
3
- Version: 2.4.1
3
+ Version: 2.4.3
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.4.1
3
+ Version: 2.4.3
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
@@ -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.4.1"
51
- __hexversion__ = "0x020401f0"
52
- __date__ = "2024-05-06"
50
+ __version__ = "2.4.3"
51
+ __hexversion__ = "0x020403f0"
52
+ __date__ = "2024-05-20"
53
53
  __status__ = "Stable"
54
54
  __domain__ = "novelwriter.io"
55
55
 
@@ -43,8 +43,8 @@ from PyQt5.QtCore import (
43
43
  pyqtSignal, pyqtSlot
44
44
  )
45
45
  from PyQt5.QtGui import (
46
- QColor, QCursor, QFont, QKeyEvent, QKeySequence, QMouseEvent, QPalette,
47
- QPixmap, QResizeEvent, QTextBlock, QTextCursor, QTextDocument, QTextOption
46
+ QColor, QCursor, QKeyEvent, QKeySequence, QMouseEvent, QPalette, QPixmap,
47
+ QResizeEvent, QTextBlock, QTextCursor, QTextDocument, QTextOption
48
48
  )
49
49
  from PyQt5.QtWidgets import (
50
50
  QAction, QApplication, QFrame, QGridLayout, QHBoxLayout, QLabel, QLineEdit,
@@ -301,8 +301,6 @@ class GuiDocEditor(QPlainTextEdit):
301
301
  self.docHeader.matchColours()
302
302
  self.docFooter.matchColours()
303
303
 
304
- self._qDocument.syntaxHighlighter.initHighlighter()
305
-
306
304
  return
307
305
 
308
306
  def initEditor(self) -> None:
@@ -331,10 +329,10 @@ class GuiDocEditor(QPlainTextEdit):
331
329
  SHARED.updateSpellCheckLanguage()
332
330
 
333
331
  # Set font
334
- font = QFont()
335
- font.setFamily(CONFIG.textFont)
336
- font.setPointSize(CONFIG.textSize)
337
- self._qDocument.setDefaultFont(font)
332
+ self.initFont()
333
+
334
+ # Update highlighter settings
335
+ self._qDocument.syntaxHighlighter.initHighlighter()
338
336
 
339
337
  # Set default text margins
340
338
  # Due to cursor visibility, a part of the margin must be
@@ -381,6 +379,23 @@ class GuiDocEditor(QPlainTextEdit):
381
379
 
382
380
  return
383
381
 
382
+ def initFont(self) -> None:
383
+ """Set the font of the main widget and sub-widgets. This needs
384
+ special attention since there appears to be a bug in Qt 5.15.3.
385
+ See issues #1862 and #1875.
386
+ """
387
+ font = self.font()
388
+ font.setFamily(CONFIG.textFont)
389
+ font.setPointSize(CONFIG.textSize)
390
+ self.setFont(font)
391
+
392
+ # Reset sub-widget font to GUI font
393
+ self.docHeader.updateFont()
394
+ self.docFooter.updateFont()
395
+ self.docSearch.updateFont()
396
+
397
+ return
398
+
384
399
  def loadText(self, tHandle: str, tLine: int | None = None) -> bool:
385
400
  """Load text from a document into the editor. If we have an I/O
386
401
  error, we must handle this and clear the editor so that we don't
@@ -2395,9 +2410,6 @@ class GuiDocEditSearch(QFrame):
2395
2410
  iSz = SHARED.theme.baseIconSize
2396
2411
  mPx = CONFIG.pxInt(6)
2397
2412
 
2398
- self.boxFont = SHARED.theme.guiFont
2399
- self.boxFont.setPointSizeF(0.9*SHARED.theme.fontPointSize)
2400
-
2401
2413
  self.setContentsMargins(0, 0, 0, 0)
2402
2414
  self.setAutoFillBackground(True)
2403
2415
  self.setFrameStyle(QFrame.Shape.StyledPanel | QFrame.Shadow.Plain)
@@ -2409,12 +2421,10 @@ class GuiDocEditSearch(QFrame):
2409
2421
  # ==========
2410
2422
 
2411
2423
  self.searchBox = QLineEdit(self)
2412
- self.searchBox.setFont(self.boxFont)
2413
2424
  self.searchBox.setPlaceholderText(self.tr("Search for"))
2414
2425
  self.searchBox.returnPressed.connect(self._doSearch)
2415
2426
 
2416
2427
  self.replaceBox = QLineEdit(self)
2417
- self.replaceBox.setFont(self.boxFont)
2418
2428
  self.replaceBox.setPlaceholderText(self.tr("Replace with"))
2419
2429
  self.replaceBox.returnPressed.connect(self._doReplace)
2420
2430
 
@@ -2424,12 +2434,9 @@ class GuiDocEditSearch(QFrame):
2424
2434
  self.searchOpt.setContentsMargins(0, 0, 0, 0)
2425
2435
 
2426
2436
  self.searchLabel = QLabel(self.tr("Search"), self)
2427
- self.searchLabel.setFont(self.boxFont)
2428
2437
  self.searchLabel.setIndent(CONFIG.pxInt(6))
2429
2438
 
2430
2439
  self.resultLabel = QLabel("?/?", self)
2431
- self.resultLabel.setFont(self.boxFont)
2432
- self.resultLabel.setMinimumWidth(SHARED.theme.getTextWidth("?/?", self.boxFont))
2433
2440
 
2434
2441
  self.toggleCase = QAction(self.tr("Case Sensitive"), self)
2435
2442
  self.toggleCase.setCheckable(True)
@@ -2514,6 +2521,7 @@ class GuiDocEditSearch(QFrame):
2514
2521
  self.replaceButton.setVisible(False)
2515
2522
  self.adjustSize()
2516
2523
 
2524
+ self.updateFont()
2517
2525
  self.updateTheme()
2518
2526
 
2519
2527
  logger.debug("Ready: GuiDocEditSearch")
@@ -2597,7 +2605,9 @@ class GuiDocEditSearch(QFrame):
2597
2605
  numCount = f"{lim:n}+" if (resCount or 0) > lim else f"{resCount:n}"
2598
2606
  sCurrRes = "?" if currRes is None else str(currRes)
2599
2607
  sResCount = "?" if resCount is None else numCount
2600
- minWidth = SHARED.theme.getTextWidth(f"{sResCount}//{sResCount}", self.boxFont)
2608
+ minWidth = SHARED.theme.getTextWidth(
2609
+ f"{sResCount}//{sResCount}", SHARED.theme.guiFontSmall
2610
+ )
2601
2611
  self.resultLabel.setText(f"{sCurrRes}/{sResCount}")
2602
2612
  self.resultLabel.setMinimumWidth(minWidth)
2603
2613
  self.adjustSize()
@@ -2608,6 +2618,18 @@ class GuiDocEditSearch(QFrame):
2608
2618
  # Methods
2609
2619
  ##
2610
2620
 
2621
+ def updateFont(self) -> None:
2622
+ """Update the font settings."""
2623
+ self.setFont(SHARED.theme.guiFont)
2624
+ self.searchBox.setFont(SHARED.theme.guiFontSmall)
2625
+ self.replaceBox.setFont(SHARED.theme.guiFontSmall)
2626
+ self.searchLabel.setFont(SHARED.theme.guiFontSmall)
2627
+ self.resultLabel.setFont(SHARED.theme.guiFontSmall)
2628
+ self.resultLabel.setMinimumWidth(
2629
+ SHARED.theme.getTextWidth("?/?", SHARED.theme.guiFontSmall)
2630
+ )
2631
+ return
2632
+
2611
2633
  def updateTheme(self) -> None:
2612
2634
  """Update theme elements."""
2613
2635
  qPalette = QApplication.palette()
@@ -2792,10 +2814,6 @@ class GuiDocEditHeader(QWidget):
2792
2814
  self.itemTitle.setAlignment(QtAlignCenterTop)
2793
2815
  self.itemTitle.setFixedHeight(iPx)
2794
2816
 
2795
- lblFont = self.itemTitle.font()
2796
- lblFont.setPointSizeF(0.9*SHARED.theme.fontPointSize)
2797
- self.itemTitle.setFont(lblFont)
2798
-
2799
2817
  # Other Widgets
2800
2818
  self.outlineMenu = QMenu(self)
2801
2819
 
@@ -2849,6 +2867,7 @@ class GuiDocEditHeader(QWidget):
2849
2867
  self.setContentsMargins(0, 0, 0, 0)
2850
2868
  self.setMinimumHeight(iPx + 2*mPx)
2851
2869
 
2870
+ self.updateFont()
2852
2871
  self.updateTheme()
2853
2872
 
2854
2873
  logger.debug("Ready: GuiDocEditHeader")
@@ -2887,6 +2906,12 @@ class GuiDocEditHeader(QWidget):
2887
2906
  logger.debug("Document outline updated in %.3f ms", 1000*(time() - tStart))
2888
2907
  return
2889
2908
 
2909
+ def updateFont(self) -> None:
2910
+ """Update the font settings."""
2911
+ self.setFont(SHARED.theme.guiFont)
2912
+ self.itemTitle.setFont(SHARED.theme.guiFontSmall)
2913
+ return
2914
+
2890
2915
  def updateTheme(self) -> None:
2891
2916
  """Update theme elements."""
2892
2917
  self.tbButton.setThemeIcon("menu")
@@ -3000,9 +3025,6 @@ class GuiDocEditFooter(QWidget):
3000
3025
  bSp = CONFIG.pxInt(4)
3001
3026
  hSp = CONFIG.pxInt(6)
3002
3027
 
3003
- lblFont = self.font()
3004
- lblFont.setPointSizeF(0.9*SHARED.theme.fontPointSize)
3005
-
3006
3028
  # Cached Translations
3007
3029
  self._trLineCount = self.tr("Line: {0} ({1})")
3008
3030
  self._trWordCount = self.tr("Words: {0} ({1})")
@@ -3025,7 +3047,6 @@ class GuiDocEditFooter(QWidget):
3025
3047
  self.statusText.setAutoFillBackground(True)
3026
3048
  self.statusText.setFixedHeight(fPx)
3027
3049
  self.statusText.setAlignment(QtAlignLeftTop)
3028
- self.statusText.setFont(lblFont)
3029
3050
 
3030
3051
  # Lines
3031
3052
  self.linesIcon = QLabel("", self)
@@ -3040,7 +3061,6 @@ class GuiDocEditFooter(QWidget):
3040
3061
  self.linesText.setAutoFillBackground(True)
3041
3062
  self.linesText.setFixedHeight(fPx)
3042
3063
  self.linesText.setAlignment(QtAlignLeftTop)
3043
- self.linesText.setFont(lblFont)
3044
3064
 
3045
3065
  # Words
3046
3066
  self.wordsIcon = QLabel("", self)
@@ -3055,7 +3075,6 @@ class GuiDocEditFooter(QWidget):
3055
3075
  self.wordsText.setAutoFillBackground(True)
3056
3076
  self.wordsText.setFixedHeight(fPx)
3057
3077
  self.wordsText.setAlignment(QtAlignLeftTop)
3058
- self.wordsText.setFont(lblFont)
3059
3078
 
3060
3079
  # Assemble Layout
3061
3080
  self.outerBox = QHBoxLayout()
@@ -3078,6 +3097,7 @@ class GuiDocEditFooter(QWidget):
3078
3097
  self.setMinimumHeight(fPx + 2*mPx)
3079
3098
 
3080
3099
  # Fix the Colours
3100
+ self.updateFont()
3081
3101
  self.updateTheme()
3082
3102
 
3083
3103
  # Initialise Info
@@ -3091,6 +3111,14 @@ class GuiDocEditFooter(QWidget):
3091
3111
  # Methods
3092
3112
  ##
3093
3113
 
3114
+ def updateFont(self) -> None:
3115
+ """Update the font settings."""
3116
+ self.setFont(SHARED.theme.guiFont)
3117
+ self.statusText.setFont(SHARED.theme.guiFontSmall)
3118
+ self.linesText.setFont(SHARED.theme.guiFontSmall)
3119
+ self.wordsText.setFont(SHARED.theme.guiFontSmall)
3120
+ return
3121
+
3094
3122
  def updateTheme(self) -> None:
3095
3123
  """Update theme elements."""
3096
3124
  iPx = round(0.9*SHARED.theme.baseIconHeight)
@@ -31,10 +31,7 @@ import logging
31
31
  from enum import Enum
32
32
 
33
33
  from PyQt5.QtCore import QPoint, Qt, QUrl, pyqtSignal, pyqtSlot
34
- from PyQt5.QtGui import (
35
- QCursor, QFont, QMouseEvent, QPalette, QResizeEvent, QTextCursor,
36
- QTextOption
37
- )
34
+ from PyQt5.QtGui import QCursor, QMouseEvent, QPalette, QResizeEvent, QTextCursor, QTextOption
38
35
  from PyQt5.QtWidgets import (
39
36
  QAction, QApplication, QFrame, QHBoxLayout, QLabel, QMenu, QTextBrowser,
40
37
  QToolButton, QWidget
@@ -141,12 +138,7 @@ class GuiDocViewer(QTextBrowser):
141
138
  def initViewer(self) -> None:
142
139
  """Set editor settings from main config."""
143
140
  self._makeStyleSheet()
144
-
145
- # Set Font
146
- font = QFont()
147
- font.setFamily(CONFIG.textFont)
148
- font.setPointSize(CONFIG.textSize)
149
- self.document().setDefaultFont(font)
141
+ self.initFont()
150
142
 
151
143
  # Set the widget colours to match syntax theme
152
144
  mainPalette = self.palette()
@@ -189,6 +181,22 @@ class GuiDocViewer(QTextBrowser):
189
181
 
190
182
  return
191
183
 
184
+ def initFont(self) -> None:
185
+ """Set the font of the main widget and sub-widgets. This needs
186
+ special attention since there appears to be a bug in Qt 5.15.3.
187
+ See issues #1862 and #1875.
188
+ """
189
+ font = self.font()
190
+ font.setFamily(CONFIG.textFont)
191
+ font.setPointSize(CONFIG.textSize)
192
+ self.setFont(font)
193
+
194
+ # Reset sub-widget font to GUI font
195
+ self.docHeader.updateFont()
196
+ self.docFooter.updateFont()
197
+
198
+ return
199
+
192
200
  def loadText(self, tHandle: str, updateHistory: bool = True) -> bool:
193
201
  """Load text into the viewer from an item handle."""
194
202
  if not SHARED.project.tree.checkType(tHandle, nwItemType.FILE):
@@ -646,10 +654,6 @@ class GuiDocViewHeader(QWidget):
646
654
  self.itemTitle.setAlignment(QtAlignCenterTop)
647
655
  self.itemTitle.setFixedHeight(iPx)
648
656
 
649
- lblFont = self.itemTitle.font()
650
- lblFont.setPointSizeF(0.9*SHARED.theme.fontPointSize)
651
- self.itemTitle.setFont(lblFont)
652
-
653
657
  # Other Widgets
654
658
  self.outlineMenu = QMenu(self)
655
659
 
@@ -700,7 +704,7 @@ class GuiDocViewHeader(QWidget):
700
704
  self.outerBox.setContentsMargins(mPx, mPx, mPx, mPx)
701
705
  self.setMinimumHeight(iPx + 2*mPx)
702
706
 
703
- # Fix the Colours
707
+ self.updateFont()
704
708
  self.updateTheme()
705
709
 
706
710
  logger.debug("Ready: GuiDocViewHeader")
@@ -745,6 +749,12 @@ class GuiDocViewHeader(QWidget):
745
749
  self._docOutline = data
746
750
  return
747
751
 
752
+ def updateFont(self) -> None:
753
+ """Update the font settings."""
754
+ self.setFont(SHARED.theme.guiFont)
755
+ self.itemTitle.setFont(SHARED.theme.guiFontSmall)
756
+ return
757
+
748
758
  def updateTheme(self) -> None:
749
759
  """Update theme elements."""
750
760
  self.outlineButton.setThemeIcon("list")
@@ -886,11 +896,6 @@ class GuiDocViewFooter(QWidget):
886
896
  self.showSynopsis.toggled.connect(self._doToggleSynopsis)
887
897
  self.showSynopsis.setToolTip(self.tr("Show Synopsis Comments"))
888
898
 
889
- lblFont = self.font()
890
- lblFont.setPointSizeF(0.9*SHARED.theme.fontPointSize)
891
- self.showComments.setFont(lblFont)
892
- self.showSynopsis.setFont(lblFont)
893
-
894
899
  # Assemble Layout
895
900
  self.outerBox = QHBoxLayout()
896
901
  self.outerBox.addWidget(self.showHide, 0)
@@ -906,7 +911,7 @@ class GuiDocViewFooter(QWidget):
906
911
  self.outerBox.setContentsMargins(mPx, mPx, mPx, mPx)
907
912
  self.setMinimumHeight(iPx + 2*mPx)
908
913
 
909
- # Fix the Colours
914
+ self.updateFont()
910
915
  self.updateTheme()
911
916
 
912
917
  logger.debug("Ready: GuiDocViewFooter")
@@ -917,6 +922,13 @@ class GuiDocViewFooter(QWidget):
917
922
  # Methods
918
923
  ##
919
924
 
925
+ def updateFont(self) -> None:
926
+ """Update the font settings."""
927
+ self.setFont(SHARED.theme.guiFont)
928
+ self.showComments.setFont(SHARED.theme.guiFontSmall)
929
+ self.showSynopsis.setFont(SHARED.theme.guiFontSmall)
930
+ return
931
+
920
932
  def updateTheme(self) -> None:
921
933
  """Update theme elements."""
922
934
  # Icons
@@ -30,9 +30,7 @@ from math import ceil
30
30
  from pathlib import Path
31
31
 
32
32
  from PyQt5.QtCore import QSize, Qt
33
- from PyQt5.QtGui import (
34
- QPalette, QColor, QIcon, QFont, QFontMetrics, QFontDatabase, QPixmap
35
- )
33
+ from PyQt5.QtGui import QColor, QFont, QFontDatabase, QFontMetrics, QIcon, QPalette, QPixmap
36
34
  from PyQt5.QtWidgets import QApplication
37
35
 
38
36
  from novelwriter import CONFIG
@@ -154,6 +152,8 @@ class GuiTheme:
154
152
  self.guiFont = QApplication.font()
155
153
  self.guiFontB = QApplication.font()
156
154
  self.guiFontB.setBold(True)
155
+ self.guiFontSmall = QApplication.font()
156
+ self.guiFontSmall.setPointSizeF(0.9*self.guiFont.pointSizeF())
157
157
 
158
158
  qMetric = QFontMetrics(self.guiFont)
159
159
  fHeight = qMetric.height()
@@ -36,7 +36,7 @@ from PyQt5.QtWidgets import (
36
36
  )
37
37
 
38
38
  from novelwriter import CONFIG, SHARED
39
- from novelwriter.common import formatFileFilter, openExternalPath, formatInt, getFileSize
39
+ from novelwriter.common import formatFileFilter, formatInt, getFileSize, openExternalPath
40
40
  from novelwriter.error import formatException
41
41
  from novelwriter.extensions.modified import NIconToolButton
42
42
  from novelwriter.types import QtDialogClose
@@ -143,11 +143,12 @@ class GuiDictionaries(QDialog):
143
143
  try:
144
144
  import enchant
145
145
  path = Path(enchant.get_user_config_dir())
146
+ self._installPath = Path(path).resolve()
147
+ self._installPath.mkdir(exist_ok=True, parents=True)
146
148
  except Exception:
147
149
  logger.error("Could not get enchant path")
148
150
  return False
149
151
 
150
- self._installPath = Path(path).resolve()
151
152
  if path.is_dir():
152
153
  self.inPath.setText(str(path))
153
154
  hunspell = path / "hunspell"
@@ -199,9 +200,9 @@ class GuiDictionaries(QDialog):
199
200
  if self._installPath:
200
201
  temp = self.huInput.text()
201
202
  if temp and (path := Path(temp)).is_file():
202
- hunspell = self._installPath / "hunspell"
203
- hunspell.mkdir(exist_ok=True)
204
203
  try:
204
+ hunspell = self._installPath / "hunspell"
205
+ hunspell.mkdir(exist_ok=True)
205
206
  nAff, nDic = self._extractDicts(path, hunspell)
206
207
  if nAff == 0 or nDic == 0:
207
208
  self._appendLog(procErr, err=True)
@@ -31,7 +31,7 @@ from time import time
31
31
  from typing import TYPE_CHECKING
32
32
 
33
33
  from PyQt5.QtCore import Qt, QTimer, QUrl, pyqtSignal, pyqtSlot
34
- from PyQt5.QtGui import QCloseEvent, QColor, QCursor, QFont, QPalette, QResizeEvent
34
+ from PyQt5.QtGui import QCloseEvent, QColor, QCursor, QPalette, QResizeEvent
35
35
  from PyQt5.QtPrintSupport import QPrinter, QPrintPreviewDialog
36
36
  from PyQt5.QtWidgets import (
37
37
  QAbstractItemView, QApplication, QDialog, QFormLayout, QGridLayout,
@@ -761,7 +761,6 @@ class _PreviewWidget(QTextBrowser):
761
761
  self.setPalette(dPalette)
762
762
 
763
763
  self.setMinimumWidth(40*SHARED.theme.textNWidth)
764
- self.setTextFont(CONFIG.textFont, CONFIG.textSize)
765
764
  self.setTabStopDistance(CONFIG.getTabWidth())
766
765
  self.setOpenExternalLinks(False)
767
766
 
@@ -802,6 +801,8 @@ class _PreviewWidget(QTextBrowser):
802
801
  self._updateDocMargins()
803
802
  self._updateBuildAge()
804
803
 
804
+ self.setTextFont(CONFIG.textFont, CONFIG.textSize)
805
+
805
806
  # Age Timer
806
807
  self.ageTimer = QTimer(self)
807
808
  self.ageTimer.setInterval(10000)
@@ -831,12 +832,17 @@ class _PreviewWidget(QTextBrowser):
831
832
  return
832
833
 
833
834
  def setTextFont(self, family: str, size: int) -> None:
834
- """Set the text font properties."""
835
- if family:
836
- font = QFont()
835
+ """Set the text font properties and then reset for sub-widgets.
836
+ This needs special attention since there appears to be a bug in
837
+ Qt 5.15.3. See issues #1862 and #1875.
838
+ """
839
+ if family and size > 4:
840
+ font = self.font()
837
841
  font.setFamily(family)
838
842
  font.setPointSize(size)
839
843
  self.setFont(font)
844
+ self.buildProgress.setFont(SHARED.theme.guiFont)
845
+ self.ageLabel.setFont(SHARED.theme.guiFontSmall)
840
846
  return
841
847
 
842
848
  ##
File without changes
File without changes
File without changes
File without changes