Exemplo n.º 1
0
    def __init__(self, parent, peb, resist):
        """
        :type parent: QtGui.QWidget
        :type peb: options.PostExposureBake
        :type resist: options.structures.Resist
        """
        super(TemperatureProfileBox,
              self).__init__("Post Exposure Bake (PEB) Temperature Profile",
                             parent)

        self.__resist = None
        self.__peb = None

        self.__hlayout_resist = QtGui.QHBoxLayout()
        self.__resist_icon = QtGui.QLabel()
        self.__resist_icon.setFixedSize(24, 24)
        self.__resist_icon.setPixmap(
            QtGui.QPixmap(Resources(orm.Resist.icon, "path")))
        self.__resist_name = QLabel(self)
        self.__hlayout_resist.addWidget(self.__resist_icon)
        self.__hlayout_resist.addWidget(self.__resist_name)
        self.__hlayout_resist.addStretch()

        self.__diffusion_length = QtGui.QLabel(self)
        self.__profile_graph = TemperatureProfileGraph(self)

        self.__layout = QtGui.QVBoxLayout(self)

        self.__layout.addLayout(self.__hlayout_resist)
        self.__layout.addWidget(self.__diffusion_length)
        self.__layout.addWidget(self.__profile_graph)
        self.__layout.addStretch()

        self.setPeb(peb)
        self.setResist(resist)
Exemplo n.º 2
0
    class Exposure(AbstractResistInfoBox):
        def __init__(self, parent):
            AbstractResistInfoBox.__init__(self, "Exposure", parent)

            self.__lnar = QLabel(self, frmt="%s <i>nm2/s</i>")
            self.__ea = QLabel(self, frmt="%s <i>kcal/mole</i>")

            self.__dill_a = QLabel(self, frmt="%s <i>1/um</i>")
            self.__dill_b = QLabel(self, frmt="%s <i>1/um</i>")
            self.__dill_c = QLabel(self, frmt="%s <i>cm2/mJ</i>")

            self.__exposure_layout = QtGui.QFormLayout(self)

            self.__exposure_layout.addRow("Ln(Ar):", self.__lnar)
            self.__exposure_layout.addRow("Ea:", self.__ea)

            self.__exposure_layout.addRow("Dill A:", self.__dill_a)
            self.__exposure_layout.addRow("Dill B:", self.__dill_b)
            self.__exposure_layout.addRow("Dill C:", self.__dill_c)

        # noinspection PyPep8Naming
        def setObject(self, resist):
            """:type resist: options.structures.Resist"""
            # TODO: Add minimum and maximum
            self.__lnar.setObject(resist.peb, orm.PebParameters.ln_ar)
            self.__ea.setObject(resist.peb, orm.PebParameters.ea)

            self.__dill_a.setObject(resist.exposure, orm.ExposureParameters.a)
            self.__dill_b.setObject(resist.exposure, orm.ExposureParameters.b)
            self.__dill_c.setObject(resist.exposure, orm.ExposureParameters.c)
Exemplo n.º 3
0
    class Development(AbstractResistInfoBox):
        def __init__(self, parent):
            AbstractResistInfoBox.__init__(self, "Development", parent)

            self.__label_model_name = QLabel(self)
            self.__dev_layout = QtGui.QFormLayout(self)
            self.__dev_layout.addRow("Model:", self.__label_model_name)

        # noinspection PyPep8Naming
        def setObject(self, resist):
            """:type resist: options.structures.Resist"""
            # name = resist.developer.name if resist.developer is not None else str()
            # self.__label_model_name.setText(name)
            p_object = resist if isinstance(resist, orm.Resist) else resist.db
            self.__label_model_name.setObject(p_object, orm.Resist.developer)
Exemplo n.º 4
0
        def __init__(self, parent):
            AbstractResistInfoBox.__init__(self, "Exposure", parent)

            self.__lnar = QLabel(self, frmt="%s <i>nm2/s</i>")
            self.__ea = QLabel(self, frmt="%s <i>kcal/mole</i>")

            self.__dill_a = QLabel(self, frmt="%s <i>1/um</i>")
            self.__dill_b = QLabel(self, frmt="%s <i>1/um</i>")
            self.__dill_c = QLabel(self, frmt="%s <i>cm2/mJ</i>")

            self.__exposure_layout = QtGui.QFormLayout(self)

            self.__exposure_layout.addRow("Ln(Ar):", self.__lnar)
            self.__exposure_layout.addRow("Ea:", self.__ea)

            self.__exposure_layout.addRow("Dill A:", self.__dill_a)
            self.__exposure_layout.addRow("Dill B:", self.__dill_b)
            self.__exposure_layout.addRow("Dill C:", self.__dill_c)
