novelWriter 2.6.1__py3-none-any.whl → 2.6.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: novelWriter
3
- Version: 2.6.1
3
+ Version: 2.6.2
4
4
  Summary: A markdown-like text editor for planning and writing novels
5
5
  Author-email: Veronica Berglyd Olsen <code@vkbo.net>
6
6
  License: GNU General Public License v3
@@ -1,4 +1,4 @@
1
- novelwriter/__init__.py,sha256=1gWN_28OfaF8oIwaLD64wwNjVFSCB4AjJM2dMR7Kha0,8843
1
+ novelwriter/__init__.py,sha256=rOcJN1w7All2F39QCff5AOG5GV6GA61IHXkYJEZAP3g,8843
2
2
  novelwriter/common.py,sha256=i5kxxzOOg0W60uZ8w1HhwlgEUYKqv60F1JTlu4KEjrY,21751
3
3
  novelwriter/config.py,sha256=1pQwU0QsGJ5qAvxZ_iL2vwjTMajjsAuXdTP0IRK1X30,41108
4
4
  novelwriter/constants.py,sha256=QVRHVUPE8JlJ4hUSYoVF2qsJtZoB0wvQmvIqQr4eZCU,26086
@@ -7,21 +7,23 @@ 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=uqL-ml8_KJ5j1w9aXNujbrO_fuyiUl_YUDsJczfqBtA,2687778
10
+ novelwriter/assets/manual.pdf,sha256=jOInSwBi9cvkauWPFshtaCKQFGN-K5pwBecrVv5KXVk,2687676
11
11
  novelwriter/assets/manual_fr_FR.pdf,sha256=EUJk5-5IBxH1HvUt6ZHgmTtgxWEnIAWybJq5M5l6LmE,2719136
12
- novelwriter/assets/sample.zip,sha256=13p5E9LWb06ry3CEYc9-c3pd_7LK7WxdHGRWGzHOEWI,28035
12
+ novelwriter/assets/sample.zip,sha256=0WIwlVBjecYDANezpOcJRpQyPLExpZqgZHl1GHg3214,28035
13
+ novelwriter/assets/i18n/nw_cs_CZ.qm,sha256=XiDuN3kdGRhyBxqUB7dm5t8IhFELa2rSW5BHJ22-j1g,97439
13
14
  novelwriter/assets/i18n/nw_de_DE.qm,sha256=T7sqOXBBW4lakypIXCvBVqkvBFtThClmMsOgh5CCyHs,102407
14
15
  novelwriter/assets/i18n/nw_en_US.qm,sha256=G8orcdkczAjSXFmbjGk6Los5dW3yADhKl2HuQaF6aEg,95153
15
16
  novelwriter/assets/i18n/nw_es_419.qm,sha256=wxYAyhPu-LWPPJ-m5cG34ch8rjMWXFrGhdP4CMcSwNY,105274
16
17
  novelwriter/assets/i18n/nw_fr_FR.qm,sha256=TpfOCWH5gz9W0OTEHXOBuECcqdyEiJYAts761JD1J_A,105257
17
- novelwriter/assets/i18n/nw_it_IT.qm,sha256=MmPWCYj25QoY92-BwZG6_RilVEXvGA_wCptgVt8MSM4,104997
18
+ novelwriter/assets/i18n/nw_it_IT.qm,sha256=LkdtZwBqCEnu4ToZNpIUX2UunLchfednEyoXl_x-Img,105389
18
19
  novelwriter/assets/i18n/nw_ja_JP.qm,sha256=i3I2DCEEsh4o891DcxUXF4Jz736EvPEbOzkxjC1DaIE,78758
19
20
  novelwriter/assets/i18n/nw_nb_NO.qm,sha256=akO2Or98k903AJB5Z1x_PFOsDXp4LQjS6P47pBbz97M,97725
20
21
  novelwriter/assets/i18n/nw_nl_NL.qm,sha256=20gCLmjMD8w9XCQkiulfBZT_NgmHUq8z_XSgP0Wty9Q,96613
21
- novelwriter/assets/i18n/nw_pl_PL.qm,sha256=SVni2gmKNWaXJNZUvxZLMycBp7Q5myHmG99z-oPodtY,100243
22
- novelwriter/assets/i18n/nw_pt_BR.qm,sha256=x73R7y1VrXApgZeb1M-69nlk0qARSMapZx-PYkSDyVE,103309
22
+ novelwriter/assets/i18n/nw_pl_PL.qm,sha256=5CN8ZUFCiHzY7-DCL5ieDSaLmqHLurSozjOpdH6gVbE,100659
23
+ novelwriter/assets/i18n/nw_pt_BR.qm,sha256=GoZDWm5RU0LSKAO4BCcwL5kEK-HKQ7z-VGKX1T2lkes,103697
23
24
  novelwriter/assets/i18n/nw_ru_RU.qm,sha256=WR0B0Jc2Vm64iYO6Q-GqOMCX1JsyB9VJqv-w4jAM4O8,94740
24
25
  novelwriter/assets/i18n/nw_zh_CN.qm,sha256=AjV2BT7XgD1LWaAqweQNxrh7sITtpf-amRq4FbwL6Xc,70408
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=wZgQGDQgIvd_2aT6oaJB88jOUjhtWYbn9tA6IfoGq3k,2958
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=1W7A-uLI1g2sOe7gietKiV15McF6rMY1VMVJ4L0PpAc,18025
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=nt5L_SuB7QlfDYgBecd57bir5RVIcbpptCMdIBg4-Fs,9306
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
@@ -338,7 +340,7 @@ novelwriter/gui/itemdetails.py,sha256=HQ2E1p9EiDsuNTgULEV__AzqW1DJ6qjB5DWILtlkey
338
340
  novelwriter/gui/mainmenu.py,sha256=VKMgE8_jxRM8973ycArOpGMaTwHy-7ju2TIzm2-Zqqo,41629
