Browse Source

fix: #326 crash adding row in the TTkTableModelList (#327)

pull/331/head
Pier CeccoPierangioliEugenio 12 months ago committed by GitHub
parent
commit
b0feaa139e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 9
      TermTk/TTkAbstract/abstracttablemodel.py
  2. 1
      TermTk/TTkWidgets/TTkModelView/tablemodellist.py
  3. 4
      TermTk/TTkWidgets/TTkModelView/tablewidget.py
  4. 3
      tests/t.input/test.input.mouse.tracking.py

9
TermTk/TTkAbstract/abstracttablemodel.py

@ -125,7 +125,7 @@ class TTkAbstractTableModel():
__slots__ = (
# Signals
'dataChanged'
'dataChanged', 'modelChanged'
)
dataChanged:pyTTkSignal
@ -142,8 +142,15 @@ class TTkAbstractTableModel():
:param size: the size of the modified area
:type size: tuple(int,int)
'''
modelChanged:pyTTkSignal
'''
This signal is emitted whenever the model changes.
When the model topology changes, this signal must be emitted explicitly.
'''
def __init__(self):
self.dataChanged = pyTTkSignal(tuple[int,int],tuple[int,int])
self.modelChanged = pyTTkSignal()
def rowCount(self) -> int:
'''

1
TermTk/TTkWidgets/TTkModelView/tablemodellist.py

@ -79,6 +79,7 @@ class TTkTableModelList(TTkAbstractTableModel):
def setModelList(self, modelList:list[list]) -> None:
if modelList == self._data: return
self._data = modelList
self.modelChanged.emit()
def rowCount(self) -> int:
return len(self._data)

4
TermTk/TTkWidgets/TTkModelView/tablewidget.py

@ -325,6 +325,7 @@ class TTkTableWidget(TTkAbstractScrollView):
self._sortOrder = TTkK.AscendingOrder
self._tableModel = tableModel if tableModel else TTkTableModelList(data=[['']*10 for _ in range(10)])
self._tableModel.dataChanged.connect(self.update)
self._tableModel.modelChanged.connect(self._refreshLayout)
super().__init__(**kwargs)
self._refreshLayout()
self.setMinimumHeight(1)
@ -534,6 +535,7 @@ class TTkTableWidget(TTkAbstractScrollView):
self.setPadding(hhs,0,vhs,0)
self.viewChanged.emit()
@pyTTkSlot()
def _refreshLayout(self):
self._selected = None
self._selectedBase = None
@ -562,6 +564,7 @@ class TTkTableWidget(TTkAbstractScrollView):
# self._selectedBase = sb = [False]*cols
# self._selected = [sb]*rows
self.clearSelection()
self.viewChanged.emit()
# Overridden function
def viewFullAreaSize(self) -> tuple[int, int]:
@ -810,7 +813,6 @@ class TTkTableWidget(TTkAbstractScrollView):
self._tableModel = model
self._tableModel.dataChanged.connect(self.update)
self._refreshLayout()
self.viewChanged.emit()
def focusOutEvent(self) -> None:
self._hSeparatorSelected = None

3
tests/t.input/test.input.mouse.tracking.py

@ -20,7 +20,8 @@ def read_mouse_events():
while True:
event += sys.stdin.read(1)
if event[-1]=='\033':
print(f"Mouse event: {event[:-1].replace('\033','<ESC>')}")
mouse_event = event[:-1].replace('\033','<ESC>')
print(f"Mouse event: {mouse_event}")
event = '\033'
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)

Loading…
Cancel
Save