Exemplo n.º 5
0
    class General(AbstractResistInfoBox):
        def __init__(self, parent):
            AbstractResistInfoBox.__init__(self, "General", parent)

            self.__general_layout = QtGui.QFormLayout(self)

            self.__name = QLabel(self)
            self.__wavelength = QLabel(self, frmt="%s <i>nm</i>")
            self.__refractive = QLabel(self)

            self.__general_layout.addRow("Name:", self.__name)
            self.__general_layout.addRow("Wavelength:", self.__wavelength)
            self.__general_layout.addRow("Refractive index:",
                                         self.__refractive)

        # noinspection PyPep8Naming
        def setObject(self, resist):
            """:type resist: options.structures.Resist"""
            # logging.debug("Set resist: %s" % resist)
            p_object = resist if isinstance(resist, orm.Resist) else resist.db
            self.__name.setObject(p_object, orm.Resist.name)
            self.__wavelength.setObject(resist.exposure,
                                        orm.ExposureParameters.wavelength)
            self.__refractive.setObject(resist.exposure,
                                        orm.ExposureParameters.n)
Exemplo n.º 6
0
        def __init__(self, parent):
            AbstractResistInfoBox.__init__(self, "General", parent)

            self.__general_layout = QtGui.QFormLayout(self)

            self.__name = QLabel(self)
            self.__wavelength = QLabel(self, frmt="%s <i>nm</i>")
            self.__refractive = QLabel(self)

            self.__general_layout.addRow("Name:", self.__name)
            self.__general_layout.addRow("Wavelength:", self.__wavelength)
            self.__general_layout.addRow("Refractive index:",
                                         self.__refractive)
Exemplo n.º 7
0
        def __init__(self, parent):
            AbstractResistInfoBox.__init__(self, "Development", parent)

            self.__label_model_name = QLabel(self)
            self.__dev_layout = QtGui.QFormLayout(self)
            self.__dev_layout.addRow("Model:", self.__label_model_name)
Exemplo n.º 8
0
class TemperatureProfileBox(QtGui.QGroupBox):
    def __init__(self, parent, peb, resist):
        """
        :type parent: QtGui.QWidget
        :type peb: options.PostExposureBake
        :type resist: options.structures.Resist
        """
        super(TemperatureProfileBox,
              self).__init__("Post Exposure Bake (PEB) Temperature Profile",
                             parent)

        self.__resist = None
        self.__peb = None

        self.__hlayout_resist = QtGui.QHBoxLayout()
        self.__resist_icon = QtGui.QLabel()
        self.__resist_icon.setFixedSize(24, 24)
        self.__resist_icon.setPixmap(
            QtGui.QPixmap(Resources(orm.Resist.icon, "path")))
        self.__resist_name = QLabel(self)
        self.__hlayout_resist.addWidget(self.__resist_icon)
        self.__hlayout_resist.addWidget(self.__resist_name)
        self.__hlayout_resist.addStretch()

        self.__diffusion_length = QtGui.QLabel(self)
        self.__profile_graph = TemperatureProfileGraph(self)

        self.__layout = QtGui.QVBoxLayout(self)

        self.__layout.addLayout(self.__hlayout_resist)
        self.__layout.addWidget(self.__diffusion_length)
        self.__layout.addWidget(self.__profile_graph)
        self.__layout.addStretch()

        self.setPeb(peb)
        self.setResist(resist)

    # noinspection PyPep8Naming
    def setResist(self, resist):
        """:type resist: options.structures.Resist"""
        if self.__resist is not None:
            disconnect(self.__resist.peb.signals[orm.PebParameters.ln_ar],
                       self.__onValueChanged)
            disconnect(self.__resist.peb.signals[orm.PebParameters.ea],
                       self.__onValueChanged)

        self.__resist = resist
        self.__resist_name.setObject(self.__resist.db, orm.Resist.name)

        connect(self.__resist.peb.signals[orm.PebParameters.ln_ar],
                self.__onValueChanged)
        connect(self.__resist.peb.signals[orm.PebParameters.ea],
                self.__onValueChanged)

        self.__onValueChanged()

    # noinspection PyPep8Naming
    def setPeb(self, peb):
        if self.__peb is not None:
            disconnect(self.__peb.time.signals[Abstract],
                       self.__onValueChanged)
            disconnect(self.__peb.temp.signals[Abstract],
                       self.__onValueChanged)

        self.__peb = peb
        self.__profile_graph.setObject(peb)

        connect(self.__peb.time.signals[Abstract], self.__onValueChanged)
        connect(self.__peb.temp.signals[Abstract], self.__onValueChanged)

        self.__onValueChanged()

    # noinspection PyPep8Naming
    @Slot()
    def __onValueChanged(self):
        if self.__resist is not None:
            self.__diffusion_length.setText(
                "PAC Diffusion Length (nm): %.1f" %
                self.__resist.peb.diffusion_length(self.__peb.temp.value,
                                                   self.__peb.time.value))