novelWriter 2.7rc1__tar.gz → 2.7.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. {novelwriter-2.7rc1 → novelwriter-2.7.1}/CHANGELOG.md +67 -0
  2. {novelwriter-2.7rc1 → novelwriter-2.7.1}/CREDITS.md +4 -0
  3. {novelwriter-2.7rc1 → novelwriter-2.7.1}/PKG-INFO +2 -2
  4. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelWriter.egg-info/PKG-INFO +2 -2
  5. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelWriter.egg-info/SOURCES.txt +2 -0
  6. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/__init__.py +3 -3
  7. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/nw_cs_CZ.qm +0 -0
  8. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/nw_de_DE.qm +0 -0
  9. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/nw_en_US.qm +0 -0
  10. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/nw_es_419.qm +0 -0
  11. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/nw_fr_FR.qm +0 -0
  12. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/nw_it_IT.qm +0 -0
  13. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/nw_ja_JP.qm +0 -0
  14. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/nw_nb_NO.qm +0 -0
  15. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/nw_nl_NL.qm +0 -0
  16. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/nw_pl_PL.qm +0 -0
  17. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/nw_pt_BR.qm +0 -0
  18. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/nw_ru_RU.qm +0 -0
  19. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/nw_zh_CN.qm +0 -0
  20. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/project_cs_CZ.json +2 -0
  21. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/project_de_DE.json +3 -1
  22. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/project_en_US.json +2 -0
  23. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/project_it_IT.json +2 -0
  24. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/project_ja_JP.json +2 -0
  25. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/project_nb_NO.json +2 -0
  26. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/project_nn_NO.json +5 -0
  27. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/project_pl_PL.json +2 -0
  28. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/project_pt_BR.json +2 -0
  29. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/project_ru_RU.json +2 -0
  30. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/project_zh_CN.json +2 -0
  31. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/manual.pdf +0 -0
  32. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/manual_fr.pdf +0 -0
  33. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/sample.zip +0 -0
  34. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/text/credits_en.htm +6 -0
  35. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/constants.py +4 -0
  36. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/buildsettings.py +1 -1
  37. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/index.py +16 -10
  38. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/item.py +1 -1
  39. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/gui/doceditor.py +8 -7
  40. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/tools/manussettings.py +14 -7
  41. {novelwriter-2.7rc1 → novelwriter-2.7.1}/pkgutils.py +6 -18
  42. {novelwriter-2.7rc1 → novelwriter-2.7.1}/pyproject.toml +2 -2
  43. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/appimage_launcher.sh +1 -1
  44. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/novelwriter.desktop +1 -1
  45. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/debian/control +1 -7
  46. novelwriter-2.7.1/setup/icons/novelwriter.png +0 -0
  47. novelwriter-2.7.1/setup/icons/x-novelwriter-project.png +0 -0
  48. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/macos/Info.plist.template +1 -1
  49. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/macos/build.sh +4 -4
  50. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/make_pip.sh +1 -1
  51. {novelwriter-2.7rc1 → novelwriter-2.7.1}/LICENSE.md +0 -0
  52. {novelwriter-2.7rc1 → novelwriter-2.7.1}/MANIFEST.in +0 -0
  53. {novelwriter-2.7rc1 → novelwriter-2.7.1}/README.md +0 -0
  54. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelWriter.egg-info/dependency_links.txt +0 -0
  55. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelWriter.egg-info/entry_points.txt +0 -0
  56. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelWriter.egg-info/requires.txt +0 -0
  57. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelWriter.egg-info/top_level.txt +0 -0
  58. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/project_en_GB.json +0 -0
  59. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/project_es_419.json +0 -0
  60. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/project_fr_FR.json +0 -0
  61. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/i18n/project_nl_NL.json +0 -0
  62. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/icons/font_awesome.icons +0 -0
  63. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/icons/material_filled_bold.icons +0 -0
  64. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/icons/material_filled_normal.icons +0 -0
  65. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/icons/material_filled_thin.icons +0 -0
  66. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/icons/material_rounded_bold.icons +0 -0
  67. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/icons/material_rounded_normal.icons +0 -0
  68. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/icons/material_rounded_thin.icons +0 -0
  69. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/icons/none.svg +0 -0
  70. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/icons/novelwriter.ico +0 -0
  71. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/icons/novelwriter.svg +0 -0
  72. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/icons/remix_filled.icons +0 -0
  73. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/icons/remix_outline.icons +0 -0
  74. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/icons/x-novelwriter-project.ico +0 -0
  75. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/icons/x-novelwriter-project.svg +0 -0
  76. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/images/novelwriter-text-dark.svg +0 -0
  77. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/images/novelwriter-text-light.svg +0 -0
  78. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/images/splash.png +0 -0
  79. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/images/welcome-dark.jpg +0 -0
  80. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/images/welcome-light.jpg +0 -0
  81. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/cyberpunk_night.conf +0 -0
  82. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/default_dark.conf +0 -0
  83. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/default_light.conf +0 -0
  84. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/dracula.conf +0 -0
  85. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/grey_dark.conf +0 -0
  86. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/grey_light.conf +0 -0
  87. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/light_owl.conf +0 -0
  88. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/night_owl.conf +0 -0
  89. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/snazzy.conf +0 -0
  90. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/solarized_dark.conf +0 -0
  91. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/solarized_light.conf +0 -0
  92. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/tango.conf +0 -0
  93. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/tomorrow.conf +0 -0
  94. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/tomorrow_night.conf +0 -0
  95. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/tomorrow_night_blue.conf +0 -0
  96. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/tomorrow_night_bright.conf +0 -0
  97. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/syntax/tomorrow_night_eighties.conf +0 -0
  98. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/text/lipsum.txt +0 -0
  99. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/themes/cyberpunk_night.conf +0 -0
  100. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/themes/default.conf +0 -0
  101. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/themes/default_dark.conf +0 -0
  102. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/themes/default_light.conf +0 -0
  103. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/themes/dracula.conf +0 -0
  104. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/themes/snazzy.conf +0 -0
  105. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/themes/solarized_dark.conf +0 -0
  106. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/assets/themes/solarized_light.conf +0 -0
  107. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/common.py +0 -0
  108. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/config.py +0 -0
  109. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/coretools.py +0 -0
  110. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/docbuild.py +0 -0
  111. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/document.py +0 -0
  112. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/indexdata.py +0 -0
  113. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/itemmodel.py +0 -0
  114. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/novelmodel.py +0 -0
  115. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/options.py +0 -0
  116. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/project.py +0 -0
  117. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/projectdata.py +0 -0
  118. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/projectxml.py +0 -0
  119. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/sessions.py +0 -0
  120. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/spellcheck.py +0 -0
  121. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/status.py +0 -0
  122. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/storage.py +0 -0
  123. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/core/tree.py +0 -0
  124. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/dialogs/about.py +0 -0
  125. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/dialogs/docmerge.py +0 -0
  126. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/dialogs/docsplit.py +0 -0
  127. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/dialogs/editlabel.py +0 -0
  128. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/dialogs/preferences.py +0 -0
  129. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/dialogs/projectsettings.py +0 -0
  130. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/dialogs/quotes.py +0 -0
  131. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/dialogs/wordlist.py +0 -0
  132. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/enum.py +0 -0
  133. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/error.py +0 -0
  134. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/extensions/configlayout.py +0 -0
  135. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/extensions/eventfilters.py +0 -0
  136. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/extensions/modified.py +0 -0
  137. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/extensions/novelselector.py +0 -0
  138. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/extensions/pagedsidebar.py +0 -0
  139. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/extensions/progressbars.py +0 -0
  140. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/extensions/statusled.py +0 -0
  141. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/extensions/switch.py +0 -0
  142. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/extensions/switchbox.py +0 -0
  143. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/extensions/versioninfo.py +0 -0
  144. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/formats/shared.py +0 -0
  145. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/formats/todocx.py +0 -0
  146. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/formats/tohtml.py +0 -0
  147. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/formats/tokenizer.py +0 -0
  148. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/formats/tomarkdown.py +0 -0
  149. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/formats/toodt.py +0 -0
  150. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/formats/toqdoc.py +0 -0
  151. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/formats/toraw.py +0 -0
  152. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/gui/dochighlight.py +0 -0
  153. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/gui/docviewer.py +0 -0
  154. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/gui/docviewerpanel.py +0 -0
  155. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/gui/editordocument.py +0 -0
  156. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/gui/itemdetails.py +0 -0
  157. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/gui/mainmenu.py +0 -0
  158. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/gui/noveltree.py +0 -0
  159. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/gui/outline.py +0 -0
  160. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/gui/projtree.py +0 -0
  161. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/gui/search.py +0 -0
  162. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/gui/sidebar.py +0 -0
  163. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/gui/statusbar.py +0 -0
  164. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/gui/theme.py +0 -0
  165. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/guimain.py +0 -0
  166. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/shared.py +0 -0
  167. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/splash.py +0 -0
  168. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/text/comments.py +0 -0
  169. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/text/counting.py +0 -0
  170. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/text/patterns.py +0 -0
  171. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/tools/dictionaries.py +0 -0
  172. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/tools/lipsum.py +0 -0
  173. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/tools/manusbuild.py +0 -0
  174. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/tools/manuscript.py +0 -0
  175. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/tools/noveldetails.py +0 -0
  176. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/tools/welcome.py +0 -0
  177. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/tools/writingstats.py +0 -0
  178. {novelwriter-2.7rc1 → novelwriter-2.7.1}/novelwriter/types.py +0 -0
  179. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/128x128/apps/novelwriter.png +0 -0
  180. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/128x128/mimetypes/application-x-novelwriter-project.png +0 -0
  181. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/16x16/apps/novelwriter.png +0 -0
  182. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/16x16/mimetypes/application-x-novelwriter-project.png +0 -0
  183. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/24x24/apps/novelwriter.png +0 -0
  184. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/24x24/mimetypes/application-x-novelwriter-project.png +0 -0
  185. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/256x256/apps/novelwriter.png +0 -0
  186. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/256x256/mimetypes/application-x-novelwriter-project.png +0 -0
  187. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/32x32/apps/novelwriter.png +0 -0
  188. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/32x32/mimetypes/application-x-novelwriter-project.png +0 -0
  189. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/48x48/apps/novelwriter.png +0 -0
  190. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/48x48/mimetypes/application-x-novelwriter-project.png +0 -0
  191. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/512x512/apps/novelwriter.png +0 -0
  192. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/512x512/mimetypes/application-x-novelwriter-project.png +0 -0
  193. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/64x64/apps/novelwriter.png +0 -0
  194. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/64x64/mimetypes/application-x-novelwriter-project.png +0 -0
  195. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/scalable/apps/novelwriter.svg +0 -0
  196. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/hicolor/scalable/mimetypes/application-x-novelwriter-project.svg +0 -0
  197. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/novelwriter.png +0 -0
  198. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/data/x-novelwriter-project.xml +0 -0
  199. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/debian/compat +0 -0
  200. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/debian/copyright +0 -0
  201. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/debian/install +0 -0
  202. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/debian/py3dist-overrides +0 -0
  203. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/debian/rules +0 -0
  204. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/debian/source/format +0 -0
  205. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/description_pypi.md +0 -0
  206. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/description_short.txt +0 -0
  207. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/icons/novelwriter.ico +0 -0
  208. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/icons/novelwriter.svg +0 -0
  209. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/icons/x-novelwriter-project.ico +0 -0
  210. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/icons/x-novelwriter-project.svg +0 -0
  211. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/iss_license.txt +0 -0
  212. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/macos/App.entitlements +0 -0
  213. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/macos/novelwriter.iconset/icon_128x128.png +0 -0
  214. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/macos/novelwriter.iconset/icon_128x128@2x.png +0 -0
  215. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/macos/novelwriter.iconset/icon_16x16.png +0 -0
  216. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/macos/novelwriter.iconset/icon_16x16@2x.png +0 -0
  217. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/macos/novelwriter.iconset/icon_256x256.png +0 -0
  218. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/macos/novelwriter.iconset/icon_256x256@2x.png +0 -0
  219. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/macos/novelwriter.iconset/icon_32x32.png +0 -0
  220. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/macos/novelwriter.iconset/icon_32x32@2x.png +0 -0
  221. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/macos/novelwriter.iconset/icon_512x512.png +0 -0
  222. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/macos/novelwriter.iconset/icon_512x512@2x.png +0 -0
  223. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/make_clean.sh +0 -0
  224. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/make_release.sh +0 -0
  225. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/novelwriter.appdata.xml +0 -0
  226. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/novelwriter_readme.png +0 -0
  227. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/novelwriter_text.png +0 -0
  228. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/screenshot.png +0 -0
  229. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/signpath_logo.png +0 -0
  230. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/win_setup_embed.iss +0 -0
  231. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/windows/CMakeLists.txt +0 -0
  232. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/windows/launcher.rc +0 -0
  233. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/windows/main.cpp +0 -0
  234. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/windows/make.ps1 +0 -0
  235. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/windows/novelWriter.exe +0 -0
  236. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup/windows/novelWriter.ico +0 -0
  237. {novelwriter-2.7rc1 → novelwriter-2.7.1}/setup.cfg +0 -0
