novelWriter 2.1.1__py3-none-any.whl → 2.2rc1__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 (109) hide show
  1. {novelWriter-2.1.1.dist-info → novelWriter-2.2rc1.dist-info}/METADATA +3 -3
  2. {novelWriter-2.1.1.dist-info → novelWriter-2.2rc1.dist-info}/RECORD +105 -76
  3. novelwriter/__init__.py +6 -24
  4. novelwriter/assets/i18n/project_de_DE.json +10 -0
  5. novelwriter/assets/i18n/project_en_GB.json +11 -0
  6. novelwriter/assets/i18n/project_en_US.json +10 -0
  7. novelwriter/assets/i18n/project_ja_JP.json +11 -1
  8. novelwriter/assets/i18n/project_nb_NO.json +10 -0
  9. novelwriter/assets/i18n/project_nn_NO.json +10 -0
  10. novelwriter/assets/icons/novelwriter.ico +0 -0
  11. novelwriter/assets/icons/novelwriter.svg +8 -183
  12. novelwriter/assets/icons/typicons_dark/icons.conf +17 -2
  13. novelwriter/assets/icons/typicons_dark/nw_deco-h2-narrow.svg +4 -0
  14. novelwriter/assets/icons/typicons_dark/nw_deco-h3-narrow.svg +4 -0
  15. novelwriter/assets/icons/typicons_dark/nw_deco-h4-narrow.svg +4 -0
  16. novelwriter/assets/icons/typicons_dark/nw_deco-note.svg +4 -0
  17. novelwriter/assets/icons/typicons_dark/nw_panel.svg +4 -0
  18. novelwriter/assets/icons/typicons_dark/nw_tb-bold.svg +4 -0
  19. novelwriter/assets/icons/typicons_dark/nw_tb-italic.svg +4 -0
  20. novelwriter/assets/icons/typicons_dark/nw_tb-markdown.svg +8 -0
  21. novelwriter/assets/icons/typicons_dark/nw_tb-shortcode.svg +8 -0
  22. novelwriter/assets/icons/typicons_dark/nw_tb-strike.svg +4 -0
  23. novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg +5 -0
  24. novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg +5 -0
  25. novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg +5 -0
  26. novelwriter/assets/icons/typicons_dark/typ_eye.svg +4 -0
  27. novelwriter/assets/icons/typicons_dark/typ_th-dot-menu.svg +4 -0
  28. novelwriter/assets/icons/typicons_light/icons.conf +17 -2
  29. novelwriter/assets/icons/typicons_light/nw_deco-h2-narrow.svg +4 -0
  30. novelwriter/assets/icons/typicons_light/nw_deco-h3-narrow.svg +4 -0
  31. novelwriter/assets/icons/typicons_light/nw_deco-h4-narrow.svg +4 -0
  32. novelwriter/assets/icons/typicons_light/nw_deco-note.svg +4 -0
  33. novelwriter/assets/icons/typicons_light/nw_panel.svg +4 -0
  34. novelwriter/assets/icons/typicons_light/nw_tb-bold.svg +4 -0
  35. novelwriter/assets/icons/typicons_light/nw_tb-italic.svg +4 -0
  36. novelwriter/assets/icons/typicons_light/nw_tb-markdown.svg +8 -0
  37. novelwriter/assets/icons/typicons_light/nw_tb-shortcode.svg +8 -0
  38. novelwriter/assets/icons/typicons_light/nw_tb-strike.svg +4 -0
  39. novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg +5 -0
  40. novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg +5 -0
  41. novelwriter/assets/icons/typicons_light/nw_tb-underline.svg +5 -0
  42. novelwriter/assets/icons/typicons_light/typ_eye.svg +4 -0
  43. novelwriter/assets/icons/typicons_light/typ_th-dot-menu.svg +4 -0
  44. novelwriter/assets/icons/x-novelwriter-project.ico +0 -0
  45. novelwriter/assets/icons/x-novelwriter-project.svg +7 -206
  46. novelwriter/assets/manual.pdf +0 -0
  47. novelwriter/assets/sample.zip +0 -0
  48. novelwriter/assets/syntax/default_dark.conf +1 -0
  49. novelwriter/assets/syntax/default_light.conf +1 -0
  50. novelwriter/assets/syntax/grey_dark.conf +1 -0
  51. novelwriter/assets/syntax/grey_light.conf +1 -0
  52. novelwriter/assets/syntax/light_owl.conf +1 -0
  53. novelwriter/assets/syntax/night_owl.conf +1 -0
  54. novelwriter/assets/syntax/solarized_dark.conf +1 -0
  55. novelwriter/assets/syntax/solarized_light.conf +1 -0
  56. novelwriter/assets/syntax/tomorrow.conf +1 -0
  57. novelwriter/assets/syntax/tomorrow_night.conf +1 -0
  58. novelwriter/assets/syntax/tomorrow_night_blue.conf +1 -0
  59. novelwriter/assets/syntax/tomorrow_night_bright.conf +1 -0
  60. novelwriter/assets/syntax/tomorrow_night_eighties.conf +1 -0
  61. novelwriter/assets/text/credits_en.htm +7 -0
  62. novelwriter/assets/text/release_notes.htm +7 -37
  63. novelwriter/common.py +22 -1
  64. novelwriter/config.py +27 -42
  65. novelwriter/constants.py +45 -7
  66. novelwriter/core/buildsettings.py +40 -24
  67. novelwriter/core/coretools.py +8 -1
  68. novelwriter/core/docbuild.py +2 -6
  69. novelwriter/core/index.py +264 -175
  70. novelwriter/core/options.py +8 -3
  71. novelwriter/core/project.py +2 -2
  72. novelwriter/core/projectdata.py +3 -3
  73. novelwriter/core/tohtml.py +60 -59
  74. novelwriter/core/tokenizer.py +110 -70
  75. novelwriter/core/tomd.py +51 -38
  76. novelwriter/core/toodt.py +184 -147
  77. novelwriter/dialogs/preferences.py +75 -106
  78. novelwriter/dialogs/projsettings.py +101 -110
  79. novelwriter/dialogs/updates.py +25 -14
  80. novelwriter/enum.py +28 -3
  81. novelwriter/extensions/novelselector.py +1 -1
  82. novelwriter/gui/doceditor.py +1345 -1235
  83. novelwriter/gui/dochighlight.py +98 -62
  84. novelwriter/gui/docviewer.py +151 -340
  85. novelwriter/gui/docviewerpanel.py +457 -0
  86. novelwriter/gui/editordocument.py +126 -0
  87. novelwriter/gui/mainmenu.py +350 -300
  88. novelwriter/gui/noveltree.py +101 -125
  89. novelwriter/gui/outline.py +154 -171
  90. novelwriter/gui/projtree.py +480 -380
  91. novelwriter/gui/sidebar.py +106 -75
  92. novelwriter/gui/statusbar.py +1 -1
  93. novelwriter/gui/theme.py +114 -75
  94. novelwriter/guimain.py +353 -254
  95. novelwriter/shared.py +36 -3
  96. novelwriter/tools/dictionaries.py +268 -0
  97. novelwriter/tools/manusbuild.py +17 -6
  98. novelwriter/tools/manuscript.py +11 -3
  99. novelwriter/tools/manussettings.py +0 -14
  100. novelwriter/tools/projwizard.py +16 -2
  101. novelwriter/tools/writingstats.py +1 -1
  102. novelwriter/assets/icons/typicons_dark/typ_at.svg +0 -4
  103. novelwriter/assets/icons/typicons_dark/typ_th-menu.svg +0 -4
  104. novelwriter/assets/icons/typicons_light/typ_at.svg +0 -4
  105. novelwriter/assets/icons/typicons_light/typ_th-menu.svg +0 -4
  106. {novelWriter-2.1.1.dist-info → novelWriter-2.2rc1.dist-info}/LICENSE.md +0 -0
  107. {novelWriter-2.1.1.dist-info → novelWriter-2.2rc1.dist-info}/WHEEL +0 -0
  108. {novelWriter-2.1.1.dist-info → novelWriter-2.2rc1.dist-info}/entry_points.txt +0 -0
  109. {novelWriter-2.1.1.dist-info → novelWriter-2.2rc1.dist-info}/top_level.txt +0 -0
