Esempio n. 1
0
	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
Esempio n. 3
0
    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]
Esempio n. 4
0
    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())
Esempio n. 5
0
    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