Exemple #1
0
    def _build_ui(self):
        layout = QGridLayout()

        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        self.tree = QTreeWidget()
        self.tree.setSelectionMode(QTreeWidget.ExtendedSelection)
        self.tree.setHeaderLabels([
            "name", "status", "server", "prioritize", "kill", "delete",
            "browse"
        ])
        self.tree.setUniformRowHeights(True)

        self.tree.setColumnWidth(0, 150)
        layout.addWidget(self.tree, 0, 0, 6, 1, Qt.AlignTop)

        row = 0

        pause_button = QPushButton(
            "pause new jobs"
            if not self.session.seqcrow_job_manager.paused else "resume jobs")
        pause_button.setCheckable(True)
        pause_button.clicked.connect(lambda check: pause_button.setText(
            "pause new jobs" if not check else "resume jobs"))
        pause_button.setChecked(self.session.seqcrow_job_manager.paused)
        pause_button.clicked.connect(self.pause_queue)
        layout.addWidget(pause_button, row, 1, 1, 1, Qt.AlignTop)

        row += 1

        open_button = QPushButton("open structure")
        open_button.clicked.connect(self.open_jobs)
        layout.addWidget(open_button, row, 1, 1, 1, Qt.AlignTop)

        row += 1

        log_button = QPushButton("log")
        log_button.clicked.connect(self.open_log)
        layout.addWidget(log_button, row, 1, 1, 1, Qt.AlignTop)

        row += 1

        output_button = QPushButton("raw output")
        output_button.clicked.connect(self.open_output)
        layout.addWidget(output_button, row, 1, 1, 1, Qt.AlignTop)

        row += 1

        refresh_button = QToolButton()
        refresh_button.setSizePolicy(QSizePolicy.Fixed,
                                     QSizePolicy.MinimumExpanding)
        refresh_button.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        refresh_button.setIcon(
            QIcon(refresh_button.style().standardIcon(
                QStyle.SP_BrowserReload)))
        refresh_button.setText('check jobs')
        refresh_button.clicked.connect(
            lambda *args: self.session.seqcrow_job_manager.triggers.
            activate_trigger(JOB_QUEUED, "refresh"))
        layout.addWidget(refresh_button, row, 1, 1, 1, Qt.AlignTop)

        row += 1

        for i in range(0, row - 1):
            layout.setRowStretch(i, 0)

        layout.setRowStretch(row - 1, 1)
        layout.setColumnStretch(0, 1)
        layout.setColumnStretch(1, 0)

        self.tool_window.ui_area.setLayout(layout)

        self.tool_window.manage(None)
