novelWriter 2.6.1__py3-none-any.whl → 2.6.3__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.6.1.dist-info → novelWriter-2.6.3.dist-info}/METADATA +1 -1
- {novelWriter-2.6.1.dist-info → novelWriter-2.6.3.dist-info}/RECORD +32 -30
- novelwriter/__init__.py +3 -3
- novelwriter/assets/i18n/nw_cs_CZ.qm +0 -0
- 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_cs_CZ.json +118 -0
- novelwriter/assets/manual.pdf +0 -0
- novelwriter/assets/sample.zip +0 -0
- novelwriter/assets/text/credits_en.htm +1 -0
- novelwriter/constants.py +25 -20
- novelwriter/core/itemmodel.py +4 -2
- novelwriter/dialogs/docsplit.py +49 -45
- novelwriter/gui/itemdetails.py +4 -4
- novelwriter/gui/mainmenu.py +2 -2
- novelwriter/gui/outline.py +4 -4
- novelwriter/gui/projtree.py +1 -0
- novelwriter/tools/manuscript.py +12 -12
- {novelWriter-2.6.1.dist-info → novelWriter-2.6.3.dist-info}/LICENSE.md +0 -0
- {novelWriter-2.6.1.dist-info → novelWriter-2.6.3.dist-info}/WHEEL +0 -0
- {novelWriter-2.6.1.dist-info → novelWriter-2.6.3.dist-info}/entry_points.txt +0 -0
- {novelWriter-2.6.1.dist-info → novelWriter-2.6.3.dist-info}/top_level.txt +0 -0
@@ -1,27 +1,29 @@
|
|
1
|
-
novelwriter/__init__.py,sha256=
|
1
|
+
novelwriter/__init__.py,sha256=B1YB_y84qIPE4qtQiSAUgMcT5Ly0Mgq5xcOkpR0NjfI,8843
|
2
2
|
novelwriter/common.py,sha256=i5kxxzOOg0W60uZ8w1HhwlgEUYKqv60F1JTlu4KEjrY,21751
|
3
3
|
novelwriter/config.py,sha256=1pQwU0QsGJ5qAvxZ_iL2vwjTMajjsAuXdTP0IRK1X30,41108
|
4
|
-
novelwriter/constants.py,sha256=
|
4
|
+
novelwriter/constants.py,sha256=hakaZkZsJOQkYyvgqUwxLuYPM5Oy7_buPHrFkXX6w4s,26300
|
5
5
|
novelwriter/enum.py,sha256=bZFqyYVR76B-P1pod1zaYSG2pS8DBQdBP9oqxWJoiFg,3635
|
6
6
|
novelwriter/error.py,sha256=Pq4ogfb4GlqTBC698o9bJ537Ce5kXzyNw2JZxMGmZJM,6849
|
7
7
|
novelwriter/guimain.py,sha256=UsBrDPsF2Y0SY3hzg9A3CWldhUi5ID765vce2dx1rRQ,49653
|
8
8
|
novelwriter/shared.py,sha256=MaIQuDHX3XvW4SbhGaDlfI6YFn_yxzeq92IKi1ri810,17511
|
9
9
|
novelwriter/types.py,sha256=-qQovORltSnUMWn5Hcjv2FJV18t_DumGkggjch_oFRE,5098
|
10
|
-
novelwriter/assets/manual.pdf,sha256=
|
10
|
+
novelwriter/assets/manual.pdf,sha256=p8LVvcj46b5VDRdnIHwh_DZT9mgQEAZhYnnTXZLdc8Q,2687800
|
11
11
|
novelwriter/assets/manual_fr_FR.pdf,sha256=EUJk5-5IBxH1HvUt6ZHgmTtgxWEnIAWybJq5M5l6LmE,2719136
|
12
|
-
novelwriter/assets/sample.zip,sha256=
|
13
|
-
novelwriter/assets/i18n/
|
14
|
-
novelwriter/assets/i18n/
|
15
|
-
novelwriter/assets/i18n/
|
16
|
-
novelwriter/assets/i18n/
|
17
|
-
novelwriter/assets/i18n/
|
18
|
-
novelwriter/assets/i18n/
|
19
|
-
novelwriter/assets/i18n/
|
20
|
-
novelwriter/assets/i18n/
|
21
|
-
novelwriter/assets/i18n/
|
22
|
-
novelwriter/assets/i18n/
|
23
|
-
novelwriter/assets/i18n/
|
24
|
-
novelwriter/assets/i18n/
|
12
|
+
novelwriter/assets/sample.zip,sha256=ogCIh5H4VhUgEpHHpBuCTHzcIAZV-Y6sVcH7MlJ_Vxo,28035
|
13
|
+
novelwriter/assets/i18n/nw_cs_CZ.qm,sha256=wqS376aERqXduw3lc7FFhcWapwcn9NYdTICkZYoDI1w,97499
|
14
|
+
novelwriter/assets/i18n/nw_de_DE.qm,sha256=xKyyeNEd02EquAF7KSiHr4GUccfagD74O_gipoQK1Io,102467
|
15
|
+
novelwriter/assets/i18n/nw_en_US.qm,sha256=fRG9Tg0a9IwsinP1wU162P_Y7mNl-grTKKx3TzKndSI,95213
|
16
|
+
novelwriter/assets/i18n/nw_es_419.qm,sha256=enE-iIGb_7DypKUXj9o4vddauaR6NO5KO9aAoh9GsEI,105334
|
17
|
+
novelwriter/assets/i18n/nw_fr_FR.qm,sha256=nIuseguPyp-BW-2QaxZTgTEAq82epUZyAsCpm3Vl0Wg,105307
|
18
|
+
novelwriter/assets/i18n/nw_it_IT.qm,sha256=eQKNQVvvwO_ja95sSXvZMkAv2TCxBIDYsMcT3k3KeC4,105449
|
19
|
+
novelwriter/assets/i18n/nw_ja_JP.qm,sha256=fMTV1RI_GhpStiX8RlkCIsyawz6tfcSfrFzuHzS-zpU,78818
|
20
|
+
novelwriter/assets/i18n/nw_nb_NO.qm,sha256=HIwt18aTorGzdk0j98XJtr652Hd3mCPZi8Ee771-vZw,97781
|
21
|
+
novelwriter/assets/i18n/nw_nl_NL.qm,sha256=igF8xjFTb4BBnyFThnLCqmk_KQLP3KcDWdUvjfwdBD8,96665
|
22
|
+
novelwriter/assets/i18n/nw_pl_PL.qm,sha256=etp4w60penSQTTsUavoWFcz1G8vtrV4RPAHTWloCrEg,100719
|
23
|
+
novelwriter/assets/i18n/nw_pt_BR.qm,sha256=LKeE4hvMlGRk0VIhuIuOkWcOy0SRf0fgQRbhuLQ0dgk,103757
|
24
|
+
novelwriter/assets/i18n/nw_ru_RU.qm,sha256=T44JdPKRuI27Az7ZjVznT-O4pR941-iVlV6agR-ydcI,94800
|
25
|
+
novelwriter/assets/i18n/nw_zh_CN.qm,sha256=_MbLHUgM3jBnDBU_fsB3vQlAw8YeWQKpidgJ5p-jiIo,70468
|
26
|
+
novelwriter/assets/i18n/project_cs_CZ.json,sha256=0A71su1wmPrGD1DD3FruFqnoWQqo4XaggWp5NJKT9lc,2861
|
25
27
|
novelwriter/assets/i18n/project_de_DE.json,sha256=-9-FF2zYD9ulez9dXAKLbFWsbEX2KLXKE1cJS8csx1g,2866
|
26
28
|
novelwriter/assets/i18n/project_en_GB.json,sha256=CvBOO8kaW0k7NlwvxFi62Br9HYKJKQLDk1nQfvXOj48,2537
|
27
29
|
novelwriter/assets/i18n/project_en_US.json,sha256=CvBOO8kaW0k7NlwvxFi62Br9HYKJKQLDk1nQfvXOj48,2537
|
@@ -278,7 +280,7 @@ novelwriter/assets/syntax/tomorrow_night.conf,sha256=mWPneIV_6tszLEK4-Eo-kcJmUbr
|
|
278
280
|
novelwriter/assets/syntax/tomorrow_night_blue.conf,sha256=L42gcekFfNpCCB45m9Lhzmz8Y6Lvbpik3AADi_1Aao8,1549
|
279
281
|
novelwriter/assets/syntax/tomorrow_night_bright.conf,sha256=h8_775Ed8hl2XhfCoxAY2kT43vi-UvG8UHik1aI4eRw,1554
|
280
282
|
novelwriter/assets/syntax/tomorrow_night_eighties.conf,sha256=stO_xH5RzMN0jaZeYr53LVXbpqSmIXALBFGVLlJBDLA,1557
|
281
|
-
novelwriter/assets/text/credits_en.htm,sha256=
|
283
|
+
novelwriter/assets/text/credits_en.htm,sha256=jh1TlfkUgo_9xueX7wa9sDHfP9K2cqUBNbWO4a-8Y78,3006
|
282
284
|
novelwriter/assets/text/lipsum.txt,sha256=sGA6AC_p4jrUifxLxy3cSODeRwkpBNXDPGgX6YRTm2s,62937
|
283
285
|
novelwriter/assets/themes/cyberpunk_night.conf,sha256=FvG_YVfEnMwJV1XUDEdpi9qoHQ5sdyVEaR_Y3WfWNA8,923
|
284
286
|
novelwriter/assets/themes/default.conf,sha256=K0LZ64lODpCtUg3pISTAP4UKvEYMvPkmIYN9RDEaWwk,72
|
@@ -293,7 +295,7 @@ novelwriter/core/docbuild.py,sha256=svK66k4-x203zMYp6P5T5TMKPJDQRLuRAsDUfauIRBs,
|
|
293
295
|
novelwriter/core/document.py,sha256=t52H5RrKu3Un-55Lhdd6cu_MN2-__bdXIJZDWzl72TM,12155
|
294
296
|
novelwriter/core/index.py,sha256=_hbKqnisf-5-WUYtju5EqpPKhfo2gsaiT28ZGXfalgc,48610
|
295
297
|
novelwriter/core/item.py,sha256=hPhR5vtn-FfEgx8OSJ7IbuYCqZOQ2kiPf_SDxbkUBFw,18819
|
296
|
-
novelwriter/core/itemmodel.py,sha256=
|
298
|
+
novelwriter/core/itemmodel.py,sha256=HR80mcnxyjVW3k1f4XMaE09hBU7Fswk13OTHPQiyIls,18145
|
297
299
|
novelwriter/core/options.py,sha256=wJ3PJrtwbLPCs-WEvMLTWTOdlX-bn8oaUBZqYNZLY5w,7482
|
298
300
|
novelwriter/core/project.py,sha256=XNj5WltjIpUzGrPNZqJChte7lyVajYvf5JkqnZgA4kI,20941
|
299
301
|
novelwriter/core/projectdata.py,sha256=EPgvvC8U8qAL3UMZSSuUNiMc9kifULJaexQ3N09Wj4A,10006
|
@@ -305,7 +307,7 @@ novelwriter/core/storage.py,sha256=ndB0PigeoRrQn3tUSjwbDc9FySEYOugeIARFUMld-AY,2
|
|
305
307
|
novelwriter/core/tree.py,sha256=awKPagDBkX9negFwiSlydMj-RsowUJaJlGwzBctoGW0,18741
|
306
308
|
novelwriter/dialogs/about.py,sha256=TPdkAPpPsAx7zhCbfBrSn-GhXfz-xG1OSJIePdI-E1k,4780
|
307
309
|
novelwriter/dialogs/docmerge.py,sha256=8Xu_kan7u9LI2__HCnEsDZjLcfn5XP-tFjWvE8VXrDs,6120
|
308
|
-
novelwriter/dialogs/docsplit.py,sha256=
|
310
|
+
novelwriter/dialogs/docsplit.py,sha256=McPERzcZ4gZhkaT4S8VRuCMABXTlq1Jq2WB2rf9w6jA,9349
|
309
311
|
novelwriter/dialogs/editlabel.py,sha256=3x34vjqkdIvS1EdR6D1DHJgVcR_Ny-BkhMR6PKtnUOc,2988
|
310
312
|
novelwriter/dialogs/preferences.py,sha256=CQdanGVIfZu6-u2Is9oewXWYbkhTpHTERwvfEqH2ixo,39131
|
311
313
|
novelwriter/dialogs/projectsettings.py,sha256=uTTDKL5oZhj-DdCfxCOgvN8ZkoDg1Ds7j1wrYMHssHo,29949
|
@@ -334,11 +336,11 @@ novelwriter/gui/dochighlight.py,sha256=z6WcQfkHzSlXg4-DALtJUHl_8wnikP-YT0iIZmnCV
|
|
334
336
|
novelwriter/gui/docviewer.py,sha256=SJ38_Zn6CMmSRdVF3EPztTQe907yWSqQr5B-0Mg6iVo,34518
|
335
337
|
novelwriter/gui/docviewerpanel.py,sha256=3MXehPMyf__mpNaKPNow1I-9CUme_8cpXd-cOCAxWls,19726
|
336
338
|
novelwriter/gui/editordocument.py,sha256=opqrQc_GMNa9InQBAWW_WugSHVO_5cievX7DuF1Cbm4,4723
|
337
|
-
novelwriter/gui/itemdetails.py,sha256=
|
338
|
-
novelwriter/gui/mainmenu.py,sha256=
|
339
|
+
novelwriter/gui/itemdetails.py,sha256=Wl8_VAFoeYvgTHCBI4vI5-1JioVlN6xA2GDLgwEx7OU,9687
|
340
|
+
novelwriter/gui/mainmenu.py,sha256=v3KvkPsqQiHhwQoiJ_SH9FuU9qpPfHK9PeNviz34DY4,41638
|
339
341
|
novelwriter/gui/noveltree.py,sha256=-XKR_zBGjbO44hEknhZt64NeW00LIC_31LQURgjsv_U,27136
|
340
|
-
novelwriter/gui/outline.py,sha256=
|
341
|
-
novelwriter/gui/projtree.py,sha256=
|
342
|
+
novelwriter/gui/outline.py,sha256=v0rrn5o5BUsuvxBZOvICTPAP6YUhD0eFS3msvNfYuaI,38455
|
343
|
+
novelwriter/gui/projtree.py,sha256=g-OoMsoAOOLHiftztDSI5H4J9C-5TBRGks9KQWpuKnM,53120
|
342
344
|
novelwriter/gui/search.py,sha256=xP5M4iEA-6Hulgk2JwNqg8_myWi2KT8Yk9ufw4H3gh0,12844
|
343
345
|
novelwriter/gui/sidebar.py,sha256=oPlbPu7jlE5J1P5Jn9X5YtvLgInzPz2Jr7AC98Z2S4k,6286
|
344
346
|
novelwriter/gui/statusbar.py,sha256=0XdsejOoPUCXxe_AN0f2w_4Duufa7wlUSRZg-EEeoYw,9487
|
@@ -348,14 +350,14 @@ novelwriter/text/patterns.py,sha256=T2BpUcVvXXFIadIdOqOYF1eih4LFBiRAZ7CtRuO85c8,
|
|
348
350
|
novelwriter/tools/dictionaries.py,sha256=EhBGOvAW9AJnA29_GYan5XcRfciL6tSq7ZB-mmF8Ums,9250
|
349
351
|
novelwriter/tools/lipsum.py,sha256=NZdCJ5TNwKdfwYqtRXtQ5pDbtVFbQzxiGoNPctpCHDk,4819
|
350
352
|
novelwriter/tools/manusbuild.py,sha256=fUAGp7uaPY2rFUXRaGyE8Fce49z4-xkz1i8GAV2fXlI,14107
|
351
|
-
novelwriter/tools/manuscript.py,sha256=
|
353
|
+
novelwriter/tools/manuscript.py,sha256=LC8w3pQLC9iL01_GcfLok5_Ul0wvxh13dhpF15_B5Eo,40053
|
352
354
|
novelwriter/tools/manussettings.py,sha256=jn8E6SroiuwHv5NINvRgYgaW85ji2li2bZW2NSobvTI,60883
|
353
355
|
novelwriter/tools/noveldetails.py,sha256=k17ZH21M7yfLNEhY_qD-GREia5CxanN9dbVWt1selkk,18506
|
354
356
|
novelwriter/tools/welcome.py,sha256=kE8HWfgvvncwEQnfXPoFipNzugpe2JemcVJr2kNiHIc,28020
|
355
357
|
novelwriter/tools/writingstats.py,sha256=tuIkHkkiAPJv4zUBIFyh6_mVHRK-beYSc_zBUKG8MnM,22792
|
356
|
-
novelWriter-2.6.
|
357
|
-
novelWriter-2.6.
|
358
|
-
novelWriter-2.6.
|
359
|
-
novelWriter-2.6.
|
360
|
-
novelWriter-2.6.
|
361
|
-
novelWriter-2.6.
|
358
|
+
novelWriter-2.6.3.dist-info/LICENSE.md,sha256=2GirkkLrPfQqx7fACKRJjtKJUegKc8067erGvcDVQHM,32197
|
359
|
+
novelWriter-2.6.3.dist-info/METADATA,sha256=Hh36yolhBWLShycU9Mg8H47K4Zv4cSll5xKxOOTxV-U,2581
|
360
|
+
novelWriter-2.6.3.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
361
|
+
novelWriter-2.6.3.dist-info/entry_points.txt,sha256=YDUG1w361LtLsjD3YhxoTDTwM17JA5-nigjC6j5C74A,45
|
362
|
+
novelWriter-2.6.3.dist-info/top_level.txt,sha256=wFFEucjEeNC_Ap5ULBuEutg5a1Uc0-YO9uFT5L2naNI,12
|
363
|
+
novelWriter-2.6.3.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.6.
|
51
|
-
__hexversion__ = "
|
52
|
-
__date__ = "2025-02-
|
50
|
+
__version__ = "2.6.3"
|
51
|
+
__hexversion__ = "0x020603f0"
|
52
|
+
__date__ = "2025-02-16"
|
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
|
Binary file
|
Binary file
|
@@ -0,0 +1,118 @@
|
|
1
|
+
{
|
2
|
+
"Synopsis": "Synopse",
|
3
|
+
"Short Description": "Krátký popis",
|
4
|
+
"Footnotes": "Poznámky pod čarou",
|
5
|
+
"Comment": "Komentář",
|
6
|
+
"Notes": "Poznámka",
|
7
|
+
"Tag": "Štítek",
|
8
|
+
"Point of View": "Úhel pohledu",
|
9
|
+
"Focus": "Zaměření",
|
10
|
+
"Characters": "Postavy",
|
11
|
+
"Plot": "Zápletka",
|
12
|
+
"Timeline": "Časová osa",
|
13
|
+
"Locations": "Lokality",
|
14
|
+
"Objects": "Objekty",
|
15
|
+
"Entities": "Subjekty",
|
16
|
+
"Custom": "Vlastní",
|
17
|
+
"New Page": "Nová stránka",
|
18
|
+
"0": "Nula",
|
19
|
+
"1": "Jedna",
|
20
|
+
"2": "Dva",
|
21
|
+
"3": "Tři",
|
22
|
+
"4": "Čtyři",
|
23
|
+
"5": "Pět",
|
24
|
+
"6": "Šest",
|
25
|
+
"7": "Sedm",
|
26
|
+
"8": "Osm",
|
27
|
+
"9": "Devět",
|
28
|
+
"10": "Deset",
|
29
|
+
"11": "Jedenáct",
|
30
|
+
"12": "Dvanáct",
|
31
|
+
"13": "Třináct",
|
32
|
+
"14": "Čtrnáct",
|
33
|
+
"15": "Patnáct",
|
34
|
+
"16": "Šestnáct",
|
35
|
+
"17": "Sedmnáct",
|
36
|
+
"18": "Osmnáct",
|
37
|
+
"19": "Devatenáct",
|
38
|
+
"20": "Dvacet",
|
39
|
+
"21": "Dvacet jedna",
|
40
|
+
"22": "Dvacet dva",
|
41
|
+
"23": "Dvacet tři",
|
42
|
+
"24": "Dvacet čtyři",
|
43
|
+
"25": "Dvacet pět",
|
44
|
+
"26": "Dvacet šest",
|
45
|
+
"27": "Dvacet sedm",
|
46
|
+
"28": "Dvacet osm",
|
47
|
+
"29": "Dvacet devět",
|
48
|
+
"30": "Třicet",
|
49
|
+
"31": "Třicet jedna",
|
50
|
+
"32": "Třicet dva",
|
51
|
+
"33": "Třicet tři",
|
52
|
+
"34": "Třicet čtyři",
|
53
|
+
"35": "Třicet pět",
|
54
|
+
"36": "Třicet šest",
|
55
|
+
"37": "Třicet sedm",
|
56
|
+
"38": "Třicet osm",
|
57
|
+
"39": "Třicet devět",
|
58
|
+
"40": "Čtyřicet",
|
59
|
+
"41": "Čtyřicet jedna",
|
60
|
+
"42": "Čtyřicet dva",
|
61
|
+
"43": "Čtyřicet tři",
|
62
|
+
"44": "Čtyřicet čtyři",
|
63
|
+
"45": "Čtyřicet pět",
|
64
|
+
"46": "Čtyřicet šest",
|
65
|
+
"47": "Čtyřicet sedm",
|
66
|
+
"48": "Deset osm",
|
67
|
+
"49": "Čtyřicet devět",
|
68
|
+
"50": "Padesát",
|
69
|
+
"51": "Padesát jedna",
|
70
|
+
"52": "Padesát dva",
|
71
|
+
"53": "Padesát tři",
|
72
|
+
"54": "Padesát čtyři",
|
73
|
+
"55": "Padesát pět",
|
74
|
+
"56": "Padesát šest",
|
75
|
+
"57": "Padesát sedm",
|
76
|
+
"58": "Padesát osm",
|
77
|
+
"59": "Padesát devět",
|
78
|
+
"60": "Šedesát",
|
79
|
+
"61": "Šedesát jedna",
|
80
|
+
"62": "Šedesát dva",
|
81
|
+
"63": "Šedesát tři",
|
82
|
+
"64": "Šedesát čtyři",
|
83
|
+
"65": "Šedesát pět",
|
84
|
+
"66": "Šedesát šest",
|
85
|
+
"67": "Šedesát sedm",
|
86
|
+
"68": "Šedesát osm",
|
87
|
+
"69": "Šedesát devět",
|
88
|
+
"70": "Sedmdesát",
|
89
|
+
"71": "Sedmdesát jedna",
|
90
|
+
"72": "Sedmdesát dva",
|
91
|
+
"73": "Sedmdesát tři",
|
92
|
+
"74": "Sedmdesát čtyři",
|
93
|
+
"75": "Sedmdesát pět",
|
94
|
+
"76": "Sedmdesát šest",
|
95
|
+
"77": "Sedmdesát sedm",
|
96
|
+
"78": "Sedmnáct osm",
|
97
|
+
"79": "Sedmdesát devět",
|
98
|
+
"80": "Osmdesát",
|
99
|
+
"81": "Osmdesát jedna",
|
100
|
+
"82": "Osmdesát dva",
|
101
|
+
"83": "Osmdesát tři",
|
102
|
+
"84": "Osmdesát čtyři",
|
103
|
+
"85": "Osmdesát pět",
|
104
|
+
"86": "Osmdesát šest",
|
105
|
+
"87": "Osmdesát sedm",
|
106
|
+
"88": "Osmdesát osum",
|
107
|
+
"89": "Osmdesát devět",
|
108
|
+
"90": "Devadesát",
|
109
|
+
"91": "Devadesát jedna",
|
110
|
+
"92": "Devadesát dva",
|
111
|
+
"93": "Devadesát tři",
|
112
|
+
"94": "Devadesát čtyři",
|
113
|
+
"95": "Devadesát pět",
|
114
|
+
"96": "Devadesát šest",
|
115
|
+
"97": "Devadesát sedm",
|
116
|
+
"98": "Devadesát osm",
|
117
|
+
"99": "Devadesát devět"
|
118
|
+
}
|
novelwriter/assets/manual.pdf
CHANGED
Binary file
|
novelwriter/assets/sample.zip
CHANGED
Binary file
|
@@ -26,6 +26,7 @@
|
|
26
26
|
translators for the languages currently available:</p>
|
27
27
|
|
28
28
|
<ul>
|
29
|
+
<li><b>Czech:</b> Tomáš Zmek (perteus)</li>
|
29
30
|
<li><b>Dutch:</b> Martijn van der Kleijn (mvdkleijn)</li>
|
30
31
|
<li><b>French:</b> Jan Lüdke (jyhelle)</li>
|
31
32
|
<li><b>German:</b> Myian (HeyMyian)</li>
|
novelwriter/constants.py
CHANGED
@@ -35,6 +35,11 @@ def trConst(text: str) -> str:
|
|
35
35
|
return QCoreApplication.translate("Constant", text)
|
36
36
|
|
37
37
|
|
38
|
+
def trStats(text: str) -> str:
|
39
|
+
"""Wrapper function for locally translating stats constants."""
|
40
|
+
return QCoreApplication.translate("Stats", text)
|
41
|
+
|
42
|
+
|
38
43
|
class nwConst:
|
39
44
|
|
40
45
|
# Date and Time Formats
|
@@ -370,32 +375,32 @@ class nwLabels:
|
|
370
375
|
nwBuildFmt.J_NWD: ".json",
|
371
376
|
}
|
372
377
|
SHAPES_PLAIN = {
|
373
|
-
nwStatusShape.SQUARE: QT_TRANSLATE_NOOP("
|
374
|
-
nwStatusShape.TRIANGLE: QT_TRANSLATE_NOOP("
|
375
|
-
nwStatusShape.NABLA: QT_TRANSLATE_NOOP("
|
376
|
-
nwStatusShape.DIAMOND: QT_TRANSLATE_NOOP("
|
377
|
-
nwStatusShape.PENTAGON: QT_TRANSLATE_NOOP("
|
378
|
-
nwStatusShape.HEXAGON: QT_TRANSLATE_NOOP("
|
379
|
-
nwStatusShape.STAR: QT_TRANSLATE_NOOP("
|
380
|
-
nwStatusShape.PACMAN: QT_TRANSLATE_NOOP("
|
378
|
+
nwStatusShape.SQUARE: QT_TRANSLATE_NOOP("Constant", "Square"),
|
379
|
+
nwStatusShape.TRIANGLE: QT_TRANSLATE_NOOP("Constant", "Triangle"),
|
380
|
+
nwStatusShape.NABLA: QT_TRANSLATE_NOOP("Constant", "Nabla"),
|
381
|
+
nwStatusShape.DIAMOND: QT_TRANSLATE_NOOP("Constant", "Diamond"),
|
382
|
+
nwStatusShape.PENTAGON: QT_TRANSLATE_NOOP("Constant", "Pentagon"),
|
383
|
+
nwStatusShape.HEXAGON: QT_TRANSLATE_NOOP("Constant", "Hexagon"),
|
384
|
+
nwStatusShape.STAR: QT_TRANSLATE_NOOP("Constant", "Star"),
|
385
|
+
nwStatusShape.PACMAN: QT_TRANSLATE_NOOP("Constant", "Pacman"),
|
381
386
|
}
|
382
387
|
SHAPES_CIRCLE = {
|
383
|
-
nwStatusShape.CIRCLE_Q: QT_TRANSLATE_NOOP("
|
384
|
-
nwStatusShape.CIRCLE_H: QT_TRANSLATE_NOOP("
|
385
|
-
nwStatusShape.CIRCLE_T: QT_TRANSLATE_NOOP("
|
386
|
-
nwStatusShape.CIRCLE: QT_TRANSLATE_NOOP("
|
388
|
+
nwStatusShape.CIRCLE_Q: QT_TRANSLATE_NOOP("Constant", "1/4 Circle"),
|
389
|
+
nwStatusShape.CIRCLE_H: QT_TRANSLATE_NOOP("Constant", "Half Circle"),
|
390
|
+
nwStatusShape.CIRCLE_T: QT_TRANSLATE_NOOP("Constant", "3/4 Circle"),
|
391
|
+
nwStatusShape.CIRCLE: QT_TRANSLATE_NOOP("Constant", "Full Circle"),
|
387
392
|
}
|
388
393
|
SHAPES_BARS = {
|
389
|
-
nwStatusShape.BARS_1: QT_TRANSLATE_NOOP("
|
390
|
-
nwStatusShape.BARS_2: QT_TRANSLATE_NOOP("
|
391
|
-
nwStatusShape.BARS_3: QT_TRANSLATE_NOOP("
|
392
|
-
nwStatusShape.BARS_4: QT_TRANSLATE_NOOP("
|
394
|
+
nwStatusShape.BARS_1: QT_TRANSLATE_NOOP("Constant", "1 Bar"),
|
395
|
+
nwStatusShape.BARS_2: QT_TRANSLATE_NOOP("Constant", "2 Bars"),
|
396
|
+
nwStatusShape.BARS_3: QT_TRANSLATE_NOOP("Constant", "3 Bars"),
|
397
|
+
nwStatusShape.BARS_4: QT_TRANSLATE_NOOP("Constant", "4 Bars"),
|
393
398
|
}
|
394
399
|
SHAPES_BLOCKS = {
|
395
|
-
nwStatusShape.BLOCK_1: QT_TRANSLATE_NOOP("
|
396
|
-
nwStatusShape.BLOCK_2: QT_TRANSLATE_NOOP("
|
397
|
-
nwStatusShape.BLOCK_3: QT_TRANSLATE_NOOP("
|
398
|
-
nwStatusShape.BLOCK_4: QT_TRANSLATE_NOOP("
|
400
|
+
nwStatusShape.BLOCK_1: QT_TRANSLATE_NOOP("Constant", "1 Block"),
|
401
|
+
nwStatusShape.BLOCK_2: QT_TRANSLATE_NOOP("Constant", "2 Blocks"),
|
402
|
+
nwStatusShape.BLOCK_3: QT_TRANSLATE_NOOP("Constant", "3 Blocks"),
|
403
|
+
nwStatusShape.BLOCK_4: QT_TRANSLATE_NOOP("Constant", "4 Blocks"),
|
399
404
|
}
|
400
405
|
FILE_FILTERS = {
|
401
406
|
"*.txt": QT_TRANSLATE_NOOP("Constant", "Text files"),
|
novelwriter/core/itemmodel.py
CHANGED
@@ -328,7 +328,7 @@ class ProjectModel(QAbstractItemModel):
|
|
328
328
|
|
329
329
|
def parent(self, index: QModelIndex) -> QModelIndex:
|
330
330
|
"""Get the parent model index of another index."""
|
331
|
-
if index.isValid() and (
|
331
|
+
if index.isValid() and (node := index.internalPointer()) and (parent := node.parent()):
|
332
332
|
return self.createIndex(parent.row(), 0, parent)
|
333
333
|
return QModelIndex()
|
334
334
|
|
@@ -379,7 +379,9 @@ class ProjectModel(QAbstractItemModel):
|
|
379
379
|
row: int, column: int, parent: QModelIndex
|
380
380
|
) -> bool:
|
381
381
|
"""Check if mime data can be dropped on the current location."""
|
382
|
-
|
382
|
+
if parent.isValid() and parent.internalPointer() is not self._root:
|
383
|
+
return data.hasFormat(nwConst.MIME_HANDLE) and action == Qt.DropAction.MoveAction
|
384
|
+
return False
|
383
385
|
|
384
386
|
def dropMimeData(
|
385
387
|
self, data: QMimeData, action: Qt.DropAction,
|
novelwriter/dialogs/docsplit.py
CHANGED
@@ -71,10 +71,10 @@ class GuiDocSplit(NDialog):
|
|
71
71
|
vSp = CONFIG.pxInt(8)
|
72
72
|
bSp = CONFIG.pxInt(12)
|
73
73
|
|
74
|
-
|
75
|
-
spLevel =
|
76
|
-
intoFolder =
|
77
|
-
docHierarchy =
|
74
|
+
options = SHARED.project.options
|
75
|
+
spLevel = options.getInt("GuiDocSplit", "spLevel", 3)
|
76
|
+
intoFolder = options.getBool("GuiDocSplit", "intoFolder", True)
|
77
|
+
docHierarchy = options.getBool("GuiDocSplit", "docHierarchy", True)
|
78
78
|
|
79
79
|
# Heading Selection
|
80
80
|
self.listBox = QListWidget(self)
|
@@ -171,10 +171,10 @@ class GuiDocSplit(NDialog):
|
|
171
171
|
self._data["moveToTrash"] = moveToTrash
|
172
172
|
|
173
173
|
logger.debug("Saving State: GuiDocSplit")
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
174
|
+
options = SHARED.project.options
|
175
|
+
options.setValue("GuiDocSplit", "spLevel", spLevel)
|
176
|
+
options.setValue("GuiDocSplit", "intoFolder", intoFolder)
|
177
|
+
options.setValue("GuiDocSplit", "docHierarchy", docHierarchy)
|
178
178
|
|
179
179
|
return self._data, self._text
|
180
180
|
|
@@ -218,42 +218,46 @@ class GuiDocSplit(NDialog):
|
|
218
218
|
if not self._text:
|
219
219
|
self._text = SHARED.project.storage.getDocumentText(sHandle).splitlines()
|
220
220
|
|
221
|
-
for
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
if
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
elif
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
elif
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
elif
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
elif
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
elif
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
221
|
+
for i, line in enumerate(self._text):
|
222
|
+
|
223
|
+
pos = -1
|
224
|
+
level = 0
|
225
|
+
label = line.strip()
|
226
|
+
if line.startswith("# ") and spLevel >= 1:
|
227
|
+
pos = i
|
228
|
+
level = 1
|
229
|
+
label = line[2:].strip()
|
230
|
+
elif line.startswith("## ") and spLevel >= 2:
|
231
|
+
pos = i
|
232
|
+
level = 2
|
233
|
+
label = line[3:].strip()
|
234
|
+
elif line.startswith("### ") and spLevel >= 3:
|
235
|
+
pos = i
|
236
|
+
level = 3
|
237
|
+
label = line[4:].strip()
|
238
|
+
elif line.startswith("#### ") and spLevel >= 4:
|
239
|
+
pos = i
|
240
|
+
level = 4
|
241
|
+
label = line[5:].strip()
|
242
|
+
elif line.startswith("#! ") and spLevel >= 1:
|
243
|
+
pos = i
|
244
|
+
level = 1
|
245
|
+
label = line[3:].strip()
|
246
|
+
elif line.startswith("##! ") and spLevel >= 2:
|
247
|
+
pos = i
|
248
|
+
level = 2
|
249
|
+
label = line[4:].strip()
|
250
|
+
elif line.startswith("###! ") and spLevel >= 3:
|
251
|
+
pos = i
|
252
|
+
level = 3
|
253
|
+
label = line[5:].strip()
|
254
|
+
|
255
|
+
if pos >= 0 and level > 0:
|
256
|
+
trItem = QListWidgetItem()
|
257
|
+
trItem.setText(line.strip())
|
258
|
+
trItem.setData(self.LINE_ROLE, pos)
|
259
|
+
trItem.setData(self.LEVEL_ROLE, level)
|
260
|
+
trItem.setData(self.LABEL_ROLE, label)
|
261
|
+
self.listBox.addItem(trItem)
|
258
262
|
|
259
263
|
return
|
novelwriter/gui/itemdetails.py
CHANGED
@@ -32,7 +32,7 @@ from PyQt5.QtWidgets import QGridLayout, QLabel, QWidget
|
|
32
32
|
|
33
33
|
from novelwriter import CONFIG, SHARED
|
34
34
|
from novelwriter.common import elide
|
35
|
-
from novelwriter.constants import nwLabels, nwStats, trConst
|
35
|
+
from novelwriter.constants import nwLabels, nwStats, trConst, trStats
|
36
36
|
from novelwriter.enum import nwChange
|
37
37
|
from novelwriter.types import (
|
38
38
|
QtAlignLeft, QtAlignLeftBase, QtAlignRight, QtAlignRightBase,
|
@@ -65,9 +65,9 @@ class GuiItemDetails(QWidget):
|
|
65
65
|
fntValue = self.font()
|
66
66
|
fntValue.setPointSizeF(0.9*fPt)
|
67
67
|
|
68
|
-
trStats1 =
|
69
|
-
trStats2 =
|
70
|
-
trStats3 =
|
68
|
+
trStats1 = trStats(nwLabels.STATS_NAME[nwStats.CHARS])
|
69
|
+
trStats2 = trStats(nwLabels.STATS_NAME[nwStats.WORDS])
|
70
|
+
trStats3 = trStats(nwLabels.STATS_NAME[nwStats.PARAGRAPHS])
|
71
71
|
|
72
72
|
# Label
|
73
73
|
self.labelName = QLabel(self.tr("Label"), self)
|
novelwriter/gui/mainmenu.py
CHANGED
@@ -35,7 +35,7 @@ from novelwriter import CONFIG, SHARED
|
|
35
35
|
from novelwriter.common import openExternalPath, qtLambda
|
36
36
|
from novelwriter.constants import (
|
37
37
|
nwConst, nwKeyWords, nwLabels, nwShortcode, nwStats, nwStyles, nwUnicode,
|
38
|
-
trConst
|
38
|
+
trConst, trStats
|
39
39
|
)
|
40
40
|
from novelwriter.enum import nwDocAction, nwDocInsert, nwFocus, nwView
|
41
41
|
from novelwriter.extensions.eventfilters import StatusTipFilter
|
@@ -601,7 +601,7 @@ class GuiMainMenu(QMenuBar):
|
|
601
601
|
self.mInsField = self.insMenu.addMenu(self.tr("Word/Character Count"))
|
602
602
|
for field in nwStats.ALL_FIELDS:
|
603
603
|
value = nwShortcode.FIELD_VALUE.format(field)
|
604
|
-
action = self.mInsField.addAction(
|
604
|
+
action = self.mInsField.addAction(trStats(nwLabels.STATS_NAME[field]))
|
605
605
|
action.triggered.connect(qtLambda(self.requestDocInsertText.emit, value))
|
606
606
|
|
607
607
|
# Insert > Breaks and Vertical Space
|
novelwriter/gui/outline.py
CHANGED
@@ -42,7 +42,7 @@ from PyQt5.QtWidgets import (
|
|
42
42
|
|
43
43
|
from novelwriter import CONFIG, SHARED
|
44
44
|
from novelwriter.common import checkInt, formatFileFilter
|
45
|
-
from novelwriter.constants import nwKeyWords, nwLabels, nwStats, nwStyles, trConst
|
45
|
+
from novelwriter.constants import nwKeyWords, nwLabels, nwStats, nwStyles, trConst, trStats
|
46
46
|
from novelwriter.enum import nwChange, nwDocMode, nwItemClass, nwItemLayout, nwItemType, nwOutline
|
47
47
|
from novelwriter.error import logException
|
48
48
|
from novelwriter.extensions.configlayout import NColourLabel
|
@@ -815,9 +815,9 @@ class GuiOutlineDetails(QScrollArea):
|
|
815
815
|
|
816
816
|
bFont = SHARED.theme.guiFontB
|
817
817
|
|
818
|
-
trStats1 =
|
819
|
-
trStats2 =
|
820
|
-
trStats3 =
|
818
|
+
trStats1 = trStats(nwLabels.STATS_NAME[nwStats.CHARS])
|
819
|
+
trStats2 = trStats(nwLabels.STATS_NAME[nwStats.WORDS])
|
820
|
+
trStats3 = trStats(nwLabels.STATS_NAME[nwStats.PARAGRAPHS])
|
821
821
|
|
822
822
|
# Details Area
|
823
823
|
self.titleLabel = QLabel(self.tr("Title"), self)
|
novelwriter/gui/projtree.py
CHANGED
@@ -177,6 +177,7 @@ class GuiProjectView(QWidget):
|
|
177
177
|
self.projTree.addAction(trash)
|
178
178
|
rename.triggered.connect(self.renameTreeItem)
|
179
179
|
delete.triggered.connect(self.projTree.processDeleteRequest)
|
180
|
+
trash.triggered.connect(self.projTree.emptyTrash)
|
180
181
|
return
|
181
182
|
|
182
183
|
##
|
novelwriter/tools/manuscript.py
CHANGED
@@ -43,7 +43,7 @@ from PyQt5.QtWidgets import (
|
|
43
43
|
|
44
44
|
from novelwriter import CONFIG, SHARED
|
45
45
|
from novelwriter.common import fuzzyTime
|
46
|
-
from novelwriter.constants import nwLabels, nwStats,
|
46
|
+
from novelwriter.constants import nwLabels, nwStats, trStats
|
47
47
|
from novelwriter.core.buildsettings import BuildCollection, BuildSettings
|
48
48
|
from novelwriter.core.docbuild import NWBuildDocument
|
49
49
|
from novelwriter.extensions.modified import NIconToggleButton, NIconToolButton, NToolDialog
|
@@ -1037,17 +1037,17 @@ class _StatsWidget(QWidget):
|
|
1037
1037
|
hPx = CONFIG.pxInt(12)
|
1038
1038
|
vPx = CONFIG.pxInt(4)
|
1039
1039
|
|
1040
|
-
trAllChars =
|
1041
|
-
trTextChars =
|
1042
|
-
trTitleChars =
|
1043
|
-
trParagraphCount =
|
1044
|
-
trTitleCount =
|
1045
|
-
trAllWordChars =
|
1046
|
-
trTextWordChars =
|
1047
|
-
trTitleWordChars =
|
1048
|
-
trAllWords =
|
1049
|
-
trTextWords =
|
1050
|
-
trTitleWords =
|
1040
|
+
trAllChars = trStats(nwLabels.STATS_NAME[nwStats.CHARS])
|
1041
|
+
trTextChars = trStats(nwLabels.STATS_NAME[nwStats.CHARS_TEXT])
|
1042
|
+
trTitleChars = trStats(nwLabels.STATS_NAME[nwStats.CHARS_TITLE])
|
1043
|
+
trParagraphCount = trStats(nwLabels.STATS_NAME[nwStats.PARAGRAPHS])
|
1044
|
+
trTitleCount = trStats(nwLabels.STATS_NAME[nwStats.TITLES])
|
1045
|
+
trAllWordChars = trStats(nwLabels.STATS_NAME[nwStats.WCHARS_ALL])
|
1046
|
+
trTextWordChars = trStats(nwLabels.STATS_NAME[nwStats.WCHARS_TEXT])
|
1047
|
+
trTitleWordChars = trStats(nwLabels.STATS_NAME[nwStats.WCHARS_TITLE])
|
1048
|
+
trAllWords = trStats(nwLabels.STATS_NAME[nwStats.WORDS])
|
1049
|
+
trTextWords = trStats(nwLabels.STATS_NAME[nwStats.WORDS_TEXT])
|
1050
|
+
trTitleWords = trStats(nwLabels.STATS_NAME[nwStats.WORDS_TITLE])
|
1051
1051
|
|
1052
1052
|
# Minimal Form
|
1053
1053
|
self.minWordCount = QLabel(self)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|