コード例 #1
0
ファイル: cutterplugin.py プロジェクト: ctlayon/capa-explorer
 def render_new_table_header_item(self, text):
     """create new table header item with our style
     @param text: header text to display
     """
     item = QTableWidgetItem(text)
     item.setForeground(self._config.getColor("graph.true"))
     font = QFont()
     font.setBold(True)
     item.setFont(font)
     return item
コード例 #2
0
    def on_job_done(self, done_processes):
        self.clear()
        self.fix_header()
        # If more jobs than rows
        if len(self.jobs) >= self.rowCount():
            self.setRowCount(len(self.jobs))
            for row in range(self.rowCount()):
                for column in range(self.columnCount()):
                    item = QTableWidgetItem()
                    item.setText('')
                    self.setItem(row, column, item)  # Note: new rowcount here

        jobs_check_rows = []
        row = 0
        for job in self.jobs:
            if job in self.jobs_check:
                jobs_check_rows.append(row)
            job = [i.replace('\n', '') for i in job]
            for column in range(self.columnCount() - 1):
                item = self.item(row, column)
                if len(job) - 1 >= column:
                    if job[column] == 'COMPLETED':
                        item.setForeground(QColor(0, 255, 150))
                    elif job[column] in self.options:
                        item.setForeground(QColor(255, 0, 0))
                    else:
                        pass
                    item.setText(job[column])
            row += 1

        for job, out, row in zip(self.jobs_check, done_processes,
                                 jobs_check_rows):
            out = out.split('\t')
            second_last_item = self.item(row, self.columnCount() - 2)
            last_item = self.item(row, self.columnCount() - 1)
            if any("run_quandenser.sh" in line for line in out):
                second_last_item.setForeground(QColor('red'))
                second_last_item.setText("RUNNING")
            else:
                # Check stdout file
                label = check_stdout(job[1] + '/' + 'stdout.txt')
                if label == 'COMPLETED':
                    second_last_item.setForeground(QColor(0, 255, 150))
                else:
                    second_last_item.setForeground(QColor(255, 0, 0))
                second_last_item.setText(label)
                self.update_job_file(job, label)
            if second_last_item.text() == "RUNNING":
                button = kill_button(job[0], self.jobs_path,
                                     job)  # job[0] = pid
                self.setCellWidget(row, self.columnCount() - 1, button)
コード例 #3
0
ファイル: net_position.py プロジェクト: zizle/ADSYSTEM
    def show_data_in_table(self, show_data, header_keys):
        """ 将数据在表格中展示出来 """
        self.data_table.clear()
        self.data_table.setRowCount(0)
        self.data_table.setColumnCount(0)
        self.tips_animation_timer.stop()  # 停止计时
        self.timeout_count = 0  # 计数归0
        self.tip_label.setText("获取结果成功! ")
        # 生成表格的列头
        self.data_table.setColumnCount(len(header_keys) * 2)
        interval_day = self.interval_days.value()
        for count in range(2):
            for index, h_key in enumerate(header_keys):
                if index == 0:
                    item = QTableWidgetItem('品种')
                elif index == 1:
                    item = QTableWidgetItem(h_key)
                else:
                    item = QTableWidgetItem(
                        str((index - 1) * interval_day) + "天前")
                setattr(item, 'key', h_key)
                self.data_table.setHorizontalHeaderItem(
                    index + count * len(header_keys), item)

        is_pre_half = True
        for variety, variety_values in show_data.items():
            row = self.data_table.rowCount()
            if is_pre_half:
                col_start = 0
                col_end = len(header_keys)
                self.data_table.insertRow(row)
                self.data_table.setRowHeight(row, 10)
            else:
                row -= 1
                col_start = len(header_keys)
                col_end = self.data_table.columnCount()
            for col in range(col_start, col_end):
                data_key = getattr(self.data_table.horizontalHeaderItem(col),
                                   'key')
                if col == col_start:
                    v_zh = VARIETY_ZH.get(variety_values['variety_en'],
                                          variety_values['variety_en'])
                    item = QTableWidgetItem(v_zh)
                    item.setForeground(QBrush(QColor(180, 60, 60)))
                else:
                    item = QTableWidgetItem(
                        str(int(variety_values.get(data_key, 0))))
                item.setTextAlignment(Qt.AlignCenter)

                self.data_table.setItem(row, col, item)
            is_pre_half = not is_pre_half