Exemple #2
0
    def __init__(self, *args, initial_elements=[], select_multiple=True, **kwargs):
        super().__init__(*args, **kwargs)
        
        layout = QGridLayout(self)
        layout.setContentsMargins(0, 0, 0, 0)
        
        self._elements = {ele: ElementButton(ele) for ele in ELEMENTS if not any(ele == x for x in ['Bq', 'X'])}
        for ele in self._elements.keys():
            self._elements[ele].setTristate(False)
            if select_multiple:
                self._elements[ele].stateChanged.connect(lambda state, ele=ele: self.elementSelectionChanged.emit())
            else:
                self._elements[ele].stateChanged.connect(lambda state, ele=ele: self._single_ele_clicked(state, ele))
        
        elements_widget = QWidget()
        elements_layout = QGridLayout(elements_widget)
        elements_layout.setContentsMargins(0, 0, 0, 0)

        elements_layout.addWidget(self._elements['H'],  0,  0, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['He'], 0, 17, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Li'], 1,  0, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Be'], 1,  1, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['B'],  1, 12, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['C'],  1, 13, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['N'],  1, 14, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['O'],  1, 15, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['F'],  1, 16, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Ne'], 1, 17, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Na'], 2,  0, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Mg'], 2,  1, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Al'], 2, 12, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Si'], 2, 13, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['P'],  2, 14, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['S'],  2, 15, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Cl'], 2, 16, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Ar'], 2, 17, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['K'],  3,  0, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Ca'], 3,  1, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Sc'], 3,  2, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Ti'], 3,  3, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['V'],  3,  4, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Cr'], 3,  5, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Mn'], 3,  6, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Fe'], 3,  7, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Co'], 3,  8, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Ni'], 3,  9, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Cu'], 3, 10, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Zn'], 3, 11, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Ga'], 3, 12, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Ge'], 3, 13, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['As'], 3, 14, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Se'], 3, 15, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Br'], 3, 16, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Kr'], 3, 17, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Rb'], 4,  0, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Sr'], 4,  1, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Y'],  4,  2, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Zr'], 4,  3, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Nb'], 4,  4, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Mo'], 4,  5, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Tc'], 4,  6, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Ru'], 4,  7, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Rh'], 4,  8, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Pd'], 4,  9, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Ag'], 4, 10, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Cd'], 4, 11, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['In'], 4, 12, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Sn'], 4, 13, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Sb'], 4, 14, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Te'], 4, 15, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['I'],  4, 16, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Xe'], 4, 17, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Cs'], 5,  0, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Ba'], 5,  1, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Hf'], 5,  3, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Ta'], 5,  4, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['W'],  5,  5, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Re'], 5,  6, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Os'], 5,  7, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Ir'], 5,  8, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Pt'], 5,  9, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Au'], 5, 10, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Hg'], 5, 11, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Tl'], 5, 12, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Pb'], 5, 13, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Bi'], 5, 14, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Po'], 5, 15, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['At'], 5, 16, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Rn'], 5, 17, Qt.AlignLeft | Qt.AlignTop)
        if 'Fr' in ELEMENTS:
            elements_layout.addWidget(self._elements['Fr'], 6,  0, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Ra'], 6,  1, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Rf'], 6,  3, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Db'], 6,  4, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Sg'], 6,  5, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Bh'], 6,  6, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Hs'], 6,  7, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Mt'], 6,  8, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Ds'], 6,  9, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Rg'], 6, 10, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Cn'], 6, 11, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Nh'], 6, 12, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Fl'], 6, 13, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Mc'], 6, 14, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Lv'], 6, 15, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Ts'], 6, 16, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Og'], 6, 17, Qt.AlignLeft | Qt.AlignTop)
        
        elements_layout.addWidget(self._elements['La'], 7,  2, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Ce'], 7,  3, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Pr'], 7,  4, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Nd'], 7,  5, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Pm'], 7,  6, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Sm'], 7,  7, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Eu'], 7,  8, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Gd'], 7,  9, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Tb'], 7, 10, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Dy'], 7, 11, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Ho'], 7, 12, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Er'], 7, 13, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Tm'], 7, 14, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Yb'], 7, 15, Qt.AlignLeft | Qt.AlignTop)
        elements_layout.addWidget(self._elements['Lu'], 7, 16, Qt.AlignLeft | Qt.AlignTop)
        if 'Ac' in ELEMENTS:
            elements_layout.addWidget(self._elements['Ac'], 8,  2, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Th'], 8,  3, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Pa'], 8,  4, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['U'],  8,  5, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Np'], 8,  6, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Pu'], 8,  7, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Am'], 8,  8, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Cm'], 8,  9, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Bk'], 8, 10, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Cf'], 8, 11, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Es'], 8, 12, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Fm'], 8, 13, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Md'], 8, 14, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['No'], 8, 15, Qt.AlignLeft | Qt.AlignTop)
            elements_layout.addWidget(self._elements['Lr'], 8, 16, Qt.AlignLeft | Qt.AlignTop)
        
        if select_multiple:
            organic_button = QPushButton("organic chemists'")
            organic_button.setCheckable(True)
            organic_button.clicked.connect(self._select_ochem)
            #layout.addWidget(organic_button, 9, col, Qt.AlignTop)        
    
            z_lt_37_button = QPushButton("H-Kr")
            z_lt_37_button.setCheckable(True)
            z_lt_37_button.clicked.connect(self._select_z_lt_37)
            layout.addWidget(z_lt_37_button, 9, 0, Qt.AlignTop)        
    
            z_ge_37_button = QPushButton("row 5+")
            z_ge_37_button.setCheckable(True)
            z_ge_37_button.clicked.connect(self._select_z_ge_37)
            layout.addWidget(z_ge_37_button, 9, 1, Qt.AlignTop)
    
            z_le_86_button = QPushButton("H-Rn")
            z_le_86_button.setCheckable(True)
            z_le_86_button.clicked.connect(self._select_z_le_86)
            layout.addWidget(z_le_86_button, 9, 2, Qt.AlignTop)
    
            tm_button = QPushButton("transition metals")
            tm_button.setCheckable(True)
            tm_button.clicked.connect(self._select_tm)
            layout.addWidget(tm_button, 9, 3, Qt.AlignTop)       
    
            all_button = QPushButton("all")
            all_button.clicked.connect(self._select_all)
            all_button.clicked.connect(lambda *args: organic_button.setChecked(False))
            all_button.clicked.connect(lambda *args: tm_button.setChecked(False))        
            all_button.clicked.connect(lambda *args: organic_button.setChecked(False))
            all_button.clicked.connect(lambda *args: z_lt_37_button.setChecked(False))
            all_button.clicked.connect(lambda *args: z_ge_37_button.setChecked(False))
            all_button.clicked.connect(lambda *args: z_le_86_button.setChecked(False))
            layout.addWidget(all_button, 10, 0, Qt.AlignTop)
            
            invert = QPushButton("invert")
            invert.clicked.connect(self._invert)
            invert.clicked.connect(lambda *args: organic_button.setChecked(False))
            invert.clicked.connect(lambda *args: tm_button.setChecked(False))        
            invert.clicked.connect(lambda *args: organic_button.setChecked(False))
            invert.clicked.connect(lambda *args: z_lt_37_button.setChecked(False))
            invert.clicked.connect(lambda *args: z_ge_37_button.setChecked(False))
            invert.clicked.connect(lambda *args: z_le_86_button.setChecked(False))
            layout.addWidget(invert, 10, 2, Qt.AlignTop)
    
            clear = QPushButton("clear")
            clear.clicked.connect(self._clear)
            clear.clicked.connect(lambda *args: organic_button.setChecked(False))
            clear.clicked.connect(lambda *args: tm_button.setChecked(False))        
            clear.clicked.connect(lambda *args: organic_button.setChecked(False))
            clear.clicked.connect(lambda *args: z_lt_37_button.setChecked(False))
            clear.clicked.connect(lambda *args: z_ge_37_button.setChecked(False))
            clear.clicked.connect(lambda *args: z_le_86_button.setChecked(False))
            layout.addWidget(clear, 10, 1, Qt.AlignTop)
    
            reset = QPushButton("reset")
            reset.clicked.connect(self._reset)
            reset.clicked.connect(lambda *args: organic_button.setChecked(False))
            reset.clicked.connect(lambda *args: tm_button.setChecked(False))        
            reset.clicked.connect(lambda *args: organic_button.setChecked(False))
            reset.clicked.connect(lambda *args: z_lt_37_button.setChecked(False))
            reset.clicked.connect(lambda *args: z_ge_37_button.setChecked(False))
            reset.clicked.connect(lambda *args: z_le_86_button.setChecked(False))
            layout.addWidget(reset, 10, 3, Qt.AlignTop)
            
            layout.addWidget(elements_widget, 0, 0, 7, 4, Qt.AlignLeft | Qt.AlignTop)
    
            self.setSelectedElements(initial_elements)
            self._initial_elements = initial_elements
    
            layout.setRowStretch(0, 0)
            layout.setRowStretch(1, 0)
            layout.setRowStretch(2, 0)
            layout.setRowStretch(3, 0)
            layout.setRowStretch(4, 0)
            layout.setRowStretch(5, 0)
            layout.setRowStretch(6, 0)
            layout.setRowStretch(7, 0)
            layout.setRowStretch(8, 0)
            layout.setRowStretch(9, 0)
            layout.setRowStretch(10, 1)
            layout.setColumnStretch(0, 0)
            layout.setColumnStretch(1, 1)
            layout.setColumnStretch(2, 1)
            layout.setColumnStretch(3, 1)
        
        else:
            layout.addWidget(elements_widget)
            if len(initial_elements) > 0:
                self.setSelectedElements([initial_elements[0]])
                self._initial_elements = [initial_elements[0]]