From 04c68475902fd0036679a09ed60cacc2a76564c7 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 22 Mar 2025 22:52:36 +0100 Subject: [PATCH] Add some error checking and handling --- novelwriter/core/novelmodel.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/novelwriter/core/novelmodel.py b/novelwriter/core/novelmodel.py index a5f425d8..d4dafa35 100644 --- a/novelwriter/core/novelmodel.py +++ b/novelwriter/core/novelmodel.py @@ -77,11 +77,11 @@ class NovelModel(QAbstractTableModel): ## def rowCount(self, index: QModelIndex) -> int: - """Return the number of rows for an entry.""" + """Return the number of rows.""" return len(self._rows) def columnCount(self, index: QModelIndex) -> int: - """Return the number of columns for an entry.""" + """Return the number of columns.""" return self._columns def data(self, index: QModelIndex, role: Qt.ItemDataRole) -> T_NodeData: @@ -89,7 +89,7 @@ class NovelModel(QAbstractTableModel): try: return self._rows[index.row()].get(C_FACTOR*index.column() | role) except Exception: - print("NovelModel Debug: Oops!") + logger.error("Novel model index is inconsistent") return None def handle(self, index: QModelIndex) -> str | None: @@ -97,7 +97,7 @@ class NovelModel(QAbstractTableModel): try: return self._rows[index.row()].get(R_HANDLE) # type: ignore except Exception: - print("NovelModel Debug: Oops!") + logger.error("Novel model index is inconsistent") return None def key(self, index: QModelIndex) -> str | None: @@ -105,7 +105,7 @@ class NovelModel(QAbstractTableModel): try: return self._rows[index.row()].get(R_KEY) # type: ignore except Exception: - print("NovelModel Debug: Oops!") + logger.error("Novel model index is inconsistent") return None ## @@ -134,12 +134,17 @@ class NovelModel(QAbstractTableModel): current.append(i) if current == []: + logger.warning("No novel model entries for '%s'", handle) return False cols = self._columns - 1 - first = current[0] last = current[-1] + + if len(current) != last - first + 1: + logger.warning("Novel model entries for '%s' are not continuous", handle) + return False + remains = [] try: for key, head in node.items(): @@ -165,6 +170,7 @@ class NovelModel(QAbstractTableModel): except Exception: # This is faster than to check for index boundaries. # We definitely don't want to cause a crash. + logger.error("Novel model refresh error for '%s'", handle) logException() return False