Ejemplo n.º 1
0
class InclusionWidget(_GeometryWidget):

    def __init__(self, parent=None):
        _GeometryWidget.__init__(self, parent=parent)
        self.setAccessibleName("Inclusion")

    def _initUI(self):
        # Widgets
        self._lbl_substrate = QLabel('Substrate')
        self._lbl_substrate.setStyleSheet('color: blue')
        self._lst_substrate = MaterialListWidget(_SubstrateBody.material)

        self._lbl_inclusion = QLabel('Inclusion')
        self._lbl_inclusion.setStyleSheet('color: blue')
        self._lst_inclusion = MaterialListWidget(_InclusionBody.material)

        self._lbl_diameter = QLabel('Inclusion diameter')
        self._lbl_diameter.setStyleSheet('color: blue')
        self._txt_diameter = DiameterWidget(_InclusionBody.diameter_m)

        # Layouts
        layout = _GeometryWidget._initUI(self)
        layout.insertRow(0, self._lbl_substrate)
        layout.insertRow(1, self._lst_substrate)
        layout.insertRow(2, self._lbl_inclusion)
        layout.insertRow(3, self._lst_inclusion)
        layout.insertRow(4, self._lbl_diameter, self._txt_diameter)

        return layout

    def value(self):
        return Inclusion(substrate_material=self._lst_substrate.values(),
                         inclusion_material=self._lst_inclusion.values(),
                         inclusion_diameter_m=self._txt_diameter.values(),
                         tilt_rad=self._txt_tilt.values(),
                         rotation_rad=self._txt_rotation.values())

    def setValue(self, geometry):
        _GeometryWidget.setValue(self, geometry)
        if hasattr(geometry, 'substrate') and \
                hasattr(geometry.substrate, 'material'):
            self._lst_substrate.setValues(geometry.substrate.material)
        if hasattr(geometry, 'inclusion') and \
                hasattr(geometry.inclusion, 'material'):
            self._lst_inclusion.setValues(geometry.inclusion.material)
        if hasattr(geometry, 'inclusion') and \
                hasattr(geometry.inclusion, 'diameter_m'):
            self._txt_diameter.setValues(geometry.inclusion.diameter_m)

    def setReadOnly(self, state):
        _GeometryWidget.setReadOnly(self, state)
        style = 'color: none' if state else 'color: blue'
        self._lbl_substrate.setStyleSheet(style)
        self._lbl_inclusion.setStyleSheet(style)
        self._lbl_diameter.setStyleSheet(style)

    def setMaterialClass(self, clasz):
        self._lst_substrate.setMaterialClass(clasz)
        self._lst_inclusion.setMaterialClass(clasz)
Ejemplo n.º 2
0
class SphereWidget(_GeometryWidget):

    def __init__(self, parent=None):
        _GeometryWidget.__init__(self, parent=parent)
        self.setAccessibleName("Sphere")

    def _initUI(self):
        # Widgets
        self._lbl_material = QLabel('Material')
        self._lbl_material.setStyleSheet('color: blue')
        self._lst_material = MaterialListWidget(_SphereBody.material)

        self._lbl_diameter = QLabel('Diameter')
        self._lbl_diameter.setStyleSheet('color: blue')
        self._txt_diameter = DiameterWidget(_SphereBody.diameter_m)

        # Layouts
        layout = _GeometryWidget._initUI(self)
        layout.insertRow(0, self._lbl_material)
        layout.insertRow(1, self._lst_material)
        layout.insertRow(2, self._lbl_diameter, self._txt_diameter)

        return layout

    def value(self):
        return Sphere(material=self._lst_material.values(),
                      diameter_m=self._txt_diameter.values(),
                      tilt_rad=self._txt_tilt.values(),
                      rotation_rad=self._txt_rotation.values())

    def setValue(self, geometry):
        _GeometryWidget.setValue(self, geometry)
        if hasattr(geometry, 'body') and hasattr(geometry.body, 'material'):
            self._lst_material.setValues(geometry.body.material)
        if hasattr(geometry, 'body') and hasattr(geometry.body, 'diameter_m'):
            self._txt_diameter.setValues(geometry.body.diameter_m)

    def setReadOnly(self, state):
        _GeometryWidget.setReadOnly(self, state)
        style = 'color: none' if state else 'color: blue'
        self._lbl_material.setStyleSheet(style)
        self._lbl_diameter.setStyleSheet(style)

    def setMaterialClass(self, clasz):
        self._lst_material.setMaterialClass(clasz)
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    def _initUI(self):
        # Widgets
        self._lbl_material = QLabel('Material')
        self._lbl_material.setStyleSheet('color: blue')
        self._lst_material = MaterialListWidget(_SubstrateBody.material)

        # Layouts
        layout = _GeometryWidget._initUI(self)
        layout.insertRow(0, self._lbl_material)
        layout.insertRow(1, self._lst_material)

        return layout
