Exemplo n.º 1
0
    def __init__(self, symbol):

        self.symbol = symbol
        self.Z = Xrf.atomic_number(self.symbol)
        self.show = False

        k_lines = {
            'Ka': False,
            'Ka1': True,
            'Ka2': True,
            'Kb': False,
            'Kb1': True,
            'Kb2': True
        }
        l_lines = {
            'La1': False,
            'Lb1': False,
            'Lb2': False,
            'Lg1': False,
            'Lg2': False,
            'Lg3': False,
            'Lg4': False,
            'Ll': False
        }
        g_lines = {'G1': True, 'G2': True, 'G3': True}
        self.toggles = {
            'Ka': ['Ka1', 'Ka2'],
            'Kb': ['Kb1', 'Kb2'],
            'Ka1': ['Ka'],
            'Kb1': ['Kb'],
            'Ka2': ['Ka'],
            'Kb2': ['Kb']
        }

        # dict = {key: [e, selected]}
        self.k_selection = dict()
        for k in k_lines:
            e = Xrf.lookup_xrf_line(self.symbol + ' ' + k)
            #if (e != 0.):
            self.k_selection.update({k: [e, k_lines[k]]})
        self.l_selection = dict()
        for l in l_lines:
            e = Xrf.lookup_xrf_line(self.symbol + ' ' + l)
            #if (e != 0.):
            show = False
            self.l_selection.update({l: [e, l_lines[l] or show]})

        self.g_selection = dict()
        for g in g_lines:
            e = Xrf.lookup_xrf_line(self.symbol + ' ' + g)
            #if (e != 0.):
            self.g_selection.update({g: [e, g_lines[g]]})

        self.all_lines = dict()
        self.all_lines.update(self.k_selection)
        self.all_lines.update(self.l_selection)
        self.all_lines.update(self.g_selection)
Exemplo n.º 2
0
    def __init__(self, plotWidget, plotContoller, roiController, mca):
        super().__init__()

        self.set_mca(mca) # in future change to get cal. from  plot model
        
        self.x_scale = 'E'
        
        
        self.pattern_widget = plotWidget
        self.roi_controller = roiController
        self.plotController = plotContoller
        self.log_scale = self.plotController.logMode
        self._layout = QtWidgets.QVBoxLayout()  
        self.setWindowTitle('XRF control')
        self.button_widget = QtWidgets.QWidget(self)
        self.button_widget.setObjectName('xrfs_control_button_widget')
        self._button_layout = QtWidgets.QHBoxLayout()
        self._button_layout.setContentsMargins(0, 0, 0, 0)
        self._button_layout.setSpacing(6)
        self.add_btn = QtWidgets.QPushButton('Add ROIs')
        self.add_btn.clicked.connect(self.rois_btn_click_callback)

        self.clear_btn = QtWidgets.QPushButton('Clear')
        self.clear_btn.clicked.connect(self.clear_xrf)
        self._button_layout.addWidget(QtWidgets.QLabel('Search:'),0)
        self.search_item = s =  QtWidgets.QLineEdit('')
        s.textChanged.connect(lambda:self.search_by_symbol(s.text()))
        self._button_layout.addWidget(self.search_item, 0)
        self._button_layout.addSpacerItem(HorizontalSpacerItem())
        self._button_layout.addWidget(self.add_btn,0)
        self._button_layout.addWidget(self.clear_btn,0)
        self.button_widget.setLayout(self._button_layout)
        self._layout.addWidget(self.button_widget)
        self._body_layout = QtWidgets.QHBoxLayout()
        self.header = ['Z', 'Symbol']
        self.cols = len(self.header)
        self.xrf_tw = ListTableWidget(columns=self.cols)
        self._body_layout.addWidget(self.xrf_tw)

        self.k_lines_tags = ['Ka','Ka1', 'Ka2','Kb', 'Kb1', 'Kb2']
        self.l_lines_tags = ['La1', 'Lb1', 'Lb2', 'Lg1', 'Lg2', 'Lg3', 'Lg4', 'Ll']
        self.g_lines_tags = ['G1','G2', 'G3']

        self.parameter_widget = QtWidgets.QWidget()
        self._parameter_layout = QtWidgets.QGridLayout()

        self.k_cbs = dict()
        for k in self.k_lines_tags:
            k_line = QtWidgets.QCheckBox(k)
            k_line.setEnabled(False)
            k_line.toggled.connect(partial(self.cbs_changed, k_line))
            self._parameter_layout.addWidget(k_line, 0, self.k_lines_tags.index(k)+2)
            self.k_cbs[k]=k_line
        
        self.l_cbs = dict()
        for l in self.l_lines_tags:
            l_line = QtWidgets.QCheckBox(l)
            l_line.setEnabled(False)
            l_line.toggled.connect(partial(self.cbs_changed, l_line))
            self._parameter_layout.addWidget(l_line,1, self.l_lines_tags.index(l)+2)
            self.l_cbs[l]=l_line

        self.g_cbs = dict()
        for g in self.g_lines_tags:
            g_line = QtWidgets.QCheckBox(g)
            g_line.setEnabled(False)
            g_line.toggled.connect(partial(self.cbs_changed, g_line))
            self._parameter_layout.addWidget(g_line,2, self.g_lines_tags.index(g)+2)
            self.g_cbs[g]=g_line
        
        self.parameter_widget.setLayout(self._parameter_layout)
        self._body_layout.addWidget(self.parameter_widget, 0)
        self._layout.addLayout(self._body_layout)
        self.setLayout(self._layout)
        self.style_widgets()
        self.xrf_show_cbs = []
        self.name_items = []
        self.index_items = []
        self.kl_cbs = dict()
        self.kl_cbs.update(self.k_cbs) 
        self.kl_cbs.update(self.l_cbs)
        self.kl_cbs.update(self.g_cbs)
        self.xrf = []

        self.atoms = dict()

        #self.show_parameter_in_pattern = True
        header_view = QtWidgets.QHeaderView(QtCore.Qt.Horizontal, self.xrf_tw)
        self.xrf_tw.setHorizontalHeader(header_view)

        header_view.setResizeMode(0, QtWidgets.QHeaderView.Stretch)
        header_view.setResizeMode(1, QtWidgets.QHeaderView.Stretch)  
        
        self.xrf_tw.setHorizontalHeaderLabels(self.header)
        #header_view.hide()
        self.xrf_tw.setItemDelegate(NoRectDelegate())
        #self.xrf_tw.itemChanged.connect(self.xrf_name_item_changed)

        for atom in Xrf.atomic_symbols:
            self.add_xrf_row(Xrf.atomic_number(atom),atom)
        #self.xrf_tw.selectRow(Xrf.atomic_symbols.index(None))

        color = self.add_xrf_plot()
        self.xrf_tw.currentCellChanged.connect(self.selection_changed)
        #self.xrf_tw.setColumnWidth(0, 35)

        self.plotController.unitUpdated.connect(self.update_x_scale)
        self.plotController.dataPlotUpdated.connect(self.update_all_xrf_lines)