339
341
  novelwriter/gui/noveltree.py,sha256=-XKR_zBGjbO44hEknhZt64NeW00LIC_31LQURgjsv_U,27136
340
342
  novelwriter/gui/outline.py,sha256=e1U_KakgnJX044nmP5NsXzbrSVd-G_t0tJ_531zMXZI,38446
341
- novelwriter/gui/projtree.py,sha256=ffXSwCIZotT28n6zIvN7UhwA5az1dgWh9Mff6gc4h2Y,53062
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
@@ -353,9 +355,9 @@ novelwriter/tools/manussettings.py,sha256=jn8E6SroiuwHv5NINvRgYgaW85ji2li2bZW2NS
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.1.dist-info/LICENSE.md,sha256=2GirkkLrPfQqx7fACKRJjtKJUegKc8067erGvcDVQHM,32197
357
- novelWriter-2.6.1.dist-info/METADATA,sha256=NeYxeDuy93SroSEwsD_UwERbeyy0Mv9Q2PofQctPb2E,2581
358
- novelWriter-2.6.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
359
- novelWriter-2.6.1.dist-info/entry_points.txt,sha256=YDUG1w361LtLsjD3YhxoTDTwM17JA5-nigjC6j5C74A,45
360
- novelWriter-2.6.1.dist-info/top_level.txt,sha256=wFFEucjEeNC_Ap5ULBuEutg5a1Uc0-YO9uFT5L2naNI,12
361
- novelWriter-2.6.1.dist-info/RECORD,,
358
+ novelWriter-2.6.2.dist-info/LICENSE.md,sha256=2GirkkLrPfQqx7fACKRJjtKJUegKc8067erGvcDVQHM,32197
359
+ novelWriter-2.6.2.dist-info/METADATA,sha256=U8hqFtjlPm7HZl96W6TxD4cj1yTluSAoS5xys-KrylA,2581
360
+ novelWriter-2.6.2.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
361
+ novelWriter-2.6.2.dist-info/entry_points.txt,sha256=YDUG1w361LtLsjD3YhxoTDTwM17JA5-nigjC6j5C74A,45
362
+ novelWriter-2.6.2.dist-info/top_level.txt,sha256=wFFEucjEeNC_Ap5ULBuEutg5a1Uc0-YO9uFT5L2naNI,12
363
+ novelWriter-2.6.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.6.1"
51
- __hexversion__ = "0x020601f0"
52
- __date__ = "2025-02-02"
50
+ __version__ = "2.6.2"
51
+ __hexversion__ = "0x020602f0"
52
+ __date__ = "2025-02-16"
53
53
  __status__ = "Stable"
54
54
  __domain__ = "novelwriter.io"
55
55
 
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
+ }
Binary file
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>
@@ -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 (parent := index.internalPointer().parent()):
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
- return data.hasFormat(nwConst.MIME_HANDLE) and action == Qt.DropAction.MoveAction
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,
@@ -71,10 +71,10 @@ class GuiDocSplit(NDialog):
71
71
  vSp = CONFIG.pxInt(8)
72
72
  bSp = CONFIG.pxInt(12)
73
73
 
74
- pOptions = SHARED.project.options
75
- spLevel = pOptions.getInt("GuiDocSplit", "spLevel", 3)
76
- intoFolder = pOptions.getBool("GuiDocSplit", "intoFolder", True)
77
- docHierarchy = pOptions.getBool("GuiDocSplit", "docHierarchy", True)
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
- pOptions = SHARED.project.options
175
- pOptions.setValue("GuiDocSplit", "spLevel", spLevel)
176
- pOptions.setValue("GuiDocSplit", "intoFolder", intoFolder)
177
- pOptions.setValue("GuiDocSplit", "docHierarchy", docHierarchy)
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 lineNo, aLine in enumerate(self._text):
222
-
223
- onLine = -1
224
- hLevel = 0
225
- hLabel = aLine.strip()
226
- if aLine.startswith("# ") and spLevel >= 1:
227
- onLine = lineNo
228
- hLevel = 1
229
- hLabel = aLine[2:].strip()
230
- elif aLine.startswith("## ") and spLevel >= 2:
231
- onLine = lineNo
232
- hLevel = 2
233
- hLabel = aLine[3:].strip()
234
- elif aLine.startswith("### ") and spLevel >= 3:
235
- onLine = lineNo
236
- hLevel = 3
237
- hLabel = aLine[4:].strip()
238
- elif aLine.startswith("#### ") and spLevel >= 4:
239
- onLine = lineNo
240
- hLevel = 4
241
- hLabel = aLine[5:].strip()
242
- elif aLine.startswith("#! ") and spLevel >= 1:
243
- onLine = lineNo
244
- hLevel = 1
245
- hLabel = aLine[3:].strip()
246
- elif aLine.startswith("##! ") and spLevel >= 2:
247
- onLine = lineNo
248
- hLevel = 2
249
- hLabel = aLine[4:].strip()
250
-
251
- if onLine >= 0 and hLevel > 0:
252
- newItem = QListWidgetItem()
253
- newItem.setText(aLine.strip())
254
- newItem.setData(self.LINE_ROLE, onLine)
255
- newItem.setData(self.LEVEL_ROLE, hLevel)
256
- newItem.setData(self.LABEL_ROLE, hLabel)
257
- self.listBox.addItem(newItem)
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
@@ -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
  ##