@@ -1,207 +1,8 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <svg
3
- xmlns:dc="http://purl.org/dc/elements/1.1/"
4
- xmlns:cc="http://creativecommons.org/ns#"
5
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6
- xmlns:svg="http://www.w3.org/2000/svg"
7
- xmlns="http://www.w3.org/2000/svg"
8
- xmlns:xlink="http://www.w3.org/1999/xlink"
9
- id="svg8"
10
- version="1.1"
11
- viewBox="0 0 270.93333 270.93334"
12
- height="1024"
13
- width="1024">
14
- <defs
15
- id="defs2">
16
- <linearGradient
17
- id="linearGradient2515">
18
- <stop
19
- style="stop-color:#f7f7f7;stop-opacity:1"
20
- offset="0"
21
- id="stop2511" />
22
- <stop
23
- style="stop-color:#e5e5e5;stop-opacity:1"
24
- offset="1"
25
- id="stop2513" />
26
- </linearGradient>
27
- <rect
28
- x="60.484347"
29
- y="205.79962"
30
- width="130.57787"
31
- height="65.785888"
32
- id="rect852" />
33
- <rect
34
- id="rect1474"
35
- height="28.631245"
36
- width="177.70083"
37
- y="18.019813"
38
- x="13.463703" />
39
- <rect
40
- id="rect852-7"
41
- height="65.785889"
42
- width="130.57787"
43
- y="205.79962"
44
- x="60.484348" />
45
- <rect
46
- id="rect1544"
47
- height="65.785889"
48
- width="130.57787"
49
- y="205.79962"
50
- x="60.484348" />
51
- <rect
52
- x="60.484348"
53
- y="205.79962"
54
- width="130.57787"
55
- height="65.785889"
56
- id="rect1570" />
57
- <rect
58
- x="13.463703"
59
- y="18.019813"
60
- width="177.70083"
61
- height="28.631245"
62
- id="rect1587" />
63
- <filter
64
- id="filter1444"
65
- style="color-interpolation-filters:sRGB">
66
- <feFlood
67
- id="feFlood1434"
68
- result="flood"
69
- flood-color="rgb(0,0,0)"
70
- flood-opacity="0.498039" />
71
- <feComposite
72
- id="feComposite1436"
73
- result="composite1"
74
- operator="in"
75
- in2="SourceGraphic"
76
- in="flood" />
77
- <feGaussianBlur
78
- id="feGaussianBlur1438"
79
- result="blur"
80
- stdDeviation="3"
81
- in="composite1" />
82
- <feOffset
83
- id="feOffset1440"
84
- result="offset"
85
- dy="6"
86
- dx="6" />
87
- <feComposite
88
- id="feComposite1442"
89
- result="composite2"
90
- operator="over"
91
- in2="offset"
92
- in="SourceGraphic" />
93
- </filter>
94
- <filter
95
- id="filter1456"
96
- style="color-interpolation-filters:sRGB">
97
- <feFlood
98
- id="feFlood1446"
99
- result="flood"
100
- flood-color="rgb(0,0,0)"
101
- flood-opacity="0.498039" />
102
- <feComposite
103
- id="feComposite1448"
104
- result="composite1"
105
- operator="in"
106
- in2="SourceGraphic"
107
- in="flood" />
108
- <feGaussianBlur
109
- id="feGaussianBlur1450"
110
- result="blur"
111
- stdDeviation="3"
112
- in="composite1" />
113
- <feOffset
114
- id="feOffset1452"
115
- result="offset"
116
- dy="6"
117
- dx="6" />
118
- <feComposite
119
- id="feComposite1454"
120
- result="composite2"
121
- operator="over"
122
- in2="offset"
123
- in="SourceGraphic" />
124
- </filter>
125
- <radialGradient
126
- xlink:href="#linearGradient2515"
127
- id="radialGradient2517"
128
- cx="605.42725"
129
- cy="623.97186"
130
- fx="605.42725"
131
- fy="623.97186"
132
- r="410"
133
- gradientTransform="matrix(2.4110274,1.7617596,-0.719517,0.98463462,-776.23441,-1372.7537)"
134
- gradientUnits="userSpaceOnUse" />
135
- </defs>
136
- <metadata
137
- id="metadata5">
138
- <rdf:RDF>
139
- <cc:Work
140
- rdf:about="">
141
- <dc:format>image/svg+xml</dc:format>
142
- <dc:type
143
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
144
- <dc:title></dc:title>
145
- </cc:Work>
146
- </rdf:RDF>
147
- </metadata>
148
- <g
149
- id="layer3"
150
- style="display:inline">
151
- <path
152
- clip-path="none"
153
- transform="scale(0.26458333)"
154
- d="m 192,22 c -44.32,0 -80,35.680002 -80,80 v 820 c 0,44.32002 35.68,80 80,80 h 640 c 44.31999,0 80,-35.67998 80,-80 V 213.44727 L 720.55469,22 Z"
155
- style="fill:url(#radialGradient2517);fill-opacity:1;stroke:#999999;stroke-width:20;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
156
- id="rect1481" />
157
- <path
158
- id="path1490"
159
- style="display:inline;fill:#e0e0e0;fill-opacity:1;stroke:#999999;stroke-width:5.29167;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
160
- d="M 241.30037,56.474215 190.64713,5.8204593 V 35.307549 c 0,11.726333 9.44034,21.166666 21.16667,21.166666 z" />
161
- <g
162
- aria-label=".nwx"
163
- transform="matrix(1.7893481,0,0,1.782571,-45.41919,-191.90571)"
164
- id="text850"
165
- style="font-size:5.64444px;line-height:1.25;font-family:'Fira Sans';-inkscape-font-specification:'Fira Sans, Normal';letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect852);display:inline;fill:#666666;fill-opacity:1">
166
- <path
167
- d="m 63.088865,241.76928 q 0,-1.36426 0.909505,-2.27376 0.930175,-0.93018 2.480467,-0.93018 1.550291,0 2.459796,0.93018 0.909504,0.9095 0.909504,2.27376 0,1.34359 -0.909504,2.27376 -0.909505,0.9095 -2.459796,0.9095 -1.550292,0 -2.480467,-0.9095 -0.909505,-0.93017 -0.909505,-2.27376 z"
168
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:42.3333px;font-family:Roboto;-inkscape-font-specification:'Roboto, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#666666;fill-opacity:1"
169
- id="path856" />
170
- <path
171
- d="m 84.75161,226.78312 q -2.542479,0 -3.782712,2.14974 v 15.79231 h -5.973791 v -22.36554 h 5.601721 l 0.206705,2.56314 q 2.397785,-2.97656 6.428544,-2.97656 3.162595,0 5.105627,1.88103 1.943033,1.88102 1.963703,6.55256 v 14.34537 h -5.994461 v -14.26269 q 0,-2.14973 -0.930175,-2.91454 -0.909505,-0.76482 -2.625161,-0.76482 z"
172
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:42.3333px;font-family:Roboto;-inkscape-font-specification:'Roboto, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#666666;fill-opacity:1"
173
- id="path858" />
174
- <path
175
- d="m 126.96089,222.35963 -5.68441,22.36554 h -5.00227 l -4.25814,-14.07665 -4.23746,14.07665 h -4.9816 l -5.705078,-22.36554 h 5.767088 l 2.95589,14.22134 4.05143,-14.22134 h 4.32014 l 4.09277,14.20067 2.91455,-14.20067 z"
176
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:42.3333px;font-family:Roboto;-inkscape-font-specification:'Roboto, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#666666;fill-opacity:1"
177
- id="path860" />
178
- <path
179
- d="m 134.77436,222.35963 3.65869,6.65592 3.76204,-6.65592 h 6.3872 l -6.36653,10.93472 6.63525,11.43082 h -6.3872 l -4.01009,-7.04866 -3.94808,7.04866 h -6.42854 l 6.63525,-11.43082 -6.36654,-10.93472 z"
180
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:42.3333px;font-family:Roboto;-inkscape-font-specification:'Roboto, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#666666;fill-opacity:1"
181
- id="path862" />
182
- </g>
183
- </g>
184
- <g
185
- id="g2509"
186
- transform="matrix(1.2371037,0,0,1.2371037,206.3182,37.341857)">
187
- <path
188
- transform="matrix(0.16895991,0,0,0.18329422,-134.6942,-19.491243)"
189
- id="rect1406-1"
190
- style="display:inline;fill:#a11212;fill-opacity:1;stroke:#7e1b1b;stroke-width:9.99999;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter1444)"
191
- d="m 145.18984,56.414257 c -44.32,0 -79.999998,35.68 -79.999998,80.000003 v 199.99805 a 279.99999,279.99999 0 0 0 0,0.002 279.99999,279.99999 0 0 0 0,0.0195 v 199.98242 c 0,44.31999 35.679998,80 79.999998,80 44.32,0 80,-35.68001 80,-80 v -200 a 120,120 0 0 1 120,-120 120,120 0 0 1 120,120 v 282.83592 h 160 V 336.41621 a 279.99999,279.99999 0 0 0 -280,-280.000003 279.99999,279.99999 0 0 0 -0.81055,0 279.99999,279.99999 0 0 0 -133.46484,34.29688 c -14.4245,-20.75262 -38.42829,-34.29883 -65.72461,-34.29883 z M 376.65078,619.64082 c -0.62174,0.0972 -1.2172,0.22317 -1.7793,0.37696 0.5621,-0.15379 1.15756,-0.27973 1.7793,-0.37696 z m -1.7793,0.37696 c -0.5621,0.15378 -1.09071,0.33534 -1.58008,0.53906 0.48937,-0.20372 1.01798,-0.38528 1.58008,-0.53906 z m 338.85742,-0.37696 c 0.62174,0.0972 1.2172,0.22317 1.7793,0.37696 -0.5621,-0.15379 -1.15756,-0.27973 -1.7793,-0.37696 z m 1.7793,0.37696 c 0.5621,0.15378 1.09071,0.33534 1.58008,0.53906 -0.48938,-0.20372 -1.01798,-0.38528 -1.58008,-0.53906 z" />
192
- <path
193
- transform="matrix(0.16895991,0,0,0.18329422,-134.6942,-19.491243)"
194
- id="path897"
195
- style="display:inline;fill:#730d0d;fill-opacity:1;stroke:#590d0d;stroke-width:9.99999;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter1456)"
196
- d="m 465.18984,619.25215 v 0.16406 h -85.58398 c -5.49302,0 -9.91602,2.2329 -9.91602,5.00586 0,0.52294 0.15913,1.02696 0.45117,1.5 h -0.44531 c 0.30916,2.03607 1.24102,3.99791 2.81641,5.57227 l 165.59961,165.49414 c 3.92061,3.91808 10.23371,3.91812 14.15429,0 L 717.86757,631.49434 c 1.57569,-1.57463 2.50725,-3.53578 2.81641,-5.57227 h -0.44531 c 0.29216,-0.47304 0.45117,-0.97706 0.45117,-1.5 0,-2.77296 -4.42304,-5.00586 -9.91602,-5.00586 h -85.58398 v -0.16406 z" />
197
- <rect
198
- style="display:inline;fill:#c32222;fill-opacity:1;stroke:none;stroke-width:1.75982;stroke-linejoin:round;stroke-opacity:1"
199
- id="rect914"
200
- width="6.7583966"
201
- height="82.482399"
202
- x="-118.27303"
203
- y="1.2969339"
204
- rx="3.3791983"
205
- ry="3.6658845" />
206
- </g>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+ <svg width="256" height="256" version="1.1" viewBox="0 0 67.733 67.733" xmlns="http://www.w3.org/2000/svg">
4
+ <path d="m12.869 1.7145c-2.9081 0-5.2493 2.3412-5.2493 5.2493v53.806c0 2.9081 2.3412 5.2493 5.2493 5.2493h41.995c2.9081 0 5.2493-2.3412 5.2493-5.2493v-46.493l-12.562-12.562z" fill="#ececec" stroke="#999" stroke-linejoin="round" stroke-width="1.3123"/>
5
+ <path d="m60.113 14.277-12.562-12.562v7.3128c0 2.9081 2.3412 5.2493 5.2493 5.2493z" fill="#e0e0e0" stroke="#999" stroke-linejoin="round" stroke-width="1.3123"/>
6
+ <path d="m34.617 50.796c-0.31888 0-0.57319 0.09267-0.7628 0.27797-0.1853 0.18099-0.27797 0.41156-0.27797 0.69167 0 0.2758 0.09268 0.50636 0.27797 0.69166 0.18961 0.18099 0.44392 0.27144 0.7628 0.27144s0.57306-0.09044 0.76266-0.27144c0.18961-0.1853 0.28438-0.41587 0.28438-0.69166 0-0.28011-0.09477-0.51067-0.28438-0.69167-0.18961-0.1853-0.44378-0.27797-0.76266-0.27797zm-21.512 0.36204v9.4116h1.9456v-3.3226h1.7323c1.1118 0 1.978-0.26924 2.5985-0.8079 0.62484-0.53867 0.93722-1.2627 0.93722-2.172 0-0.90065-0.31238-1.644-0.93722-2.2301-0.62053-0.58607-1.4867-0.87903-2.5985-0.87903zm38.395 0.69154v1.7259h-1.0278v1.364h1.0278v3.6909c0 0.74121 0.1809 1.2713 0.54287 1.5902 0.36198 0.31889 0.84896 0.47828 1.4609 0.47828 0.40076 0 0.77566-0.0582 1.1247-0.17455v-1.4156c-0.17237 0.03448-0.3534 0.05178-0.543 0.05178-0.23701 0-0.41581-0.04745-0.53647-0.14226-0.12066-0.09481-0.18096-0.28867-0.18096-0.58171v-3.497h1.1893v-1.364h-1.1893v-1.7259zm-36.45 0.87916h1.7323c0.55589 0 0.95662 0.15729 1.2022 0.47188 0.24562 0.31027 0.36845 0.67008 0.36845 1.0795 0 0.40939-0.12283 0.7456-0.36845 1.0085-0.24562 0.26287-0.64636 0.39421-1.2022 0.39421h-1.7323zm9.8574 0.71755c-0.67224 0-1.1915 0.32101-1.5578 0.96311l-0.05818-0.83392h-1.7646v6.9942h1.8744v-4.583c0.21977-0.47834 0.68093-0.71756 1.3833-0.71756l0.67872 0.05178 0.01934-1.7906c-0.14651-0.05602-0.33829-0.08395-0.5753-0.08395zm4.2402 0c-1.0514 0-1.8659 0.34041-2.4433 1.0213-0.57743 0.67657-0.86609 1.5233-0.86609 2.5403v0.21979c0.01724 0.99546 0.31244 1.8228 0.88557 2.4822 0.57743 0.65933 1.3897 0.98899 2.4368 0.98899 1.0558 0 1.8702-0.33831 2.4433-1.0149 0.57312-0.67657 0.85968-1.5233 0.85968-2.5403v-0.13572c0-1.017-0.28655-1.8638-0.85968-2.5403-0.57313-0.68088-1.3919-1.0213-2.4563-1.0213zm10.93 0c-0.99974 0-1.7948 0.33819-2.3851 1.0148-0.58605 0.67657-0.87903 1.5429-0.87903 2.5987v0.27144c0.0043 0.93082 0.31236 1.7259 0.92427 2.3853 0.61191 0.65502 1.4608 0.98246 2.5467 0.98246 0.68085 0 1.2498-0.13134 1.7065-0.39421 0.45678-0.26287 0.79721-0.55386 1.0213-0.87275l-0.9244-1.0213c-0.41368 0.52143-0.97605 0.78214-1.6871 0.78214-0.47832 0-0.86398-0.13789-1.157-0.41369-0.29303-0.28011-0.47183-0.64634-0.53647-1.0988h4.4536v-0.79509c0-1.0342-0.26296-1.8659-0.78868-2.4951-0.52572-0.62917-1.2906-0.94376-2.2947-0.94376zm7.0715 0c-1.0816 0-1.8896 0.34251-2.424 1.0277-0.53434 0.68519-0.8015 1.5212-0.8015 2.508v0.18108c0 0.99115 0.26716 1.8293 0.8015 2.5145 0.53865 0.68088 1.3488 1.0213 2.4304 1.0213 0.81013 0 1.4932-0.23909 2.0491-0.71743 0.5602-0.47834 0.84453-1.0881 0.85314-1.8293h-1.7581c-0.0043 0.31889-0.11639 0.57306-0.33616 0.76267-0.21977 0.1853-0.4999 0.27797-0.84033 0.27797-0.55158 0-0.91141-0.20251-1.0795-0.6076-0.16375-0.40939-0.24555-0.88337-0.24555-1.422 0-0.65933 0.08403-1.1916 0.25208-1.5967 0.16806-0.40939 0.52357-0.614 1.0665-0.614 0.37921 0 0.67009 0.12059 0.87262 0.36192 0.20253 0.23702 0.30596 0.52578 0.31027 0.86622h1.7581c-0.0086-0.84032-0.2822-1.5061-0.82085-1.9973-0.53434-0.49127-1.2303-0.73691-2.0878-0.73691zm-13.432 0.12918v7.382c0 0.60331-0.28223 0.90492-0.84674 0.90492-0.19822 0-0.39643-0.01939-0.59465-0.05818v1.4803c0.29734 0.07326 0.60972 0.10983 0.93722 0.10983 0.75411 0 1.338-0.20894 1.7517-0.62695 0.41799-0.41801 0.62707-1.0214 0.62707-1.81v-7.382zm-4.57 1.3769c0.53003 0 0.90284 0.20462 1.1183 0.614 0.21977 0.40508 0.32962 0.88561 0.32962 1.4415 0 0.66364-0.10985 1.1937-0.32962 1.5902-0.21546 0.39646-0.58395 0.59465-1.1054 0.59465-0.53004 0-0.90494-0.19819-1.1247-0.59465-0.21546-0.40077-0.32321-0.88562-0.32321-1.4545 0-0.65072 0.10775-1.1786 0.32321-1.5836 0.21546-0.40508 0.58604-0.6076 1.1118-0.6076zm10.917 0c0.43092 0 0.7454 0.12492 0.94362 0.37486 0.20254 0.24563 0.30819 0.5559 0.3168 0.93081v0.14226h-2.5985c0.06464-0.43094 0.20477-0.78 0.42023-1.0472 0.21546-0.26718 0.52142-0.40075 0.91786-0.40075z" fill="#666" stroke-width=".1773" style="shape-inside:url(#rect2964);white-space:pre"/>
7
+ <path d="m16.933 38.766h1.5478q1.2383 0 1.7336-0.49531 0.55722-0.55722 0.55722-1.7955v-15.912q0-1.2383-0.49531-1.7336-0.49531-0.55722-1.7336-0.55722h-1.3002v-4.6435h7.9249l0.37148 4.1482q2.1051-2.6623 4.7673-3.8386 2.7242-1.2383 6.5628-1.2383 9.9062 0 9.9062 10.278v13.497q0 1.2383 0.49531 1.7955 0.55722 0.49531 1.7955 0.49531h1.7336v4.5816h-10.649v-20.308q0-3.0957-1.3002-4.4578-1.3002-1.424-4.2101-1.424-3.1576 0-5.2007 1.7955-2.0431 1.7955-2.0431 5.015v12.507q0 1.2383 0.43339 1.7955 0.49531 0.49531 1.6717 0.49531h1.6098v4.5816h-14.178z" fill="#346598" stroke-linecap="round" stroke-width=".16123"/>
207
8
  </svg>