Ejemplo n.º 5
0
class HorizontalLayersWidget(_GeometryWidget):

    def __init__(self, parent=None):
        _GeometryWidget.__init__(self, parent=parent)
        self.setAccessibleName("Horizontal layers")

    def _initUI(self):
        # Widgets
        self._lbl_layer = QLabel('Layer')
        self._lbl_layer.setStyleSheet('color: blue')
        self._lst_layer = LayerListWidget(HorizontalLayers.layers)

        self._lbl_substrate = QLabel("Substrate (optional)")
        self._lbl_substrate.setStyleSheet('color: blue')
        self._lst_substrate = MaterialListWidget(_HorizontalSubstrateBody.material)
        self._lst_substrate.setRequired(False)

        # Layouts
        layout = _GeometryWidget._initUI(self)
        layout.insertRow(0, self._lbl_layer)
        layout.insertRow(1, self._lst_layer)
        layout.insertRow(2, self._lbl_substrate)
        layout.insertRow(3, self._lst_substrate)

        return layout

    def value(self):
        geometry = \
            HorizontalLayers(substrate_material=self._lst_substrate.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, 'substrate') and \
                hasattr(geometry.substrate, 'material'):
            self._lst_substrate.setValues(geometry.substrate.material)
        if hasattr(geometry, 'layers'):
            self._lst_layer.setValues(geometry.layers)

    def setReadOnly(self, state):
        _GeometryWidget.setReadOnly(self, state)
        style = 'color: none' if state else 'color: blue'
        self._lbl_layer.setStyleSheet(style)
        self._lbl_substrate.setStyleSheet(style)

    def setMaterialClass(self, clasz):
        self._lst_layer.setMaterialClass(clasz)
        self._lst_substrate.setMaterialClass(clasz)
Ejemplo n.º 6
0
    def _initUI(self):
        # Widgets
        self._lbl_substrate = QLabel('Substrate')
        self._lbl_substrate.setStyleSheet('color: blue')
        self._lst_substrate = MaterialListWidget(_SubstrateBody.material)

        self._lbl_inclusion = QLabel('Inclusion')
        self._lbl_inclusion.setStyleSheet('color: blue')
        self._lst_inclusion = MaterialListWidget(_InclusionBody.material)

        self._lbl_diameter = QLabel('Inclusion diameter')
        self._lbl_diameter.setStyleSheet('color: blue')
        self._txt_diameter = DiameterWidget(_InclusionBody.diameter_m)

        # Layouts
        layout = _GeometryWidget._initUI(self)
        layout.insertRow(0, self._lbl_substrate)
        layout.insertRow(1, self._lst_substrate)
        layout.insertRow(2, self._lbl_inclusion)
        layout.insertRow(3, self._lst_inclusion)
        layout.insertRow(4, self._lbl_diameter, self._txt_diameter)

        return layout
Ejemplo n.º 7
0
    def _initUI(self):
        # Widgets
        self._lbl_material = QLabel('Material')
        self._lbl_material.setStyleSheet('color: blue')
        self._lst_material = MaterialListWidget(_SphereBody.material)

        self._lbl_diameter = QLabel('Diameter')
        self._lbl_diameter.setStyleSheet('color: blue')
        self._txt_diameter = DiameterWidget(_SphereBody.diameter_m)

        # Layouts
        layout = _GeometryWidget._initUI(self)
        layout.insertRow(0, self._lbl_material)
        layout.insertRow(1, self._lst_material)
        layout.insertRow(2, self._lbl_diameter, self._txt_diameter)

        return layout
Ejemplo n.º 8
0
    def _initUI(self):
        # Widgets
        self._lbl_layer = QLabel('Layer')
        self._lbl_layer.setStyleSheet('color: blue')
        self._lst_layer = LayerListWidget(HorizontalLayers.layers)

        self._lbl_substrate = QLabel("Substrate (optional)")
        self._lbl_substrate.setStyleSheet('color: blue')
        self._lst_substrate = MaterialListWidget(_HorizontalSubstrateBody.material)
        self._lst_substrate.setRequired(False)

        # Layouts
        layout = _GeometryWidget._initUI(self)
        layout.insertRow(0, self._lbl_layer)
        layout.insertRow(1, self._lst_layer)
        layout.insertRow(2, self._lbl_substrate)
        layout.insertRow(3, self._lst_substrate)

        return layout
Ejemplo n.º 9
0
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)