def _initUI(self): # Widgets self._lbl_left = QLabel('Left substrate') self._lbl_left.setStyleSheet('color: blue') self._lst_left = MaterialListWidget(_VerticalLeftSubstrateBody.material) self._lbl_layer = QLabel('Layer') self._lbl_layer.setStyleSheet('color: blue') self._lst_layer = LayerListWidget(VerticalLayers.layers) self._lst_layer.setRequired(False) self._lbl_right = QLabel('Right substrate') self._lbl_right.setStyleSheet('color: blue') self._lst_right = MaterialListWidget(_VerticalRightSubstrateBody.material) self._lbl_depth = QLabel('Depth') self._lbl_depth.setStyleSheet('color: blue') self._txt_depth = UnitParameterWidget(VerticalLayers.depth_m) self._txt_depth.setValues(['inf']) # Layouts layout = _GeometryWidget._initUI(self) sublayout = QHBoxLayout() subsublayout = QVBoxLayout() subsublayout.addWidget(self._lbl_left) subsublayout.addWidget(self._lst_left) sublayout.addLayout(subsublayout) subsublayout = QVBoxLayout() subsublayout.addWidget(self._lbl_layer) subsublayout.addWidget(self._lst_layer) sublayout.addLayout(subsublayout) subsublayout = QVBoxLayout() subsublayout.addWidget(self._lbl_right) subsublayout.addWidget(self._lst_right) sublayout.addLayout(subsublayout) layout.insertRow(0, sublayout) layout.insertRow(1, self._lbl_depth, self._txt_depth) return layout
class VerticalLayersWidget(_GeometryWidget): def __init__(self, parent=None): _GeometryWidget.__init__(self, parent=parent) self.setAccessibleName("Vertical layers") def _initUI(self): # Widgets self._lbl_left = QLabel('Left substrate') self._lbl_left.setStyleSheet('color: blue') self._lst_left = MaterialListWidget(_VerticalLeftSubstrateBody.material) self._lbl_layer = QLabel('Layer') self._lbl_layer.setStyleSheet('color: blue') self._lst_layer = LayerListWidget(VerticalLayers.layers) self._lst_layer.setRequired(False) self._lbl_right = QLabel('Right substrate') self._lbl_right.setStyleSheet('color: blue') self._lst_right = MaterialListWidget(_VerticalRightSubstrateBody.material) self._lbl_depth = QLabel('Depth') self._lbl_depth.setStyleSheet('color: blue') self._txt_depth = UnitParameterWidget(VerticalLayers.depth_m) self._txt_depth.setValues(['inf']) # Layouts layout = _GeometryWidget._initUI(self) sublayout = QHBoxLayout() subsublayout = QVBoxLayout() subsublayout.addWidget(self._lbl_left) subsublayout.addWidget(self._lst_left) sublayout.addLayout(subsublayout) subsublayout = QVBoxLayout() subsublayout.addWidget(self._lbl_layer) subsublayout.addWidget(self._lst_layer) sublayout.addLayout(subsublayout) subsublayout = QVBoxLayout() subsublayout.addWidget(self._lbl_right) subsublayout.addWidget(self._lst_right) sublayout.addLayout(subsublayout) layout.insertRow(0, sublayout) layout.insertRow(1, self._lbl_depth, self._txt_depth) return layout def value(self): geometry = VerticalLayers(left_material=self._lst_left.values(), right_material=self._lst_right.values(), depth_m=self._txt_depth.values(), tilt_rad=self._txt_tilt.values(), rotation_rad=self._txt_rotation.values()) for layer in self._lst_layer.values(): geometry.add_layer(layer.material, layer.thickness_m) return geometry def setValue(self, geometry): _GeometryWidget.setValue(self, geometry) if hasattr(geometry, 'left_substrate') and \ hasattr(geometry.left_substrate, 'material'): self._lst_left.setValues(geometry.left_substrate.material) if hasattr(geometry, 'layers'): self._lst_layer.setValues(geometry.layers) if hasattr(geometry, 'right_substrate') and \ hasattr(geometry.right_substrate, 'material'): self._lst_right.setValues(geometry.right_substrate.material) if hasattr(geometry, 'depth_m'): self._txt_depth.setValues(geometry.depth_m) def setReadOnly(self, state): _GeometryWidget.setReadOnly(self, state) style = 'color: none' if state else 'color: blue' self._lbl_left.setStyleSheet(style) self._lbl_layer.setStyleSheet(style) self._lbl_right.setStyleSheet(style) self._lbl_depth.setStyleSheet(style) def setMaterialClass(self, clasz): self._lst_left.setMaterialClass(clasz) self._lst_layer.setMaterialClass(clasz) self._lst_right.setMaterialClass(clasz)