コード例 #4
0
    def __init__(self, messages, hiddenLifelines, parent=None):
        super(HiddenMessageDialog, self).__init__(parent)

        self.lifelineList = hiddenLifelines
        self.msgList = messages
        layout = QVBoxLayout(self)

        listTitle = QLabel('Hidden Messages')
        layout.addWidget(listTitle)

        self.listHiddenMessages = QTableWidget(len(self.msgList), 4)
        self.listHiddenMessages.setHorizontalHeaderLabels(
            ['Index', 'Name', 'Departure', 'Destination'])
        self.listHiddenMessages.setFixedWidth(400)
        #self.listHiddenMessages.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
        self.listHiddenMessages.setSelectionBehavior(
            QAbstractItemView.SelectRows)

        for idx, msg in enumerate(self.msgList):
            self.listHiddenMessages.setItem(
                idx, 0, QTableWidgetItem("%d" % msg['messageindex']))
            self.listHiddenMessages.setItem(idx, 1,
                                            QTableWidgetItem(msg['message']))
            item = QTableWidgetItem(msg['departure']['class'])
            item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight)
            if msg['departure']['class'] in self.lifelineList:
                item.setForeground(QColor(200, 200, 200))
            self.listHiddenMessages.setItem(idx, 2, item)

            item = QTableWidgetItem(msg['dest'])
            item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight)
            if msg['dest'] in self.lifelineList:
                item.setForeground(QColor(200, 200, 200))
            self.listHiddenMessages.setItem(idx, 3, item)

        layout.addWidget(self.listHiddenMessages)

        buttons = QDialogButtonBox(
            QDialogButtonBox.Ok | QDialogButtonBox.Cancel,
            QtCore.Qt.Horizontal, self)
        buttons.button(QDialogButtonBox.Ok).setText('Show')
        buttons.accepted.connect(self.accept)
        buttons.rejected.connect(self.reject)
        layout.addWidget(buttons)
コード例 #5
0
    def extract_spot_source_price(self):
        """ 提取现货数据 """
        self.final_data.clear()
        current_date = self.current_date.text()
        self.today_str = datetime.strptime(current_date,
                                           "%Y-%m-%d").strftime("%Y%m%d")
        source_str = self.source_edit.text().strip()
        if not source_str:
            self.tip_label.setText("请输入源数据再进行提取! ")
            return
        self.tip_label.setText("正在提取数据... ")
        variety_item_list = re.split(r'[;;。]+', source_str)  # 根据分号切割
        for row, variety_item in enumerate(variety_item_list):
            print(variety_item)
            data_list = re.split(r'[:,:,]+', variety_item)
            variety_dict = {
                "date": self.today_str,
                "variety_en": VARIETY_EN.get(data_list[0].strip(), "未知"),
                "spot_price": float(data_list[1]),
                "price_increase": float(data_list[2])
            }

            self.preview_table.insertRow(row)
            item0 = QTableWidgetItem(variety_dict["date"])
            self.preview_table.setItem(row, 0, item0)
            item1 = QTableWidgetItem(data_list[0].strip())
            self.preview_table.setItem(row, 1, item1)
            item2 = QTableWidgetItem(variety_dict["variety_en"])
            self.preview_table.setItem(row, 2, item2)
            item3 = QTableWidgetItem(str(variety_dict["spot_price"]))
            self.preview_table.setItem(row, 3, item3)
            item4 = QTableWidgetItem(str(variety_dict["price_increase"]))
            self.preview_table.setItem(row, 4, item4)
            if variety_dict["variety_en"] == "未知":
                item0.setForeground(QBrush(QColor(250, 100, 100)))
                item1.setForeground(QBrush(QColor(250, 100, 100)))
                item2.setForeground(QBrush(QColor(250, 100, 100)))
                item3.setForeground(QBrush(QColor(250, 100, 100)))
                item4.setForeground(QBrush(QColor(250, 100, 100)))

            self.final_data.append(variety_dict)

        self.tip_label.setText("数据提取完成! ")