Binary file
Binary file
@@ -17,6 +17,7 @@ straightquotes = 200, 46, 0
17
17
  doublequotes = 184, 200, 0
18
18
  singlequotes = 136, 200, 0
19
19
  hidden = 150, 150, 150
20
+ shortcode = 0, 155, 200
20
21
  keyword = 200, 46, 0
21
22
  value = 184, 200, 0
22
23
  spellcheckline = 200, 46, 0
@@ -17,6 +17,7 @@ straightquotes = 200, 0, 0
17
17
  doublequotes = 0, 0, 200
18
18
  singlequotes = 0, 0, 200
19
19
  hidden = 100, 100, 100
20
+ shortcode = 0, 100, 0
20
21
  keyword = 200, 50, 50
21
22
  value = 50, 150, 50
22
23
  spellcheckline = 200, 0, 0
@@ -17,6 +17,7 @@ straightquotes = 200, 200, 200
17
17
  doublequotes = 200, 200, 200
18
18
  singlequotes = 200, 200, 200
19
19
  hidden = 150, 150, 150
20
+ shortcode = 225, 225, 225
20
21
  keyword = 225, 225, 225
21
22
  value = 200, 200, 200
22
23
  spellcheckline = 200, 46, 0
@@ -17,6 +17,7 @@ straightquotes = 20, 20, 20
17
17
  doublequotes = 20, 20, 20
