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
@@ -6,7 +6,7 @@ File History:
|
|
6
6
|
Created: 2023-11-14 [2.2rc1] GuiDocViewerPanel
|
7
7
|
|
8
8
|
This file is a part of novelWriter
|
9
|
-
Copyright
|
9
|
+
Copyright (C) 2023 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
|
@@ -29,18 +29,18 @@ from enum import Enum
|
|
29
29
|
|
30
30
|
from PyQt5.QtCore import QModelIndex, Qt, pyqtSignal, pyqtSlot
|
31
31
|
from PyQt5.QtWidgets import (
|
32
|
-
QAbstractItemView, QFrame,
|
33
|
-
|
32
|
+
QAbstractItemView, QFrame, QMenu, QTabWidget, QToolButton, QTreeWidget,
|
33
|
+
QTreeWidgetItem, QVBoxLayout, QWidget
|
34
34
|
)
|
35
35
|
|
36
36
|
from novelwriter import CONFIG, SHARED
|
37
37
|
from novelwriter.common import checkInt
|
38
|
-
from novelwriter.constants import
|
38
|
+
from novelwriter.constants import nwLabels, nwLists, nwStyles, trConst
|
39
39
|
from novelwriter.core.index import IndexHeading, IndexItem
|
40
|
-
from novelwriter.enum import nwDocMode, nwItemClass
|
40
|
+
from novelwriter.enum import nwChange, nwDocMode, nwItemClass
|
41
41
|
from novelwriter.extensions.modified import NIconToolButton
|
42
42
|
from novelwriter.gui.theme import STYLES_FLAT_TABS, STYLES_MIN_TOOLBUTTON
|
43
|
-
from novelwriter.types import QtDecoration, QtUserRole
|
43
|
+
from novelwriter.types import QtDecoration, QtHeaderFixed, QtHeaderToContents, QtUserRole
|
44
44
|
|
45
45
|
logger = logging.getLogger(__name__)
|
46
46
|
|
@@ -151,8 +151,8 @@ class GuiDocViewerPanel(QWidget):
|
|
151
151
|
self.updateHandle(self._lastHandle)
|
152
152
|
return
|
153
153
|
|
154
|
-
@pyqtSlot(str)
|
155
|
-
def
|
154
|
+
@pyqtSlot(str, Enum)
|
155
|
+
def onProjectItemChanged(self, tHandle: str, change: nwChange) -> None:
|
156
156
|
"""Update meta data for project item."""
|
157
157
|
self.tabBackRefs.refreshDocument(tHandle)
|
158
158
|
activeOnly = self.aInactive.isChecked()
|
@@ -259,10 +259,10 @@ class _ViewPanelBackRefs(QTreeWidget):
|
|
259
259
|
treeHeader = self.header()
|
260
260
|
treeHeader.setStretchLastSection(True)
|
261
261
|
treeHeader.setMinimumSectionSize(iPx + cMg) # See Issue #1627
|
262
|
-
treeHeader.setSectionResizeMode(self.C_DOC,
|
263
|
-
treeHeader.setSectionResizeMode(self.C_EDIT,
|
264
|
-
treeHeader.setSectionResizeMode(self.C_VIEW,
|
265
|
-
treeHeader.setSectionResizeMode(self.C_TITLE,
|
262
|
+
treeHeader.setSectionResizeMode(self.C_DOC, QtHeaderToContents)
|
263
|
+
treeHeader.setSectionResizeMode(self.C_EDIT, QtHeaderFixed)
|
264
|
+
treeHeader.setSectionResizeMode(self.C_VIEW, QtHeaderFixed)
|
265
|
+
treeHeader.setSectionResizeMode(self.C_TITLE, QtHeaderToContents)
|
266
266
|
treeHeader.resizeSection(self.C_EDIT, iPx + cMg)
|
267
267
|
treeHeader.resizeSection(self.C_VIEW, iPx + cMg)
|
268
268
|
treeHeader.setSectionsMovable(False)
|
@@ -339,17 +339,13 @@ class _ViewPanelBackRefs(QTreeWidget):
|
|
339
339
|
def _setTreeItemValues(self, tHandle: str, sTitle: str, hItem: IndexHeading) -> None:
|
340
340
|
"""Add or update a tree item."""
|
341
341
|
if nwItem := SHARED.project.tree[tHandle]:
|
342
|
-
|
343
|
-
nwItem.itemType, nwItem.itemClass,
|
344
|
-
nwItem.itemLayout, nwItem.mainHeading
|
345
|
-
)
|
346
|
-
iLevel = nwHeaders.H_LEVEL.get(hItem.level, 0) if nwItem.isDocumentLayout() else 5
|
342
|
+
iLevel = nwStyles.H_LEVEL.get(hItem.level, 0) if nwItem.isDocumentLayout() else 5
|
347
343
|
hDec = SHARED.theme.getHeaderDecorationNarrow(iLevel)
|
348
344
|
|
349
345
|
tKey = f"{tHandle}:{sTitle}"
|
350
346
|
trItem = self._treeMap[tKey] if tKey in self._treeMap else QTreeWidgetItem()
|
351
347
|
|
352
|
-
trItem.setIcon(self.C_DOC,
|
348
|
+
trItem.setIcon(self.C_DOC, nwItem.getMainIcon())
|
353
349
|
trItem.setText(self.C_DOC, nwItem.itemName)
|
354
350
|
trItem.setToolTip(self.C_DOC, nwItem.itemName)
|
355
351
|
trItem.setIcon(self.C_EDIT, self._editIcon)
|
@@ -407,8 +403,8 @@ class _ViewPanelKeyWords(QTreeWidget):
|
|
407
403
|
treeHeader = self.header()
|
408
404
|
treeHeader.setStretchLastSection(True)
|
409
405
|
treeHeader.setMinimumSectionSize(iPx + cMg) # See Issue #1627
|
410
|
-
treeHeader.setSectionResizeMode(self.C_EDIT,
|
411
|
-
treeHeader.setSectionResizeMode(self.C_VIEW,
|
406
|
+
treeHeader.setSectionResizeMode(self.C_EDIT, QtHeaderFixed)
|
407
|
+
treeHeader.setSectionResizeMode(self.C_VIEW, QtHeaderFixed)
|
412
408
|
treeHeader.resizeSection(self.C_EDIT, iPx + cMg)
|
413
409
|
treeHeader.resizeSection(self.C_VIEW, iPx + cMg)
|
414
410
|
treeHeader.setSectionsMovable(False)
|
@@ -448,12 +444,8 @@ class _ViewPanelKeyWords(QTreeWidget):
|
|
448
444
|
def addUpdateEntry(self, tag: str, name: str, iItem: IndexItem, hItem: IndexHeading) -> None:
|
449
445
|
"""Add a new entry, or update an existing one."""
|
450
446
|
nwItem = iItem.item
|
451
|
-
docIcon = SHARED.theme.getItemIcon(
|
452
|
-
nwItem.itemType, nwItem.itemClass,
|
453
|
-
nwItem.itemLayout, nwItem.mainHeading
|
454
|
-
)
|
455
447
|
impLabel, impIcon = nwItem.getImportStatus()
|
456
|
-
iLevel =
|
448
|
+
iLevel = nwStyles.H_LEVEL.get(hItem.level, 0) if nwItem.isDocumentLayout() else 5
|
457
449
|
hDec = SHARED.theme.getHeaderDecorationNarrow(iLevel)
|
458
450
|
|
459
451
|
# This can not use a get call to the dictionary as that would create an
|
@@ -468,7 +460,7 @@ class _ViewPanelKeyWords(QTreeWidget):
|
|
468
460
|
trItem.setIcon(self.C_IMPORT, impIcon)
|
469
461
|
trItem.setText(self.C_IMPORT, impLabel)
|
470
462
|
trItem.setToolTip(self.C_IMPORT, impLabel)
|
471
|
-
trItem.setIcon(self.C_DOC,
|
463
|
+
trItem.setIcon(self.C_DOC, nwItem.getMainIcon())
|
472
464
|
trItem.setText(self.C_DOC, nwItem.itemName)
|
473
465
|
trItem.setToolTip(self.C_DOC, nwItem.itemName)
|
474
466
|
trItem.setData(self.C_TITLE, QtDecoration, hDec)
|
@@ -6,7 +6,7 @@ File History:
|
|
6
6
|
Created: 2023-09-07 [2.2b1] GuiTextDocument
|
7
7
|
|
8
8
|
This file is a part of novelWriter
|
9
|
-
Copyright
|
9
|
+
Copyright (C) 2023 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
|
@@ -95,6 +95,21 @@ class GuiTextDocument(QTextDocument):
|
|
95
95
|
|
96
96
|
return
|
97
97
|
|
98
|
+
def metaDataAtPos(self, pos: int) -> tuple[str, str]:
|
99
|
+
"""Check if there is meta data available at a given position in
|
100
|
+
the document, and if so, return it.
|
101
|
+
"""
|
102
|
+
cursor = QTextCursor(self)
|
103
|
+
cursor.setPosition(pos)
|
104
|
+
block = cursor.block()
|
105
|
+
data = block.userData()
|
106
|
+
if block.isValid() and isinstance(data, TextBlockData):
|
107
|
+
if (check := pos - block.position()) >= 0:
|
108
|
+
for cPos, cEnd, cData, cType in data.metaData:
|
109
|
+
if cPos <= check <= cEnd:
|
110
|
+
return cData, cType
|
111
|
+
return "", ""
|
112
|
+
|
98
113
|
def spellErrorAtPos(self, pos: int) -> tuple[str, int, int, list[str]]:
|
99
114
|
"""Check if there is a misspelled word at a given position in
|
100
115
|
the document, and if so, return it.
|
@@ -107,8 +122,8 @@ class GuiTextDocument(QTextDocument):
|
|
107
122
|
text = block.text()
|
108
123
|
check = pos - block.position()
|
109
124
|
if check >= 0:
|
110
|
-
for cPos,
|
111
|
-
|
125
|
+
for cPos, cEnd in data.spellErrors:
|
126
|
+
cLen = cEnd - cPos
|
112
127
|
if cPos <= check <= cEnd:
|
113
128
|
word = text[cPos:cEnd]
|
114
129
|
return word, cPos, cLen, SHARED.spelling.suggestWords(word)
|
novelwriter/gui/itemdetails.py
CHANGED
@@ -6,7 +6,7 @@ File History:
|
|
6
6
|
Created: 2019-04-24 [0.0.1] GuiItemDetails
|
7
7
|
|
8
8
|
This file is a part of novelWriter
|
9
|
-
Copyright
|
9
|
+
Copyright (C) 2019 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
|
@@ -25,12 +25,15 @@ from __future__ import annotations
|
|
25
25
|
|
26
26
|
import logging
|
27
27
|
|
28
|
+
from enum import Enum
|
29
|
+
|
28
30
|
from PyQt5.QtCore import pyqtSlot
|
29
31
|
from PyQt5.QtWidgets import QGridLayout, QLabel, QWidget
|
30
32
|
|
31
33
|
from novelwriter import CONFIG, SHARED
|
32
34
|
from novelwriter.common import elide
|
33
|
-
from novelwriter.constants import nwLabels, trConst
|
35
|
+
from novelwriter.constants import nwLabels, nwStats, trConst
|
36
|
+
from novelwriter.enum import nwChange
|
34
37
|
from novelwriter.types import (
|
35
38
|
QtAlignLeft, QtAlignLeftBase, QtAlignRight, QtAlignRightBase,
|
36
39
|
QtAlignRightMiddle
|
@@ -62,6 +65,10 @@ class GuiItemDetails(QWidget):
|
|
62
65
|
fntValue = self.font()
|
63
66
|
fntValue.setPointSizeF(0.9*fPt)
|
64
67
|
|
68
|
+
trStats1 = trConst(nwLabels.STATS_NAME[nwStats.CHARS])
|
69
|
+
trStats2 = trConst(nwLabels.STATS_NAME[nwStats.WORDS])
|
70
|
+
trStats3 = trConst(nwLabels.STATS_NAME[nwStats.PARAGRAPHS])
|
71
|
+
|
65
72
|
# Label
|
66
73
|
self.labelName = QLabel(self.tr("Label"), self)
|
67
74
|
self.labelName.setFont(fntLabel)
|
@@ -86,6 +93,7 @@ class GuiItemDetails(QWidget):
|
|
86
93
|
self.statusData = QLabel("", self)
|
87
94
|
self.statusData.setFont(fntValue)
|
88
95
|
self.statusData.setAlignment(QtAlignLeft)
|
96
|
+
self.statusData.setWordWrap(True)
|
89
97
|
|
90
98
|
# Class
|
91
99
|
self.className = QLabel(self.tr("Class"), self)
|
@@ -113,7 +121,7 @@ class GuiItemDetails(QWidget):
|
|
113
121
|
self.usageData.setWordWrap(True)
|
114
122
|
|
115
123
|
# Character Count
|
116
|
-
self.cCountName = QLabel(
|
124
|
+
self.cCountName = QLabel(trStats1, self)
|
117
125
|
self.cCountName.setFont(fntLabel)
|
118
126
|
self.cCountName.setAlignment(QtAlignRight)
|
119
127
|
|
@@ -122,7 +130,7 @@ class GuiItemDetails(QWidget):
|
|
122
130
|
self.cCountData.setAlignment(QtAlignRight)
|
123
131
|
|
124
132
|
# Word Count
|
125
|
-
self.wCountName = QLabel(
|
133
|
+
self.wCountName = QLabel(trStats2, self)
|
126
134
|
self.wCountName.setFont(fntLabel)
|
127
135
|
self.wCountName.setAlignment(QtAlignRight)
|
128
136
|
|
@@ -131,7 +139,7 @@ class GuiItemDetails(QWidget):
|
|
131
139
|
self.wCountData.setAlignment(QtAlignRight)
|
132
140
|
|
133
141
|
# Paragraph Count
|
134
|
-
self.pCountName = QLabel(
|
142
|
+
self.pCountName = QLabel(trStats3, self)
|
135
143
|
self.pCountName.setFont(fntLabel)
|
136
144
|
self.pCountName.setAlignment(QtAlignRight)
|
137
145
|
|
@@ -216,19 +224,9 @@ class GuiItemDetails(QWidget):
|
|
216
224
|
self.updateViewBox(self._handle)
|
217
225
|
return
|
218
226
|
|
219
|
-
|
220
|
-
# Public Slots
|
221
|
-
##
|
222
|
-
|
223
|
-
@pyqtSlot(str)
|
224
|
-
def updateViewBox(self, tHandle: str) -> None:
|
227
|
+
def updateViewBox(self, tHandle: str | None) -> None:
|
225
228
|
"""Populate the details box from a given handle."""
|
226
|
-
if tHandle
|
227
|
-
self.clearDetails()
|
228
|
-
return
|
229
|
-
|
230
|
-
nwItem = SHARED.project.tree[tHandle]
|
231
|
-
if nwItem is None:
|
229
|
+
if not (tHandle and (nwItem := SHARED.project.tree[tHandle])):
|
232
230
|
self.clearDetails()
|
233
231
|
return
|
234
232
|
|
@@ -265,10 +263,7 @@ class GuiItemDetails(QWidget):
|
|
265
263
|
# Layout
|
266
264
|
# ======
|
267
265
|
|
268
|
-
usageIcon
|
269
|
-
nwItem.itemType, nwItem.itemClass, nwItem.itemLayout, nwItem.mainHeading
|
270
|
-
)
|
271
|
-
self.usageIcon.setPixmap(usageIcon.pixmap(iPx, iPx))
|
266
|
+
self.usageIcon.setPixmap(nwItem.getMainIcon().pixmap(iPx, iPx))
|
272
267
|
self.usageData.setText(nwItem.describeMe())
|
273
268
|
|
274
269
|
# Counts
|
@@ -285,13 +280,16 @@ class GuiItemDetails(QWidget):
|
|
285
280
|
|
286
281
|
return
|
287
282
|
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
283
|
+
##
|
284
|
+
# Public Slots
|
285
|
+
##
|
286
|
+
|
287
|
+
@pyqtSlot(str, Enum)
|
288
|
+
def onProjectItemChanged(self, tHandle: str, change: nwChange) -> None:
|
289
|
+
"""Process project item change."""
|
293
290
|
if tHandle == self._handle:
|
294
|
-
|
295
|
-
|
296
|
-
|
291
|
+
if change == nwChange.UPDATE:
|
292
|
+
self.updateViewBox(tHandle)
|
293
|
+
elif change == nwChange.DELETE:
|
294
|
+
self.updateViewBox(None)
|
297
295
|
return
|