nixview-python/nixview/data_models/table_model.py

50 lines
1.7 KiB
Python

from PyQt5.QtCore import QAbstractTableModel, QModelIndex, Qt, QSize, QVariant
import numpy as np
class TableModel (QAbstractTableModel):
def __init__(self, file_handler, data_view, page=0, parent=None) -> None:
super(TableModel, self).__init__(parent)
self._file_handler = file_handler
self._data_view = data_view
self._page = page
self._cols = self._data_view.full_shape[1] if len(self._data_view.full_shape) > 1 else 1
self._rows = self._data_view.full_shape[0]
self.insertColumns(0, self._cols)
self.insertRows(0, self._rows)
self._slice = [0 for i in range(len(self._data_view.full_shape))]
if len(self._data_view.full_shape) > 2:
self._slice[-1] = self._page
"""
if (array.getDimension(1).dimensionType() == nix::DimensionType::Set) {
v_labels = array.getDimension(1).asSetDimension().labels();
}
if (shape.size() > 1) {
if (array.getDimension(2).dimensionType() == nix::DimensionType::Set) {
h_labels = array.getDimension(2).asSetDimension().labels();
}
}
"""
def rowCount(self, parent):
return self._rows
def columnCount(self, parent):
return self._cols
def data(self, index, role):
if not index.isValid() or role != Qt.DisplayRole:
return None
d = ""
if (index.row() < self._rows) and (index.column() < self._cols):
self._slice[0] = index.row()
if len(self._slice) == 2:
self._slice[1] = index.column()
d = self._data_view._buffer[tuple(self._slice)]
return str(np.round(d, 5))