18
18
  singlequotes = 20, 20, 20
19
19
  hidden = 100, 100, 100
20
+ shortcode = 0, 0, 0
20
21
  keyword = 0, 0, 0
21
22
  value = 20, 20, 20
22
23
  spellcheckline = 200, 0, 0
@@ -37,6 +37,7 @@ straightquotes = 222, 61, 58
37
37
  doublequotes = 8, 145, 106
38
38
  singlequotes = 255, 235, 149
39
39
  hidden = 152, 159, 177
40
+ shortcode = 40, 142, 215
40
41
  keyword = 222, 61, 58
41
42
  value = 150, 74, 193
42
43
  spellcheckline = 222, 61, 58
@@ -37,6 +37,7 @@ straightquotes = 247, 140, 108
37
37
  doublequotes = 173, 219, 103
38
38
  singlequotes = 255, 235, 149
39
39
  hidden = 99, 119, 119
40
+ shortcode = 130, 170, 255
40
41
  keyword = 247, 140, 108
41
42
  value = 199, 146, 234
42
43
  spellcheckline = 247, 140, 108
@@ -17,6 +17,7 @@ straightquotes = 211, 54, 130
17
17
  doublequotes = 42, 161, 152
18
18
  singlequotes = 42, 161, 152
19
19
  hidden = 147, 161, 161
