[ui] CsvData: use signal/slot connection

This commit is contained in:
Fabien Castan 2020-08-06 19:24:51 +02:00
parent b43d59f347
commit b9cdd35241

View file

@ -14,6 +14,7 @@ class CsvData(QObject):
self._filepath = "" self._filepath = ""
self._data = QObjectListModel(parent=self) # List of CsvColumn self._data = QObjectListModel(parent=self) # List of CsvColumn
self._ready = False self._ready = False
self.filepathChanged.connect(self.updateData)
@Slot(int, result=QObject) @Slot(int, result=QObject)
def getColumn(self, index): def getColumn(self, index):
@ -25,8 +26,8 @@ class CsvData(QObject):
def setFilepath(self, filepath): def setFilepath(self, filepath):
if self._filepath == filepath: if self._filepath == filepath:
return return
self.setReady(False)
self._filepath = filepath self._filepath = filepath
self.updateData()
self.filepathChanged.emit() self.filepathChanged.emit()
def setReady(self, ready): def setReady(self, ready):
@ -37,9 +38,11 @@ class CsvData(QObject):
def updateData(self): def updateData(self):
self.setReady(False) self.setReady(False)
self._data.setObjectList(self.read()) self._data.clear()
if not self._data.isEmpty(): newColumns = self.read()
self.setReady(True) if newColumns:
self._data.setObjectList(newColumns)
self.setReady(True)
def read(self): def read(self):
"""Read the CSV file and return a list containing CsvColumn objects.""" """Read the CSV file and return a list containing CsvColumn objects."""