コード例 #6
0
    def __init__(self, messages, hiddenLifelines, parent = None):
        super(HiddenMessageDialog, self).__init__(parent)

        self.lifelineList = hiddenLifelines
        self.msgList = messages
        layout = QVBoxLayout(self)

        listTitle = QLabel('Hidden Messages')
        layout.addWidget(listTitle)

        self.listHiddenMessages = QTableWidget(len(self.msgList),4)
        self.listHiddenMessages.setHorizontalHeaderLabels(['Index','Name','Departure','Destination'])
        self.listHiddenMessages.setFixedWidth(400)
        #self.listHiddenMessages.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
        self.listHiddenMessages.setSelectionBehavior(QAbstractItemView.SelectRows)

        for idx, msg in enumerate(self.msgList):
            self.listHiddenMessages.setItem(idx,0,QTableWidgetItem("%d" % msg['messageindex']))
            self.listHiddenMessages.setItem(idx,1,QTableWidgetItem(msg['message']))
            item = QTableWidgetItem(msg['departure']['class'])
            item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight)
            if msg['departure']['class'] in self.lifelineList:
                item.setForeground(QColor(200,200,200)) 
            self.listHiddenMessages.setItem(idx,2,item)

            item = QTableWidgetItem(msg['dest'])
            item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight)
            if msg['dest'] in self.lifelineList:
                item.setForeground(QColor(200,200,200)) 
            self.listHiddenMessages.setItem(idx,3,item)

        layout.addWidget(self.listHiddenMessages)

        buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self)
        buttons.button(QDialogButtonBox.Ok).setText('Show')
        buttons.accepted.connect(self.accept)
        buttons.rejected.connect(self.reject)
        layout.addWidget(buttons)
コード例 #7
0
ファイル: crypt_gui.py プロジェクト: Electrostatus/Various
    def populateTable(self, path):
        "fill file table with file names"
        self.showFolder(path)

        names = []
        for n in os.listdir(path):
            if os.path.isdir(os.path.join(path, n)): continue  # folder
            names.append(n)

        self.folderTable.clearContents()
        self.folderTable.setRowCount(len(names))
        self.folderTable.setColumnCount(1)

        if not names:  # no files in this folder, inform user
            self.setMessage('This folder has no files')
            return

        self.folderTable.blockSignals(True)
        selEnab = Qt.ItemIsSelectable | Qt.ItemIsEnabled
        for i, n in enumerate(names):
            item = QTableWidgetItem()
            item.setText(n)
            item.setToolTip(n)
            item.setFlags(selEnab)

            # color code encrypted/decrypted files
            if n in self.encrypted:
                item.setTextColor(QColor(211, 70, 0))
                # allowed encrypted filenames to be changed
                item.setFlags(selEnab | Qt.ItemIsEditable)
            if n in self.decrypted:
                item.setForeground(QColor(0, 170, 255))
            self.folderTable.setItem(i, 0, item)
        if len(names) > 5:
            self.setMessage('{:,} files'.format(len(names)), 7)
        self.folderTable.blockSignals(False)
        return
コード例 #8
0
 def query_spot_price_reply(self):
     """ 获取指定日期现货数据返回 """
     reply = self.sender()
     data = reply.readAll().data()
     if reply.error():
         self.modify_tip_label.setText("获取{}现货动态数据失败:\n{}".format(
             self.modify_date_edit.text(), reply.error()))
     else:
         data = json.loads(data.decode("utf-8"))
         self.modify_tip_label.setText(data["message"])
     reply.deleteLater()
     self.modify_table.clearContents()
     self.modify_table.setRowCount(0)
     for row, row_item in enumerate(data["data"]):
         self.modify_table.insertRow(row)
         item0 = QTableWidgetItem(str(row_item["id"]))
         item1 = QTableWidgetItem(row_item["date"])
         item2 = QTableWidgetItem(row_item["variety_en"])
         item3 = QTableWidgetItem(str(row_item["spot_price"]))
         item4 = QTableWidgetItem(str(row_item["price_increase"]))
         item0.setTextAlignment(Qt.AlignCenter)
         item1.setTextAlignment(Qt.AlignCenter)
         item2.setTextAlignment(Qt.AlignCenter)
         item3.setTextAlignment(Qt.AlignCenter)
         item4.setTextAlignment(Qt.AlignCenter)
         # ID 日期 品种不支持修改
         item0.setFlags(Qt.ItemIsEditable)
         item0.setForeground(QBrush(QColor(50, 50, 50)))
         item1.setFlags(Qt.ItemIsEditable)
         item1.setForeground(QBrush(QColor(50, 50, 50)))
         item2.setFlags(Qt.ItemIsEditable)
         item2.setForeground(QBrush(QColor(50, 50, 50)))
         self.modify_table.setItem(row, 0, item0)
         self.modify_table.setItem(row, 1, item1)
         self.modify_table.setItem(row, 2, item2)
         self.modify_table.setItem(row, 3, item3)
         self.modify_table.setItem(row, 4, item4)
         m_button = QPushButton("确定", self)
         m_button.setObjectName("modifyButton")
         m_button.setCursor(Qt.PointingHandCursor)
         setattr(m_button, 'row_index', row)
         m_button.clicked.connect(self.modify_row_data)
         self.modify_table.setCellWidget(row, 5, m_button)