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)
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)
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)
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)
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)
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)
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)
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))