20
+ shortcode = 147, 161, 161
20
21
  keyword = 133, 153, 0
21
22
  value = 203, 75, 22
22
23
  spellcheckline = 203, 75, 22
@@ -17,6 +17,7 @@ straightquotes = 211, 54, 130
17
17
  doublequotes = 42, 161, 152
18
18
  singlequotes = 42, 161, 152
19
19
  hidden = 88, 110, 117
20
+ shortcode = 88, 110, 117
20
21
  keyword = 133, 153, 0
21
22
  value = 203, 75, 22
22
23
  spellcheckline = 203, 75, 22
@@ -37,6 +37,7 @@ straightquotes = 240, 40, 41
37
37
  doublequotes = 113, 140, 0
38
38
  singlequotes = 234, 183, 0
39
39
  hidden = 142, 144, 140
40
+ shortcode = 66, 113, 174
40
41
  keyword = 240, 40, 41
41
42
  value = 137, 89, 168
42
43
  spellcheckline = 240, 40, 41
@@ -37,6 +37,7 @@ straightquotes = 204, 102, 102
37
37
  doublequotes = 181, 189, 104
38
38
  singlequotes = 240, 198, 116
39
39
  hidden = 150, 152, 150
40
+ shortcode = 129, 162, 190
40
41
  keyword = 204, 102, 102
