novelWriter 2.6.2__py3-none-any.whl → 2.7b1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. novelwriter/__init__.py +84 -74
  2. novelwriter/assets/i18n/nw_cs_CZ.qm +0 -0
  3. novelwriter/assets/i18n/nw_de_DE.qm +0 -0
  4. novelwriter/assets/i18n/nw_en_US.qm +0 -0
  5. novelwriter/assets/i18n/nw_es_419.qm +0 -0
  6. novelwriter/assets/i18n/nw_fr_FR.qm +0 -0
  7. novelwriter/assets/i18n/nw_it_IT.qm +0 -0
  8. novelwriter/assets/i18n/nw_ja_JP.qm +0 -0
  9. novelwriter/assets/i18n/nw_nb_NO.qm +0 -0
  10. novelwriter/assets/i18n/nw_nl_NL.qm +0 -0
  11. novelwriter/assets/i18n/nw_pl_PL.qm +0 -0
  12. novelwriter/assets/i18n/nw_pt_BR.qm +0 -0
  13. novelwriter/assets/i18n/nw_ru_RU.qm +0 -0
  14. novelwriter/assets/i18n/nw_zh_CN.qm +0 -0
  15. novelwriter/assets/i18n/project_en_GB.json +1 -0
  16. novelwriter/assets/icons/font_awesome.icons +109 -0
  17. novelwriter/assets/icons/material_filled_bold.icons +109 -0
  18. novelwriter/assets/icons/material_filled_normal.icons +109 -0
  19. novelwriter/assets/icons/material_filled_thin.icons +109 -0
  20. novelwriter/assets/icons/material_rounded_bold.icons +109 -0
  21. novelwriter/assets/icons/material_rounded_normal.icons +109 -0
  22. novelwriter/assets/icons/material_rounded_thin.icons +109 -0
  23. novelwriter/assets/icons/remix_filled.icons +108 -0
  24. novelwriter/assets/icons/remix_outline.icons +108 -0
  25. novelwriter/assets/manual.pdf +0 -0
  26. novelwriter/assets/{manual_fr_FR.pdf → manual_fr.pdf} +0 -0
  27. novelwriter/assets/sample.zip +0 -0
  28. novelwriter/assets/syntax/cyberpunk_night.conf +1 -1
  29. novelwriter/assets/text/credits_en.htm +6 -6
  30. novelwriter/assets/themes/cyberpunk_night.conf +23 -7
  31. novelwriter/assets/themes/default_dark.conf +20 -4
  32. novelwriter/assets/themes/default_light.conf +21 -5
  33. novelwriter/assets/themes/dracula.conf +20 -4
  34. novelwriter/assets/themes/solarized_dark.conf +24 -8
  35. novelwriter/assets/themes/solarized_light.conf +22 -6
  36. novelwriter/common.py +33 -26
  37. novelwriter/config.py +118 -127
  38. novelwriter/constants.py +75 -56
  39. novelwriter/core/buildsettings.py +23 -16
  40. novelwriter/core/coretools.py +11 -7
  41. novelwriter/core/docbuild.py +19 -13
  42. novelwriter/core/document.py +2 -2
  43. novelwriter/core/index.py +142 -432
  44. novelwriter/core/indexdata.py +403 -0
  45. novelwriter/core/item.py +35 -28
  46. novelwriter/core/itemmodel.py +27 -26
  47. novelwriter/core/novelmodel.py +223 -0
  48. novelwriter/core/options.py +1 -1
  49. novelwriter/core/project.py +10 -11
  50. novelwriter/core/projectdata.py +5 -5
  51. novelwriter/core/projectxml.py +1 -1
  52. novelwriter/core/sessions.py +3 -2
  53. novelwriter/core/spellcheck.py +4 -3
  54. novelwriter/core/status.py +12 -15
  55. novelwriter/core/storage.py +1 -1
  56. novelwriter/core/tree.py +46 -8
  57. novelwriter/dialogs/about.py +19 -22
  58. novelwriter/dialogs/docmerge.py +21 -23
  59. novelwriter/dialogs/docsplit.py +20 -23
  60. novelwriter/dialogs/editlabel.py +9 -13
  61. novelwriter/dialogs/preferences.py +111 -48
  62. novelwriter/dialogs/projectsettings.py +48 -54
  63. novelwriter/dialogs/quotes.py +14 -19
  64. novelwriter/dialogs/wordlist.py +25 -30
  65. novelwriter/enum.py +8 -0
  66. novelwriter/error.py +16 -16
  67. novelwriter/extensions/configlayout.py +18 -18
  68. novelwriter/extensions/eventfilters.py +9 -5
  69. novelwriter/extensions/modified.py +34 -15
  70. novelwriter/extensions/novelselector.py +18 -5
  71. novelwriter/extensions/pagedsidebar.py +39 -49
  72. novelwriter/extensions/progressbars.py +10 -8
  73. novelwriter/extensions/statusled.py +6 -13
  74. novelwriter/extensions/switch.py +19 -30
  75. novelwriter/extensions/switchbox.py +7 -3
  76. novelwriter/extensions/versioninfo.py +4 -4
  77. novelwriter/formats/shared.py +1 -1
  78. novelwriter/formats/todocx.py +14 -10
  79. novelwriter/formats/tohtml.py +7 -5
  80. novelwriter/formats/tokenizer.py +36 -33
  81. novelwriter/formats/tomarkdown.py +6 -2
  82. novelwriter/formats/toodt.py +27 -22
  83. novelwriter/formats/toqdoc.py +19 -14
  84. novelwriter/formats/toraw.py +6 -2
  85. novelwriter/gui/doceditor.py +216 -265
  86. novelwriter/gui/dochighlight.py +46 -45
  87. novelwriter/gui/docviewer.py +102 -104
  88. novelwriter/gui/docviewerpanel.py +47 -51
  89. novelwriter/gui/editordocument.py +8 -5
  90. novelwriter/gui/itemdetails.py +15 -18
  91. novelwriter/gui/mainmenu.py +147 -146
  92. novelwriter/gui/noveltree.py +239 -405
  93. novelwriter/gui/outline.py +137 -76
  94. novelwriter/gui/projtree.py +138 -132
  95. novelwriter/gui/search.py +33 -31
  96. novelwriter/gui/sidebar.py +13 -18
  97. novelwriter/gui/statusbar.py +13 -15
  98. novelwriter/gui/theme.py +533 -430
  99. novelwriter/guimain.py +27 -29
  100. novelwriter/shared.py +32 -23
  101. novelwriter/text/comments.py +70 -0
  102. novelwriter/text/patterns.py +4 -4
  103. novelwriter/tools/dictionaries.py +20 -29
  104. novelwriter/tools/lipsum.py +16 -17
  105. novelwriter/tools/manusbuild.py +39 -42
  106. novelwriter/tools/manuscript.py +113 -126
  107. novelwriter/tools/manussettings.py +78 -83
  108. novelwriter/tools/noveldetails.py +51 -64
  109. novelwriter/tools/welcome.py +56 -75
  110. novelwriter/tools/writingstats.py +44 -57
  111. novelwriter/types.py +5 -7
  112. {novelWriter-2.6.2.dist-info → novelwriter-2.7b1.dist-info}/METADATA +6 -6
  113. novelwriter-2.7b1.dist-info/RECORD +159 -0
  114. {novelWriter-2.6.2.dist-info → novelwriter-2.7b1.dist-info}/WHEEL +1 -1
  115. novelWriter-2.6.2.dist-info/RECORD +0 -363
  116. novelwriter/assets/icons/typicons_dark/README.md +0 -29
  117. novelwriter/assets/icons/typicons_dark/icons.conf +0 -134
  118. novelwriter/assets/icons/typicons_dark/mixed_copy.svg +0 -4
  119. novelwriter/assets/icons/typicons_dark/mixed_document-chapter.svg +0 -12
  120. novelwriter/assets/icons/typicons_dark/mixed_document-new.svg +0 -6
  121. novelwriter/assets/icons/typicons_dark/mixed_document-note.svg +0 -12
  122. novelwriter/assets/icons/typicons_dark/mixed_document-scene.svg +0 -12
  123. novelwriter/assets/icons/typicons_dark/mixed_document-section.svg +0 -12
  124. novelwriter/assets/icons/typicons_dark/mixed_document-title.svg +0 -12
  125. novelwriter/assets/icons/typicons_dark/mixed_edit.svg +0 -4
  126. novelwriter/assets/icons/typicons_dark/mixed_import.svg +0 -5
  127. novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg +0 -5
  128. novelwriter/assets/icons/typicons_dark/mixed_input-none.svg +0 -5
  129. novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg +0 -5
  130. novelwriter/assets/icons/typicons_dark/mixed_margin-bottom.svg +0 -6
  131. novelwriter/assets/icons/typicons_dark/mixed_margin-left.svg +0 -6
  132. novelwriter/assets/icons/typicons_dark/mixed_margin-right.svg +0 -6
  133. novelwriter/assets/icons/typicons_dark/mixed_margin-top.svg +0 -6
  134. novelwriter/assets/icons/typicons_dark/mixed_search-replace.svg +0 -6
  135. novelwriter/assets/icons/typicons_dark/mixed_size-height.svg +0 -6
  136. novelwriter/assets/icons/typicons_dark/mixed_size-width.svg +0 -6
  137. novelwriter/assets/icons/typicons_dark/nw_deco-h0.svg +0 -4
  138. novelwriter/assets/icons/typicons_dark/nw_deco-h1.svg +0 -4
  139. novelwriter/assets/icons/typicons_dark/nw_deco-h2-narrow.svg +0 -4
  140. novelwriter/assets/icons/typicons_dark/nw_deco-h2.svg +0 -4
  141. novelwriter/assets/icons/typicons_dark/nw_deco-h3-narrow.svg +0 -4
  142. novelwriter/assets/icons/typicons_dark/nw_deco-h3.svg +0 -4
  143. novelwriter/assets/icons/typicons_dark/nw_deco-h4-narrow.svg +0 -4
  144. novelwriter/assets/icons/typicons_dark/nw_deco-h4.svg +0 -4
  145. novelwriter/assets/icons/typicons_dark/nw_deco-note.svg +0 -4
  146. novelwriter/assets/icons/typicons_dark/nw_deco-noveltree-more.svg +0 -4
  147. novelwriter/assets/icons/typicons_dark/nw_font.svg +0 -4
  148. novelwriter/assets/icons/typicons_dark/nw_panel.svg +0 -4
  149. novelwriter/assets/icons/typicons_dark/nw_quote.svg +0 -4
  150. novelwriter/assets/icons/typicons_dark/nw_search-case.svg +0 -4
  151. novelwriter/assets/icons/typicons_dark/nw_search-preserve.svg +0 -4
  152. novelwriter/assets/icons/typicons_dark/nw_search-regex.svg +0 -4
  153. novelwriter/assets/icons/typicons_dark/nw_search-word.svg +0 -4
  154. novelwriter/assets/icons/typicons_dark/nw_tb-bold-md.svg +0 -4
  155. novelwriter/assets/icons/typicons_dark/nw_tb-bold.svg +0 -6
  156. novelwriter/assets/icons/typicons_dark/nw_tb-italic-md.svg +0 -4
  157. novelwriter/assets/icons/typicons_dark/nw_tb-italic.svg +0 -6
  158. novelwriter/assets/icons/typicons_dark/nw_tb-mark.svg +0 -7
  159. novelwriter/assets/icons/typicons_dark/nw_tb-strike-md.svg +0 -4
  160. novelwriter/assets/icons/typicons_dark/nw_tb-strike.svg +0 -6
  161. novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg +0 -7
  162. novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg +0 -7
  163. novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg +0 -7
  164. novelwriter/assets/icons/typicons_dark/nw_toolbar.svg +0 -5
  165. novelwriter/assets/icons/typicons_dark/typ_arrow-down-thick-grey.svg +0 -4
  166. novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg +0 -4
  167. novelwriter/assets/icons/typicons_dark/typ_arrow-maximise.svg +0 -4
  168. novelwriter/assets/icons/typicons_dark/typ_arrow-minimise.svg +0 -4
  169. novelwriter/assets/icons/typicons_dark/typ_arrow-repeat-grey.svg +0 -4
  170. novelwriter/assets/icons/typicons_dark/typ_book-grey.svg +0 -4
  171. novelwriter/assets/icons/typicons_dark/typ_book.svg +0 -6
  172. novelwriter/assets/icons/typicons_dark/typ_bookmark.svg +0 -4
  173. novelwriter/assets/icons/typicons_dark/typ_calendar.svg +0 -4
  174. novelwriter/assets/icons/typicons_dark/typ_cancel-grey.svg +0 -4
  175. novelwriter/assets/icons/typicons_dark/typ_cancel.svg +0 -4
  176. novelwriter/assets/icons/typicons_dark/typ_chart-bar-grey.svg +0 -4
  177. novelwriter/assets/icons/typicons_dark/typ_chevron-down.svg +0 -4
  178. novelwriter/assets/icons/typicons_dark/typ_chevron-left.svg +0 -4
  179. novelwriter/assets/icons/typicons_dark/typ_chevron-right.svg +0 -4
  180. novelwriter/assets/icons/typicons_dark/typ_chevron-up.svg +0 -4
  181. novelwriter/assets/icons/typicons_dark/typ_cog.svg +0 -4
  182. novelwriter/assets/icons/typicons_dark/typ_delete-full.svg +0 -4
  183. novelwriter/assets/icons/typicons_dark/typ_delete.svg +0 -4
  184. novelwriter/assets/icons/typicons_dark/typ_directions-full.svg +0 -4
  185. novelwriter/assets/icons/typicons_dark/typ_document-add.svg +0 -4
  186. novelwriter/assets/icons/typicons_dark/typ_document-text.svg +0 -8
  187. novelwriter/assets/icons/typicons_dark/typ_document.svg +0 -4
  188. novelwriter/assets/icons/typicons_dark/typ_export-grey.svg +0 -4
  189. novelwriter/assets/icons/typicons_dark/typ_export.svg +0 -4
  190. novelwriter/assets/icons/typicons_dark/typ_eye.svg +0 -4
  191. novelwriter/assets/icons/typicons_dark/typ_flag.svg +0 -4
  192. novelwriter/assets/icons/typicons_dark/typ_folder-open.svg +0 -4
  193. novelwriter/assets/icons/typicons_dark/typ_folder.svg +0 -5
  194. novelwriter/assets/icons/typicons_dark/typ_globe-grey.svg +0 -4
  195. novelwriter/assets/icons/typicons_dark/typ_key.svg +0 -4
  196. novelwriter/assets/icons/typicons_dark/typ_lightbulb-full.svg +0 -4
  197. novelwriter/assets/icons/typicons_dark/typ_location.svg +0 -4
  198. novelwriter/assets/icons/typicons_dark/typ_media-pause-grey.svg +0 -4
  199. novelwriter/assets/icons/typicons_dark/typ_media-record-outline.svg +0 -4
  200. novelwriter/assets/icons/typicons_dark/typ_media-record.svg +0 -4
  201. novelwriter/assets/icons/typicons_dark/typ_minus.svg +0 -4
  202. novelwriter/assets/icons/typicons_dark/typ_pencil.svg +0 -5
  203. novelwriter/assets/icons/typicons_dark/typ_pin-outline.svg +0 -4
  204. novelwriter/assets/icons/typicons_dark/typ_pin.svg +0 -4
  205. novelwriter/assets/icons/typicons_dark/typ_plus.svg +0 -4
  206. novelwriter/assets/icons/typicons_dark/typ_puzzle-outline.svg +0 -4
  207. novelwriter/assets/icons/typicons_dark/typ_puzzle.svg +0 -4
  208. novelwriter/assets/icons/typicons_dark/typ_refresh-flipped.svg +0 -4
  209. novelwriter/assets/icons/typicons_dark/typ_refresh.svg +0 -4
  210. novelwriter/assets/icons/typicons_dark/typ_search-grey.svg +0 -4
  211. novelwriter/assets/icons/typicons_dark/typ_search.svg +0 -4
  212. novelwriter/assets/icons/typicons_dark/typ_star.svg +0 -4
  213. novelwriter/assets/icons/typicons_dark/typ_stopwatch-grey.svg +0 -4
  214. novelwriter/assets/icons/typicons_dark/typ_th-dot-menu.svg +0 -4
  215. novelwriter/assets/icons/typicons_dark/typ_th-dot-more.svg +0 -4
  216. novelwriter/assets/icons/typicons_dark/typ_th-list-grey.svg +0 -4
  217. novelwriter/assets/icons/typicons_dark/typ_th-list.svg +0 -9
  218. novelwriter/assets/icons/typicons_dark/typ_times.svg +0 -4
  219. novelwriter/assets/icons/typicons_dark/typ_trash.svg +0 -5
  220. novelwriter/assets/icons/typicons_dark/typ_unfold-hidden.svg +0 -4
  221. novelwriter/assets/icons/typicons_dark/typ_unfold-visible.svg +0 -4
  222. novelwriter/assets/icons/typicons_dark/typ_user.svg +0 -5
  223. novelwriter/assets/icons/typicons_dark/typ_warning-full.svg +0 -4
  224. novelwriter/assets/icons/typicons_light/README.md +0 -29
  225. novelwriter/assets/icons/typicons_light/icons.conf +0 -134
  226. novelwriter/assets/icons/typicons_light/mixed_copy.svg +0 -4
  227. novelwriter/assets/icons/typicons_light/mixed_document-chapter.svg +0 -12
  228. novelwriter/assets/icons/typicons_light/mixed_document-new.svg +0 -6
  229. novelwriter/assets/icons/typicons_light/mixed_document-note.svg +0 -12
  230. novelwriter/assets/icons/typicons_light/mixed_document-scene.svg +0 -12
  231. novelwriter/assets/icons/typicons_light/mixed_document-section.svg +0 -12
  232. novelwriter/assets/icons/typicons_light/mixed_document-title.svg +0 -12
  233. novelwriter/assets/icons/typicons_light/mixed_edit.svg +0 -4
  234. novelwriter/assets/icons/typicons_light/mixed_import.svg +0 -5
  235. novelwriter/assets/icons/typicons_light/mixed_input-checked.svg +0 -5
  236. novelwriter/assets/icons/typicons_light/mixed_input-none.svg +0 -5
  237. novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg +0 -5
  238. novelwriter/assets/icons/typicons_light/mixed_margin-bottom.svg +0 -6
  239. novelwriter/assets/icons/typicons_light/mixed_margin-left.svg +0 -6
  240. novelwriter/assets/icons/typicons_light/mixed_margin-right.svg +0 -6
  241. novelwriter/assets/icons/typicons_light/mixed_margin-top.svg +0 -6
  242. novelwriter/assets/icons/typicons_light/mixed_search-replace.svg +0 -6
  243. novelwriter/assets/icons/typicons_light/mixed_size-height.svg +0 -6
  244. novelwriter/assets/icons/typicons_light/mixed_size-width.svg +0 -6
  245. novelwriter/assets/icons/typicons_light/nw_deco-h0.svg +0 -4
  246. novelwriter/assets/icons/typicons_light/nw_deco-h1.svg +0 -4
  247. novelwriter/assets/icons/typicons_light/nw_deco-h2-narrow.svg +0 -4
  248. novelwriter/assets/icons/typicons_light/nw_deco-h2.svg +0 -4
  249. novelwriter/assets/icons/typicons_light/nw_deco-h3-narrow.svg +0 -4
  250. novelwriter/assets/icons/typicons_light/nw_deco-h3.svg +0 -4
  251. novelwriter/assets/icons/typicons_light/nw_deco-h4-narrow.svg +0 -4
  252. novelwriter/assets/icons/typicons_light/nw_deco-h4.svg +0 -4
  253. novelwriter/assets/icons/typicons_light/nw_deco-note.svg +0 -4
  254. novelwriter/assets/icons/typicons_light/nw_deco-noveltree-more.svg +0 -4
  255. novelwriter/assets/icons/typicons_light/nw_font.svg +0 -4
  256. novelwriter/assets/icons/typicons_light/nw_panel.svg +0 -4
  257. novelwriter/assets/icons/typicons_light/nw_quote.svg +0 -4
  258. novelwriter/assets/icons/typicons_light/nw_search-case.svg +0 -4
  259. novelwriter/assets/icons/typicons_light/nw_search-preserve.svg +0 -4
  260. novelwriter/assets/icons/typicons_light/nw_search-regex.svg +0 -4
  261. novelwriter/assets/icons/typicons_light/nw_search-word.svg +0 -4
  262. novelwriter/assets/icons/typicons_light/nw_tb-bold-md.svg +0 -4
  263. novelwriter/assets/icons/typicons_light/nw_tb-bold.svg +0 -6
  264. novelwriter/assets/icons/typicons_light/nw_tb-italic-md.svg +0 -4
  265. novelwriter/assets/icons/typicons_light/nw_tb-italic.svg +0 -6
  266. novelwriter/assets/icons/typicons_light/nw_tb-mark.svg +0 -7
  267. novelwriter/assets/icons/typicons_light/nw_tb-strike-md.svg +0 -4
  268. novelwriter/assets/icons/typicons_light/nw_tb-strike.svg +0 -6
  269. novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg +0 -7
  270. novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg +0 -7
  271. novelwriter/assets/icons/typicons_light/nw_tb-underline.svg +0 -7
  272. novelwriter/assets/icons/typicons_light/nw_toolbar.svg +0 -5
  273. novelwriter/assets/icons/typicons_light/typ_arrow-down-thick-grey.svg +0 -4
  274. novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg +0 -4
  275. novelwriter/assets/icons/typicons_light/typ_arrow-maximise.svg +0 -4
  276. novelwriter/assets/icons/typicons_light/typ_arrow-minimise.svg +0 -4
  277. novelwriter/assets/icons/typicons_light/typ_arrow-repeat-grey.svg +0 -4
  278. novelwriter/assets/icons/typicons_light/typ_book-grey.svg +0 -4
  279. novelwriter/assets/icons/typicons_light/typ_book.svg +0 -6
  280. novelwriter/assets/icons/typicons_light/typ_bookmark.svg +0 -4
  281. novelwriter/assets/icons/typicons_light/typ_calendar.svg +0 -4
  282. novelwriter/assets/icons/typicons_light/typ_cancel-grey.svg +0 -4
  283. novelwriter/assets/icons/typicons_light/typ_cancel.svg +0 -4
  284. novelwriter/assets/icons/typicons_light/typ_chart-bar-grey.svg +0 -4
  285. novelwriter/assets/icons/typicons_light/typ_chevron-down.svg +0 -4
  286. novelwriter/assets/icons/typicons_light/typ_chevron-left.svg +0 -4
  287. novelwriter/assets/icons/typicons_light/typ_chevron-right.svg +0 -4
  288. novelwriter/assets/icons/typicons_light/typ_chevron-up.svg +0 -4
  289. novelwriter/assets/icons/typicons_light/typ_cog.svg +0 -4
  290. novelwriter/assets/icons/typicons_light/typ_delete-full.svg +0 -4
  291. novelwriter/assets/icons/typicons_light/typ_delete.svg +0 -4
  292. novelwriter/assets/icons/typicons_light/typ_directions-full.svg +0 -4
  293. novelwriter/assets/icons/typicons_light/typ_document-add.svg +0 -4
  294. novelwriter/assets/icons/typicons_light/typ_document-text.svg +0 -5
  295. novelwriter/assets/icons/typicons_light/typ_document.svg +0 -4
  296. novelwriter/assets/icons/typicons_light/typ_export-grey.svg +0 -4
  297. novelwriter/assets/icons/typicons_light/typ_export.svg +0 -4
  298. novelwriter/assets/icons/typicons_light/typ_eye.svg +0 -4
  299. novelwriter/assets/icons/typicons_light/typ_flag.svg +0 -4
  300. novelwriter/assets/icons/typicons_light/typ_folder-open.svg +0 -4
  301. novelwriter/assets/icons/typicons_light/typ_folder.svg +0 -5
  302. novelwriter/assets/icons/typicons_light/typ_globe-grey.svg +0 -4
  303. novelwriter/assets/icons/typicons_light/typ_key.svg +0 -4
  304. novelwriter/assets/icons/typicons_light/typ_lightbulb-full.svg +0 -4
  305. novelwriter/assets/icons/typicons_light/typ_location.svg +0 -4
  306. novelwriter/assets/icons/typicons_light/typ_media-pause-grey.svg +0 -4
  307. novelwriter/assets/icons/typicons_light/typ_media-record-outline.svg +0 -4
  308. novelwriter/assets/icons/typicons_light/typ_media-record.svg +0 -4
  309. novelwriter/assets/icons/typicons_light/typ_minus.svg +0 -4
  310. novelwriter/assets/icons/typicons_light/typ_pencil.svg +0 -5
  311. novelwriter/assets/icons/typicons_light/typ_pin-outline.svg +0 -4
  312. novelwriter/assets/icons/typicons_light/typ_pin.svg +0 -4
  313. novelwriter/assets/icons/typicons_light/typ_plus.svg +0 -4
  314. novelwriter/assets/icons/typicons_light/typ_puzzle-outline.svg +0 -4
  315. novelwriter/assets/icons/typicons_light/typ_puzzle.svg +0 -4
  316. novelwriter/assets/icons/typicons_light/typ_refresh-flipped.svg +0 -4
  317. novelwriter/assets/icons/typicons_light/typ_refresh.svg +0 -4
  318. novelwriter/assets/icons/typicons_light/typ_search-grey.svg +0 -4
  319. novelwriter/assets/icons/typicons_light/typ_search.svg +0 -4
  320. novelwriter/assets/icons/typicons_light/typ_star.svg +0 -4
  321. novelwriter/assets/icons/typicons_light/typ_stopwatch-grey.svg +0 -4
  322. novelwriter/assets/icons/typicons_light/typ_th-dot-menu.svg +0 -4
  323. novelwriter/assets/icons/typicons_light/typ_th-dot-more.svg +0 -4
  324. novelwriter/assets/icons/typicons_light/typ_th-list-grey.svg +0 -4
  325. novelwriter/assets/icons/typicons_light/typ_th-list.svg +0 -9
  326. novelwriter/assets/icons/typicons_light/typ_times.svg +0 -4
  327. novelwriter/assets/icons/typicons_light/typ_trash.svg +0 -5
  328. novelwriter/assets/icons/typicons_light/typ_unfold-hidden.svg +0 -4
  329. novelwriter/assets/icons/typicons_light/typ_unfold-visible.svg +0 -4
  330. novelwriter/assets/icons/typicons_light/typ_user.svg +0 -5
  331. novelwriter/assets/icons/typicons_light/typ_warning-full.svg +0 -4
  332. {novelWriter-2.6.2.dist-info → novelwriter-2.7b1.dist-info}/entry_points.txt +0 -0
  333. {novelWriter-2.6.2.dist-info → novelwriter-2.7b1.dist-info/licenses}/LICENSE.md +0 -0
  334. {novelWriter-2.6.2.dist-info → novelwriter-2.7b1.dist-info}/top_level.txt +0 -0
