novelWriter 2.5rc1__py3-none-any.whl → 2.5.2__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.
- {novelWriter-2.5rc1.dist-info → novelWriter-2.5.2.dist-info}/METADATA +1 -1
- {novelWriter-2.5rc1.dist-info → novelWriter-2.5.2.dist-info}/RECORD +41 -39
- {novelWriter-2.5rc1.dist-info → novelWriter-2.5.2.dist-info}/WHEEL +1 -1
- novelwriter/__init__.py +3 -3
- novelwriter/assets/i18n/nw_de_DE.qm +0 -0
- novelwriter/assets/i18n/nw_en_US.qm +0 -0
- novelwriter/assets/i18n/nw_es_419.qm +0 -0
- novelwriter/assets/i18n/nw_fr_FR.qm +0 -0
- novelwriter/assets/i18n/nw_it_IT.qm +0 -0
- novelwriter/assets/i18n/nw_ja_JP.qm +0 -0
- novelwriter/assets/i18n/nw_nb_NO.qm +0 -0
- novelwriter/assets/i18n/nw_nl_NL.qm +0 -0
- novelwriter/assets/i18n/nw_pl_PL.qm +0 -0
- novelwriter/assets/i18n/nw_pt_BR.qm +0 -0
- novelwriter/assets/i18n/nw_zh_CN.qm +0 -0
- novelwriter/assets/i18n/project_pl_PL.json +116 -0
- novelwriter/assets/manual.pdf +0 -0
- novelwriter/assets/sample.zip +0 -0
- novelwriter/assets/text/credits_en.htm +52 -44
- novelwriter/common.py +10 -0
- novelwriter/core/project.py +15 -4
- novelwriter/core/status.py +4 -1
- novelwriter/core/storage.py +6 -1
- novelwriter/core/tokenizer.py +17 -11
- novelwriter/core/toqdoc.py +13 -13
- novelwriter/dialogs/preferences.py +14 -27
- novelwriter/dialogs/projectsettings.py +6 -10
- novelwriter/extensions/configlayout.py +18 -3
- novelwriter/extensions/statusled.py +12 -2
- novelwriter/gui/doceditor.py +3 -3
- novelwriter/gui/docviewer.py +5 -5
- novelwriter/gui/docviewerpanel.py +7 -0
- novelwriter/gui/outline.py +1 -0
- novelwriter/gui/projtree.py +66 -49
- novelwriter/guimain.py +50 -42
- novelwriter/shared.py +9 -0
- novelwriter/tools/manuscript.py +1 -0
- novelwriter/tools/welcome.py +9 -0
- {novelWriter-2.5rc1.dist-info → novelWriter-2.5.2.dist-info}/LICENSE.md +0 -0
- {novelWriter-2.5rc1.dist-info → novelWriter-2.5.2.dist-info}/entry_points.txt +0 -0
- {novelWriter-2.5rc1.dist-info → novelWriter-2.5.2.dist-info}/top_level.txt +0 -0
@@ -1,24 +1,25 @@
|
|
1
|
-
novelwriter/__init__.py,sha256=
|
2
|
-
novelwriter/common.py,sha256=
|
1
|
+
novelwriter/__init__.py,sha256=vemA3ERUhjeVgO3BDRRw_WJPGdtiFt0DLbrn2gO3WKA,7552
|
2
|
+
novelwriter/common.py,sha256=qg7jqTVqLOk4zlhKkFoLgYfBdtrBweZYkZeNn7OXX5k,18494
|
3
3
|
novelwriter/config.py,sha256=cUL4S-JOKhxEes--NxCiV84NpanvVbcbW_K5v74dS3w,39081
|
4
4
|
novelwriter/constants.py,sha256=y-UjNZxtU2lzn0Ji9lKiNU3233RmoJuK-3JWHT6GIvc,21368
|
5
5
|
novelwriter/enum.py,sha256=c1IS9rmpWMtqnMzftpWoQFtfRqcK9VMTO0vbMsf7pLM,3501
|
6
6
|
novelwriter/error.py,sha256=iIx1OzyXTT7Ngk2mXW_5c0YqVdFBD0NIkUFgAXNNBlM,6813
|
7
|
-
novelwriter/guimain.py,sha256=
|
8
|
-
novelwriter/shared.py,sha256=
|
7
|
+
novelwriter/guimain.py,sha256=i3qIrDKlwsaF0BgaTzldHWPOozs1wYpmvwQTVro06_c,53662
|
8
|
+
novelwriter/shared.py,sha256=LMgMXZK28LJUnRDbcTqTp4ZDVCKBt3EJYZMnIdu4R18,15906
|
9
9
|
novelwriter/types.py,sha256=tV-XFc10wsk7zH__S2dEuEfidI6_adgOetpAVbnmJmI,4691
|
10
|
-
novelwriter/assets/manual.pdf,sha256=
|
11
|
-
novelwriter/assets/sample.zip,sha256=
|
12
|
-
novelwriter/assets/i18n/nw_de_DE.qm,sha256=
|
13
|
-
novelwriter/assets/i18n/nw_en_US.qm,sha256=
|
14
|
-
novelwriter/assets/i18n/nw_es_419.qm,sha256=
|
15
|
-
novelwriter/assets/i18n/nw_fr_FR.qm,sha256
|
16
|
-
novelwriter/assets/i18n/nw_it_IT.qm,sha256=
|
17
|
-
novelwriter/assets/i18n/nw_ja_JP.qm,sha256=
|
18
|
-
novelwriter/assets/i18n/nw_nb_NO.qm,sha256=
|
19
|
-
novelwriter/assets/i18n/nw_nl_NL.qm,sha256=
|
20
|
-
novelwriter/assets/i18n/
|
21
|
-
novelwriter/assets/i18n/
|
10
|
+
novelwriter/assets/manual.pdf,sha256=Js2sAkX3shCh5xqRhXFL2aiMEeqbQzRqo1TXlwwbG_I,2739813
|
11
|
+
novelwriter/assets/sample.zip,sha256=KRzxNo7kIYdcYX4HZvcQhaz2ewmH9wJHcmMuKeATcNI,27805
|
12
|
+
novelwriter/assets/i18n/nw_de_DE.qm,sha256=__e0mtl0hfBX61eICSrJhR4mY0r7W9IkI5fYCwvLrYw,100554
|
13
|
+
novelwriter/assets/i18n/nw_en_US.qm,sha256=Mueo40jL6hBXcV0Vxac-Jd-GAsLASSqEV_7W96sFkZ8,93304
|
14
|
+
novelwriter/assets/i18n/nw_es_419.qm,sha256=eHiRXnf86BPH5MGvJuo8bR_nBaf-HULE-nRW76o9-yU,103131
|
15
|
+
novelwriter/assets/i18n/nw_fr_FR.qm,sha256=mB2TCRNjttTFoC34iGbri5OVt2ygCNtxPS5g48CA-HA,103616
|
16
|
+
novelwriter/assets/i18n/nw_it_IT.qm,sha256=Lg7F4YjU3FE1axKalwcoF9kFvEXS0KDqVNYqHQqhVi4,103350
|
17
|
+
novelwriter/assets/i18n/nw_ja_JP.qm,sha256=ILDwq_8kHCiorjZabSbUYer9xB9q7hf-NQyAlReVKf8,77169
|
18
|
+
novelwriter/assets/i18n/nw_nb_NO.qm,sha256=g2raFt2Lw5RcE0IJM1_f7GJsqt8G_uSv7m6sD6zFe_0,95946
|
19
|
+
novelwriter/assets/i18n/nw_nl_NL.qm,sha256=SnEtdqHaSb8xWA4-EpnWxXD_uK8BeBs44I32AwlST3M,99906
|
20
|
+
novelwriter/assets/i18n/nw_pl_PL.qm,sha256=Em13jYHYnTbLZp_JaodgZntmcpxBrvbitOZhM8ZQXig,98702
|
21
|
+
novelwriter/assets/i18n/nw_pt_BR.qm,sha256=EXqtpkEPafPipTd0rCBN6cQ5SlqVyeMPwyMfgpTKjMs,101680
|
22
|
+
novelwriter/assets/i18n/nw_zh_CN.qm,sha256=poSDKRXapJ8zHBmiRdA85KcIN1nm6gnowDMlpoJwAKE,69647
|
22
23
|
novelwriter/assets/i18n/project_de_DE.json,sha256=85ud9rxRHyXm85QDmW_LKcUE8h0L1Bvukaf5Tjt-wpg,2818
|
23
24
|
novelwriter/assets/i18n/project_en_GB.json,sha256=7c9W2YJAELCSwx4zN_2qYZ3xsGncinCrGNhaj_FVkxk,2511
|
24
25
|
novelwriter/assets/i18n/project_en_US.json,sha256=EcQAVEiQgRL3qobuzkPTfOWIxAc3Om-tA7nXUFFXEdI,2483
|
@@ -29,6 +30,7 @@ novelwriter/assets/i18n/project_ja_JP.json,sha256=8P03f2D9o2TlSxFU5ugRa-DJDeDZr_
|
|
29
30
|
novelwriter/assets/i18n/project_nb_NO.json,sha256=e8E9c188KRPJfgZa298hDiaLEuhjHMxbRMaIF8HaVew,2298
|
30
31
|
novelwriter/assets/i18n/project_nl_NL.json,sha256=qUEEjLMRtvt9VuNmjb_qOVCXqUCENHskCEyp5YlPMc4,2683
|
31
32
|
novelwriter/assets/i18n/project_nn_NO.json,sha256=7ZfmtFWHcDMiLVqdOEDHQWHbpoC_bv5ESmf_-CoYiks,2250
|
33
|
+
novelwriter/assets/i18n/project_pl_PL.json,sha256=msXu3rNhJ19ytVespoXQ95nZ-mFis5rlLeCPK4A3zS8,3461
|
32
34
|
novelwriter/assets/i18n/project_pt_BR.json,sha256=FDxIeSlf3v8AcrWfgwk7UOMRDmb2hWdDoabsBq5rkL8,2763
|
33
35
|
novelwriter/assets/i18n/project_ru_RU.json,sha256=F4QkD6VVDCtGdil7uoXCmuczvUpe9tv-1L-3Eyc8sKE,3699
|
34
36
|
novelwriter/assets/i18n/project_zh_CN.json,sha256=cfl0TsnbISYUvygOw015y0x0REDG97xR0yjyJ85Jm34,2322
|
@@ -258,7 +260,7 @@ novelwriter/assets/syntax/tomorrow_night.conf,sha256=mWPneIV_6tszLEK4-Eo-kcJmUbr
|
|
258
260
|
novelwriter/assets/syntax/tomorrow_night_blue.conf,sha256=L42gcekFfNpCCB45m9Lhzmz8Y6Lvbpik3AADi_1Aao8,1549
|
259
261
|
novelwriter/assets/syntax/tomorrow_night_bright.conf,sha256=h8_775Ed8hl2XhfCoxAY2kT43vi-UvG8UHik1aI4eRw,1554
|
260
262
|
novelwriter/assets/syntax/tomorrow_night_eighties.conf,sha256=stO_xH5RzMN0jaZeYr53LVXbpqSmIXALBFGVLlJBDLA,1557
|
261
|
-
novelwriter/assets/text/credits_en.htm,sha256=
|
263
|
+
novelwriter/assets/text/credits_en.htm,sha256=jeEMRXuD-ZpGgRPtS3oZQ4HdIe6pwSnB3ZifvYiZLjU,2904
|
262
264
|
novelwriter/assets/text/lipsum.txt,sha256=sGA6AC_p4jrUifxLxy3cSODeRwkpBNXDPGgX6YRTm2s,62937
|
263
265
|
novelwriter/assets/themes/cyberpunk_night.conf,sha256=FvG_YVfEnMwJV1XUDEdpi9qoHQ5sdyVEaR_Y3WfWNA8,923
|
264
266
|
novelwriter/assets/themes/default.conf,sha256=K0LZ64lODpCtUg3pISTAP4UKvEYMvPkmIYN9RDEaWwk,72
|
@@ -274,47 +276,47 @@ novelwriter/core/document.py,sha256=T8FlxyEMlR3t2HNE92InseWUMylWFTMnr2fP-Ge5LQc,
|
|
274
276
|
novelwriter/core/index.py,sha256=soGv-bDdAHk77ubqr1OfftGtyB1aJAJNODyfOq2nZm8,48450
|
275
277
|
novelwriter/core/item.py,sha256=0p_o3eCf8ZK30MiUR1rd1fDXb63lqNB4lHZeLMA6Wys,17635
|
276
278
|
novelwriter/core/options.py,sha256=8yAQoTkDhTCZY7EGg29Fq7Lj4n4Hd2i-Kx7TlgnausM,7372
|
277
|
-
novelwriter/core/project.py,sha256=
|
279
|
+
novelwriter/core/project.py,sha256=tdD6GrwicCttvlM2jt0Tx8A9VpfFi5g4sTsM2h497R4,22066
|
278
280
|
novelwriter/core/projectdata.py,sha256=bt-LDNJsM2K4VwTcyZU_V2KOUZJFRKrNXNIwbU1v3Eo,9799
|
279
281
|
novelwriter/core/projectxml.py,sha256=dbgm2ryPCOa1BFsFay-6vEK2itE8TWYRUiwCBpPp59g,22013
|
280
282
|
novelwriter/core/sessions.py,sha256=V9eBXaUMcXTZjYXR5dgi6E14COIlcLIkNwS6pDrn75U,4405
|
281
283
|
novelwriter/core/spellcheck.py,sha256=MwkRPp3MJa2X-6yRWX6Rc-sq2vLsbLnjNnyUpAbRFiE,7176
|
282
|
-
novelwriter/core/status.py,sha256=
|
283
|
-
novelwriter/core/storage.py,sha256=
|
284
|
+
novelwriter/core/status.py,sha256=FW20GK6_gxsYCiD7ZDg_gGIgp6yw3y1PS5mBN5HlARo,11592
|
285
|
+
novelwriter/core/storage.py,sha256=mNM9EMW0VRMwEkmTKnzotPVdJk4tJDDUNAHNH9yG5mw,20926
|
284
286
|
novelwriter/core/tohtml.py,sha256=NxM4c52q2ZFNW-XdHOI9L5lqTSiw9J5KZAELhdmN_9I,19211
|
285
|
-
novelwriter/core/tokenizer.py,sha256=
|
287
|
+
novelwriter/core/tokenizer.py,sha256=M4hbOqPtaeLFFPwVlQs03eHgSDHEWjZKw3_zzWtgqB0,47975
|
286
288
|
novelwriter/core/tomarkdown.py,sha256=sZG64PLyTjDuIxnPQVMdcMSF-obsp4C06B1dUKhlbHU,7925
|
287
289
|
novelwriter/core/toodt.py,sha256=Hrb6FJkwf2wwcKE6f7lw5o0PZqKsf1TWqvJbrJWrijU,62529
|
288
|
-
novelwriter/core/toqdoc.py,sha256=
|
290
|
+
novelwriter/core/toqdoc.py,sha256=p8_4WwwXcnEuPw2XsU4Xq76YTyT2JMk7NQR1arCjVd8,15500
|
289
291
|
novelwriter/core/tree.py,sha256=mmOB7kN0tjWda_AdT1WuZyFrewuc6uRAlqCfX6opwek,18681
|
290
292
|
novelwriter/dialogs/about.py,sha256=0iBYkifACc5vZj4KwG0G2Dll_Wp4acAHUfNTto74MFU,4755
|
291
293
|
novelwriter/dialogs/docmerge.py,sha256=HtJvmu56CGb_G27XGRgF3kl0jPR_14SBVsOKv_UyVX8,6286
|
292
294
|
novelwriter/dialogs/docsplit.py,sha256=nPb7U68vtZ5yuJtUIr-2yTWCfADCtK4T1h7LgL0Hx8c,9281
|
293
295
|
novelwriter/dialogs/editlabel.py,sha256=cs8ztrK1Gi3lEZozvs978dNAR6rnlV8cWr9dZArD51I,2963
|
294
|
-
novelwriter/dialogs/preferences.py,sha256=
|
295
|
-
novelwriter/dialogs/projectsettings.py,sha256=
|
296
|
+
novelwriter/dialogs/preferences.py,sha256=HSH8JrJUi3r_bBiTkkLtLUbsCIZpMI3LECOWDHpqhMU,38050
|
297
|
+
novelwriter/dialogs/projectsettings.py,sha256=EfMcfCDGn59XuzkJGuuKhS9UFdYTNIxTJPEiQB71zGg,27525
|
296
298
|
novelwriter/dialogs/quotes.py,sha256=JCgoz9I8HepxYYVBXOzQac6aFpzNMF4CRdw4CnAnuNM,4727
|
297
299
|
novelwriter/dialogs/wordlist.py,sha256=yuQebLRuasVk2QUm2zWGn7ZzuWM4lFGyXz0egQPyILw,8511
|
298
|
-
novelwriter/extensions/configlayout.py,sha256=
|
300
|
+
novelwriter/extensions/configlayout.py,sha256=rQfK0kAwSZn30WEtqJKP8RoNWOjVP4C3gYTAXXkm5u0,10443
|
299
301
|
novelwriter/extensions/eventfilters.py,sha256=mTU_sMQPOEocRfvLcwQyXUpkm314tH32WsID61ss1CI,2522
|
300
302
|
novelwriter/extensions/modified.py,sha256=kXntkvw1ZWeRxseZyA444bV3O9RbmbErtaDDafu0DwY,5756
|
301
303
|
novelwriter/extensions/novelselector.py,sha256=etVtoDkHGJIP4ab__vStJQCREKYt5sWLfK1vyuO3hLI,3794
|
302
304
|
novelwriter/extensions/pagedsidebar.py,sha256=Brgl_d8KXnWWJov-sTkj9tMQu7Xrz8v7rXcnvpAaRK8,7232
|
303
305
|
novelwriter/extensions/progressbars.py,sha256=BpJHycboSNGYWIfAEMqIy1Qxf32Cg8TeWM3hogzakTs,4628
|
304
|
-
novelwriter/extensions/statusled.py,sha256=
|
306
|
+
novelwriter/extensions/statusled.py,sha256=QdgkMSMKMfQRM9kiEXCuH-wbrq_AH9Sh8zBvYfvJE6Q,2943
|
305
307
|
novelwriter/extensions/switch.py,sha256=4kXJ3EHEhaivj1D69iBi46hkkPBGAt-Rt5EjVK3V4Aw,4299
|
306
308
|
novelwriter/extensions/switchbox.py,sha256=5tCiFWkT9WF9xh2c__BnNAJHFLw2nRso3fJZfwzDqRE,4198
|
307
309
|
novelwriter/extensions/versioninfo.py,sha256=R2_U6B678be0WNxbnhUntpxR5PnZVGf6eeyENp-S-Xo,5035
|
308
|
-
novelwriter/gui/doceditor.py,sha256=
|
310
|
+
novelwriter/gui/doceditor.py,sha256=Cv9_sMKpSozKrIPusvcLDzlgD6rr8JxDHkzIoApOfMc,113720
|
309
311
|
novelwriter/gui/dochighlight.py,sha256=4JNWQkfaEc0p-EvRRkbBWwQdrFqVotgremzu2WWw9hA,19463
|
310
|
-
novelwriter/gui/docviewer.py,sha256=
|
311
|
-
novelwriter/gui/docviewerpanel.py,sha256=
|
312
|
+
novelwriter/gui/docviewer.py,sha256=eXnUE-q_hrwIaJ7FBJf5XrTiQOkWz_r_oAsoYe9w3PI,32251
|
313
|
+
novelwriter/gui/docviewerpanel.py,sha256=CCCzSc-Ol5jCmoEfpZ-RD-tcwzkyM7g_iBSQNeljGgE,20040
|
312
314
|
novelwriter/gui/editordocument.py,sha256=5_v-gwZ9-CwJHGs7lFUGdY3paR7F1PW2FjD6_fbq5wY,4087
|
313
315
|
novelwriter/gui/itemdetails.py,sha256=0U3hghK4Vue3AwtLBRY6YJMN3vOCjatvvzXhJDn4UXo,9688
|
314
316
|
novelwriter/gui/mainmenu.py,sha256=PaJjO38DQ72UL9hMyvSbh2I1daxOZBSbJhNsov771fw,38908
|
315
317
|
novelwriter/gui/noveltree.py,sha256=rAU_f6efrt5uAsew6jGqo3X3E3ggrZaoQh2prm13wD8,27635
|
316
|
-
novelwriter/gui/outline.py,sha256=
|
317
|
-
novelwriter/gui/projtree.py,sha256=
|
318
|
+
novelwriter/gui/outline.py,sha256=Id6hSEe1iLls6qPckX-b3U21rPOOndlfe7r4VsNC3G8,42312
|
319
|
+
novelwriter/gui/projtree.py,sha256=iMsMf8IcaV3Dvsbx3thWvWffHFqM5kTWP2AC69Fsvg0,78027
|
318
320
|
novelwriter/gui/search.py,sha256=HnS0_vOg15f3woXeZ8MS_ZAblx9aFIuN7BSa195tY1M,13262
|
319
321
|
novelwriter/gui/sidebar.py,sha256=jBkOinx69lwt4m1GovQ7nF44lF-g_SOk3yTT96KlbFY,6212
|
320
322
|
novelwriter/gui/statusbar.py,sha256=-rF6bIJXGKFRswVKWE1c5In5x3sX4iXMfp0AGxZxt0c,9053
|
@@ -324,14 +326,14 @@ novelwriter/text/patterns.py,sha256=sEBPf9buLtJvYeoYquZzDcSC6gfKBHIUPGbD31y5H-g,
|
|
324
326
|
novelwriter/tools/dictionaries.py,sha256=92GNCSEOK1EI7t2DiayT8p7nzKW7LwxJJz98F6kn3Vg,9243
|
325
327
|
novelwriter/tools/lipsum.py,sha256=NcmoxWzrbEybh_w1FzxuxHmeTr8N03OrxjxsPWEbae4,4794
|
326
328
|
novelwriter/tools/manusbuild.py,sha256=c3NdpkAqUPTKN2BpGX_xleFtZPi1G8uv80XBZEp27Bw,14071
|
327
|
-
novelwriter/tools/manuscript.py,sha256=
|
329
|
+
novelwriter/tools/manuscript.py,sha256=UgLSm6TFfftSc_cttzaic6Y06pwdMOMmSBhVWzdCSYA,38009
|
328
330
|
novelwriter/tools/manussettings.py,sha256=Uz7QpCb2l_SftpQ5N7x0qHdq41-6fvTRHv7bxWvDLWg,56145
|
329
331
|
novelwriter/tools/noveldetails.py,sha256=xNpTf5-hFu-K_flPhMLug6tNboKvDWV7OEetpHx6Lsc,18481
|
330
|
-
novelwriter/tools/welcome.py,sha256=
|
332
|
+
novelwriter/tools/welcome.py,sha256=KLSlBTih_HOTJ3nmyv4IU4ec8XNJDL5AwXMZ6amqmIw,28027
|
331
333
|
novelwriter/tools/writingstats.py,sha256=f5nbmE5V9VsQ8qi_DlvfF5yVIupEbVDavtuMbTzU7IA,22753
|
332
|
-
novelWriter-2.
|
333
|
-
novelWriter-2.
|
334
|
-
novelWriter-2.
|
335
|
-
novelWriter-2.
|
336
|
-
novelWriter-2.
|
337
|
-
novelWriter-2.
|
334
|
+
novelWriter-2.5.2.dist-info/LICENSE.md,sha256=2GirkkLrPfQqx7fACKRJjtKJUegKc8067erGvcDVQHM,32197
|
335
|
+
novelWriter-2.5.2.dist-info/METADATA,sha256=76vgcoOL-Qfwlxjkg274DhfbxHgJN_AjHJnNN26Tb5Y,2532
|
336
|
+
novelWriter-2.5.2.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
337
|
+
novelWriter-2.5.2.dist-info/entry_points.txt,sha256=YDUG1w361LtLsjD3YhxoTDTwM17JA5-nigjC6j5C74A,45
|
338
|
+
novelWriter-2.5.2.dist-info/top_level.txt,sha256=wFFEucjEeNC_Ap5ULBuEutg5a1Uc0-YO9uFT5L2naNI,12
|
339
|
+
novelWriter-2.5.2.dist-info/RECORD,,
|
novelwriter/__init__.py
CHANGED
@@ -47,9 +47,9 @@ __license__ = "GPLv3"
|
|
47
47
|
__author__ = "Veronica Berglyd Olsen"
|
48
48
|
__maintainer__ = "Veronica Berglyd Olsen"
|
49
49
|
__email__ = "code@vkbo.net"
|
50
|
-
__version__ = "2.
|
51
|
-
__hexversion__ = "
|
52
|
-
__date__ = "2024-
|
50
|
+
__version__ = "2.5.2"
|
51
|
+
__hexversion__ = "0x020502f0"
|
52
|
+
__date__ = "2024-09-17"
|
53
53
|
__status__ = "Stable"
|
54
54
|
__domain__ = "novelwriter.io"
|
55
55
|
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,116 @@
|
|
1
|
+
{
|
2
|
+
"Synopsis": "Streszczenie",
|
3
|
+
"Short Description": "Krótki opis",
|
4
|
+
"Comment": "Komentarz",
|
5
|
+
"Notes": "Notatki",
|
6
|
+
"Tag": "Znacznik",
|
7
|
+
"Point of View": "Punkt widzenia",
|
8
|
+
"Focus": "Skupienie",
|
9
|
+
"Characters": "Postacie",
|
10
|
+
"Plot": "Fabuła",
|
11
|
+
"Timeline": "Oś czasu",
|
12
|
+
"Locations": "Miejsca",
|
13
|
+
"Objects": "Obiekty",
|
14
|
+
"Entities": "Podmioty",
|
15
|
+
"Custom": "Różne",
|
16
|
+
"0": "zero",
|
17
|
+
"1": "pierwszy",
|
18
|
+
"2": "drugi",
|
19
|
+
"3": "trzeci",
|
20
|
+
"4": "czwarty",
|
21
|
+
"5": "piąty",
|
22
|
+
"6": "szósty",
|
23
|
+
"7": "siódmy",
|
24
|
+
"8": "ósmy",
|
25
|
+
"9": "dziewiąty",
|
26
|
+
"10": "dziesiąty",
|
27
|
+
"11": "jedenasty",
|
28
|
+
"12": "dwunasty",
|
29
|
+
"13": "trzynasty",
|
30
|
+
"14": "czternasty",
|
31
|
+
"15": "piętnasty",
|
32
|
+
"16": "szesnasty",
|
33
|
+
"17": "siedemnasty",
|
34
|
+
"18": "osiemnasty",
|
35
|
+
"19": "dziewiętnasty",
|
36
|
+
"20": "dwudziesty",
|
37
|
+
"21": "dwudziesty pierwszy",
|
38
|
+
"22": "dwudziesty drugi",
|
39
|
+
"23": "dwudziesty Trzeci",
|
40
|
+
"24": "dwudziesty czwarty",
|
41
|
+
"25": "dwudziesty piąty",
|
42
|
+
"26": "dwudziesty szósty",
|
43
|
+
"27": "dwudziesty siódmy",
|
44
|
+
"28": "dwudziesty ósmy",
|
45
|
+
"29": "dwudziesty dziewiąty",
|
46
|
+
"30": "trzydziesty",
|
47
|
+
"31": "trzydziesty pierwszy",
|
48
|
+
"32": "trzydziesty drugi",
|
49
|
+
"33": "trzydziesty trzeci",
|
50
|
+
"34": "trzydziesty czwarty",
|
51
|
+
"35": "trzydziesty piąty",
|
52
|
+
"36": "trzydziesty szósty",
|
53
|
+
"37": "trzydziesty siódmy",
|
54
|
+
"38": "trzydziesty ósmy",
|
55
|
+
"39": "trzydziesty dziewiaty",
|
56
|
+
"40": "czterdziesty",
|
57
|
+
"41": "czterdziesty pierwszy",
|
58
|
+
"42": "czterdziesty drugi",
|
59
|
+
"43": "czterdziesty Trzeci",
|
60
|
+
"44": "czterdziesty czwarty",
|
61
|
+
"45": "czterdziesty piąty",
|
62
|
+
"46": "czterdziesty szósty",
|
63
|
+
"47": "czterdziesty siódmy",
|
64
|
+
"48": "czterdziesty ósmy",
|
65
|
+
"49": "czterdziesty dziewiąty",
|
66
|
+
"50": "pięćdziesiąty",
|
67
|
+
"51": "pięćdziesiąty pierwszy",
|
68
|
+
"52": "pięćdziesiąty drugi",
|
69
|
+
"53": "pięćdziesiąty trzeci",
|
70
|
+
"54": "pięćdziesiąty czwarty",
|
71
|
+
"55": "pięćdziesiąty piąty",
|
72
|
+
"56": "pięćdziesiąty szósty",
|
73
|
+
"57": "pięćdziesiąty siódmy",
|
74
|
+
"58": "pięćdziesiąty ósmy",
|
75
|
+
"59": "pięćdziesiąty dziewiąty",
|
76
|
+
"60": "sześćdziesiąty",
|
77
|
+
"61": "sześćdziesiąty pierwszy",
|
78
|
+
"62": "sześćdziesiąty drugi",
|
79
|
+
"63": "sześćdziesiąty trzeci",
|
80
|
+
"64": "sześćdziesiąty czwarty",
|
81
|
+
"65": "sześćdziesiąty piąty",
|
82
|
+
"66": "sześćdziesiąty szósty",
|
83
|
+
"67": "sześćdziesiąty siódmy",
|
84
|
+
"68": "sześćdziesiąty ósmy",
|
85
|
+
"69": "sześćdziesiąty dziewiąty",
|
86
|
+
"70": "siedemdziesiąty",
|
87
|
+
"71": "siedemdziesiąty pierwszy",
|
88
|
+
"72": "siedemdziesiąty drugi",
|
89
|
+
"73": "siedemdziesiąty trzeci",
|
90
|
+
"74": "siedemdziesiąty czwarty",
|
91
|
+
"75": "siedemdziesiąty piąty",
|
92
|
+
"76": "siedemdziesiąty szósty",
|
93
|
+
"77": "siedemdziesiąty siódmy",
|
94
|
+
"78": "siedemdziesiąty ósmy",
|
95
|
+
"79": "siedemdziesiąty dziewiąty",
|
96
|
+
"80": "osiemdziesiąty",
|
97
|
+
"81": "osiemdziesiąty pierwszy",
|
98
|
+
"82": "osiemdziesiąty drugi",
|
99
|
+
"83": "osiemdziesiąty trzeci",
|
100
|
+
"84": "osiemdziesiąty czwarty",
|
101
|
+
"85": "osiemdziesiąty piąty",
|
102
|
+
"86": "osiemdziesiąty szósty",
|
103
|
+
"87": "osiemdziesiąty siódmy",
|
104
|
+
"88": "osiemdziesiąty ósmy",
|
105
|
+
"89": "osiemdziesiąty dziewiąty",
|
106
|
+
"90": "dziewięćdziesiąty",
|
107
|
+
"91": "dziewięćdziesiąty pierwszy",
|
108
|
+
"92": "dziewięćdziesiąty drugi",
|
109
|
+
"93": "dziewięćdziesiąty trzeci",
|
110
|
+
"94": "dziewięćdziesiąty czwarty",
|
111
|
+
"95": "dziewięćdziesiąty piąty",
|
112
|
+
"96": "dziewięćdziesiąty szósty",
|
113
|
+
"97": "dziewięćdziesiąty siódmy",
|
114
|
+
"98": "dziewięćdziesiąty ósmy",
|
115
|
+
"99": "dziewięćdziesiąty dziewiąty"
|
116
|
+
}
|
novelwriter/assets/manual.pdf
CHANGED
Binary file
|
novelwriter/assets/sample.zip
CHANGED
Binary file
|
@@ -1,84 +1,92 @@
|
|
1
|
-
<!DOCTYPE html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
2
1
|
<html>
|
3
2
|
<body>
|
4
3
|
|
5
4
|
<h3>Main Developer</h3>
|
6
|
-
|
5
|
+
|
6
|
+
<p>Veronica Berglyd Olsen</p>
|
7
7
|
|
8
8
|
<h3>Contributors</h3>
|
9
9
|
|
10
|
-
<
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
</
|
10
|
+
<ul>
|
11
|
+
<li><b>Early Concept:</b> Marian Lückhof</li>
|
12
|
+
<li><b>Internationalisation:</b> Bruno Meneguello</li>
|
13
|
+
<li><b>Setup and Packaging:</b> Rachel Powers</li>
|
14
|
+
</ul>
|
15
|
+
|
15
16
|
<p>For other contributions, see the project's
|
16
17
|
<a href="https://github.com/vkbo/novelWriter/graphs/contributors">Contributors</a> page.</p>
|
17
18
|
|
18
19
|
<h3>Artwork</h3>
|
19
20
|
|
20
|
-
<p>The artwork on the Welcome dialog was created by
|
21
|
+
<p>The artwork on the Welcome dialog was created by Louis Durrant.</p>
|
21
22
|
|
22
23
|
<h3>Translations</h3>
|
23
24
|
|
24
25
|
<p>The default language is English (UK) with English (US) as an option. These are the original
|
25
26
|
translators for the languages currently available:</p>
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
</
|
27
|
+
|
28
|
+
<ul>
|
29
|
+
<li><b>Dutch:</b> Martijn van der Kleijn (mvdkleijn)</li>
|
30
|
+
<li><b>French:</b> Jan Lüdke (jyhelle)</li>
|
31
|
+
<li><b>German:</b> Myian (HeyMyian)</li>
|
32
|
+
<li><b>Italian:</b> Riccardo Mangili</li>
|
33
|
+
<li><b>Japanese:</b> hebekeg</li>
|
34
|
+
<li><b>Latin American Spanish:</b> Tommy Marplatt (tmarplatt)</li>
|
35
|
+
<li><b>Norwegian:</b> Veronica Berglyd Olsen (vkbo)</li>
|
36
|
+
<li><b>Polish:</b> Anna Maria Polak (Nauthiz)</li>
|
37
|
+
<li><b>Portuguese:</b> Bruno Meneguello (bkmeneguello)</li>
|
38
|
+
<li><b>Simplified Chinese:</b> Qianzhi Long (longqzh)</li>
|
39
|
+
</ul>
|
37
40
|
|
38
41
|
<p>Additional larger translation contributions:</p>
|
39
|
-
|
40
|
-
|
41
|
-
</
|
42
|
+
|
43
|
+
<ul>
|
44
|
+
<li><b>French:</b> Albert Aribaud (aaribaud)</li>
|
45
|
+
<li><b>Portuguese:</b> Oli Maia (olimaia)</li>
|
46
|
+
</ul>
|
42
47
|
|
43
48
|
<p>Translations are managed on <a href="https://crowdin.com/project/novelwriter">Crowdin</a>, and
|
44
|
-
more contributions are listed on the project's
|
49
|
+
more contributions are listed on the project's Members page.</p>
|
45
50
|
|
46
51
|
<h3>Libraries</h3>
|
47
52
|
|
48
53
|
<p>The following libraries are dependencies of novelWriter:</p>
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
</
|
54
|
+
|
55
|
+
<ul>
|
56
|
+
<li><b>Qt5</b> by Qt Company</li>
|
57
|
+
<li><b>PyQt5</b> by Riverbank Computing</li>
|
58
|
+
<li><b>Enchant</b> by Dom Lachowicz</li>
|
59
|
+
<li><b>PyEnchant</b> by Dimitri Merejkowsky</li>
|
60
|
+
</ul>
|
55
61
|
|
56
62
|
<h3>Assets</h3>
|
57
63
|
|
58
64
|
<p>Some of the assets bundled with novelWriter were adapted from the following sources:</p>
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
</
|
65
|
+
|
66
|
+
<ul>
|
67
|
+
<li><b>Typicons</b> icons by Stephen Hutchings (CC BY-SA 4.0)</li>
|
68
|
+
<li><b>Tomorrow</b> syntax themes by Chris Kempson (MIT License)</li>
|
69
|
+
<li><b>Owl</b> syntax themes by Sarah Drasner (MIT License)</li>
|
70
|
+
<li><b>Solarized</b> themes by Ethan Schoonover (MIT License)</li>
|
71
|
+
<li><b>Cyberpunk Night</b> theme by Anders Lemvigh (CC BY-SA 4.0)</li>
|
72
|
+
<li><b>Dracula</b> theme by Zeno Rocha (MIT License)</li>
|
73
|
+
<li><b>Snazzy Light</b> theme by Florian Reuschel (MIT License)</li>
|
74
|
+
</ul>
|
68
75
|
|
69
76
|
<h3>Fonts</h3>
|
70
77
|
|
71
78
|
<p>The font used for the main novelWriter logo, mimetype and text banners is Pridi. Other fonts are
|
72
79
|
used on buttons and icons.</p>
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
</
|
80
|
+
|
81
|
+
<ul>
|
82
|
+
<li><b>Pridi</b> by Cadson Demak (Open Font License, Version 1.1)</li>
|
83
|
+
<li><b>Source Sans Pro</b> by Paul D. Hunt (SIL Open Font License)</li>
|
84
|
+
</ul>
|
77
85
|
|
78
86
|
<h3>Special Mentions</h3>
|
79
87
|
|
80
|
-
<p>Additional thanks to
|
81
|
-
|
88
|
+
<p>Additional thanks to John Blommers who was an early user and who has provided a lot of very
|
89
|
+
useful feedback over the years.</p>
|
82
90
|
|
83
91
|
</body>
|
84
92
|
</html>
|
novelwriter/common.py
CHANGED
@@ -279,6 +279,16 @@ def simplified(text: str) -> str:
|
|
279
279
|
return " ".join(str(text).strip().split())
|
280
280
|
|
281
281
|
|
282
|
+
def compact(text: str) -> str:
|
283
|
+
"""Compact a string by removing spaces."""
|
284
|
+
return "".join(str(text).split())
|
285
|
+
|
286
|
+
|
287
|
+
def uniqueCompact(text: str) -> str:
|
288
|
+
"""Return a unique, compact and sorted string."""
|
289
|
+
return "".join(sorted(set(compact(text))))
|
290
|
+
|
291
|
+
|
282
292
|
def elide(text: str, length: int) -> str:
|
283
293
|
"""Elide a piece of text to a maximum length."""
|
284
294
|
if len(text) > (cut := max(4, length)):
|
novelwriter/core/project.py
CHANGED
@@ -254,13 +254,23 @@ class NWProject:
|
|
254
254
|
status = self._storage.initProjectStorage(projPath, clearLock)
|
255
255
|
if status != NWStorageOpen.READY:
|
256
256
|
if status == NWStorageOpen.UNKOWN:
|
257
|
-
SHARED.error(
|
257
|
+
SHARED.error(
|
258
|
+
self.tr("Not a known project file format."),
|
259
|
+
info=self.tr("Path: {0}").format(str(projPath))
|
260
|
+
)
|
258
261
|
elif status == NWStorageOpen.NOT_FOUND:
|
259
|
-
SHARED.error(
|
262
|
+
SHARED.error(
|
263
|
+
self.tr("Project file not found."),
|
264
|
+
info=self.tr("Path: {0}").format(str(projPath))
|
265
|
+
)
|
266
|
+
elif status == NWStorageOpen.FAILED:
|
267
|
+
SHARED.error(
|
268
|
+
self.tr("Failed to open project."),
|
269
|
+
info=self.tr("Path: {0}").format(str(projPath)),
|
270
|
+
exc=self._storage.exc
|
271
|
+
)
|
260
272
|
elif status == NWStorageOpen.LOCKED:
|
261
273
|
self._state = NWProjectState.LOCKED
|
262
|
-
elif status == NWStorageOpen.FAILED:
|
263
|
-
SHARED.error(self.tr("Failed to open project."), exc=self._storage.exc)
|
264
274
|
return False
|
265
275
|
|
266
276
|
# Read Project XML
|
@@ -346,6 +356,7 @@ class NWProject:
|
|
346
356
|
self.setProjectChanged(False)
|
347
357
|
self._valid = True
|
348
358
|
self._state = NWProjectState.READY
|
359
|
+
self._storage.lockSession() # Lock only after a successful open. See issue #1977.
|
349
360
|
|
350
361
|
SHARED.newStatusMessage(self.tr("Opened Project: {0}").format(self._data.name))
|
351
362
|
|
novelwriter/core/status.py
CHANGED
@@ -121,7 +121,7 @@ class NWStatus:
|
|
121
121
|
return key
|
122
122
|
|
123
123
|
def update(self, update: list[tuple[str | None, StatusEntry]]) -> None:
|
124
|
-
"""Update the list of statuses
|
124
|
+
"""Update the list of statuses."""
|
125
125
|
self._store.clear()
|
126
126
|
for key, entry in update:
|
127
127
|
self._store[self._checkKey(key)] = entry
|
@@ -130,6 +130,9 @@ class NWStatus:
|
|
130
130
|
if self._default not in self._store:
|
131
131
|
self._default = next(iter(self._store)) if self._store else None
|
132
132
|
|
133
|
+
# Emit the change signal
|
134
|
+
SHARED.projectSingalProxy({"event": "statusLabels", "kind": self._prefix})
|
135
|
+
|
133
136
|
return
|
134
137
|
|
135
138
|
def check(self, value: str) -> str:
|
novelwriter/core/storage.py
CHANGED
@@ -235,7 +235,6 @@ class NWStorage:
|
|
235
235
|
if child.is_dir() and child.name.startswith("data_"):
|
236
236
|
legacy.legacyDataFolder(basePath, child)
|
237
237
|
|
238
|
-
self._writeLockFile()
|
239
238
|
self._ready = True
|
240
239
|
|
241
240
|
return NWStorageOpen.READY
|
@@ -249,6 +248,12 @@ class NWStorage:
|
|
249
248
|
return True
|
250
249
|
return True
|
251
250
|
|
251
|
+
def lockSession(self) -> None:
|
252
|
+
"""Lock the session when the project is successfully opened."""
|
253
|
+
if self._ready:
|
254
|
+
self._writeLockFile()
|
255
|
+
return
|
256
|
+
|
252
257
|
def closeSession(self) -> None:
|
253
258
|
"""Run tasks related to closing the session."""
|
254
259
|
self._clearLockFile()
|