41
42
  value = 178, 148, 187
42
43
  spellcheckline = 204, 102, 102
@@ -37,6 +37,7 @@ straightquotes = 255, 157, 164
37
37
  doublequotes = 209, 241, 169
38
38
  singlequotes = 255, 238, 173
39
39
  hidden = 114, 133, 183
40
+ shortcode = 187, 218, 255
40
41
  keyword = 255, 157, 164
41
42
  value = 235, 187, 255
42
43
  spellcheckline = 255, 157, 164
@@ -37,6 +37,7 @@ straightquotes = 213, 78, 83
37
37
  doublequotes = 185, 202, 74
38
38
  singlequotes = 231, 197, 71
39
39
  hidden = 150, 152, 150
40
+ shortcode = 122, 166, 218
40
41
  keyword = 213, 78, 83
41
42
  value = 195, 151, 216
42
43
  spellcheckline = 213, 78, 83
@@ -37,6 +37,7 @@ straightquotes = 242, 119, 122
37
37
  doublequotes = 153, 204, 153
38
38
  singlequotes = 255, 204, 102
39
39
  hidden = 153, 153, 153
40
+ shortcode = 102, 153, 204
40
41
  keyword = 242, 119, 122
41
42
  value = 204, 153, 204
42
43
  spellcheckline = 242, 119, 122
@@ -61,6 +61,13 @@ more contributions are listed on the project's <a href="https://crowdin.com/proj
61
61
  <a href="https://github.com/altercation/solarized">Solarized</a> themes by Ethan Schoonover (MIT License)
62
62
  </p>
63
63
 
64
+ <h3>Fonts</h3>
65
+
66
+ <p>The font used for the main novelWriter logo, mimetype and text banners is:</p>
67
+ <p>
68
+ Pridi by Cadson Demak (Open Font License, Version 1.1)
69
+ </p>
70
+
64
71
  <h3>Special Mentions</h3>
65
72
 
66
73
  <p>Additional thanks to <a href="https://github.com/johnblommers">@johnblommers</a> who was an early user and who has provided a lot
@@ -2,46 +2,16 @@
2
2
  <html>
3
3
  <body>
4
4
 
5
- <h2>Release Notes for 2.1</h2>
6
- <p><i>Released on 17 October 2023</i></p>
5
+ <h2>Release Notes for 2.2 RC 1</h2>
6
+ <p><i>Released on 26 November 2023</i></p>
7
7
 
8
- <p>Scroll down for <a href="#patch">Patch Notes</a></p>
9
-
10
- <p>The primary focus of this release has been a complete redesign of the Build Tool, that is, the
11
- tool that assembles your project into a manuscript document. The new tool, called the "Manuscript
12
- Build Tool" allows you to define multiple build definitions for your project. The build definitions
13
- are edited in a new Manuscript Build Settings dialog, with a lot more options than the old tool.</p>
14
- <p>The reason for this redesign is a long list of feature requests that could not easily be
15
- accommodated in the old, much simpler tool. Far from all the features have been added yet, but now
16
- that the new tool is in place, they will be gradually added in the coming releases.</p>
17
- <p>The key feature added in this release is the extended control you now have for selecting exactly
18
- what part of your project is included in a given build definition. You have the same filters for
19
- selecting documents and notes, and turning on or off root folders as before, but you can now easily
20
- override on a per-document basis what is included or excluded in addition to the filter.</p>
21
- <p>A second major improvement is a better tool to format your manuscript headings. You no longer
22
- have to look up formatting codes and add them manually. Instead, there is now a heading format
23
- editor in the Build Settings dialog for creating the header format, with syntax highlighting
24
- included.</p>
25
-
26
- <h3>Other Changes</h3>
27
- <p>Among other features is a new option to duplicate documents and folders in the project tree. The
28
- duplicate feature is available from the right-click menu. A proper light colour theme has also been
29
- added. In most cases it will be the same as the default theme, depending on your platform.</p>
30
- <p>There are other, minor improvements as well, and a lot of code improvements under the hood. For
31
- a full list of changes, see the detailed changelogs.</p>
8
+ <p>This is a release candidate of the next release version, and is intended for testing purposes.
9
+ Please be careful when using this version on live writing projects, and make sure you take frequent
10
+ backups.</p>
11
+ <p>Please check the changelog for an overview of changes. The full release notes will be added to
12
+ the final release.</p>
32
13
 
33
14
  <p><i>See also the <a href="https://github.com/vkbo/novelWriter/releases">Releases</a> page.</i></p>
34
15
 
35
- <a name="patch"></a><h2>Patch Notes</h2>
36
-
37
- <h3>Patch 2.2.1 &ndash; 5 November 2023</h3>
38
-
39
- <p>This is a patch release that fixes a layout issue and internationalisation issues with the new
40
- Manuscript Build tool. It also fixes a number of issues related to bugs in the underlying Qt
41
- framework that affects drag and drop functionality in the project tree. These issues were mostly
42
- only affecting Debian Linux package releases.</p>
43
- <p>Other, minor issues related to updating the editor on colour theme change and project word list
44
- changes have been fixed as well. See the full changelog for more details.</p>
45
-
46
16
  </body>