@@ -29,12 +29,11 @@ import logging
29
29
  from datetime import datetime
30
30
  from typing import TYPE_CHECKING
31
31
 
32
- from PyQt5.QtCore import Qt, pyqtSlot
33
- from PyQt5.QtGui import QCloseEvent, QCursor, QPixmap
34
- from PyQt5.QtWidgets import (
35
- QAction, QApplication, QDialogButtonBox, QFileDialog, QGridLayout,
36
- QGroupBox, QHBoxLayout, QLabel, QMenu, QSpinBox, QTreeWidget,
37
- QTreeWidgetItem
32
+ from PyQt6.QtCore import Qt, pyqtSlot
33
+ from PyQt6.QtGui import QAction, QCloseEvent, QCursor, QPixmap
34
+ from PyQt6.QtWidgets import (
35
+ QApplication, QDialogButtonBox, QFileDialog, QGridLayout, QGroupBox,
36
+ QHBoxLayout, QLabel, QMenu, QSpinBox, QTreeWidget, QTreeWidgetItem
38
37
  )
39
38
 
40
39
  from novelwriter import CONFIG, SHARED
@@ -48,7 +47,7 @@ from novelwriter.types import (
48
47
  QtDialogClose, QtRoleAction
49
48
  )
50
49
 
51
- if TYPE_CHECKING: # pragma: no cover
50
+ if TYPE_CHECKING:
52
51
  from novelwriter.guimain import GuiMain
53
52
 
54
53
  logger = logging.getLogger(__name__)
@@ -83,26 +82,18 @@ class GuiWritingStats(NToolDialog):
83
82
  pOptions = SHARED.project.options
84
83
 
85
84
  self.setWindowTitle(self.tr("Writing Statistics"))
86
- self.setMinimumWidth(CONFIG.pxInt(420))
87
- self.setMinimumHeight(CONFIG.pxInt(400))
85
+ self.setMinimumWidth(420)
86
+ self.setMinimumHeight(400)
88
87
  self.resize(
89
- CONFIG.pxInt(pOptions.getInt("GuiWritingStats", "winWidth", 550)),
90
- CONFIG.pxInt(pOptions.getInt("GuiWritingStats", "winHeight", 500))
88
+ pOptions.getInt("GuiWritingStats", "winWidth", 550),
89
+ pOptions.getInt("GuiWritingStats", "winHeight", 500),
91
90
  )
92
91
 
93
92
  # List Box
94
- wCol0 = CONFIG.pxInt(
95
- pOptions.getInt("GuiWritingStats", "widthCol0", 180)
96
- )
97
- wCol1 = CONFIG.pxInt(
98
- pOptions.getInt("GuiWritingStats", "widthCol1", 80)
99
- )
100
- wCol2 = CONFIG.pxInt(
101
- pOptions.getInt("GuiWritingStats", "widthCol2", 80)
102
- )
103
- wCol3 = CONFIG.pxInt(
104
- pOptions.getInt("GuiWritingStats", "widthCol3", 80)
105
- )
93
+ wCol0 = pOptions.getInt("GuiWritingStats", "widthCol0", 180)
94
+ wCol1 = pOptions.getInt("GuiWritingStats", "widthCol1", 80)
95
+ wCol2 = pOptions.getInt("GuiWritingStats", "widthCol2", 80)
96
+ wCol3 = pOptions.getInt("GuiWritingStats", "widthCol3", 80)
106
97
 
107
98
  self.listBox = QTreeWidget(self)
108
99
  self.listBox.setHeaderLabels([
@@ -124,18 +115,16 @@ class GuiWritingStats(NToolDialog):
124
115
  hHeader.setTextAlignment(self.C_IDLE, QtAlignRight)
125
116
  hHeader.setTextAlignment(self.C_COUNT, QtAlignRight)
126
117
 
127
- sDec = Qt.SortOrder.DescendingOrder
128
- sAsc = Qt.SortOrder.AscendingOrder
129
118
  sortCol = minmax(pOptions.getInt("GuiWritingStats", "sortCol", 0), 0, 2)
130
119
  sortOrder = checkIntTuple(
131
- pOptions.getInt("GuiWritingStats", "sortOrder", sDec), (sAsc, sDec), sDec
120
+ pOptions.getInt("GuiWritingStats", "sortOrder", 1), (0, 1), 1
132
121
  )
133
- self.listBox.sortByColumn(sortCol, sortOrder) # type: ignore
122
+ sortOrders = (Qt.SortOrder.AscendingOrder, Qt.SortOrder.DescendingOrder)
123
+ self.listBox.sortByColumn(sortCol, sortOrders[sortOrder])
134
124
  self.listBox.setSortingEnabled(True)
135
125
 
136
126
  # Word Bar
137
- self.barHeight = int(round(0.5*SHARED.theme.fontPixelSize))
138
- self.barWidth = CONFIG.pxInt(200)
127
+ self.barHeight = round(0.5*SHARED.theme.fontPixelSize)
139
128
  self.barImage = QPixmap(self.barHeight, self.barHeight)
140
129
  self.barImage.fill(self.palette().highlight().color())
141
130
 
@@ -264,26 +253,28 @@ class GuiWritingStats(NToolDialog):
264
253
  self.optsBox.addWidget(self.histMax, 0)
265
254
 
266
255
  # Buttons
267
- self.buttonBox = QDialogButtonBox(self)
268
- self.buttonBox.rejected.connect(self._doClose)
269
-
270
- self.btnClose = self.buttonBox.addButton(QtDialogClose)
271
- self.btnClose.setAutoDefault(False)
272
-
273
- self.btnSave = self.buttonBox.addButton(self.tr("Save As"), QtRoleAction)
274
- self.btnSave.setAutoDefault(False)
275
-
276
- self.saveMenu = QMenu(self)
277
- self.btnSave.setMenu(self.saveMenu)
278
-
279
256
  self.saveJSON = QAction(self.tr("JSON Data File (.json)"), self)
280
257
  self.saveJSON.triggered.connect(qtLambda(self._saveData, self.FMT_JSON))
281
- self.saveMenu.addAction(self.saveJSON)
282
258
 
283
259
  self.saveCSV = QAction(self.tr("CSV Data File (.csv)"), self)
284
260
  self.saveCSV.triggered.connect(qtLambda(self._saveData, self.FMT_CSV))
261
+
262
+ self.saveMenu = QMenu(self)
263
+ self.saveMenu.addAction(self.saveJSON)
285
264
  self.saveMenu.addAction(self.saveCSV)
286
265
 
266
+ self.buttonBox = QDialogButtonBox(self)
267
+ self.buttonBox.rejected.connect(self._doClose)
268
+
269
+ self.btnClose = self.buttonBox.addButton(QtDialogClose)
270
+ if self.btnClose:
271
+ self.btnClose.setAutoDefault(False)
272
+
273
+ self.btnSave = self.buttonBox.addButton(self.tr("Save As"), QtRoleAction)
274
+ if self.btnSave:
275
+ self.btnSave.setAutoDefault(False)
276
+ self.btnSave.setMenu(self.saveMenu)
277
+
287
278
  # Assemble
288
279
  self.outerBox = QGridLayout()
289
280
  self.outerBox.addWidget(self.listBox, 0, 0, 1, 2)
@@ -330,14 +321,10 @@ class GuiWritingStats(NToolDialog):
330
321
  """Save the state of the window, clear cache, end close."""
331
322
  self.logData = []
332
323
 
333
- winWidth = CONFIG.rpxInt(self.width())
334
- winHeight = CONFIG.rpxInt(self.height())
335
- widthCol0 = CONFIG.rpxInt(self.listBox.columnWidth(0))
336
- widthCol1 = CONFIG.rpxInt(self.listBox.columnWidth(1))
337
- widthCol2 = CONFIG.rpxInt(self.listBox.columnWidth(2))
338
- widthCol3 = CONFIG.rpxInt(self.listBox.columnWidth(3))
324
+ header = self.listBox.header()
325
+
339
326
  sortCol = self.listBox.sortColumn()
340
- sortOrder = self.listBox.header().sortIndicatorOrder()
327
+ sortOrder = header.sortIndicatorOrder() if header else 0
341
328
  incNovel = self.incNovel.isChecked()
342
329
  incNotes = self.incNotes.isChecked()
343
330
  hideZeros = self.hideZeros.isChecked()
@@ -348,12 +335,12 @@ class GuiWritingStats(NToolDialog):
348
335
 
349
336
  logger.debug("Saving State: GuiWritingStats")
350
337
  pOptions = SHARED.project.options
351
- pOptions.setValue("GuiWritingStats", "winWidth", winWidth)
352
- pOptions.setValue("GuiWritingStats", "winHeight", winHeight)
353
- pOptions.setValue("GuiWritingStats", "widthCol0", widthCol0)
354
- pOptions.setValue("GuiWritingStats", "widthCol1", widthCol1)
355
- pOptions.setValue("GuiWritingStats", "widthCol2", widthCol2)
356
- pOptions.setValue("GuiWritingStats", "widthCol3", widthCol3)
338
+ pOptions.setValue("GuiWritingStats", "winWidth", self.width())
339
+ pOptions.setValue("GuiWritingStats", "winHeight", self.height())
340
+ pOptions.setValue("GuiWritingStats", "widthCol0", self.listBox.columnWidth(0))
341
+ pOptions.setValue("GuiWritingStats", "widthCol1", self.listBox.columnWidth(1))
342
+ pOptions.setValue("GuiWritingStats", "widthCol2", self.listBox.columnWidth(2))
343
+ pOptions.setValue("GuiWritingStats", "widthCol3", self.listBox.columnWidth(3))
357
344
  pOptions.setValue("GuiWritingStats", "sortCol", sortCol)
358
345
  pOptions.setValue("GuiWritingStats", "sortOrder", sortOrder)
359
346
  pOptions.setValue("GuiWritingStats", "incNovel", incNovel)
@@ -460,7 +447,7 @@ class GuiWritingStats(NToolDialog):
460
447
  rType = record.get("type")
461
448
  if rType == "initial":
462
449
  self.wordOffset = checkInt(record.get("offset"), 0)
463
- logger.debug("Initial word count when log was started is %d" % self.wordOffset)
450
+ logger.debug("Initial word count when log was started is %d", self.wordOffset)
464
451
  elif rType == "record":
465
452
  try:
466
453
  dStart = datetime.fromisoformat(str(record.get("start")))
@@ -583,7 +570,7 @@ class GuiWritingStats(NToolDialog):
583
570
  idleEntry = formatTime(sIdle)
584
571
  else:
585
572
  sRatio = sIdle/sDiff if sDiff > 0.0 else 0.0
586
- idleEntry = "%d %%" % round(100.0 * sRatio)
573
+ idleEntry = f"{round(100.0 * sRatio)} %"
587
574
 
588
575
  newItem = QTreeWidgetItem()
589
576
  newItem.setText(self.C_TIME, sStart)
novelwriter/types.py CHANGED
@@ -23,12 +23,9 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
23
23
  """
24
24
  from __future__ import annotations
25
25
 
26
- from PyQt5.QtCore import Qt
27
- from PyQt5.QtGui import (
28
- QColor, QFont, QPainter, QTextBlockFormat, QTextCharFormat, QTextCursor,
29
- QTextFormat
30
- )
31
- from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QHeaderView, QSizePolicy, QStyle
26
+ from PyQt6.QtCore import Qt
27
+ from PyQt6.QtGui import QColor, QFont, QPainter, QTextCharFormat, QTextCursor, QTextFormat
28
+ from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QHeaderView, QSizePolicy, QStyle
32
29
 
33
30
  # Qt Alignment Flags
34
31
 
@@ -56,7 +53,7 @@ QtVAlignSuper = QTextCharFormat.VerticalAlignment.AlignSuperScript
56
53
  QtPageBreakBefore = QTextFormat.PageBreakFlag.PageBreak_AlwaysBefore
57
54
  QtPageBreakAfter = QTextFormat.PageBreakFlag.PageBreak_AlwaysAfter
58
55
 
59
- QtPropLineHeight = QTextBlockFormat.LineHeightTypes.ProportionalHeight
56
+ QtPropLineHeight = 1 # QTextBlockFormat.LineHeightTypes.ProportionalHeight
60
57
 
61
58
  # Qt Painter Types
62
59
 
@@ -73,6 +70,7 @@ QtSelected = QStyle.StateFlag.State_Selected
73
70
  # Qt Colour Types
74
71
 
75
72
  QtHexRgb = QColor.NameFormat.HexRgb
73
+ QtHexArgb = QColor.NameFormat.HexArgb
76
74
 
77
75
  # Qt Tree and Table Types
78
76
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: novelWriter
3
- Version: 2.6.2
3
+ Version: 2.7b1
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
@@ -9,7 +9,6 @@ Project-URL: Documentation, https://docs.novelwriter.io
9
9
  Project-URL: Repository, https://github.com/vkbo/novelWriter
10
10
  Project-URL: Issues, https://github.com/vkbo/novelWriter/issues
11
11
  Classifier: Programming Language :: Python :: 3 :: Only
12
- Classifier: Programming Language :: Python :: 3.9
13
12
  Classifier: Programming Language :: Python :: 3.10
14
13
  Classifier: Programming Language :: Python :: 3.11
15
14
  Classifier: Programming Language :: Python :: 3.12
@@ -21,11 +20,12 @@ Classifier: Operating System :: OS Independent
21
20
  Classifier: Intended Audience :: End Users/Desktop
22
21
  Classifier: Natural Language :: English
23
22
  Classifier: Topic :: Text Editors
24
- Requires-Python: >=3.9
23
+ Requires-Python: >=3.10
25
24
  Description-Content-Type: text/markdown
26
25
  License-File: LICENSE.md
27
- Requires-Dist: pyqt5>=5.15
26
+ Requires-Dist: pyqt6>=6.4
28
27
  Requires-Dist: pyenchant>=3.0.0
28
+ Dynamic: license-file
29
29
 
30
30
  <img src="https://raw.githubusercontent.com/vkbo/novelWriter/main/setup/novelwriter_text.png">
31
31
 
@@ -39,7 +39,7 @@ synchronisation tools. All text is saved as plain text files with a meta data he
39
39
  project structure is stored in a single project XML file, and other meta data is primarily saved as
40
40
  JSON files.
41
41
 
42
- The application is written with Python 3 (3.9+) using Qt5 and PyQt5 (5.10+). It is developed on
42
+ The application is written with Python 3 (3.10+) using Qt6 and PyQt6 (5.10+). It is developed on
43
43
  Linux, but should in principle work fine on other operating systems as well as long as dependencies
44
44
  are met. It is regularly tested on Debian and Ubuntu Linux, Windows, and MacOS.
45
45
 
@@ -0,0 +1,159 @@
1
+ novelwriter/__init__.py,sha256=hhi_IRjEkyncjQdPXdLZ0LugbDEwcKKhkIGM5cXAHvE,9298
2
+ novelwriter/common.py,sha256=0lhdtnV-JC7E0fY94AbAYzdr2_7RlTZYc2Rrb--PN-c,21906
3
+ novelwriter/config.py,sha256=ZiIUoNHUD4SSCLWe_tVWExhjKoheou6qFD8JEta_Tdc,42045
4
+ novelwriter/constants.py,sha256=EgRP0l6N0PBRUbQxWKl2OWcDLyIaDbPhme_uW9Y2b_g,27884
5
+ novelwriter/enum.py,sha256=_T1Un3H1SmpfHUw1CEPZuXSKJNT6RQWeN6N5p8yBx8E,3724
6
+ novelwriter/error.py,sha256=HPKDJb0NPTyVRsrPNG_I1-XfLXlvYAJuE2Xi7maWvXM,6828
7
+ novelwriter/guimain.py,sha256=sBzbGAqz1uRx-NbsDeNdJkjBAWVBX4HpKKj1Kt8mzqQ,49493
8
+ novelwriter/shared.py,sha256=8JTkFi7QXmQddGNVaSBIvKPfDXLaJ9XWNmUJblpfXvs,17795
9
+ novelwriter/types.py,sha256=wehbzAD13D2Ky4fqH3z7jK82uS4dNr19mH94AuLoIOA,5111
10
+ novelwriter/assets/manual.pdf,sha256=skreCVnehm7SR6OLHYvoVH-oK82sqW8K0UvrE-IwyWo,2746106
11
+ novelwriter/assets/manual_fr.pdf,sha256=T3f7fgwTSI78j0y4CC2utH3UJpo31GsK1TGr2dNMoUU,2789952
12
+ novelwriter/assets/sample.zip,sha256=fLl1XT8NF60dMhVPHGdQYGM1CKYGuNoRZf9HbpkptyA,13911
13
+ novelwriter/assets/i18n/nw_cs_CZ.qm,sha256=wqS376aERqXduw3lc7FFhcWapwcn9NYdTICkZYoDI1w,97499
14
+ novelwriter/assets/i18n/nw_de_DE.qm,sha256=xKyyeNEd02EquAF7KSiHr4GUccfagD74O_gipoQK1Io,102467
15
+ novelwriter/assets/i18n/nw_en_US.qm,sha256=fRG9Tg0a9IwsinP1wU162P_Y7mNl-grTKKx3TzKndSI,95213
16
+ novelwriter/assets/i18n/nw_es_419.qm,sha256=enE-iIGb_7DypKUXj9o4vddauaR6NO5KO9aAoh9GsEI,105334
17
+ novelwriter/assets/i18n/nw_fr_FR.qm,sha256=nIuseguPyp-BW-2QaxZTgTEAq82epUZyAsCpm3Vl0Wg,105307
18
+ novelwriter/assets/i18n/nw_it_IT.qm,sha256=eQKNQVvvwO_ja95sSXvZMkAv2TCxBIDYsMcT3k3KeC4,105449
19
+ novelwriter/assets/i18n/nw_ja_JP.qm,sha256=fMTV1RI_GhpStiX8RlkCIsyawz6tfcSfrFzuHzS-zpU,78818
20
+ novelwriter/assets/i18n/nw_nb_NO.qm,sha256=HIwt18aTorGzdk0j98XJtr652Hd3mCPZi8Ee771-vZw,97781
21
+ novelwriter/assets/i18n/nw_nl_NL.qm,sha256=igF8xjFTb4BBnyFThnLCqmk_KQLP3KcDWdUvjfwdBD8,96665
22
+ novelwriter/assets/i18n/nw_pl_PL.qm,sha256=etp4w60penSQTTsUavoWFcz1G8vtrV4RPAHTWloCrEg,100719
23
+ novelwriter/assets/i18n/nw_pt_BR.qm,sha256=LKeE4hvMlGRk0VIhuIuOkWcOy0SRf0fgQRbhuLQ0dgk,103757
24
+ novelwriter/assets/i18n/nw_ru_RU.qm,sha256=T44JdPKRuI27Az7ZjVznT-O4pR941-iVlV6agR-ydcI,94800
25
+ novelwriter/assets/i18n/nw_zh_CN.qm,sha256=_MbLHUgM3jBnDBU_fsB3vQlAw8YeWQKpidgJ5p-jiIo,70468
26
+ novelwriter/assets/i18n/project_cs_CZ.json,sha256=0A71su1wmPrGD1DD3FruFqnoWQqo4XaggWp5NJKT9lc,2861
27
+ novelwriter/assets/i18n/project_de_DE.json,sha256=-9-FF2zYD9ulez9dXAKLbFWsbEX2KLXKE1cJS8csx1g,2866
28
+ novelwriter/assets/i18n/project_en_GB.json,sha256=yXXq55mueux5jiGw0Y3FBkXIgnhIGc6iZYgB13KtNHs,2577
29
+ novelwriter/assets/i18n/project_en_US.json,sha256=CvBOO8kaW0k7NlwvxFi62Br9HYKJKQLDk1nQfvXOj48,2537
30
+ novelwriter/assets/i18n/project_es_419.json,sha256=NQa1iAyQaoNyFSAfrPXNaoKyStyw7nexnGUHf-UMkOo,2792
31
+ novelwriter/assets/i18n/project_fr_FR.json,sha256=6ATiNU0YGEXwx_c2LpDvP7eCUDdUiGxtrssCVTiiyC8,2859
32
+ novelwriter/assets/i18n/project_it_IT.json,sha256=LHbGZT6MOHOmIKrl6HD1-Tl_RxKbeEL0eXqPVK0VwM8,2633
33
+ novelwriter/assets/i18n/project_ja_JP.json,sha256=CK8yvTAr_58mDMSU-XAXYk3ny9Iryp21EZ80dGJ60E8,2451
34
+ novelwriter/assets/i18n/project_nb_NO.json,sha256=CS4nU-8AnnmQLiET5wAsFa4F7UHimjCTbxzmtGugw0A,2350
35
+ novelwriter/assets/i18n/project_nl_NL.json,sha256=wlXDfy4rMKyXP0X3r22qSNFuseO33bePAHqvIVk_tHQ,2742
36
+ novelwriter/assets/i18n/project_nn_NO.json,sha256=7ZfmtFWHcDMiLVqdOEDHQWHbpoC_bv5ESmf_-CoYiks,2250
37
+ novelwriter/assets/i18n/project_pl_PL.json,sha256=2mAchml-aT95ZT9qi3pAEMyyze5swkRa-OCWq6ZMoGk,3517
38
+ novelwriter/assets/i18n/project_pt_BR.json,sha256=lCtbr_i2gN3Atii1EgMn-B5SMP71_x4YsF7wXx7Hi7s,2828
39
+ novelwriter/assets/i18n/project_ru_RU.json,sha256=Lq8msxzjhkFHXPJAmEEyjoFOUV28CLJXmayY3h3jiAo,4075
40
+ novelwriter/assets/i18n/project_zh_CN.json,sha256=CGnJO6ElV40fm7yElNtDwHYsd_32d-cR7h1jG4xx4eY,2377
41
+ novelwriter/assets/icons/font_awesome.icons,sha256=xe54nRX90DbcA2DGTYUEPagbGgrLQlusuJa0TvBmUbg,50737
42
+ novelwriter/assets/icons/material_filled_bold.icons,sha256=RBlkfnJ46uVq3HZbj7Wdfktc8wSexktao1E_H2puKH8,83050
43
+ novelwriter/assets/icons/material_filled_normal.icons,sha256=CTsuQKjph62heUboAIqin5LGZogFWbQ7gW--rvZDz_I,52676
44
+ novelwriter/assets/icons/material_filled_thin.icons,sha256=nXKFTAdcKw804Ans6pzSMMRbp2NUB57rG0I3NTHZBhg,77811
45
+ novelwriter/assets/icons/material_rounded_bold.icons,sha256=AEPa7O1SE3LGB_R-y1TVaFCCHzo3JormUwiqAlUksUY,88989
46
+ novelwriter/assets/icons/material_rounded_normal.icons,sha256=-_sqmHopUjX3BOpU4OiX0gSfUxrRbaVTFv8JNYLMp7E,56332
47
+ novelwriter/assets/icons/material_rounded_thin.icons,sha256=4Q0UoMOPfGCF0F7Oli10k7i1X7vQLFznbS4Wt8mOa7s,87020
48
+ novelwriter/assets/icons/none.svg,sha256=NRN9vMzohg7Ner71GwPthrCG0uA81TpY8UmKb8-L-pM,251
49
+ novelwriter/assets/icons/novelwriter.ico,sha256=OJRIeeUcmS7Di51NA3uF5_Ov4V8T47gQ9qWv6C7qDeA,171059
50
+ novelwriter/assets/icons/novelwriter.svg,sha256=Ad_SgOdXSDJtFR3DLCx6Afme15I78r38_YxCfO9F2z4,8511
51
+ novelwriter/assets/icons/remix_filled.icons,sha256=oF2xP1QOjxLAtCQLnZq1oF5b7OaUO5jgxUaXsvY8LqM,42525
52
+ novelwriter/assets/icons/remix_outline.icons,sha256=XGHcXVqr24HKWh_-AkQ8RPM_nJBQFNo9IGDi4MDQKfY,46595
53
+ novelwriter/assets/icons/x-novelwriter-project.ico,sha256=MXdZSYi3j95aIsT5bZo6CkhxmS75cThP9O_38UR7sjg,170697
54
+ novelwriter/assets/icons/x-novelwriter-project.svg,sha256=VHf1aClkA91tZVYb3LFk9bi_Dw25QBVSjUJAjSD-YX4,5143
55
+ novelwriter/assets/images/novelwriter-text-dark.svg,sha256=gbbDiXd92OV5c6qGREDkAnTnEApxYPbqyrbUHB8mtiM,5976
56
+ novelwriter/assets/images/novelwriter-text-light.svg,sha256=ziTrfrr0WO9JWBzSfuuKBlYFCkENfEBp3MyOYTNGUYQ,5983
57
+ novelwriter/assets/images/welcome-dark.jpg,sha256=MPRYUI1yEjzee1uHGWlrR352U1LFSSV92awDheFtmZo,299007
58
+ novelwriter/assets/images/welcome-light.jpg,sha256=FcS5GA5G6o9KgmADYHktyR3GHquNlPNIUQeQQiscQzA,279989
59
+ novelwriter/assets/syntax/cyberpunk_night.conf,sha256=la_KtpSkuQvP9LoCNlKjK5tsqGrT9MYl--CTlzOm2Ks,826
60
+ novelwriter/assets/syntax/default_dark.conf,sha256=2aczHlskobF6c6VQOaucrkygBbTK6jIyc9UlP8_TcMk,1258
61
+ novelwriter/assets/syntax/default_light.conf,sha256=jmUmG1EO0yOyBbr-2DM4VW56MlBnMfaAaVaeLVECF-c,1259
62
+ novelwriter/assets/syntax/dracula.conf,sha256=fWA2tVAvCH9PPYZV0yTriA_9O5SLqamqTnJQnddJ8Mc,1323
63
+ novelwriter/assets/syntax/grey_dark.conf,sha256=L075no7vkh8ErukXVMIQVFe8zDfPQa2wdcYRQ-S80tI,877
64
+ novelwriter/assets/syntax/grey_light.conf,sha256=KulyqCZYTCSY_c8FMI3VSylDNpuYwrsWAS8vCipiHsY,878
65
+ novelwriter/assets/syntax/light_owl.conf,sha256=5sF7omkEIAs0inQCghbwIL-NmfN4vVNglzUP24zPU_Q,1529
66
+ novelwriter/assets/syntax/night_owl.conf,sha256=Tb_urqMBytO2fiy7Bo4ikVis6KT0nzwj22vVeBUsfqM,1529
67
+ novelwriter/assets/syntax/snazzy.conf,sha256=qM5K-3_OgzCZ54MP6kXtGPzsYT3mrCVyseE3YC1NsSE,1304
68
+ novelwriter/assets/syntax/solarized_dark.conf,sha256=BE9KAIcjiWKKY0blggVDqWkkMyD2AS0GbfwPXWYjLvQ,865
69
+ novelwriter/assets/syntax/solarized_light.conf,sha256=E9sA87QmRNp2mzYZM3O9bHzyaVhXX-z9nhhpm3NOFlc,866
70
+ novelwriter/assets/syntax/tango.conf,sha256=9ITFNN2iS0DOTr7NB-w5vlc_XPD32Oc4j5PeXhptsXQ,1124
71
+ novelwriter/assets/syntax/tomorrow.conf,sha256=Oj0TGfnzwvlVBA52CC9xU0BBK_M4NwBHLBeEhbvsTzM,1527
72
+ novelwriter/assets/syntax/tomorrow_night.conf,sha256=mWPneIV_6tszLEK4-Eo-kcJmUbrkzMJHohgKBFKnpaE,1539
73
+ novelwriter/assets/syntax/tomorrow_night_blue.conf,sha256=L42gcekFfNpCCB45m9Lhzmz8Y6Lvbpik3AADi_1Aao8,1549
74
+ novelwriter/assets/syntax/tomorrow_night_bright.conf,sha256=h8_775Ed8hl2XhfCoxAY2kT43vi-UvG8UHik1aI4eRw,1554
75
+ novelwriter/assets/syntax/tomorrow_night_eighties.conf,sha256=stO_xH5RzMN0jaZeYr53LVXbpqSmIXALBFGVLlJBDLA,1557
76
+ novelwriter/assets/text/credits_en.htm,sha256=NkC68OmhTCGItDWUMhzUcPQ2O03CiIA5LZX0hBRx0YI,3010
77
+ novelwriter/assets/text/lipsum.txt,sha256=sGA6AC_p4jrUifxLxy3cSODeRwkpBNXDPGgX6YRTm2s,62937
78
+ novelwriter/assets/themes/cyberpunk_night.conf,sha256=UT4tm03jBc-JRDrUKb6aLBJVF2JkQl-fha4_iHGpAs4,1331
79
+ novelwriter/assets/themes/default.conf,sha256=K0LZ64lODpCtUg3pISTAP4UKvEYMvPkmIYN9RDEaWwk,72
80
+ novelwriter/assets/themes/default_dark.conf,sha256=H9ZC8F0dKcflGOcNkwGqB4ioS3FR_60ZGIU79oReBwg,1397
81
+ novelwriter/assets/themes/default_light.conf,sha256=SJpcNl1qsy85j9moalEDncHQh6LpgBKBAZZHqxCV9oI,1399
82
+ novelwriter/assets/themes/dracula.conf,sha256=c0yNTVaI2vTQIyS1BL6XqJjsnRX0N1sMfaW14FH4iV4,1833
83
+ novelwriter/assets/themes/solarized_dark.conf,sha256=17Ylx-hA4zS92MWgWxiTqchUCYVCMvqIwNEiSOJEc-0,1325
84
+ novelwriter/assets/themes/solarized_light.conf,sha256=zb9M41VnPjR0nx6ZP-YcY-cb-TgS_oIHlok-L3HfJek,1326
85
+ novelwriter/core/buildsettings.py,sha256=nEBhVe2HKmvR3KA6Xy4H3s1trE6fVXraCkM5Dn0rWus,24908
86
+ novelwriter/core/coretools.py,sha256=MLe10eLwJ3sJYZQES-KoZDaoCVXj8NM94vJ8tuflg5Y,21233
87
+ novelwriter/core/docbuild.py,sha256=_XQgNv6sV5LjlYR6IMJM4ZCfzBUz7XOIOjHbD_erRS8,14085
88
+ novelwriter/core/document.py,sha256=AA6Fhwi9Q-UtAFYXjMUXSU-cQF2jogScqPJ5sNaRbEI,12139
89
+ novelwriter/core/index.py,sha256=N3HZm-gPOpMNzBZH6TR4gqKCOOh86W061mzs00DRdfo,40066
90
+ novelwriter/core/indexdata.py,sha256=OlvzrjmCN94oab7kKHUdOiewswrRhMiRkGCP5Ieb2-4,13035
91
+ novelwriter/core/item.py,sha256=f5hniHRQKJhlgRfzYRJozIiP3rYrnjMfLzzmfqlwn0U,19126
92
+ novelwriter/core/itemmodel.py,sha256=YyOS5Fx1RYMYNU82vD99jozhjIUux1MphRlmXL0adG4,18238
93
+ novelwriter/core/novelmodel.py,sha256=sIhqkz3mN-XmetlLRKLNZnmcLU-7ZghPRrHkUAyttVI,7292
94
+ novelwriter/core/options.py,sha256=CTHf2RclRBiZM9No-fZ2x6XyJ1oRPvEoPuujQR8wE0I,7462
95
+ novelwriter/core/project.py,sha256=UNbLUcPHSryWyrm7u6dzzfsZG0rmDeyoirV-TYF4ET4,20887
96
+ novelwriter/core/projectdata.py,sha256=7aBJKbNXFiE1bW0q63CpYw7q0gmK0nNft07LMM-Ame4,9978
97
+ novelwriter/core/projectxml.py,sha256=0QcasScb5yJ1pqQdPMUsjr871hMJEkTvWB2iMHvgCGM,22018
98
+ novelwriter/core/sessions.py,sha256=EJtKRNIyb8yh2_g4QY2xts1b3BosFKGt5Rj7i8cnQrQ,4415
99
+ novelwriter/core/spellcheck.py,sha256=W3GvFduzo4Ys5WYKu7Q4AhmMs_hvFQGSTauE-hHfewg,7161
100
+ novelwriter/core/status.py,sha256=Yy-maybHw42JvAcfpc4HwHXmvmf3ceoV0aJ2pbbmoio,12113
101
+ novelwriter/core/storage.py,sha256=O6HN0L6_WQOfq651KFA216hjax9phCZeyXekiFjL3Mc,20931
102
+ novelwriter/core/tree.py,sha256=p7YHj9_drZW-94jSXw1FpZ3-ALlGyw7f95RfRQ6IblQ,20420
103
+ novelwriter/dialogs/about.py,sha256=hDoXF8kRwwAUBJaZmYqnOggA6zgdZJH8aYLYhWntK7Q,4524
104
+ novelwriter/dialogs/docmerge.py,sha256=YpIhduF4psVK3Z_TFt9vYr2f-8oUMrSPK5jh2UIy_m8,6031
105
+ novelwriter/dialogs/docsplit.py,sha256=d4OsHzYhxgGnpVrEf_TrZ7pERPhgPXDe0CzG-LNlphY,9217
106
+ novelwriter/dialogs/editlabel.py,sha256=ezU2jE4paIyz3x05T7ENiQlKUw27gcz-p-YNHhknuE0,2897
107
+ novelwriter/dialogs/preferences.py,sha256=ZNbtVH1939DngxO9cEax1YZ4ePbW5wWxIEsuPAsufMw,41422
108
+ novelwriter/dialogs/projectsettings.py,sha256=q5Db2UXDjBYTnmafbpchm4um7PesommVBOoCixflaAs,29788
109
+ novelwriter/dialogs/quotes.py,sha256=X_LIHktkn7r-UgRwv2FalZ3n5_a8FKTW0ceS3iWOmgU,4553
110
+ novelwriter/dialogs/wordlist.py,sha256=lPZi5fwqOhr12KsvnO4CC1BFtSnjSuTMCbZm5S0JRzk,8507
111
+ novelwriter/extensions/configlayout.py,sha256=u3z9zjCseOy1qpUqc8Qabcp2a0z9STAXdK7h0Co9uWk,10729
112
+ novelwriter/extensions/eventfilters.py,sha256=JKhcLGcBALljL3Rtu0zyoZrOajAfeOymgid9MWNlDQs,2601
113
+ novelwriter/extensions/modified.py,sha256=z-u-HQV3zBYiAVd70IS-ydYBjD3RuCfAwCYu_LKwF6w,6980
114
+ novelwriter/extensions/novelselector.py,sha256=Ou8Hu5Bdp1pFLWmIBc7sEg6dvbgm3bfV0Zovdr1hMoM,4283
115
+ novelwriter/extensions/pagedsidebar.py,sha256=Wj9c1WcCbawgE8Ib29GTzLySJ0gqY_xpW-TtEYHd-8s,6925
116
+ novelwriter/extensions/progressbars.py,sha256=sbCUx0pTJGj-bsYimcDcZizZqoi6AfVaQ9y8Yi10Fq0,4655
117
+ novelwriter/extensions/statusled.py,sha256=QeVYlmNn1GcT6CnL1zMIxaYyRSZZMLGONhm46wseovc,2738
118
+ novelwriter/extensions/switch.py,sha256=puaoJs65DLa8dnFlCrnsy12Vp5HHN1bOSFtFnW4cVSg,4019
119
+ novelwriter/extensions/switchbox.py,sha256=0jiZMx-BmSZXVStGd6K30oEY2PvYnCOljiOBJe0_p_8,4280
120
+ novelwriter/extensions/versioninfo.py,sha256=8DTvtu4sFPCioY7L-3rK1_sAN1qod3XwXl3F4LtKbDY,5046
121
+ novelwriter/formats/shared.py,sha256=I_MfvU9ZuN23WblDXdggiV282cXuPDpkq72M3MyK-G8,4666
122
+ novelwriter/formats/todocx.py,sha256=WNIW2RJst7ai3C8IKHcQjwbh-KRzoZnhjWwVmjug_yc,40342
123
+ novelwriter/formats/tohtml.py,sha256=04OjlD_kZJyWBIuUc2olX-jSVh89_lLctST89gWIQMw,17153
124
+ novelwriter/formats/tokenizer.py,sha256=C-Y6ZIvxr1_PhCxjhXnZkQmHdVgkrYoqyPbY-zgROtg,48611
125
+ novelwriter/formats/tomarkdown.py,sha256=CN9mJRwqoit1c9rOHwsqBZEpPjEWYvh81IVgttUxtEU,7044
126
+ novelwriter/formats/toodt.py,sha256=LuzN8vE46mclcfpOs9QZcElXDVOx14wjyKPkOQE6KYQ,58672
127
+ novelwriter/formats/toqdoc.py,sha256=-drPu62rVw_velHTkEEToKiM6-B8PvozX4PPnlDuu_k,18159
128
+ novelwriter/formats/toraw.py,sha256=6qLNvDc87t6c25j1H2IL9whajp1u-SOnHFk9c4gV_7E,2903
129
+ novelwriter/gui/doceditor.py,sha256=LOVfbmA1tG1JgrPEFoj9GvCm3QFaV_FitckqZFtar60,115283
130
+ novelwriter/gui/dochighlight.py,sha256=DDCEK9iKUBd5miScrJCj9NlRj3sdOgD_bY8_4ARsSMg,19576
131
+ novelwriter/gui/docviewer.py,sha256=5xRmA0Fng7c5Y0hnwHFKzlvLdgoKkg3JxDajylkPW5I,34438
132
+ novelwriter/gui/docviewerpanel.py,sha256=m5e9hO5dgV729RnOEJzNzCOU2CB3vPzp4TB4HKgTjGA,19361
133
+ novelwriter/gui/editordocument.py,sha256=SPWulwJEsG_m_d7cJzAa8fhWmNKLGNPfI-Lsq_mF9CU,4774
134
+ novelwriter/gui/itemdetails.py,sha256=3mwtSGmOwKkFsFQi6ydmkaPaT4Eecg4fetkG6TduPWk,9605
135
+ novelwriter/gui/mainmenu.py,sha256=toBoa8tuSKuFrCClGdyI2jVF82kp3V2ZWC3W4xzrfFU,42043
136
+ novelwriter/gui/noveltree.py,sha256=nVK_9grBbtkJoypnI12Ds8g1bxobLw1Wr5LRYEwehRg,20515
137
+ novelwriter/gui/outline.py,sha256=dFiLyRolyW60h_ltM8AyukeaEMdpufnfyqPIDguGHxk,41434
138
+ novelwriter/gui/projtree.py,sha256=3qIXOw7wXlOsBLjoYytMk0nptj6FwdJovREsaxGTS00,53697
139
+ novelwriter/gui/search.py,sha256=LE5f_gCBEXrDDm-zyyjH62611kBKY9_-Cvmk5gr1DrQ,13040
140
+ novelwriter/gui/sidebar.py,sha256=-H81QNrBC-BJ-cCNHsvlo8_IEYH7EMpS60x72kffcR8,6040
141
+ novelwriter/gui/statusbar.py,sha256=p3VhZsC-lvfTHUIVe6iBHA4giIrkhOWDs0n0GmMd-WI,9506
142
+ novelwriter/gui/theme.py,sha256=qibS7gJ44umv6tj5omN8Vjk57ydXBXFUX96CUwUPqVM,35851
143
+ novelwriter/text/comments.py,sha256=bkmWdQ2MJ7N_ym_F9TBWN7wZc8SOe-Af1K-r3nxFyEM,2265
144
+ novelwriter/text/counting.py,sha256=JEU-kv5BCdiFfTQc8Uk5Sym2WbRgJ4AKtixlwQIZe1M,4407
145
+ novelwriter/text/patterns.py,sha256=ewlKV9IiKMlLZj4tJk2noSh8V5fzyDK9Cn_vmXo7eEk,7735
146
+ novelwriter/tools/dictionaries.py,sha256=ItM080yCoB5lgcovwUU1AO6usDFBRQpcV1UG0KGFvek,8932
147
+ novelwriter/tools/lipsum.py,sha256=kxqPd7fM_aL4czwmJO0bjJxJVcpZI66gixd_lCAIiA4,4793
148
+ novelwriter/tools/manusbuild.py,sha256=FcM36eukyaWTI7G5Yb5bOShoZhoqSHCvJtmmhYng4Eo,13814
149
+ novelwriter/tools/manuscript.py,sha256=Ppv0Q3u9iZvO3fky3dQz7983ovC1RTi6BIJ4tlnRT_Q,39538
150
+ novelwriter/tools/manussettings.py,sha256=HjNKa84xiY4b3guV9e9QMIPEryys-sn_Y8fI2cYALyI,60813
151
+ novelwriter/tools/noveldetails.py,sha256=jTkJuf9zG1KiTEzOydobvCxZzbxlQmzQNDkSujzemk0,17871
152
+ novelwriter/tools/welcome.py,sha256=qtgvBPLQ8L1d9cDo0UtFWdhdtLFJfmFdmUQ4Day0f6Y,27380
153
+ novelwriter/tools/writingstats.py,sha256=4YtpQisfKzp9Xcnz6gNt2quE6ibFAAag0ssD5xK-iAo,22313
154
+ novelwriter-2.7b1.dist-info/licenses/LICENSE.md,sha256=2GirkkLrPfQqx7fACKRJjtKJUegKc8067erGvcDVQHM,32197
155
+ novelwriter-2.7b1.dist-info/METADATA,sha256=xc6fym0JsxKEWvrERtGuTI7tZ4pOf1Ki8C_lzh6cNeQ,2554
156
+ novelwriter-2.7b1.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
157
+ novelwriter-2.7b1.dist-info/entry_points.txt,sha256=YDUG1w361LtLsjD3YhxoTDTwM17JA5-nigjC6j5C74A,45
158
+ novelwriter-2.7b1.dist-info/top_level.txt,sha256=wFFEucjEeNC_Ap5ULBuEutg5a1Uc0-YO9uFT5L2naNI,12
159
+ novelwriter-2.7b1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (79.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5