def appendTable(self, header, ws): try: font = QFont('TypeWriter', pointSize = 10, weight=QFont.Bold) for text in header: self.table.insertColumn(0) for c in xrange(len(header)): det = self.determine(header[c]) item = QTableWidgetItem(header[c]) if det == 0: item.setBackground(QBrush(QColor('#FF8D00'))) else: item.setBackground(QBrush(QColor('#005588'))) item.setFont(font) item.setTextAlignment(Qt.AlignCenter) self.table.setItem(0, c, item) nComboBox = self.newCombo() nComboBox.setCurrentIndex(det) self.table.setCellWidget(1, c, (nComboBox)) for r in xrange(2,26,1): item = QTableWidgetItem(ws[c][r-2]) item.setFont(font) item.setTextAlignment(Qt.AlignCenter) self.table.setItem(r, c, item) self.addStatus( u' 狀態: 勤務表預覽成功', -1) return 0 except: self.addStatus( u' 狀態: 勤務表預覽失敗', 1) return 'error'
def __init__(self, data_list, header_rows=0, roundit=None, cmap=None, click_handler=None, resize_columns=True, stretch_last=False, header_text=None, row_height=0, sort_column=0, sort_order=QtCore.Qt.AscendingOrder): self._data_list = data_list self._nrows = len(self._data_list) self._ncols = len(self._data_list[0]) QTableWidget.__init__(self, self._nrows, self._ncols) self.setWordWrap(True) # I think it is already true by default if header_rows > 0: self.setHorizontalHeaderLabels(self._data_list[0]) self._data_list = self._data_list[1:] self._nrows -= 1 for r in range(self._nrows): for c in range(self._ncols): data_item = self._data_list[r][c] qtype = self.get_qtype(data_item) if (roundit != None) and (qtype == QFLOAT): # @UndefinedVariable data_item = round(data_item, roundit) if (r < header_rows - 1): data_item = "_" + str(data_item) # do this so the header rows are sorted to the top # newItem = QTableWidgetItem(str(data_item)) newItem = QTableWidgetItem(type=qtype) if type(data_item) == str: newItem.setText(data_item) else: newItem.setData(QtCore.Qt.DisplayRole, data_item) if r < header_rows - 1: newItem.setFont(QFont("Helvetica", 12, QFont.Bold)) else: newItem.setFont(QFont("Helvetica", 12)) if (cmap != None) and (type(data_item) == float) and (r >= header_rows): the_color = cmap.rgb_color_from_val(data_item) newBrush = QBrush() newBrush.setColor(QColor(the_color[0], the_color[1], the_color[2])) newBrush.setStyle(QtCore.Qt.SolidPattern) newItem.setBackground(newBrush) self.setItem(r, c, newItem) if resize_columns: self.resizeColumnsToContents() self.resizeRowsToContents() self.sortItems(0, order=QtCore.Qt.AscendingOrder) self.setSortingEnabled(True) if row_height != 0: vh = self.verticalHeader() vh.setDefaultSectionSize(row_height) if click_handler != None: self._click_handler = click_handler self.itemClicked.connect(self.item_click_action) if stretch_last: hh = self.horizontalHeader() hh.setStretchLastSection(True) self.roundit = roundit self.header_rows = header_rows
def createCustomEntry(self, model): """ :type model: FileEntry :rtype: QTableWidgetItem """ nameItem = QTableWidgetItem(model.name) dateItem = QTableWidgetItem(str(model.lastUpdate.date())) iconItem = QTableWidgetItem() if model.status in [ Status.Seen_user.value, Status.Download_seen_user.value ]: iconItem.setIcon(QIcon(resource_filepath("viewed.svg"))) elif model.status in [ Status.Update_server.value, Status.Download_updated_server.value ]: iconItem.setIcon(QIcon(resource_filepath("updated.svg"))) elif model.status == Status.Download_same.value: iconItem.setIcon(QIcon(resource_filepath("downloaded.svg"))) if model.status == 1: nameItem.setBackground(RGBColors.Emerald.value) dateItem.setBackground(RGBColors.Emerald.value) iconItem.setBackground(RGBColors.Emerald.value) return [iconItem, nameItem, dateItem]
def updateSentenceView(self): """ Updates a sentence view. """ sections = self.selectedTitles(self.ui.listWidgetSection.selectedItems()) sub_sections = self.selectedTitles(self.ui.listWidgetSubSection.selectedItems()) functions = self.selectedTitles(self.ui.listWidgetFunction.selectedItems()) sentences = self.container.listSentences(section=list(sections),subsection=list(sub_sections),function=list(functions)) self.ui.tableWidgetSentence.clear() self.ui.tableWidgetSentence.setColumnCount(5) self.ui.tableWidgetSentence.setHorizontalHeaderItem(0,QTableWidgetItem('Section')) self.ui.tableWidgetSentence.setHorizontalHeaderItem(1,QTableWidgetItem('Sub Section')) self.ui.tableWidgetSentence.setHorizontalHeaderItem(2,QTableWidgetItem('Function')) self.ui.tableWidgetSentence.setHorizontalHeaderItem(3,QTableWidgetItem('Sentence')) self.ui.tableWidgetSentence.setHorizontalHeaderItem(4,QTableWidgetItem('Reference')) self.ui.tableWidgetSentence.setColumnWidth(0,150) self.ui.tableWidgetSentence.setColumnWidth(1,200) self.ui.tableWidgetSentence.setColumnWidth(2,300) self.ui.tableWidgetSentence.setColumnWidth(3,900) self.ui.tableWidgetSentence.setColumnWidth(4,100) row = 0 strip = self.ui.checkBoxStrip.isChecked() for secv, subsv, funcv, sentv, refv in sentences: if sentv != u'NULL': sec_item = QTableWidgetItem(str(secv)) subs_item = QTableWidgetItem(str(subsv)) func_item = QTableWidgetItem(str(funcv)) sent_item = QTableWidgetItem(str(sentv)) ref_item = QTableWidgetItem(str(refv)) self.ui.tableWidgetSentence.setItem(row,0,sec_item) self.ui.tableWidgetSentence.setItem(row,1,subs_item) self.ui.tableWidgetSentence.setItem(row,2,func_item) self.ui.tableWidgetSentence.setItem(row,3,sent_item) self.ui.tableWidgetSentence.setItem(row,4,ref_item) if strip: try: sent_item.setText(str(self.adjustSentence(sentv, "{", "}", False, "..."))) except Exception: sent_item.setText(str(sentv)) # Background red sent_item.setBackground(QBrush(QColor(255,0,0,127))) row += 1 self.ui.labelShownSentence.setText(str(row)) self.ui.tableWidgetSentence.setRowCount(row) self.ui.tableWidgetSentence.setColumnHidden(0, \ not self.ui.checkBoxSection.isChecked()) self.ui.tableWidgetSentence.setColumnHidden(1, \ not self.ui.checkBoxSubSection.isChecked()) self.ui.tableWidgetSentence.setColumnHidden(2, \ not self.ui.checkBoxFunction.isChecked()) self.ui.tableWidgetSentence.setColumnHidden(4, \ not self.ui.checkBoxReference.isChecked())
def updateSentenceView(self): """Updates a sentence view.""" sections = self.selectedTitles( self.ui.listWidgetSection.selectedItems()) sub_sections = self.selectedTitles( self.ui.listWidgetComponent.selectedItems()) strategies = self.selectedTitles( self.ui.listWidgetStrategy.selectedItems()) sentences = self.container.listSentences(section=sections, subsection=sub_sections, function=strategies) sentences_all = self.container.listSentences() self.ui.tableWidgetSentence.clearContents() self.ui.tableWidgetSentence.setColumnCount(6) self.ui.tableWidgetSentence.setHorizontalHeaderItem( 0, QTableWidgetItem('Section')) self.ui.tableWidgetSentence.setHorizontalHeaderItem( 1, QTableWidgetItem('Component')) self.ui.tableWidgetSentence.setHorizontalHeaderItem( 2, QTableWidgetItem('Strategy')) self.ui.tableWidgetSentence.setHorizontalHeaderItem( 3, QTableWidgetItem('Sentence')) self.ui.tableWidgetSentence.setHorizontalHeaderItem( 4, QTableWidgetItem('Reference')) # the last column will be always hidden cause it will contain the # unique ID from the entry. Its necessary to update properly. self.ui.tableWidgetSentence.setColumnHidden(5, True) row = 0 self.ui.tableWidgetSentence.setRowCount(row) self.preferences['mode'] = self.ui.comboBoxMode.currentText() for idv, secv, subsv, funcv, sentv, refv in sentences_all: if sentv != u'NULL': # This must be provided by method of list sentences..not return NULL sentences. # Or maybe, put a check box to choose if will be show or not # null sentences. self.ui.tableWidgetSentence.setRowCount(row + 1) sec_item = QTableWidgetItem(str(secv)) subs_item = QTableWidgetItem(str(subsv)) func_item = QTableWidgetItem(str(funcv)) sent_item = QTableWidgetItem(str(sentv)) ref_item = QTableWidgetItem(str(refv)) id_item = QTableWidgetItem(str(idv)) self.ui.tableWidgetSentence.setItem(row, 0, sec_item) self.ui.tableWidgetSentence.setItem(row, 1, subs_item) self.ui.tableWidgetSentence.setItem(row, 2, func_item) self.ui.tableWidgetSentence.setItem(row, 3, sent_item) self.ui.tableWidgetSentence.setItem(row, 4, ref_item) self.ui.tableWidgetSentence.setItem(row, 5, id_item) if self.preferences['mode'] != 'Raw': try: marker = self.preferences['marker'] marker_beg = marker[:len(marker) / 2] marker_end = marker[len(marker) / 2:] new_sent = str( self.container.adjustSentence( sentv, marker_beg, marker_end, self.preferences['where'], self.preferences['replace_by'], self.preferences['mode'])) sent_item.setText(new_sent) except Exception, e: sent_item.setText(str(sentv)) # Background red sent_item.setBackground(QBrush(QColor(255, 0, 0, 127))) for tupla in sentences: if sentv in tupla: sec_item.setBackground(QBrush(QColor(0, 0, 255, 30))) subs_item.setBackground(QBrush(QColor(0, 0, 255, 30))) func_item.setBackground(QBrush(QColor(0, 0, 255, 30))) sent_item.setBackground(QBrush(QColor(0, 0, 255, 30))) ref_item.setBackground(QBrush(QColor(0, 0, 255, 30))) id_item.setBackground(QBrush(QColor(0, 0, 255, 30))) row += 1