47
17
  </html>
novelwriter/common.py CHANGED
@@ -33,8 +33,11 @@ from typing import Any, Literal
33
33
  from pathlib import Path
34
34
  from datetime import datetime
35
35
  from configparser import ConfigParser
36
+ from urllib.parse import urljoin
37
+ from urllib.request import pathname2url
36
38
 
37
- from PyQt5.QtCore import QCoreApplication
39
+ from PyQt5.QtGui import QDesktopServices
40
+ from PyQt5.QtCore import QCoreApplication, QUrl
38
41
  from PyQt5.QtWidgets import QWidget, qApp
39
42
 
40
43
  from novelwriter.enum import nwItemClass, nwItemType, nwItemLayout
@@ -487,6 +490,24 @@ def makeFileNameSafe(text: str) -> str:
487
490
  return "".join(c for c in text if c.isalnum() or c in allowed)
488
491
 
489
492
 
493
+ def getFileSize(path: Path) -> int:
494
+ """Return the size of a file."""
495
+ try:
496
+ return path.stat().st_size
497
+ except Exception:
498
+ return -1
499
+
500
+
501
+ def openExternalPath(path: Path) -> bool:
502
+ """Open a path by passing it to the desktop environment."""
503
+ if Path(path).exists():
504
+ QDesktopServices.openUrl(
505
+ QUrl(urljoin("file:", pathname2url(str(path))))
506
+ )
507
+ return True
508
+ return False
509
+
510
+
490
511
  # =============================================================================================== #
491
512
  # Other Functions
492
513
  # =============================================================================================== #
novelwriter/config.py CHANGED
@@ -146,12 +146,11 @@ class Config:
146
146
  self.doReplaceDash = True # Replace multiple hyphens with dashes
147
147
  self.doReplaceDots = True # Replace three dots with ellipsis
148
148
 
149
- self.scrollPastEnd = 25 # Number of lines to scroll past end of document
150
149
  self.autoScroll = False # Typewriter-like scrolling
151
150
  self.autoScrollPos = 30 # Start point for typewriter-like scrolling
151
+ self.scrollPastEnd = True # Scroll past end of document, and centre cursor
152
152
 
153
153
  self.wordCountTimer = 5.0 # Interval for word count update in seconds
154
- self.bigDocLimit = 800 # Size threshold for heavy editor features in kilobytes
155
154
  self.incNotesWCount = True # The status bar word count includes notes
156
155
 
157
156
  self.highlightQuotes = True # Highlight text in quotes
@@ -180,9 +179,11 @@ class Config:
180
179
  self.spellLanguage = "en"
181
180
 
182
181
  # State
183
- self.showRefPanel = True # The reference panel for the viewer is visible
184
- self.viewComments = True # Comments are shown in the viewer
185
- self.viewSynopsis = True # Synopsis is shown in the viewer
182
+ self.showViewerPanel = True # The panel for the viewer is visible
183
+ self.showEditToolBar = False # The document editor toolbar visibility
184
+ self.useShortcodes = False # Use shortcodes for basic formatting
185
+ self.viewComments = True # Comments are shown in the viewer
186
+ self.viewSynopsis = True # Synopsis is shown in the viewer
186
187
 
187
188
  # Search Bar Switches
188
189
  self.searchCase = False
@@ -224,6 +225,7 @@ class Config:
224
225
  # Other System Info
225
226
  self.hostName = QSysInfo.machineHostName()
226
227
  self.kernelVer = QSysInfo.kernelVersion()
228
+ self.isDebug = False
227
229
 
228
230
  # Packages
229
231
  self.hasEnchant = False # The pyenchant package
@@ -391,8 +393,7 @@ class Config:
391
393
  return self._appPath / "assets"
392
394
 
393
395
  def lastPath(self) -> Path:
394
- """Return the last path used by the user, but ensure it exists.
395
- """
396
+ """Return the last path used by the user, if it exists."""
396
397
  if isinstance(self._lastPath, Path):
397
398
  if self._lastPath.is_dir():
398
399
  return self._lastPath
@@ -400,9 +401,8 @@ class Config:
400
401
 
401
402
  def backupPath(self) -> Path:
402
403
  """Return the backup path."""
403
- if isinstance(self._backupPath, Path):
404
- if self._backupPath.is_dir():
405
- return self._backupPath
404
+ if isinstance(self._backupPath, Path) and self._backupPath.is_dir():
405
+ return self._backupPath
406
406
  return self._backPath
407
407
 
408
408
  def errorText(self) -> str:
@@ -485,6 +485,7 @@ class Config:
485
485
 
486
486
  self._recentObj.loadCache()
487
487
  self._checkOptionalPackages()
488
+ self.isDebug = logger.getEffectiveLevel() == logging.DEBUG
488
489
 
489
490
  logger.debug("Config instance initialised")
490
491
 
@@ -575,9 +576,9 @@ class Config:
575
576
  self.doReplaceDQuote = conf.rdBool(sec, "repdquotes", self.doReplaceDQuote)
576
577
  self.doReplaceDash = conf.rdBool(sec, "repdash", self.doReplaceDash)
577
578
  self.doReplaceDots = conf.rdBool(sec, "repdots", self.doReplaceDots)
578
- self.scrollPastEnd = conf.rdInt(sec, "scrollpastend", self.scrollPastEnd)
579
579
  self.autoScroll = conf.rdBool(sec, "autoscroll", self.autoScroll)
580
580
  self.autoScrollPos = conf.rdInt(sec, "autoscrollpos", self.autoScrollPos)
581
+ self.scrollPastEnd = conf.rdBool(sec, "scrollpastend", self.scrollPastEnd)
581
582
  self.fmtSQuoteOpen = conf.rdStr(sec, "fmtsquoteopen", self.fmtSQuoteOpen)
582
583
  self.fmtSQuoteClose = conf.rdStr(sec, "fmtsquoteclose", self.fmtSQuoteClose)
583
584
  self.fmtDQuoteOpen = conf.rdStr(sec, "fmtdquoteopen", self.fmtDQuoteOpen)
