Source code for experimentor.views.data_view_widget

from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QVBoxLayout, QGridLayout

from experimentor.lib.log import get_logger
from experimentor.views.exceptions import ViewException


[docs]class DataViewWidget(QWidget): """ Base class that defines some common patterns for views which are meant to display data. Attributes ---------- default_Layout: By default, views will have a QHBoxLayout, it can be overriden when subclassing, or by changing the method get_layout data: This is the data being represented by the widget. This allows to define abstract methods for saving, regardless of what specific type of data it is. """ default_layout = 'horizontal' def __init__(self, parent=None): super(DataViewWidget, self).__init__(parent=parent) self.logger = get_logger() self._layout = None self.set_layout() self.data = None
[docs] def set_layout(self): if self._layout is None: self.logger.info(f'Setting layout to: {self.default_layout}') if self.default_layout == 'horizontal': self._layout = QHBoxLayout(self) elif self.default_layout == 'vertical': self._layout = QVBoxLayout(self) elif self.default_layout == 'grid': self._layout = QGridLayout(self) else: raise ViewException(f'Layout {self.layout} not implemented. Options are horizontal, vertical, grid') self.setLayout(self._layout) return self.get_layout()
[docs] def get_layout(self): """ Returns the layout specified as the class attribute default_layout. Override this method to provide more complex behavior. """ return self._layout