Source code for madgui.widget.correct.recordstable

import numpy as np
from PyQt5.QtWidgets import QWidget, QAbstractItemView

from madgui.util.qt import load_ui
from madgui.widget.tableview import TableItem


[docs]class RecordsTable(QWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) load_ui(self, __package__, 'recordstable.ui') self.recordsTable.setSelectionBehavior(QAbstractItemView.SelectRows) self.recordsTable.setSelectionMode(QAbstractItemView.ExtendedSelection)
[docs] def set_corrector(self, corrector): self.corrector = corrector self.recordsTable.set_viewmodel( self.get_record_row, corrector.records, unit=True) self.recordsTable.connectRemoveButton(self.removeRecordsButton) self.recordsTable.connectClearButton(self.clearRecordsButton)
[docs] def get_record_row(self, i, r) -> ("Optic", "Monitor", "X", "Y"): return [ TableItem(self.get_optic_name(r)), TableItem(r.monitor), TableItem(r.readout.posx, name='posx'), TableItem(r.readout.posy, name='posx'), ]
[docs] def get_optic_name(self, record): for i, optic in enumerate(self.corrector.optics): if all(np.isclose(record.optics[k.lower()], v) for k, v in optic.items()): return "Optic {}".format(i+1) return "custom optic"