@@ -1,5 +1,72 @@
1
1
  # novelWriter Changelog
2
2
 
3
+ ## Version 2.7.1 [2025-06-09]
4
+
5
+ ### Release Notes
6
+
7
+ This is a patch release that fixes some issues with tags and references, and issue with the
8
+ auto-complete menu on Windows, and issues with the AppImage on Linux. The Czech translation for
9
+ 2.7 has been completed.
10
+
11
+ ### Detailed Changelog
12
+
13
+ **Bugfixes**
14
+
15
+ * Fix a bug where tags would be listed in the auto-complete menu for mentions even if the file
16
+ defining it had been moved to Archive or Trash. Issue #2387. PR #2389.
17
+ * Fixed a bug that seems to only have occurred on Windows where the auto-complete menu would hold
18
+ on to the return and arrow keys even when it was hidden. Issue #2386. PR #2389.
19
+
20
+ **Improvements**
21
+
22
+ * The auto-complete menu in the editor no longer shows any suggestions when defining the tag.
23
+ This never made sense anyway. PR #2389.
24
+
25
+ **Internationalisation**
26
+
27
+ * Updated the Czech. PR #2393.
28
+
29
+ **Packaging**
30
+
31
+ * Fixed an issue with the AppImage release where on some platforms `libxcb-cursor0` was missing.
32
+ The library is now included in the AppImage. Issue #2374. PR #2392.
33
+
34
+ ----
35
+
36
+ ## Version 2.7 [2025-06-01]
37
+
38
+ ### Release Notes
39
+
40
+ The 2.7 release updates the 2.7 RC 1 release and makes an improvement to the build settings tool.
41
+ It also updates most translations and updates the French version of the documentation.
42
+
43
+ See the website for complete [Release Notes](https://novelwriter.io/releases/release_2_7.html).
44
+
45
+ ### Detailed Changelog
46
+
47
+ **Improvement**
48
+
49
+ * The Manuscript Build Settings dialog now works on a copy of the settings so that if the dialog
50
+ box is closed without saving, all changes are discarded. It should also now detect any change
51
+ made to properly raise a confirmation prompt when closing without saving. Issue #2350. PR #2351.
52
+
53
+ **Documentation**
54
+
55
+ * The user documentation has been restructured, and the Getting Started section has been made less
56
+ technical. The install instructions have been moved out and into the main website. The technical
57
+ and in-depth parts of the documentation have been kept, but moved further back so that the
58
+ documentation can be read from the start and to the point where the user has enough information.
59
+ The larger sections have also been split up so that it should be easier to find the wanted
60
+ information directly from the menu. Issue #2345. PR #2355.
61
+
62
+ **Internationalisation**
63
+
64
+ * Updated US English, Japanese, Norwegian. German, Italian, Polish, Brazilian Portuguese and
65
+ Chinese translation files. PR #2353.
66
+ * French documentation updated by @Karduin. Issue #2360. PR #2361.
67
+
68
+ ----
69
+
3
70
  ## Version 2.7 RC 1 [2025-05-19]
4
71
 
5
72
  ### Release Notes
@@ -39,6 +39,10 @@ Additional larger translation contributions:
39
39
  * **French:** Albert Aribaud (aaribaud)
40
40
  * **Portuguese:** Oli Maia (olimaia)
41
41
 
42
+ Translations of the documentation:
43
+
44
+ * **French:** Jean-Michel Heras (Karduin)
45
+
42
46
  Translations are managed on [Crowdin](https://crowdin.com/project/novelwriter), and more
43
47
  contributions are listed on the project's Members page.
44
48
 
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: novelWriter
3
- Version: 2.7rc1
4
- Summary: A markdown-like text editor for planning and writing novels
3
+ Version: 2.7.1
4
+ Summary: A plain 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
7
7
  Project-URL: Homepage, https://novelwriter.io
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: novelWriter
3
- Version: 2.7rc1
4
- Summary: A markdown-like text editor for planning and writing novels
3
+ Version: 2.7.1
4
+ Summary: A plain 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
7
7
  Project-URL: Homepage, https://novelwriter.io
@@ -209,8 +209,10 @@ setup/debian/py3dist-overrides
209
209
  setup/debian/rules
210
210
  setup/debian/source/format
211
211
  setup/icons/novelwriter.ico
212
+ setup/icons/novelwriter.png
212
213
  setup/icons/novelwriter.svg
213
214
  setup/icons/x-novelwriter-project.ico
215
+ setup/icons/x-novelwriter-project.png
214
216
  setup/icons/x-novelwriter-project.svg
215
217
  setup/macos/App.entitlements
216
218
  setup/macos/Info.plist.template
@@ -49,9 +49,9 @@ __license__ = "GPLv3"
49
49
  __author__ = "Veronica Berglyd Olsen"
50
50
  __maintainer__ = "Veronica Berglyd Olsen"
51
51
  __email__ = "code@vkbo.net"
52
- __version__ = "2.7rc1"
53
- __hexversion__ = "0x020700c1"
54
- __date__ = "2025-05-19"
52
+ __version__ = "2.7.1"
53
+ __hexversion__ = "0x020701f0"
54
+ __date__ = "2025-06-09"
55
55
  __status__ = "Stable"
56
56
  __domain__ = "novelwriter.io"
57
57
 
@@ -3,6 +3,8 @@
3
3
  "Short Description": "Krátký popis",
4
4
  "Footnotes": "Poznámky pod čarou",
5
5
  "Comment": "Komentář",
6
+ "Story Structure": "Struktura příběhu",
7
+ "Note": "Poznámka",
6
8
  "Notes": "Poznámka",
7
9
  "Tag": "Štítek",
8
10
  "Point of View": "Úhel pohledu",
@@ -1,8 +1,10 @@
1
1
  {
2
- "Synopsis": "Synopsis",
2
+ "Synopsis": "Zusammenfassung",
3
3
  "Short Description": "Kurzbeschreibung",
4
4
  "Footnotes": "Fußnoten",
5
5
  "Comment": "Kommentar",
6
+ "Story Structure": "Struktur",
7
+ "Note": "Notiz",
6
8
  "Notes": "Notizen",
7
9
  "Tag": "Schlagwort",
8
10
  "Point of View": "Perspektive",
@@ -3,6 +3,8 @@
3
3
  "Short Description": "Short Description",
4
4
  "Footnotes": "Footnotes",
5
5
  "Comment": "Comment",
6
+ "Story Structure": "Story Structure",
7
+ "Note": "Note",
6
8
  "Notes": "Notes",
7
9
  "Tag": "Tag",
8
10
  "Point of View": "Point of View",
@@ -3,6 +3,8 @@
3
3
  "Short Description": "Breve descrizione",
4
4
  "Footnotes": "Note a piè pagina",
5
5
  "Comment": "Commento",
6
+ "Story Structure": "Struttura della storia",
7
+ "Note": "Nota",
6
8
  "Notes": "Note",
7
9
  "Tag": "Etichetta",
8
10
  "Point of View": "Punto di vista",
@@ -3,6 +3,8 @@
3
3
  "Short Description": "短い説明",
4
4
  "Footnotes": "脚注",
5
5
  "Comment": "コメント ",
6
+ "Story Structure": "ストーリー構造",
7
+ "Note": "ノート",
6
8
  "Notes": "ノート",
7
9
  "Tag": "タグ",
8
10
  "Point of View": "視点",
@@ -3,6 +3,8 @@
3
3
  "Short Description": "Kort beskrivelse",
4
4
  "Footnotes": "Fotnoter",
5
5
  "Comment": "Kommentar",
6
+ "Story Structure": "Tekst-element",
7
+ "Note": "Notat",
6
8
  "Notes": "Notat",
7
9
  "Tag": "Knagg",
8
10
  "Point of View": "Perspektiv",
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "Synopsis": "Samandrag",
3
+ "Short Description": "Kort beskriving",
4
+ "Footnotes": "Fotnotar",
3
5
  "Comment": "Kommentar",
6
+ "Story Structure": "Tekst-element",
7
+ "Note": "Notat",
4
8
  "Notes": "Notat",
5
9
  "Tag": "Knagg",
6
10
  "Point of View": "Perspektiv",
@@ -12,6 +16,7 @@
12
16
  "Objects": "Objekt",
13
17
  "Entities": "Eining",
14
18
  "Custom": "Anna",
19
+ "New Page": "Ny side",
15
20
  "0": "null",
16
21
  "1": "ein",
17
22
  "2": "to",
@@ -3,6 +3,8 @@
3
3
  "Short Description": "Krótki opis",
4
4
  "Footnotes": "Przypisy",
5
5
  "Comment": "Komentarz",
6
+ "Story Structure": "Struktura opowieści",
7
+ "Note": "Notatka",
6
8
  "Notes": "Notatki",
7
9
  "Tag": "Znacznik",
8
10
  "Point of View": "Punkt widzenia",
@@ -3,6 +3,8 @@
3
3
  "Short Description": "Descrição breve",
4
4
  "Footnotes": "Notas de rodapé",
5
5
  "Comment": "Comentário",
6
+ "Story Structure": "Estrutura narrativa",
7
+ "Note": "Nota",
6
8
  "Notes": "Notas",
7
9
  "Tag": "Etiqueta",
8
10
  "Point of View": "Ponto de vista",
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "Synopsis": "Сводка",
3
3
  "Short Description": "Краткое описание",
4
+ "Footnotes": "Примечания",
4
5
  "Comment": "Комментарий",
5
6
  "Notes": "Заметки",
6
7
  "Tag": "Тэг",
@@ -13,6 +14,7 @@
13
14
  "Objects": "Объекты",
14
15
  "Entities": "Сущности",
15
16
  "Custom": "Другое",
17
+ "New Page": "Новая страница",
16
18
  "0": "Ноль",
17
19
  "1": "Один",
18
20
  "2": "Два",
@@ -3,6 +3,8 @@
3
3
  "Short Description": "简短描述",
4
4
  "Footnotes": "注释",
5
5
  "Comment": "注释",
6
+ "Story Structure": "故事结构",
7
+ "Note": "笔记",
6
8
  "Notes": "笔记",
7
9
  "Tag": "标签",
8
10
  "Point of View": "视角",
@@ -47,6 +47,12 @@ translators for the languages currently available:</p>
47
47
  <li><b>Portuguese:</b> Oli Maia (olimaia)</li>
48
48
  </ul>
49
49
 
50
+ <p>Translations of the documentation:</p>
51
+
52
+ <ul>
53
+ <li><b>French:</b> Jean-Michel Heras (Karduin)</li>
54
+ </ul>
55
+
50
56
  <p>Translations are managed on <a href="https://crowdin.com/project/novelwriter">Crowdin</a>, and
51
57
  more contributions are listed on the project's Members page.</p>
52
58
 
@@ -184,6 +184,10 @@ class nwKeyWords:
184
184
  POV_KEY, FOCUS_KEY, CHAR_KEY, PLOT_KEY, TIME_KEY, WORLD_KEY,
185
185
  OBJECT_KEY, ENTITY_KEY, CUSTOM_KEY,
186
186
  ]
187
+ CAN_LOOKUP: Final[list[str]] = [
188
+ POV_KEY, FOCUS_KEY, CHAR_KEY, PLOT_KEY, TIME_KEY, WORLD_KEY,
189
+ OBJECT_KEY, ENTITY_KEY, CUSTOM_KEY, STORY_KEY, MENTION_KEY,
190
+ ]
187
191
 
188
192
  # Set of Valid Keys
189
193
  VALID_KEYS: Final[set[str]] = set(ALL_KEYS)
@@ -390,7 +390,7 @@ class BuildSettings:
390
390
  def setValue(self, key: str, value: T_BuildValue) -> None:
391
391
  """Set a specific value for a build setting."""
392
392
  if (d := SETTINGS_TEMPLATE.get(key)) and len(d) == 2 and isinstance(value, d[0]):
393
- self._changed = value != self._settings[key]
393
+ self._changed |= (value != self._settings[key])
394
394
  self._settings[key] = value
395
395
  return
396
396
 
@@ -131,12 +131,6 @@ class Index:
131
131
  self._novelExtra = extra
132
132
  return
133
133
 
134
- def setItemClass(self, tHandle: str, itemClass: nwItemClass) -> None:
135
- """Update the class for all tags of a handle."""
136
- logger.info("Updating class for '%s'", tHandle)
137
- self._tagsIndex.updateClass(tHandle, itemClass.name)
138
- return
139
-
140
134
  ##
141
135
  # Public Methods
142
136
  ##
@@ -183,6 +177,16 @@ class Index:
183
177
  self.scanText(tHandle, self._project.storage.getDocumentText(tHandle))
184
178
  return
185
179
 
180
+ def refreshHandle(self, tHandle: str) -> None:
181
+ """Update the class for all tags of a handle."""
182
+ if item := self._project.tree[tHandle]:
183
+ logger.info("Updating class for '%s'", tHandle)
184
+ if item.isInactiveClass():
185
+ self.deleteHandle(tHandle)
186
+ else:
187
+ self._tagsIndex.updateClass(tHandle, item.itemClass.name)
188
+ return
189
+
186
190
  def indexChangedSince(self, checkTime: int | float) -> bool:
187
191
  """Check if the index has changed since a given time."""
188
192
  return self._indexChange > float(checkTime)
@@ -753,10 +757,12 @@ class Index:
753
757
  """Return all tags used by a specific document."""
754
758
  return self._itemIndex.allItemTags(tHandle) if tHandle else []
755
759
 
756
- def getClassTags(self, itemClass: nwItemClass | None) -> list[str]:
757
- """Return all tags based on itemClass."""
758
- name = None if itemClass is None else itemClass.name
759
- return self._tagsIndex.filterTagNames(name)
760
+ def getKeyWordTags(self, keyWord: str) -> list[str]:
761
+ """Return all tags usable for a specific keyword."""
762
+ if keyWord in nwKeyWords.CAN_LOOKUP:
763
+ itemClass = nwKeyWords.KEY_CLASS.get(keyWord)
764
+ return self._tagsIndex.filterTagNames(itemClass.name if itemClass else None)
765
+ return []
760
766
 
761
767
  def getTagsData(
762
768
  self, activeOnly: bool = True
@@ -439,7 +439,7 @@ class NWItem:
439
439
  self.setClass(itemClass)
440
440
  if self._type == nwItemType.FILE:
441
441
  # Notify the index of the class change
442
- self._project.index.setItemClass(self._handle, itemClass)
442
+ self._project.index.refreshHandle(self._handle)
443
443
 
444
444
  if self._layout == nwItemLayout.NO_LAYOUT:
445
445
  # If no layout is set, pick one
@@ -1090,11 +1090,14 @@ class GuiDocEditor(QPlainTextEdit):
1090
1090
  show = self._completer.updateMetaText(text, bPos)
1091
1091
  else:
1092
1092
  show = self._completer.updateCommentText(text, bPos)
1093
- point = self.cursorRect().bottomRight()
1094
- self._completer.move(viewport.mapToGlobal(point))
1095
- self._completer.setVisible(show)
1093
+ if show:
1094
+ point = self.cursorRect().bottomRight()
1095
+ self._completer.move(viewport.mapToGlobal(point))
1096
+ self._completer.show()
1097
+ else:
1098
+ self._completer.close()
1096
1099
  else:
1097
- self._completer.setVisible(False)
1100
+ self._completer.close()
1098
1101
 
1099
1102
  if self._doReplace and added == 1:
1100
1103
  cursor = self.textCursor()
@@ -2113,9 +2116,7 @@ class CommandCompleter(QMenu):
2113
2116
  length = len(lookup)
2114
2117
  suffix = ""
2115
2118
  options = sorted(filter(
2116
- lambda x: lookup in x.lower(), SHARED.project.index.getClassTags(
2117
- nwKeyWords.KEY_CLASS.get(kw.strip())
2118
- )
2119
+ lambda x: lookup in x.lower(), SHARED.project.index.getKeyWordTags(kw.strip())
2119
2120
  ))[:15]
2120
2121
 
2121
2122
  if not options:
@@ -80,7 +80,8 @@ class GuiBuildSettings(NToolDialog):
80
80
  logger.debug("Create: GuiBuildSettings")
81
81
  self.setObjectName("GuiBuildSettings")
82
82
 
83
- self._build = build
83
+ # Make a copy of the build object
84
+ self._build = BuildSettings.fromDict(build.pack())
84
85
 
85
86
  self.setWindowTitle(self.tr("Manuscript Build Settings"))
86
87
  self.setMinimumSize(700, 400)
@@ -184,6 +185,7 @@ class GuiBuildSettings(NToolDialog):
184
185
  settings.
185
186
  """
186
187
  logger.debug("Closing: GuiBuildSettings")
188
+ self._applyChanges()
187
189
  self._askToSaveBuild()
188
190
  self._saveSettings()
189
191
  event.accept()
@@ -211,11 +213,14 @@ class GuiBuildSettings(NToolDialog):
211
213
  """Handle button clicks from the dialog button box."""
212
214
  role = self.buttonBox.buttonRole(button)
213
215
  if role == QtRoleApply:
216
+ self._applyChanges()
214
217
  self._emitBuildData()
215
218
  elif role == QtRoleAccept:
219
+ self._applyChanges()
216
220
  self._emitBuildData()
217
221
  self.close()
218
222
  elif role == QtRoleReject:
223
+ self._build.resetChangedState()
219
224
  self.close()
220
225
  return
221
226
 
@@ -228,10 +233,9 @@ class GuiBuildSettings(NToolDialog):
228
233
  whether the user wants to save them.
229
234
  """
230
235
  if self._build.changed:
231
- response = SHARED.question(self.tr(
236
+ if SHARED.question(self.tr(
232
237
  "Do you want to save your changes to '{0}'?"
233
- ).format(self._build.name))
234
- if response:
238
+ ).format(self._build.name)):
235
239
  self._emitBuildData()
236
240
  self._build.resetChangedState()
237
241
  return
@@ -246,14 +250,17 @@ class GuiBuildSettings(NToolDialog):
246
250
  pOptions.setValue("GuiBuildSettings", "treeWidth", treeWidth)
247
251
  pOptions.setValue("GuiBuildSettings", "filterWidth", filterWidth)
248
252
  pOptions.saveSettings()
249
-
250
253
  return
251
254
 
252
- def _emitBuildData(self) -> None:
253
- """Assemble the build data and emit the signal."""
255
+ def _applyChanges(self) -> None:
256
+ """Apply all settings changes to the build object."""
254
257
  self._build.setName(self.editBuildName.text())
255
258
  self.optTabHeadings.saveContent()
256
259
  self.optTabFormatting.saveContent()
260
+ return
261
+
262
+ def _emitBuildData(self) -> None:
263
+ """Assemble the build data and emit the signal."""
257
264
  self.newSettingsReady.emit(self._build)
258
265
  self._build.resetChangedState()
259
266
  return
@@ -272,24 +272,12 @@ if __name__ == "__main__":
272
272
  cmdBuildUbuntu.set_defaults(func=utils.build_debian.launchpad)
273
273
 
274
274
  # Build AppImage
275
- cmdBuildAppImage = parsers.add_parser(
276
- "build-appimage", help=(
277
- "Build an AppImage. "
278
- "Argument --linux-tag defaults manylinux_2_28_x86_64, and --python-version to 3.13."
279
- )
280
- )
281
- cmdBuildAppImage.add_argument(
282
- "--linux-tag",
283
- default="manylinux_2_28_x86_64",
284
- help=(
285
- "Linux compatibility tag (e.g. manylinux_2_28_x86_64) "
286
- "see https://python-appimage.readthedocs.io/en/latest/#available-python-appimages "
287
- "and https://github.com/pypa/manylinux for a list of valid tags."
288
- ),
289
- )
290
- cmdBuildAppImage.add_argument(
291
- "--python-version", default="3.13", help="Python version (e.g. 3.13)"
292
- )
275
+ # See https://github.com/pypa/manylinux
276
+ # See https://python-appimage.readthedocs.io/en/latest/#available-python-appimages
277
+ cmdBuildAppImage = parsers.add_parser("build-appimage", help="Build an AppImage.")
278
+ cmdBuildAppImage.add_argument("linux", help="Manylinux version, e.g. manylinux_2_28.")
279
+ cmdBuildAppImage.add_argument("arch", help="Architecture, e.g. x86_64.")
280
+ cmdBuildAppImage.add_argument("python", help="Python version, e.g. 3.13.")
293
281
  cmdBuildAppImage.set_defaults(func=utils.build_appimage.appImage)
294
282
 
295
283
  # Build Windows Inno Setup Installer
@@ -1,5 +1,5 @@
1
1
  [build-system]
2
- requires = ["setuptools"]
2
+ requires = ["setuptools >= 77.0.3"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
@@ -7,7 +7,7 @@ name = "novelWriter"
7
7
  authors = [
8
8
  {name = "Veronica Berglyd Olsen", email = "code@vkbo.net"},
9
9
  ]
10
- description = "A markdown-like text editor for planning and writing novels"
10
+ description = "A plain text editor for planning and writing novels"
11
11
  readme = {file = "setup/description_pypi.md", content-type = "text/markdown"}
12
12
  license = {text = "GNU General Public License v3"}
13
13
  classifiers = [
@@ -24,7 +24,7 @@ cat > $HOME/.local/share/applications/novelWriter.desktop <<EOF
24
24
  [Desktop Entry]
25
25
  Type=Application
26
26
  Name=novelWriter
27
- Comment=A markdown-like text editor for planning and writing novels
27
+ Comment=A plain text editor for planning and writing novels
28
28
  Exec=${IMGPATH} %f
29
29
  Icon=${ICONPATH}
30
30
  Categories=Qt;Office;WordProcessor;
@@ -1,7 +1,7 @@
1
1
  [Desktop Entry]
2
2
  Type=Application
3
3
  Name=novelWriter
4
- Comment=A markdown-like text editor for planning and writing novels
4
+ Comment=A plain text editor for planning and writing novels
5
5
  Exec=novelwriter %f
6
6
  Icon=novelwriter
7
7
  Categories=Qt;Office;WordProcessor;
@@ -10,10 +10,4 @@ X-Python3-Version: >= 3.10
10
10
  Package: novelwriter
11
11
  Architecture: all
12
12
  Depends: ${misc:Depends}, ${python3:Depends}, python3 (>=3.10), python3-pyqt6 (>= 6.4), python3-pyqt6.qtsvg (>= 6.4), python3-enchant (>= 2.0)
13
- Description: A markdown-like text editor for planning and writing novels
14
- novelWriter is a plain text editor designed for writing novels assembled from
15
- many smaller text documents. It uses a minimal formatting syntax inspired by
16
- Markdown, and adds a meta data syntax for comments, synopsis, and
17
- cross-referencing. It's designed to be a simple text editor that allows for
18
- easy organisation of text and notes, using human readable text files as
19
- storage for robustness.
13
+ Description: A plain text editor for planning and writing novels
@@ -11,7 +11,7 @@
11
11
  <key>CFBundleExecutable</key>
12
12
  <string>novelWriter</string>
13
13
  <key>CFBundleGetInfoString</key>
14
- <string>novelWriter: A markdown-like text editor for planning and writing novels.</string>
14
+ <string>novelWriter: A plain text editor for planning and writing novels.</string>
15
15
  <key>CFBundleIconFile</key>
16
16
  <string>novelwriter.icns</string>
17
17
  <key>CFBundleIdentifier</key>
@@ -174,7 +174,7 @@ rm lib/python3.*/site-packages/PyQt6/QtWebEngine* || true
174
174
  rm -r lib/python3.*/site-packages/PyQt6/Qt6/translations/qtwebengine* || true
175
175
  rm -r lib/python3.*/site-packages/PyQt6/Qt6/plugins/webview/libqtwebview* || true
176
176
 
177
- # Remove unneeded QtQuick/Decaritive components
177
+ # Remove unneeded QtQuick/Declarative components
178
178
  rm lib/python3.*/site-packages/PyQt6/QtQml* || true
179
179
  rm lib/python3.*/site-packages/PyQt6/QtQuick* || true
180
180
  rm lib/python3.*/site-packages/PyQt6/WebChannel* || true
@@ -200,16 +200,16 @@ mkdir -p $RLS_DIR
200
200
  # --- Create DMG -------------------------------------------------------------------------------- #
201
201
 
202
202
  # Generate .dmg
203
- echo "Packageing DMG ..."
203
+ echo "Packaging DMG ..."
204
204
  brew install create-dmg
205
205
 
206
206
  create-dmg --volname "novelWriter $VERSION" --volicon $SRC_DIR/setup/macos/novelwriter.icns \
207
207
  --window-pos 200 120 --window-size 800 400 --icon-size 100 \
208
208
  --icon novelWriter.app 200 190 --hide-extension novelWriter.app \
209
- --app-drop-link 600 185 $RLS_DIR/novelWriter-"${VERSION}"-$ARCH.dmg "$BUILD_DIR"/
209
+ --app-drop-link 600 185 $RLS_DIR/novelwriter-"${VERSION}"-$ARCH.dmg "$BUILD_DIR"/
210
210
 
211
211
  pushd $RLS_DIR || exit 1
212
- shasum -a 256 novelWriter-"${VERSION}"-$ARCH.dmg | tee novelWriter-"${VERSION}"-$ARCH.dmg.sha256
212
+ shasum -a 256 novelwriter-"${VERSION}"-$ARCH.dmg | tee novelwriter-"${VERSION}"-$ARCH.dmg.sha256
213
213
  popd || exit 1
214
214
 
215
215
  rm -r $CONDA_PATH
@@ -49,5 +49,5 @@ echo " Done!"
49
49
  echo "================================================================================"
50
50
  echo ""
51
51
  echo " To upload packages to PyPi, run:"
52
- echo " twine upload dist/*"
52
+ echo " python3 -m twine upload dist/*"
53
53
  echo ""
File without changes
File without changes
File without changes