@@ -590,7 +591,6 @@ class Config:
590
591
  self.showLineEndings = conf.rdBool(sec, "showlineendings", self.showLineEndings)
591
592
  self.showMultiSpaces = conf.rdBool(sec, "showmultispaces", self.showMultiSpaces)
592
593
  self.wordCountTimer = conf.rdFlt(sec, "wordcounttimer", self.wordCountTimer)
593
- self.bigDocLimit = conf.rdInt(sec, "bigdoclimit", self.bigDocLimit)
594
594
  self.incNotesWCount = conf.rdBool(sec, "incnoteswcount", self.incNotesWCount)
595
595
  self.showFullPath = conf.rdBool(sec, "showfullpath", self.showFullPath)
596
596
  self.highlightQuotes = conf.rdBool(sec, "highlightquotes", self.highlightQuotes)
@@ -602,33 +602,17 @@ class Config:
602
602
 
603
603
  # State
604
604
  sec = "State"
605
- self.showRefPanel = conf.rdBool(sec, "showrefpanel", self.showRefPanel)
606
- self.viewComments = conf.rdBool(sec, "viewcomments", self.viewComments)
607
- self.viewSynopsis = conf.rdBool(sec, "viewsynopsis", self.viewSynopsis)
608
- self.searchCase = conf.rdBool(sec, "searchcase", self.searchCase)
609
- self.searchWord = conf.rdBool(sec, "searchword", self.searchWord)
610
- self.searchRegEx = conf.rdBool(sec, "searchregex", self.searchRegEx)
611
- self.searchLoop = conf.rdBool(sec, "searchloop", self.searchLoop)
612
- self.searchNextFile = conf.rdBool(sec, "searchnextfile", self.searchNextFile)
613
- self.searchMatchCap = conf.rdBool(sec, "searchmatchcap", self.searchMatchCap)
614
-
615
- # Deprecated Settings or Locations as of 2.0
616
- # ToDo: These will be loaded for a few minor releases until the users have converted them
617
- self.guiFont = conf.rdStr("Main", "guifont", self.guiFont)
618
- self.guiFontSize = conf.rdInt("Main", "guifontsize", self.guiFontSize)
619
- self.guiLocale = conf.rdStr("Main", "guilang", self.guiLocale)
620
- self._backupPath = conf.rdPath("Backup", "backuppath", self._backupPath)
621
- self.backupOnClose = conf.rdBool("Backup", "backuponclose", self.backupOnClose)
622
- self.askBeforeBackup = conf.rdBool("Backup", "askbeforebackup", self.askBeforeBackup)
623
- fmtSingleQuotes = conf.rdStrList(sec, "fmtsinglequote", [])
624
- fmtDoubleQuotes = conf.rdStrList(sec, "fmtdoublequote", [])
625
-
626
- if isinstance(fmtSingleQuotes, list) and len(fmtSingleQuotes) == 2:
627
- self.fmtSQuoteOpen = fmtSingleQuotes[0]
628
- self.fmtSQuoteClose = fmtSingleQuotes[1]
629
- if isinstance(fmtDoubleQuotes, list) and len(fmtDoubleQuotes) == 2:
630
- self.fmtDQuoteOpen = fmtDoubleQuotes[0]
631
- self.fmtDQuoteClose = fmtDoubleQuotes[1]
605
+ self.showViewerPanel = conf.rdBool(sec, "showviewerpanel", self.showViewerPanel)
606
+ self.showEditToolBar = conf.rdBool(sec, "showedittoolbar", self.showEditToolBar)
607
+ self.useShortcodes = conf.rdBool(sec, "useshortcodes", self.useShortcodes)
608
+ self.viewComments = conf.rdBool(sec, "viewcomments", self.viewComments)
609
+ self.viewSynopsis = conf.rdBool(sec, "viewsynopsis", self.viewSynopsis)
610
+ self.searchCase = conf.rdBool(sec, "searchcase", self.searchCase)
611
+ self.searchWord = conf.rdBool(sec, "searchword", self.searchWord)
612
+ self.searchRegEx = conf.rdBool(sec, "searchregex", self.searchRegEx)
613
+ self.searchLoop = conf.rdBool(sec, "searchloop", self.searchLoop)
614
+ self.searchNextFile = conf.rdBool(sec, "searchnextfile", self.searchNextFile)
615
+ self.searchMatchCap = conf.rdBool(sec, "searchmatchcap", self.searchMatchCap)
632
616
 
633
617
  # Check Values
634
618
  # ============
@@ -699,9 +683,9 @@ class Config:
699
683
  "repdquotes": str(self.doReplaceDQuote),
700
684
  "repdash": str(self.doReplaceDash),
701
685
  "repdots": str(self.doReplaceDots),
702
- "scrollpastend": str(self.scrollPastEnd),
703
686
  "autoscroll": str(self.autoScroll),
704
687
  "autoscrollpos": str(self.autoScrollPos),
688
+ "scrollpastend": str(self.scrollPastEnd),
705
689
  "fmtsquoteopen": str(self.fmtSQuoteOpen),
706
690
  "fmtsquoteclose": str(self.fmtSQuoteClose),
707
691
  "fmtdquoteopen": str(self.fmtDQuoteOpen),
@@ -714,7 +698,6 @@ class Config:
714
698
  "showlineendings": str(self.showLineEndings),
715
699
  "showmultispaces": str(self.showMultiSpaces),
716
700
  "wordcounttimer": str(self.wordCountTimer),
717
- "bigdoclimit": str(self.bigDocLimit),
718
701
  "incnoteswcount": str(self.incNotesWCount),
719
702
  "showfullpath": str(self.showFullPath),
720
703
  "highlightquotes": str(self.highlightQuotes),
@@ -726,7 +709,9 @@ class Config:
726
709
  }
727
710
 
728
711
  conf["State"] = {
729
- "showrefpanel": str(self.showRefPanel),
712
+ "showviewerpanel": str(self.showViewerPanel),
713
+ "showedittoolbar": str(self.showEditToolBar),
714
+ "useshortcodes": str(self.useShortcodes),
730
715
  "viewcomments": str(self.viewComments),
731
716
  "viewsynopsis": str(self.viewSynopsis),
732
717
  "searchcase": str(self.searchCase),