[table] simple version running
This commit is contained in:
parent
ec1fca7d90
commit
3804e89bab
@ -12,5 +12,7 @@ class Communicate(QObject):
|
|||||||
|
|
||||||
plot_error = pyqtSignal(str)
|
plot_error = pyqtSignal(str)
|
||||||
|
|
||||||
|
table_error = pyqtSignal(str)
|
||||||
|
|
||||||
|
|
||||||
communicator = Communicate()
|
communicator = Communicate()
|
||||||
|
49
nixview/data_models/table_model.py
Normal file
49
nixview/data_models/table_model.py
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
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))
|
||||||
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
|||||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QTableWidget
|
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QTableView
|
||||||
from PyQt5.QtCore import pyqtSignal, Qt
|
from PyQt5.QtCore import pyqtSignal, Qt
|
||||||
|
|
||||||
from nixview.util.file_handler import FileHandler
|
from nixview.util.file_handler import FileHandler
|
||||||
|
from nixview.util.dataview import DataView
|
||||||
|
from nixview.communicator import communicator
|
||||||
|
from nixview.data_models.table_model import TableModel
|
||||||
|
|
||||||
class TableScreen(QWidget):
|
class TableScreen(QWidget):
|
||||||
close_signal = pyqtSignal()
|
close_signal = pyqtSignal()
|
||||||
@ -11,7 +13,9 @@ class TableScreen(QWidget):
|
|||||||
super().__init__(parent=parent)
|
super().__init__(parent=parent)
|
||||||
self._file_handler = FileHandler()
|
self._file_handler = FileHandler()
|
||||||
|
|
||||||
self.table = QTableWidget()
|
self.table = QTableView()
|
||||||
|
self.table.setSortingEnabled(False)
|
||||||
|
self.table.setShowGrid(True)
|
||||||
|
|
||||||
close_btn = QPushButton("close")
|
close_btn = QPushButton("close")
|
||||||
close_btn.clicked.connect(self.on_close)
|
close_btn.clicked.connect(self.on_close)
|
||||||
@ -21,12 +25,16 @@ class TableScreen(QWidget):
|
|||||||
self.layout().addWidget(close_btn)
|
self.layout().addWidget(close_btn)
|
||||||
self._data_view = None
|
self._data_view = None
|
||||||
|
|
||||||
self._software_slide = False
|
|
||||||
self.plotter = None
|
|
||||||
|
|
||||||
def on_close(self):
|
def on_close(self):
|
||||||
self.close_signal.emit()
|
self.close_signal.emit()
|
||||||
|
|
||||||
def show(self, item_descriptor):
|
def show(self, item):
|
||||||
print("Table show")
|
try:
|
||||||
pass
|
self._data_view = DataView(item, self._file_handler)
|
||||||
|
except ValueError as e:
|
||||||
|
communicator.table_error.emit("error in tablescreen.show %s" % e)
|
||||||
|
return
|
||||||
|
if self._data_view is None:
|
||||||
|
return
|
||||||
|
data_model = TableModel(self._file_handler, self._data_view)
|
||||||
|
self.table.setModel(data_model)
|
||||||
|
Loading…
Reference in New Issue
Block a user