pamhyr: Catch some table data type exception (crash Fix).

This commit is contained in:
Pierre-Antoine Rouby committed 2023-08-04 10:40:32 +02:00
1 parent e8ae1c0631
commit 464209b6e5
21 files changed
+303 -190

No files matched your search

+9 -4
View File
@@ -17,6 +17,7 @@
# -*- coding: utf-8 -*-
import logging
import traceback
from datetime import date, time, datetime, timedelta
from tools import trace, timer
@@ -210,11 +211,15 @@ class TableModel(QAbstractTableModel):
row = index.row()
column = index.column()
self._undo.push(
SetDataCommand(
self._data, row, column, value
try:
self._undo.push(
SetDataCommand(
self._data, row, column, value
)
)
)
except Exception as e:
logger.info(e)
logger.debug(traceback.format_exc())
self.dataChanged.emit(index, index)
return True
@@ -33,7 +33,8 @@ class SetDataCommand(QUndoCommand):
self._index = index
self._column = column
self._old = self._data.get_i(self._index)[self._column]
self._new = new_value
_type = self._data.get_type_column(self._column)
self._new = _type(new_value)
def undo(self):
self._data._set_i_c_v(self._index, self._column, self._old)
+35 -26
View File
@@ -16,6 +16,9 @@
# -*- coding: utf-8 -*-
import logging
import traceback
from tools import trace, timer
from PyQt5.QtCore import (
@@ -43,6 +46,8 @@ from Model.LateralContribution.LateralContributionTypes import (
)
from View.LateralContribution.translate import *
logger = logging.getLogger()
_translate = QCoreApplication.translate
class ComboBoxDelegate(QItemDelegate):
@@ -156,37 +161,41 @@ class TableModel(QAbstractTableModel):
row = index.row()
column = index.column()
if self._headers[column] == "name":
self._undo.push(
SetNameCommand(
self._lcs, self._tab, row, value
try:
if self._headers[column] == "name":
self._undo.push(
SetNameCommand(
self._lcs, self._tab, row, value
)
)
)
elif self._headers[column] == "type":
key = next(k for k, v in long_types.items() if v == value)
self._undo.push(
SetTypeCommand(
self._lcs, self._tab, row, LC_types[key]
elif self._headers[column] == "type":
key = next(k for k, v in long_types.items() if v == value)
self._undo.push(
SetTypeCommand(
self._lcs, self._tab, row, LC_types[key]
)
)
)
elif self._headers[column] == "edge":
self._undo.push(
SetEdgeCommand(
self._lcs, self._tab, row, self._data.edge(value)
elif self._headers[column] == "edge":
self._undo.push(
SetEdgeCommand(
self._lcs, self._tab, row, self._data.edge(value)
)
)
)
elif self._headers[column] == "begin_kp":
self._undo.push(
SetBeginCommand(
self._lcs, self._tab, row, value
elif self._headers[column] == "begin_kp":
self._undo.push(
SetBeginCommand(
self._lcs, self._tab, row, value
)
)
)
elif self._headers[column] == "end_kp":
self._undo.push(
SetEndCommand(
self._lcs, self._tab, row, value
elif self._headers[column] == "end_kp":
self._undo.push(
SetEndCommand(
self._lcs, self._tab, row, value
)
)
)
except Exception as e:
logger.info(e)
logger.debug(traceback.format_exc())
self.dataChanged.emit(index, index)
return True
+3 -3
View File
@@ -34,7 +34,7 @@ class SetNameCommand(QUndoCommand):
self._tab = tab
self._index = index
self._old = self._lcs.get(self._tab, self._index).name
self._new = new_value
self._new = str(new_value)
def undo(self):
self._lcs.get(self._tab, self._index).name = self._old
@@ -50,7 +50,7 @@ class SetBeginCommand(QUndoCommand):
self._tab = tab
self._index = index
self._old = self._lcs.get(self._tab, self._index).begin_kp
self._new = new_value
self._new = float(new_value)
def undo(self):
self._lcs.get(self._tab, self._index).begin_kp = float(self._old)
@@ -66,7 +66,7 @@ class SetEndCommand(QUndoCommand):
self._tab = tab
self._index = index
self._old = self._lcs.get(self._tab, self._index).end_kp
self._new = new_value
self._new = float(new_value)
def undo(self):
self._lcs.get(self._tab, self._index).end_kp = float(self._old)