novelWriter 2.5.3__py3-none-any.whl → 2.6__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.5.3.dist-info → novelWriter-2.6.dist-info}/METADATA +2 -2
- {novelWriter-2.5.3.dist-info → novelWriter-2.6.dist-info}/RECORD +123 -103
- {novelWriter-2.5.3.dist-info → novelWriter-2.6.dist-info}/WHEEL +1 -1
- novelwriter/__init__.py +50 -11
- 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_ru_RU.qm +0 -0
- novelwriter/assets/i18n/nw_zh_CN.qm +0 -0
- novelwriter/assets/i18n/project_de_DE.json +2 -0
- novelwriter/assets/i18n/project_en_GB.json +1 -0
- novelwriter/assets/i18n/project_en_US.json +2 -0
- novelwriter/assets/i18n/project_it_IT.json +2 -0
- novelwriter/assets/i18n/project_ja_JP.json +2 -0
- novelwriter/assets/i18n/project_nb_NO.json +2 -0
- novelwriter/assets/i18n/project_nl_NL.json +2 -0
- novelwriter/assets/i18n/project_pl_PL.json +2 -0
- novelwriter/assets/i18n/project_pt_BR.json +2 -0
- novelwriter/assets/i18n/project_zh_CN.json +2 -0
- novelwriter/assets/icons/typicons_dark/icons.conf +8 -0
- novelwriter/assets/icons/typicons_dark/mixed_copy.svg +4 -0
- novelwriter/assets/icons/typicons_dark/mixed_margin-bottom.svg +6 -0
- novelwriter/assets/icons/typicons_dark/mixed_margin-left.svg +6 -0
- novelwriter/assets/icons/typicons_dark/mixed_margin-right.svg +6 -0
- novelwriter/assets/icons/typicons_dark/mixed_margin-top.svg +6 -0
- novelwriter/assets/icons/typicons_dark/mixed_size-height.svg +6 -0
- novelwriter/assets/icons/typicons_dark/mixed_size-width.svg +6 -0
- novelwriter/assets/icons/typicons_dark/nw_toolbar.svg +5 -0
- novelwriter/assets/icons/typicons_light/icons.conf +8 -0
- novelwriter/assets/icons/typicons_light/mixed_copy.svg +4 -0
- novelwriter/assets/icons/typicons_light/mixed_margin-bottom.svg +6 -0
- novelwriter/assets/icons/typicons_light/mixed_margin-left.svg +6 -0
- novelwriter/assets/icons/typicons_light/mixed_margin-right.svg +6 -0
- novelwriter/assets/icons/typicons_light/mixed_margin-top.svg +6 -0
- novelwriter/assets/icons/typicons_light/mixed_size-height.svg +6 -0
- novelwriter/assets/icons/typicons_light/mixed_size-width.svg +6 -0
- novelwriter/assets/icons/typicons_light/nw_toolbar.svg +5 -0
- novelwriter/assets/manual.pdf +0 -0
- novelwriter/assets/sample.zip +0 -0
- novelwriter/common.py +101 -3
- novelwriter/config.py +30 -17
- novelwriter/constants.py +189 -81
- novelwriter/core/buildsettings.py +74 -40
- novelwriter/core/coretools.py +146 -148
- novelwriter/core/docbuild.py +133 -171
- novelwriter/core/document.py +1 -1
- novelwriter/core/index.py +39 -38
- novelwriter/core/item.py +42 -9
- novelwriter/core/itemmodel.py +518 -0
- novelwriter/core/options.py +5 -2
- novelwriter/core/project.py +68 -90
- novelwriter/core/projectdata.py +8 -2
- novelwriter/core/projectxml.py +1 -1
- novelwriter/core/sessions.py +1 -1
- novelwriter/core/spellcheck.py +10 -15
- novelwriter/core/status.py +24 -8
- novelwriter/core/storage.py +1 -1
- novelwriter/core/tree.py +269 -288
- novelwriter/dialogs/about.py +1 -1
- novelwriter/dialogs/docmerge.py +8 -18
- novelwriter/dialogs/docsplit.py +1 -1
- novelwriter/dialogs/editlabel.py +1 -1
- novelwriter/dialogs/preferences.py +47 -34
- novelwriter/dialogs/projectsettings.py +149 -99
- novelwriter/dialogs/quotes.py +1 -1
- novelwriter/dialogs/wordlist.py +11 -10
- novelwriter/enum.py +37 -24
- novelwriter/error.py +2 -2
- novelwriter/extensions/configlayout.py +28 -13
- novelwriter/extensions/eventfilters.py +1 -1
- novelwriter/extensions/modified.py +30 -6
- novelwriter/extensions/novelselector.py +4 -3
- novelwriter/extensions/pagedsidebar.py +9 -9
- novelwriter/extensions/progressbars.py +4 -4
- novelwriter/extensions/statusled.py +3 -3
- novelwriter/extensions/switch.py +3 -3
- novelwriter/extensions/switchbox.py +1 -1
- novelwriter/extensions/versioninfo.py +1 -1
- novelwriter/formats/shared.py +156 -0
- novelwriter/formats/todocx.py +1191 -0
- novelwriter/formats/tohtml.py +454 -0
- novelwriter/{core → formats}/tokenizer.py +497 -495
- novelwriter/formats/tomarkdown.py +218 -0
- novelwriter/{core → formats}/toodt.py +312 -433
- novelwriter/formats/toqdoc.py +486 -0
- novelwriter/formats/toraw.py +91 -0
- novelwriter/gui/doceditor.py +347 -287
- novelwriter/gui/dochighlight.py +97 -85
- novelwriter/gui/docviewer.py +90 -33
- novelwriter/gui/docviewerpanel.py +18 -26
- novelwriter/gui/editordocument.py +18 -3
- novelwriter/gui/itemdetails.py +27 -29
- novelwriter/gui/mainmenu.py +130 -64
- novelwriter/gui/noveltree.py +46 -48
- novelwriter/gui/outline.py +202 -256
- novelwriter/gui/projtree.py +590 -1242
- novelwriter/gui/search.py +11 -19
- novelwriter/gui/sidebar.py +8 -7
- novelwriter/gui/statusbar.py +20 -3
- novelwriter/gui/theme.py +11 -6
- novelwriter/guimain.py +101 -201
- novelwriter/shared.py +67 -28
- novelwriter/text/counting.py +3 -1
- novelwriter/text/patterns.py +169 -61
- novelwriter/tools/dictionaries.py +3 -3
- novelwriter/tools/lipsum.py +1 -1
- novelwriter/tools/manusbuild.py +15 -13
- novelwriter/tools/manuscript.py +121 -79
- novelwriter/tools/manussettings.py +424 -291
- novelwriter/tools/noveldetails.py +1 -1
- novelwriter/tools/welcome.py +6 -6
- novelwriter/tools/writingstats.py +4 -4
- novelwriter/types.py +25 -9
- novelwriter/core/tohtml.py +0 -530
- novelwriter/core/tomarkdown.py +0 -252
- novelwriter/core/toqdoc.py +0 -419
- {novelWriter-2.5.3.dist-info → novelWriter-2.6.dist-info}/LICENSE.md +0 -0
- {novelWriter-2.5.3.dist-info → novelWriter-2.6.dist-info}/entry_points.txt +0 -0
- {novelWriter-2.5.3.dist-info → novelWriter-2.6.dist-info}/top_level.txt +0 -0
@@ -1,47 +1,48 @@
|
|
1
|
-
novelwriter/__init__.py,sha256=
|
2
|
-
novelwriter/common.py,sha256=
|
3
|
-
novelwriter/config.py,sha256=
|
4
|
-
novelwriter/constants.py,sha256=
|
5
|
-
novelwriter/enum.py,sha256=
|
6
|
-
novelwriter/error.py,sha256=
|
7
|
-
novelwriter/guimain.py,sha256=
|
8
|
-
novelwriter/shared.py,sha256=
|
9
|
-
novelwriter/types.py,sha256
|
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/nw_pl_PL.qm,sha256=
|
21
|
-
novelwriter/assets/i18n/nw_pt_BR.qm,sha256=
|
22
|
-
novelwriter/assets/i18n/nw_ru_RU.qm,sha256=
|
23
|
-
novelwriter/assets/i18n/nw_zh_CN.qm,sha256=
|
24
|
-
novelwriter/assets/i18n/project_de_DE.json,sha256
|
25
|
-
novelwriter/assets/i18n/project_en_GB.json,sha256=
|
26
|
-
novelwriter/assets/i18n/project_en_US.json,sha256=
|
1
|
+
novelwriter/__init__.py,sha256=EN_wLgu8KP9OkOkFopxWIETCL7fnVcQCvIaW5Idnu9o,8841
|
2
|
+
novelwriter/common.py,sha256=i5kxxzOOg0W60uZ8w1HhwlgEUYKqv60F1JTlu4KEjrY,21751
|
3
|
+
novelwriter/config.py,sha256=My3slBOz4I2n5mZaLYjHCoVZcOKA24ONA1UIq0k54nI,39789
|
4
|
+
novelwriter/constants.py,sha256=sPAjs_SwLlr5YVDvXrU2ZeJo6m7732oilnWY3jK7KuY,25948
|
5
|
+
novelwriter/enum.py,sha256=wbYnMgViyvuWEqeAGpNJDnk7AfnXDtxLey8Y4WbWkUo,3713
|
6
|
+
novelwriter/error.py,sha256=Pq4ogfb4GlqTBC698o9bJ537Ce5kXzyNw2JZxMGmZJM,6849
|
7
|
+
novelwriter/guimain.py,sha256=MqYuge0OPjfgyysjcQs_pdnSXcwAZq-DxnJJcvpVLBU,49628
|
8
|
+
novelwriter/shared.py,sha256=MaIQuDHX3XvW4SbhGaDlfI6YFn_yxzeq92IKi1ri810,17511
|
9
|
+
novelwriter/types.py,sha256=-qQovORltSnUMWn5Hcjv2FJV18t_DumGkggjch_oFRE,5098
|
10
|
+
novelwriter/assets/manual.pdf,sha256=1qSdqcGJbljonvyQL2rSwL3BKBxyhWK6sFdLemh5CcE,2687604
|
11
|
+
novelwriter/assets/sample.zip,sha256=ceddJJdmI5kLEek3LkrF8m5R4gcoJe_InowPl3BdAVI,28033
|
12
|
+
novelwriter/assets/i18n/nw_de_DE.qm,sha256=aPKr2orWxdz-6HbvNCZZS5tZuUHl12QA5I1k1-_-_jw,102115
|
13
|
+
novelwriter/assets/i18n/nw_en_US.qm,sha256=F99Y_xLYqxsmRW1abrO_0O1X_Y42OZnc8D3U49vR47Y,94871
|
14
|
+
novelwriter/assets/i18n/nw_es_419.qm,sha256=LCNGv7RUpgTCWkA6oOyfPckGl-sKO1hmdGl_naQO8AY,99798
|
15
|
+
novelwriter/assets/i18n/nw_fr_FR.qm,sha256=BwHQadfuvJyx2koKC2McMWrjJI7KQTEYq8mLe6n1wfI,100161
|
16
|
+
novelwriter/assets/i18n/nw_it_IT.qm,sha256=GdXPbMdI_h50-StveaQDGzSWXCTjMYQSPF9FB3d4KN4,105093
|
17
|
+
novelwriter/assets/i18n/nw_ja_JP.qm,sha256=g2k2b7H2O9v7HwXr2vo78dPZJZnM5enI7V6tQk2K5cU,78526
|
18
|
+
novelwriter/assets/i18n/nw_nb_NO.qm,sha256=OC7hNGozfStkjQrEG4PtD3ECMfMqGUz6Ox0lXlk9m9o,97451
|
19
|
+
novelwriter/assets/i18n/nw_nl_NL.qm,sha256=WCnVcavSwehklScJQTU-AhogQzrtN1IHYT2cK5B-9gg,96703
|
20
|
+
novelwriter/assets/i18n/nw_pl_PL.qm,sha256=Z0my1MlIzxkZhidJPPD0uSccHF-k8aH7OvMJVdA9v0M,100313
|
21
|
+
novelwriter/assets/i18n/nw_pt_BR.qm,sha256=D6O4qwlfF7GlxdQSiVWRlx7obOxmSYXjr4s40xkWWsw,102987
|
22
|
+
novelwriter/assets/i18n/nw_ru_RU.qm,sha256=W10A9BAdYhRbZRzHCpaN03G7Xba7hzl02L6bGveL_0o,94842
|
23
|
+
novelwriter/assets/i18n/nw_zh_CN.qm,sha256=VTL4XIvOIujnm4pg2NgyYxUV-3H_ckxWCXoS47VYYtA,70468
|
24
|
+
novelwriter/assets/i18n/project_de_DE.json,sha256=-9-FF2zYD9ulez9dXAKLbFWsbEX2KLXKE1cJS8csx1g,2866
|
25
|
+
novelwriter/assets/i18n/project_en_GB.json,sha256=CvBOO8kaW0k7NlwvxFi62Br9HYKJKQLDk1nQfvXOj48,2537
|
26
|
+
novelwriter/assets/i18n/project_en_US.json,sha256=CvBOO8kaW0k7NlwvxFi62Br9HYKJKQLDk1nQfvXOj48,2537
|
27
27
|
novelwriter/assets/i18n/project_es_419.json,sha256=Z6CAhc0hzekUZFDM-0ykRRsckJG4c2AETy4Xa_f2T7s,2730
|
28
28
|
novelwriter/assets/i18n/project_fr_FR.json,sha256=CBojo05gdhxev5pFg889ENe_CKOHSDv3oj8SmkBFqGg,2788
|
29
|
-
novelwriter/assets/i18n/project_it_IT.json,sha256=
|
30
|
-
novelwriter/assets/i18n/project_ja_JP.json,sha256=
|
31
|
-
novelwriter/assets/i18n/project_nb_NO.json,sha256=
|
32
|
-
novelwriter/assets/i18n/project_nl_NL.json,sha256=
|
29
|
+
novelwriter/assets/i18n/project_it_IT.json,sha256=LHbGZT6MOHOmIKrl6HD1-Tl_RxKbeEL0eXqPVK0VwM8,2633
|
30
|
+
novelwriter/assets/i18n/project_ja_JP.json,sha256=CK8yvTAr_58mDMSU-XAXYk3ny9Iryp21EZ80dGJ60E8,2451
|
31
|
+
novelwriter/assets/i18n/project_nb_NO.json,sha256=CS4nU-8AnnmQLiET5wAsFa4F7UHimjCTbxzmtGugw0A,2350
|
32
|
+
novelwriter/assets/i18n/project_nl_NL.json,sha256=wlXDfy4rMKyXP0X3r22qSNFuseO33bePAHqvIVk_tHQ,2742
|
33
33
|
novelwriter/assets/i18n/project_nn_NO.json,sha256=7ZfmtFWHcDMiLVqdOEDHQWHbpoC_bv5ESmf_-CoYiks,2250
|
34
|
-
novelwriter/assets/i18n/project_pl_PL.json,sha256=
|
35
|
-
novelwriter/assets/i18n/project_pt_BR.json,sha256=
|
34
|
+
novelwriter/assets/i18n/project_pl_PL.json,sha256=2mAchml-aT95ZT9qi3pAEMyyze5swkRa-OCWq6ZMoGk,3517
|
35
|
+
novelwriter/assets/i18n/project_pt_BR.json,sha256=lCtbr_i2gN3Atii1EgMn-B5SMP71_x4YsF7wXx7Hi7s,2828
|
36
36
|
novelwriter/assets/i18n/project_ru_RU.json,sha256=Lq8msxzjhkFHXPJAmEEyjoFOUV28CLJXmayY3h3jiAo,4075
|
37
|
-
novelwriter/assets/i18n/project_zh_CN.json,sha256=
|
37
|
+
novelwriter/assets/i18n/project_zh_CN.json,sha256=CGnJO6ElV40fm7yElNtDwHYsd_32d-cR7h1jG4xx4eY,2377
|
38
38
|
novelwriter/assets/icons/none.svg,sha256=NRN9vMzohg7Ner71GwPthrCG0uA81TpY8UmKb8-L-pM,251
|
39
39
|
novelwriter/assets/icons/novelwriter.ico,sha256=OJRIeeUcmS7Di51NA3uF5_Ov4V8T47gQ9qWv6C7qDeA,171059
|
40
40
|
novelwriter/assets/icons/novelwriter.svg,sha256=Ad_SgOdXSDJtFR3DLCx6Afme15I78r38_YxCfO9F2z4,8511
|
41
41
|
novelwriter/assets/icons/x-novelwriter-project.ico,sha256=MXdZSYi3j95aIsT5bZo6CkhxmS75cThP9O_38UR7sjg,170697
|
42
42
|
novelwriter/assets/icons/x-novelwriter-project.svg,sha256=VHf1aClkA91tZVYb3LFk9bi_Dw25QBVSjUJAjSD-YX4,5143
|
43
43
|
novelwriter/assets/icons/typicons_dark/README.md,sha256=6ZxJq-19PNrMdeuVeVg84aLjxhr9oF7dLwuMFVGQyq0,1065
|
44
|
-
novelwriter/assets/icons/typicons_dark/icons.conf,sha256=
|
44
|
+
novelwriter/assets/icons/typicons_dark/icons.conf,sha256=FDqhLubF2BeVDpjIeysmhu5ceUXvTw9Q5slUwGbIH7w,4799
|
45
|
+
novelwriter/assets/icons/typicons_dark/mixed_copy.svg,sha256=lUcY81wxepOd1XaPZb47oRmrsX3ZIHCLOEUBDPQyYoU,633
|
45
46
|
novelwriter/assets/icons/typicons_dark/mixed_document-chapter.svg,sha256=POP_Cs3bkkKAmrS_fTgjj90eyNK0bipNGgOhDDlXKu0,1650
|
46
47
|
novelwriter/assets/icons/typicons_dark/mixed_document-new.svg,sha256=EIVU3_ecC0d6rpCHXBfKoA_mWJyilqe7iA6XLQb9oRw,1849
|
47
48
|
novelwriter/assets/icons/typicons_dark/mixed_document-note.svg,sha256=OaPRbvkA7h4GA4mnFXJRORv80h2nAsJTmlIR8Msrwt8,1650
|
@@ -53,7 +54,13 @@ novelwriter/assets/icons/typicons_dark/mixed_import.svg,sha256=XiitW007_GjKNMzby
|
|
53
54
|
novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg,sha256=sjBBHcHWBwf6P3UIcLThccrDqaGLHUgV-ov6v6WXsAw,1208
|
54
55
|
novelwriter/assets/icons/typicons_dark/mixed_input-none.svg,sha256=1uSgoXznt31ynAj3MHC-vVdDuaszmtEKbfofepNs7g4,1058
|
55
56
|
novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg,sha256=Ml28wWspg9oipeuBbEOQnS2t0K67A4CO49p6nBKl8EI,1272
|
57
|
+
novelwriter/assets/icons/typicons_dark/mixed_margin-bottom.svg,sha256=nPTb6-YjsVN0W0Yysh6KgC4mONOa9B-jmgdeAVMTxh4,713
|
58
|
+
novelwriter/assets/icons/typicons_dark/mixed_margin-left.svg,sha256=Bz-iUWO19TBhCD_IVUtoKohq3wmP6wzSEnJ-6EV-nXc,711
|
59
|
+
novelwriter/assets/icons/typicons_dark/mixed_margin-right.svg,sha256=RQSwJZoTQDeJuIoEcNtBzZOFYe5hu6N_LG9G934xg0k,711
|
60
|
+
novelwriter/assets/icons/typicons_dark/mixed_margin-top.svg,sha256=eJOM0VEI0pFZWNfqKcFGl0jAxDpfohNoroR7gOWzbXw,712
|
56
61
|
novelwriter/assets/icons/typicons_dark/mixed_search-replace.svg,sha256=h2tBf_BthV5HnR9GB861PDMpIsc4OzzccuiKaUgBRAE,2163
|
62
|
+
novelwriter/assets/icons/typicons_dark/mixed_size-height.svg,sha256=bfHbAnXj7l5m-xPvTmzwng-D1ZLUsyjPu7e-H5xoWXQ,921
|
63
|
+
novelwriter/assets/icons/typicons_dark/mixed_size-width.svg,sha256=ouRcLqZKhRxoTwHDf53JzkmXDqDggZJeM2xcHpaAidU,919
|
57
64
|
novelwriter/assets/icons/typicons_dark/nw_deco-h0.svg,sha256=ssrqNUVY1vz4LtYE5pdINmP6qI5IZHFbokfYPzG-CTM,225
|
58
65
|
novelwriter/assets/icons/typicons_dark/nw_deco-h1.svg,sha256=nY2JYxPpGTsKCgp8pM0BdscFk6OoESNDVj53m4PMkM0,222
|
59
66
|
novelwriter/assets/icons/typicons_dark/nw_deco-h2-narrow.svg,sha256=NkZKLECgrrhPF9oI3OuZeSyuMiSN93T-qUGg2n99c_0,225
|
@@ -81,6 +88,7 @@ novelwriter/assets/icons/typicons_dark/nw_tb-strike.svg,sha256=uO12-KZ3Nx4GEL2mI
|
|
81
88
|
novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg,sha256=dOhhKxlsdWuQ7tq8HkBcShjNOUBpyEKgUP1RoFDlPLs,1550
|
82
89
|
novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg,sha256=0TpY0nIinD4dwgwh0Nyfs0C4rJDcc2JsgxnXSE0flco,1549
|
83
90
|
novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg,sha256=Z0ooKzRV_g298UX22uuUxZPC21Z9DN-1y4sY3vVIaZE,1121
|
91
|
+
novelwriter/assets/icons/typicons_dark/nw_toolbar.svg,sha256=gWxZ0epbAPaMP4Pi0B-1OmiAw56Rr8g8ilITkKDo1G8,389
|
84
92
|
novelwriter/assets/icons/typicons_dark/typ_arrow-down-thick-grey.svg,sha256=PsEm_GCebnkMvtVm1OUbVU0hvA2nL8bWlrlyrAWh0tE,519
|
85
93
|
novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg,sha256=Io2wWbs2Z0z5GHzDkmf3AkNZZqyfSC0ilWVDvGv5Q5U,538
|
86
94
|
novelwriter/assets/icons/typicons_dark/typ_arrow-maximise.svg,sha256=m4w3ZUHy3R2aTtvLKZpmd6FPijjkaG6A5jhiqfTp9mg,1029
|
@@ -141,7 +149,8 @@ novelwriter/assets/icons/typicons_dark/typ_unfold-visible.svg,sha256=IvVXmxlkrTy
|
|
141
149
|
novelwriter/assets/icons/typicons_dark/typ_user.svg,sha256=00gZEDr59B1A7A4o0w5VjCJOHnQHANsgXBhnB_VTMU4,733
|
142
150
|
novelwriter/assets/icons/typicons_dark/typ_warning-full.svg,sha256=zqqV82C37dWH_yHoSuPo-BLsErg0sl8_VlB6fzXL4VE,970
|
143
151
|
novelwriter/assets/icons/typicons_light/README.md,sha256=nyGvWLJ8cusLYP8YsjX_l213NkDE_GHrwctZ-I_JQUg,1066
|
144
|
-
novelwriter/assets/icons/typicons_light/icons.conf,sha256=
|
152
|
+
novelwriter/assets/icons/typicons_light/icons.conf,sha256=ib9tQ1R0baMWBT7-8n73S5M4behYWG-uJmU3iIvD3PI,4802
|
153
|
+
novelwriter/assets/icons/typicons_light/mixed_copy.svg,sha256=ojZVpxuFzlJFGEav5vg8Kr4SgDxffu0awEe3De5iB6U,636
|
145
154
|
novelwriter/assets/icons/typicons_light/mixed_document-chapter.svg,sha256=kXNwPbeKR3eupIrqtDQrNGq5sL8vdExLfPMrMX2sEsw,1650
|
146
155
|
novelwriter/assets/icons/typicons_light/mixed_document-new.svg,sha256=u0YYfp6hTUEYLsrPleUqYocaG2hl62w-B85INvkm6S4,1825
|
147
156
|
novelwriter/assets/icons/typicons_light/mixed_document-note.svg,sha256=XpKQ2Fj7J3I3BT9mAQkjk_A4eP7uy94vPeDBA62fOYI,1650
|
@@ -153,7 +162,13 @@ novelwriter/assets/icons/typicons_light/mixed_import.svg,sha256=lad5N1wOjDrTLxEz
|
|
153
162
|
novelwriter/assets/icons/typicons_light/mixed_input-checked.svg,sha256=uevUoQv7D-6g1RgE0gG2ZWek3118qIAcgkqg7zxK8Zs,1208
|
154
163
|
novelwriter/assets/icons/typicons_light/mixed_input-none.svg,sha256=V6uPJ1f85DYXpuuC3n4-lV1U8zfyXYMbOHYBy9-uiQs,1055
|
155
164
|
novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg,sha256=uKyeneabnW80b04DpK2k0Y7-uyoC-R3HLse19aSkVww,1269
|
165
|
+
novelwriter/assets/icons/typicons_light/mixed_margin-bottom.svg,sha256=aWFc7bwBS3ucj6R6s18hF8DO3Xu7qInFu4sxP-ufOdY,707
|
166
|
+
novelwriter/assets/icons/typicons_light/mixed_margin-left.svg,sha256=L-usVSQF9c05bgCibtYBuRvmoRJsL35JPp9XJ4aS_v4,705
|
167
|
+
novelwriter/assets/icons/typicons_light/mixed_margin-right.svg,sha256=wvcxiNqxDNShnRkXcTDcGx-4jVaDCHvnbxKkEsm5Nig,705
|
168
|
+
novelwriter/assets/icons/typicons_light/mixed_margin-top.svg,sha256=gfrkJLV_7SLH6NJaqbgycXnFwE9sL4DOPAgXpjeNFzQ,706
|
156
169
|
novelwriter/assets/icons/typicons_light/mixed_search-replace.svg,sha256=eGKRJPxZhtwX9qQZ-kw3UmfLBdZqovqn7GVR2g4drnQ,2169
|
170
|
+
novelwriter/assets/icons/typicons_light/mixed_size-height.svg,sha256=z24yLe0SRlKJDA7g3HRbFSFTB-qfpbFBs4JX5wgL0TY,921
|
171
|
+
novelwriter/assets/icons/typicons_light/mixed_size-width.svg,sha256=HhZuLItCJlD6QU5hLioBpQwQBdfnRxAgSNIC17sDI_k,922
|
157
172
|
novelwriter/assets/icons/typicons_light/nw_deco-h0.svg,sha256=ssrqNUVY1vz4LtYE5pdINmP6qI5IZHFbokfYPzG-CTM,225
|
158
173
|
novelwriter/assets/icons/typicons_light/nw_deco-h1.svg,sha256=nuzuJ9h9Lb1HpdOq6NfRKzSGlUVo53fC4TnHHpdkOu0,225
|
159
174
|
novelwriter/assets/icons/typicons_light/nw_deco-h2-narrow.svg,sha256=dkAEvmLO4DkRDe_rfRB-0L7yM7mEGj24XW1gFf3B-BA,225
|
@@ -181,6 +196,7 @@ novelwriter/assets/icons/typicons_light/nw_tb-strike.svg,sha256=HtAYlTga42JVpoUJ
|
|
181
196
|
novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg,sha256=j8qncFQqiC5vZfFELENtX9COMcrI7NnyED17ki7tC08,1551
|
182
197
|
novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg,sha256=-B-iVCPsoCaz9ZiVkHN6em2BJOI65_ssjFqZM75wxZ0,1550
|
183
198
|
novelwriter/assets/icons/typicons_light/nw_tb-underline.svg,sha256=rxSFWY2lNpSuF2jbUk_jyfoHk_B5d2bLncaCY-2LT7w,1141
|
199
|
+
novelwriter/assets/icons/typicons_light/nw_toolbar.svg,sha256=6zQlA4M31aKNHxOo4wnbJ5tpFJk-58bYAYgAhzorJ9c,395
|
184
200
|
novelwriter/assets/icons/typicons_light/typ_arrow-down-thick-grey.svg,sha256=FZFt51KLkvqrP0nM_bnCjKkELcLT7KMWB059gvSMKk4,523
|
185
201
|
novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg,sha256=vDYZrsNe2Afo8-MqS9HV_gsz6aFraYZUyJeAdOXaE4Y,541
|
186
202
|
novelwriter/assets/icons/typicons_light/typ_arrow-maximise.svg,sha256=bz93DwuiB_2Baf-oG5SsMdWGccYogyNqR2Yq3OQ4bDY,1032
|
@@ -270,71 +286,75 @@ novelwriter/assets/themes/default_light.conf,sha256=2a4SXzlbZpyV9EX3BuFSRFYuLuzu
|
|
270
286
|
novelwriter/assets/themes/dracula.conf,sha256=pUvu7FS1nRPj3PyU3NZMR0WSb5sIa0oLpSa2XTzsh98,1425
|
271
287
|
novelwriter/assets/themes/solarized_dark.conf,sha256=7dDjs8aiFuAjl--hqMJQEExrfCgAapiPY82CL6aAo-I,916
|
272
288
|
novelwriter/assets/themes/solarized_light.conf,sha256=psCPVWcjAKB5y8H_E_h5zYUifxh5YpdFdBzxFofIHa0,918
|
273
|
-
novelwriter/core/buildsettings.py,sha256=
|
274
|
-
novelwriter/core/coretools.py,sha256=
|
275
|
-
novelwriter/core/docbuild.py,sha256=
|
276
|
-
novelwriter/core/document.py,sha256=
|
277
|
-
novelwriter/core/index.py,sha256=
|
278
|
-
novelwriter/core/item.py,sha256=
|
279
|
-
novelwriter/core/
|
280
|
-
novelwriter/core/
|
281
|
-
novelwriter/core/
|
282
|
-
novelwriter/core/
|
283
|
-
novelwriter/core/
|
284
|
-
novelwriter/core/
|
285
|
-
novelwriter/core/
|
286
|
-
novelwriter/core/
|
287
|
-
novelwriter/core/
|
288
|
-
novelwriter/core/
|
289
|
-
novelwriter/
|
290
|
-
novelwriter/
|
291
|
-
novelwriter/
|
292
|
-
novelwriter/
|
293
|
-
novelwriter/dialogs/
|
294
|
-
novelwriter/dialogs/
|
295
|
-
novelwriter/dialogs/
|
296
|
-
novelwriter/dialogs/
|
297
|
-
novelwriter/
|
298
|
-
novelwriter/
|
299
|
-
novelwriter/
|
300
|
-
novelwriter/
|
301
|
-
novelwriter/extensions/
|
302
|
-
novelwriter/extensions/
|
303
|
-
novelwriter/extensions/
|
304
|
-
novelwriter/extensions/
|
305
|
-
novelwriter/extensions/
|
306
|
-
novelwriter/extensions/
|
307
|
-
novelwriter/
|
308
|
-
novelwriter/
|
309
|
-
novelwriter/
|
310
|
-
novelwriter/
|
311
|
-
novelwriter/
|
312
|
-
novelwriter/
|
313
|
-
novelwriter/
|
314
|
-
novelwriter/
|
315
|
-
novelwriter/gui/
|
316
|
-
novelwriter/gui/
|
317
|
-
novelwriter/gui/
|
318
|
-
novelwriter/gui/
|
319
|
-
novelwriter/gui/
|
320
|
-
novelwriter/gui/
|
321
|
-
novelwriter/gui/
|
322
|
-
novelwriter/gui/
|
323
|
-
novelwriter/gui/
|
324
|
-
novelwriter/gui/
|
325
|
-
novelwriter/
|
326
|
-
novelwriter/
|
327
|
-
novelwriter/
|
328
|
-
novelwriter/
|
329
|
-
novelwriter/
|
330
|
-
novelwriter/
|
331
|
-
novelwriter/tools/
|
332
|
-
novelwriter/tools/
|
333
|
-
novelwriter/tools/
|
334
|
-
novelwriter/tools/
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
novelWriter-2.
|
340
|
-
novelWriter-2.
|
289
|
+
novelwriter/core/buildsettings.py,sha256=JZ56-8aBXUFxIygktZ_r62y3eWVLgLz1GAVvdZR0Hjo,24683
|
290
|
+
novelwriter/core/coretools.py,sha256=sjhU0disSrOrc7X1ObahcjIUwXxyZhG3LiAUBvwBh4I,21175
|
291
|
+
novelwriter/core/docbuild.py,sha256=svK66k4-x203zMYp6P5T5TMKPJDQRLuRAsDUfauIRBs,13778
|
292
|
+
novelwriter/core/document.py,sha256=t52H5RrKu3Un-55Lhdd6cu_MN2-__bdXIJZDWzl72TM,12155
|
293
|
+
novelwriter/core/index.py,sha256=_hbKqnisf-5-WUYtju5EqpPKhfo2gsaiT28ZGXfalgc,48610
|
294
|
+
novelwriter/core/item.py,sha256=hPhR5vtn-FfEgx8OSJ7IbuYCqZOQ2kiPf_SDxbkUBFw,18819
|
295
|
+
novelwriter/core/itemmodel.py,sha256=1W7A-uLI1g2sOe7gietKiV15McF6rMY1VMVJ4L0PpAc,18025
|
296
|
+
novelwriter/core/options.py,sha256=wJ3PJrtwbLPCs-WEvMLTWTOdlX-bn8oaUBZqYNZLY5w,7482
|
297
|
+
novelwriter/core/project.py,sha256=11g3CTQFqzwJBKfNG0AqTsrEonb97vdymC_cM4Ggjz0,21067
|
298
|
+
novelwriter/core/projectdata.py,sha256=EPgvvC8U8qAL3UMZSSuUNiMc9kifULJaexQ3N09Wj4A,10006
|
299
|
+
novelwriter/core/projectxml.py,sha256=Y7_cTzd-kNK0yyvJIiWkdDvZJo6f2WveYM6IqZllHJY,22038
|
300
|
+
novelwriter/core/sessions.py,sha256=XMp6JQcZYLpWRqio28pBFMTmj4EVak61rL7c3qC9TQY,4430
|
301
|
+
novelwriter/core/spellcheck.py,sha256=6T14_EHi7WaK7VFIUwiDSmaFJw9_PnDPBxZRZJygBRY,7176
|
302
|
+
novelwriter/core/status.py,sha256=rP0bBsIauH6P-vIAUIPpUaDx8zF7YU32NhoK29zLRQU,12236
|
303
|
+
novelwriter/core/storage.py,sha256=ndB0PigeoRrQn3tUSjwbDc9FySEYOugeIARFUMld-AY,20951
|
304
|
+
novelwriter/core/tree.py,sha256=awKPagDBkX9negFwiSlydMj-RsowUJaJlGwzBctoGW0,18741
|
305
|
+
novelwriter/dialogs/about.py,sha256=TPdkAPpPsAx7zhCbfBrSn-GhXfz-xG1OSJIePdI-E1k,4780
|
306
|
+
novelwriter/dialogs/docmerge.py,sha256=8Xu_kan7u9LI2__HCnEsDZjLcfn5XP-tFjWvE8VXrDs,6120
|
307
|
+
novelwriter/dialogs/docsplit.py,sha256=nt5L_SuB7QlfDYgBecd57bir5RVIcbpptCMdIBg4-Fs,9306
|
308
|
+
novelwriter/dialogs/editlabel.py,sha256=3x34vjqkdIvS1EdR6D1DHJgVcR_Ny-BkhMR6PKtnUOc,2988
|
309
|
+
novelwriter/dialogs/preferences.py,sha256=__cUBVg5pMk0Er9f4GoVE0Wk7GOgiL2gBYDg3wViW2Q,38747
|
310
|
+
novelwriter/dialogs/projectsettings.py,sha256=uTTDKL5oZhj-DdCfxCOgvN8ZkoDg1Ds7j1wrYMHssHo,29949
|
311
|
+
novelwriter/dialogs/quotes.py,sha256=t8VfrjcBknebtU88rgNEkgQK28qbAd7BN8HNFa0EuOA,4752
|
312
|
+
novelwriter/dialogs/wordlist.py,sha256=zUPmeTp57_VEiIv-lnpuqfYWOYwo1GTrmgiZaXvFJ8U,8700
|
313
|
+
novelwriter/extensions/configlayout.py,sha256=mw5n6bT4J5xJKtzy9dVf3RZCzejxOMSyIhzwbiMbDMQ,10828
|
314
|
+
novelwriter/extensions/eventfilters.py,sha256=82DcBd900zQNce-3XQkQWXBuUuYfYpO_zlNt-p4NXBw,2547
|
315
|
+
novelwriter/extensions/modified.py,sha256=EHkhJV5gR9DV2oOni0eiorFE0yfCfO860Bee3i3RHrA,6428
|
316
|
+
novelwriter/extensions/novelselector.py,sha256=g8pBkUoJxvHA1LX681ogfhIEhzHHPWjSY7tFJKSiIiE,3822
|
317
|
+
novelwriter/extensions/pagedsidebar.py,sha256=Vw3creX1eHRHPSQQrQAhWZPw5-U-SjTlY_xhEfLnv8g,7273
|
318
|
+
novelwriter/extensions/progressbars.py,sha256=fbFmfhO9FVNUSQqRB0mzEC4TyHvqpVvGXI2XObBMb6U,4653
|
319
|
+
novelwriter/extensions/statusled.py,sha256=pgmoMimVLITcSVs-25Fy0rB7z-zXYNylxPjNciGsDy8,2968
|
320
|
+
novelwriter/extensions/switch.py,sha256=W3K4of_fjhGj90P-5AeBSH9rukdfKAAckB5AbA3Ly_8,4324
|
321
|
+
novelwriter/extensions/switchbox.py,sha256=xDdCKXqd4qOjZFciU6eJRrOYEv74MB2oQivEXx1sztg,4223
|
322
|
+
novelwriter/extensions/versioninfo.py,sha256=gpV-sr1-nK_IjfkAC3ad3uqteFy7Lf2sYT46Osbcp6k,5060
|
323
|
+
novelwriter/formats/shared.py,sha256=Ni6bYdxOeeDmrLE-8TkgpF0OTlblGTmgrY6rcHC_R08,4666
|
324
|
+
novelwriter/formats/todocx.py,sha256=5gCtY18--9LPRTQJzb99lG4_5u9sEPQGWZRZ3D02_rI,40296
|
325
|
+
novelwriter/formats/tohtml.py,sha256=t9B2uZPKKLubjsEttb3INf3esCvK-GArgynFnY7EkGE,17128
|
326
|
+
novelwriter/formats/tokenizer.py,sha256=LbLV1XYo8KuAhR3v4CgVTYqzJB-vNIlFSLIYsFFBWA8,48659
|
327
|
+
novelwriter/formats/tomarkdown.py,sha256=95k9DOGtXiB5nTHBephGSSb1GxGgoTctr3rXXBubauM,6983
|
328
|
+
novelwriter/formats/toodt.py,sha256=lX-KvH8kyOPhyvNOcWIPy6ffjyG6ccZssWJJyuB0J4I,58411
|
329
|
+
novelwriter/formats/toqdoc.py,sha256=mJzNyKLzyx4w2m04N-gh-ch4i6iY8VRsrHGzYduDGzA,18081
|
330
|
+
novelwriter/formats/toraw.py,sha256=niaFt6tVSIwGfMAEP-suDfzzTRN8M08V3KJClbG3hcU,2842
|
331
|
+
novelwriter/gui/doceditor.py,sha256=5FD4_do2EV04wPXCIDMKZcIUHmCcyQTR0b6NDUwn2JA,116636
|
332
|
+
novelwriter/gui/dochighlight.py,sha256=z6WcQfkHzSlXg4-DALtJUHl_8wnikP-YT0iIZmnCV8I,19680
|
333
|
+
novelwriter/gui/docviewer.py,sha256=SJ38_Zn6CMmSRdVF3EPztTQe907yWSqQr5B-0Mg6iVo,34518
|
334
|
+
novelwriter/gui/docviewerpanel.py,sha256=3MXehPMyf__mpNaKPNow1I-9CUme_8cpXd-cOCAxWls,19726
|
335
|
+
novelwriter/gui/editordocument.py,sha256=opqrQc_GMNa9InQBAWW_WugSHVO_5cievX7DuF1Cbm4,4723
|
336
|
+
novelwriter/gui/itemdetails.py,sha256=HQ2E1p9EiDsuNTgULEV__AzqW1DJ6qjB5DWILtlkeyg,9678
|
337
|
+
novelwriter/gui/mainmenu.py,sha256=VKMgE8_jxRM8973ycArOpGMaTwHy-7ju2TIzm2-Zqqo,41629
|
338
|
+
novelwriter/gui/noveltree.py,sha256=-XKR_zBGjbO44hEknhZt64NeW00LIC_31LQURgjsv_U,27136
|
339
|
+
novelwriter/gui/outline.py,sha256=e1U_KakgnJX044nmP5NsXzbrSVd-G_t0tJ_531zMXZI,38446
|
340
|
+
novelwriter/gui/projtree.py,sha256=ffXSwCIZotT28n6zIvN7UhwA5az1dgWh9Mff6gc4h2Y,53062
|
341
|
+
novelwriter/gui/search.py,sha256=xP5M4iEA-6Hulgk2JwNqg8_myWi2KT8Yk9ufw4H3gh0,12844
|
342
|
+
novelwriter/gui/sidebar.py,sha256=oPlbPu7jlE5J1P5Jn9X5YtvLgInzPz2Jr7AC98Z2S4k,6286
|
343
|
+
novelwriter/gui/statusbar.py,sha256=XVonGSeSu35nweE6uXrhFzrBEIaijIJsLLWY64hQ6lk,9632
|
344
|
+
novelwriter/gui/theme.py,sha256=__9xz8RxP7fSEdpi_8-ZzewjBsBc7sxn82uE744Sw7U,32249
|
345
|
+
novelwriter/text/counting.py,sha256=JEU-kv5BCdiFfTQc8Uk5Sym2WbRgJ4AKtixlwQIZe1M,4407
|
346
|
+
novelwriter/text/patterns.py,sha256=T2BpUcVvXXFIadIdOqOYF1eih4LFBiRAZ7CtRuO85c8,7687
|
347
|
+
novelwriter/tools/dictionaries.py,sha256=EhBGOvAW9AJnA29_GYan5XcRfciL6tSq7ZB-mmF8Ums,9250
|
348
|
+
novelwriter/tools/lipsum.py,sha256=NZdCJ5TNwKdfwYqtRXtQ5pDbtVFbQzxiGoNPctpCHDk,4819
|
349
|
+
novelwriter/tools/manusbuild.py,sha256=fUAGp7uaPY2rFUXRaGyE8Fce49z4-xkz1i8GAV2fXlI,14107
|
350
|
+
novelwriter/tools/manuscript.py,sha256=ib5FKpcQR_A6jBWuTfQCHpx32ySvE4YFtz56a8pLAxE,40053
|
351
|
+
novelwriter/tools/manussettings.py,sha256=jn8E6SroiuwHv5NINvRgYgaW85ji2li2bZW2NSobvTI,60883
|
352
|
+
novelwriter/tools/noveldetails.py,sha256=k17ZH21M7yfLNEhY_qD-GREia5CxanN9dbVWt1selkk,18506
|
353
|
+
novelwriter/tools/welcome.py,sha256=kE8HWfgvvncwEQnfXPoFipNzugpe2JemcVJr2kNiHIc,28020
|
354
|
+
novelwriter/tools/writingstats.py,sha256=tuIkHkkiAPJv4zUBIFyh6_mVHRK-beYSc_zBUKG8MnM,22792
|
355
|
+
novelWriter-2.6.dist-info/LICENSE.md,sha256=2GirkkLrPfQqx7fACKRJjtKJUegKc8067erGvcDVQHM,32197
|
356
|
+
novelWriter-2.6.dist-info/METADATA,sha256=4CZK4xAM5E4PB0FqAyyrTtSrW5h0A-RBY6zKOZ8jhyk,2579
|
357
|
+
novelWriter-2.6.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
358
|
+
novelWriter-2.6.dist-info/entry_points.txt,sha256=YDUG1w361LtLsjD3YhxoTDTwM17JA5-nigjC6j5C74A,45
|
359
|
+
novelWriter-2.6.dist-info/top_level.txt,sha256=wFFEucjEeNC_Ap5ULBuEutg5a1Uc0-YO9uFT5L2naNI,12
|
360
|
+
novelWriter-2.6.dist-info/RECORD,,
|
novelwriter/__init__.py
CHANGED
@@ -3,10 +3,10 @@ novelWriter – Init File
|
|
3
3
|
=======================
|
4
4
|
|
5
5
|
File History:
|
6
|
-
Created: 2018-09-22 [0.0.1]
|
6
|
+
Created: 2018-09-22 [0.0.1] main
|
7
7
|
|
8
8
|
This file is a part of novelWriter
|
9
|
-
Copyright 2018
|
9
|
+
Copyright (C) 2018 Veronica Berglyd Olsen and novelWriter contributors
|
10
10
|
|
11
11
|
This program is free software: you can redistribute it and/or modify
|
12
12
|
it under the terms of the GNU General Public License as published by
|
@@ -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__ = "
|
50
|
+
__version__ = "2.6"
|
51
|
+
__hexversion__ = "0x020600f0"
|
52
|
+
__date__ = "2025-01-26"
|
53
53
|
__status__ = "Stable"
|
54
54
|
__domain__ = "novelwriter.io"
|
55
55
|
|
@@ -60,10 +60,26 @@ logger = logging.getLogger(__name__)
|
|
60
60
|
# Main Program
|
61
61
|
##
|
62
62
|
|
63
|
-
#
|
63
|
+
# Globals Singletons
|
64
64
|
CONFIG = Config()
|
65
65
|
SHARED = SharedData()
|
66
66
|
|
67
|
+
# ANSI Colours
|
68
|
+
C_RED = "\033[91m"
|
69
|
+
C_GREEN = "\033[92m"
|
70
|
+
C_YELLOW = "\033[93m"
|
71
|
+
C_BLUE = "\033[94m"
|
72
|
+
C_WHITE = "\033[97m"
|
73
|
+
C_END = "\033[0m"
|
74
|
+
|
75
|
+
# Log Formats
|
76
|
+
L_TIME = "[{asctime:}]"
|
77
|
+
L_FILE = "{filename:>18}"
|
78
|
+
L_LINE = "{lineno:<4d}"
|
79
|
+
L_LVLP = "{levelname:8}"
|
80
|
+
L_LVLC = "{levelname:17}"
|
81
|
+
L_TEXT = "{message:}"
|
82
|
+
|
67
83
|
|
68
84
|
def main(sysArgs: list | None = None) -> GuiMain | None:
|
69
85
|
"""Parse command line, set up logging, and launch main GUI."""
|
@@ -77,6 +93,7 @@ def main(sysArgs: list | None = None) -> GuiMain | None:
|
|
77
93
|
"version",
|
78
94
|
"info",
|
79
95
|
"debug",
|
96
|
+
"color",
|
80
97
|
"style=",
|
81
98
|
"config=",
|
82
99
|
"data=",
|
@@ -98,6 +115,7 @@ def main(sysArgs: list | None = None) -> GuiMain | None:
|
|
98
115
|
" -v, --version Print program version and exit.\n"
|
99
116
|
" --info Print additional runtime information.\n"
|
100
117
|
" --debug Print debug output. Includes --info.\n"
|
118
|
+
" --color Add ANSI colors to log output.\n"
|
101
119
|
" --meminfo Show memory usage information in the status bar.\n"
|
102
120
|
" --style= Sets Qt5 style flag. Defaults to 'Fusion'.\n"
|
103
121
|
" --config= Alternative config file.\n"
|
@@ -106,12 +124,12 @@ def main(sysArgs: list | None = None) -> GuiMain | None:
|
|
106
124
|
|
107
125
|
# Defaults
|
108
126
|
logLevel = logging.WARN
|
109
|
-
|
127
|
+
fmtFlags = 0b00
|
110
128
|
confPath = None
|
111
129
|
dataPath = None
|
112
130
|
testMode = False
|
113
|
-
qtStyle
|
114
|
-
cmdOpen
|
131
|
+
qtStyle = "Fusion"
|
132
|
+
cmdOpen = None
|
115
133
|
|
116
134
|
# Parse Options
|
117
135
|
try:
|
@@ -135,8 +153,10 @@ def main(sysArgs: list | None = None) -> GuiMain | None:
|
|
135
153
|
logLevel = logging.INFO
|
136
154
|
elif inOpt == "--debug":
|
137
155
|
CONFIG.isDebug = True
|
156
|
+
fmtFlags = fmtFlags | 0b10
|
138
157
|
logLevel = logging.DEBUG
|
139
|
-
|
158
|
+
elif inOpt == "--color":
|
159
|
+
fmtFlags = fmtFlags | 0b01
|
140
160
|
elif inOpt == "--style":
|
141
161
|
qtStyle = inArg
|
142
162
|
elif inOpt == "--config":
|
@@ -148,13 +168,32 @@ def main(sysArgs: list | None = None) -> GuiMain | None:
|
|
148
168
|
elif inOpt == "--meminfo":
|
149
169
|
CONFIG.memInfo = True
|
150
170
|
|
171
|
+
if fmtFlags & 0b01:
|
172
|
+
# This will overwrite the default level names, and also ensure that
|
173
|
+
# they can be converted back to integer levels
|
174
|
+
logging.addLevelName(logging.DEBUG, f"{C_BLUE}DEBUG{C_END}")
|
175
|
+
logging.addLevelName(logging.INFO, f"{C_GREEN}INFO{C_END}")
|
176
|
+
logging.addLevelName(logging.WARNING, f"{C_YELLOW}WARNING{C_END}")
|
177
|
+
logging.addLevelName(logging.ERROR, f"{C_RED}ERROR{C_END}")
|
178
|
+
logging.addLevelName(logging.CRITICAL, f"{C_RED}CRITICAL{C_END}")
|
179
|
+
|
180
|
+
# Determine Log Format
|
181
|
+
if fmtFlags == 0b00:
|
182
|
+
logFmt = f"{L_LVLP} {L_TEXT}"
|
183
|
+
elif fmtFlags == 0b01:
|
184
|
+
logFmt = f"{L_LVLC} {L_TEXT}"
|
185
|
+
elif fmtFlags == 0b10:
|
186
|
+
logFmt = f"{L_TIME} {L_FILE}:{L_LINE} {L_LVLP} {L_TEXT}"
|
187
|
+
elif fmtFlags == 0b11:
|
188
|
+
logFmt = f"{L_TIME} {C_BLUE}{L_FILE}{C_END}:{C_WHITE}{L_LINE}{C_END} {L_LVLC} {L_TEXT}"
|
189
|
+
|
151
190
|
# Setup Logging
|
152
191
|
pkgLogger = logging.getLogger(__package__)
|
153
192
|
pkgLogger.setLevel(logLevel)
|
154
193
|
if len(pkgLogger.handlers) == 0:
|
155
194
|
# Make sure we only create one logger (mostly an issue with tests)
|
156
195
|
cHandle = logging.StreamHandler()
|
157
|
-
cHandle.setFormatter(logging.Formatter(fmt=
|
196
|
+
cHandle.setFormatter(logging.Formatter(fmt=logFmt, style="{"))
|
158
197
|
pkgLogger.addHandler(cHandle)
|
159
198
|
|
160
199
|
logger.info("Starting novelWriter %s (%s) %s", __version__, __hexversion__, __date__)
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,6 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"Synopsis": "Synopsis",
|
3
3
|
"Short Description": "Kurzbeschreibung",
|
4
|
+
"Footnotes": "Fußnoten",
|
4
5
|
"Comment": "Kommentar",
|
5
6
|
"Notes": "Notizen",
|
6
7
|
"Tag": "Schlagwort",
|
@@ -13,6 +14,7 @@
|
|
13
14
|
"Objects": "Objekte",
|
14
15
|
"Entities": "Organisationen",
|
15
16
|
"Custom": "Benutzerdefiniert",
|
17
|
+
"New Page": "Neue Seite",
|
16
18
|
"0": "Null",
|
17
19
|
"1": "Eins",
|
18
20
|
"2": "Zwei",
|
@@ -1,6 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"Synopsis": "Synopsis",
|
3
3
|
"Short Description": "Short Description",
|
4
|
+
"Footnotes": "Footnotes",
|
4
5
|
"Comment": "Comment",
|
5
6
|
"Notes": "Notes",
|
6
7
|
"Tag": "Tag",
|
@@ -13,6 +14,7 @@
|
|
13
14
|
"Objects": "Objects",
|
14
15
|
"Entities": "Entities",
|
15
16
|
"Custom": "Custom",
|
17
|
+
"New Page": "New Page",
|
16
18
|
"0": "Zero",
|
17
19
|
"1": "One",
|
18
20
|
"2": "Two",
|
@@ -1,6 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"Synopsis": "Sinossi",
|
3
3
|
"Short Description": "Breve descrizione",
|
4
|
+
"Footnotes": "Note a piè pagina",
|
4
5
|
"Comment": "Commento",
|
5
6
|
"Notes": "Note",
|
6
7
|
"Tag": "Etichetta",
|
@@ -13,6 +14,7 @@
|
|
13
14
|
"Objects": "Oggetti",
|
14
15
|
"Entities": "Enti",
|
15
16
|
"Custom": "Personalizzato",
|
17
|
+
"New Page": "Nuova pagina",
|
16
18
|
"0": "Zero",
|
17
19
|
"1": "Uno",
|
18
20
|
"2": "Due",
|
@@ -1,6 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"Synopsis": "あらすじ",
|
3
3
|
"Short Description": "短い説明",
|
4
|
+
"Footnotes": "脚注",
|
4
5
|
"Comment": "コメント ",
|
5
6
|
"Notes": "ノート",
|
6
7
|
"Tag": "タグ",
|
@@ -13,6 +14,7 @@
|
|
13
14
|
"Objects": "オブジェクト",
|
14
15
|
"Entities": "エンティティ",
|
15
16
|
"Custom": "カスタム",
|
17
|
+
"New Page": "新規ページ",
|
16
18
|
"0": "零",
|
17
19
|
"1": "一",
|
18
20
|
"2": "二",
|
@@ -1,6 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"Synopsis": "Sammendrag",
|
3
3
|
"Short Description": "Kort beskrivelse",
|
4
|
+
"Footnotes": "Fotnoter",
|
4
5
|
"Comment": "Kommentar",
|
5
6
|
"Notes": "Notat",
|
6
7
|
"Tag": "Knagg",
|
@@ -13,6 +14,7 @@
|
|
13
14
|
"Objects": "Objekter",
|
14
15
|
"Entities": "Enheter",
|
15
16
|
"Custom": "Annet",
|
17
|
+
"New Page": "Ny side",
|
16
18
|
"0": "null",
|
17
19
|
"1": "én",
|
18
20
|
"2": "to",
|
@@ -1,6 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"Synopsis": "Synopsis",
|
3
3
|
"Short Description": "Korte beschrijving",
|
4
|
+
"Footnotes": "Voetnoten",
|
4
5
|
"Comment": "Opmerking",
|
5
6
|
"Notes": "Notities",
|
6
7
|
"Tag": "Label",
|
@@ -13,6 +14,7 @@
|
|
13
14
|
"Objects": "Objecten",
|
14
15
|
"Entities": "Entiteiten",
|
15
16
|
"Custom": "Aangepast",
|
17
|
+
"New Page": "Nieuwe pagina",
|
16
18
|
"0": "nul",
|
17
19
|
"1": "één",
|
18
20
|
"2": "twee",
|
@@ -1,6 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"Synopsis": "Streszczenie",
|
3
3
|
"Short Description": "Krótki opis",
|
4
|
+
"Footnotes": "Przypisy",
|
4
5
|
"Comment": "Komentarz",
|
5
6
|
"Notes": "Notatki",
|
6
7
|
"Tag": "Znacznik",
|
@@ -13,6 +14,7 @@
|
|
13
14
|
"Objects": "Obiekty",
|
14
15
|
"Entities": "Podmioty",
|
15
16
|
"Custom": "Różne",
|
17
|
+
"New Page": "Nowa strona",
|
16
18
|
"0": "zero",
|
17
19
|
"1": "pierwszy",
|
18
20
|
"2": "drugi",
|
@@ -1,6 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"Synopsis": "Sinopse",
|
3
3
|
"Short Description": "Descrição breve",
|
4
|
+
"Footnotes": "Notas de rodapé",
|
4
5
|
"Comment": "Comentário",
|
5
6
|
"Notes": "Notas",
|
6
7
|
"Tag": "Etiqueta",
|
@@ -13,6 +14,7 @@
|
|
13
14
|
"Objects": "Objetos",
|
14
15
|
"Entities": "Entidades",
|
15
16
|
"Custom": "Outros",
|
17
|
+
"New Page": "Nova página",
|
16
18
|
"0": "Zero",
|
17
19
|
"1": "Um",
|
18
20
|
"2": "Dois",
|