Exemple #1
0
    def set_data(self, linhas):

        if not linhas:
            logging.info("[ListaPadrao] Nenhum registro encontrado.")
            self.tableWidget_tabela.clear()
            self.set_columns()
            self.tableWidget_tabela.setRowCount(0)
            return

        self.tableWidget_tabela.setRowCount(len(linhas))

        row = 0
        for linha in linhas:
            col = 0
            for coluna in self.colunas:
                valor_tratado = self.tratar_valor(linha, coluna)
                valor = valor_tratado[0]
                alinhamento = valor_tratado[1]
                item = QTableWidgetItem(str(valor))
                item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
                item.setTextAlignment(alinhamento)
                self.tableWidget_tabela.setItem(row, col, item)
                col = col + 1
            row = row + 1

        self.tableWidget_tabela.resizeColumnsToContents()

        # Oculta colunas marcadas como not visible
        for coluna in self.colunas.values():
            self.tableWidget_tabela.setColumnHidden(coluna[3], not coluna[2])

        self.dados_lista_relatorio = linhas
Exemple #2
0
    def create_cell(self, data: str):
        """Create data cell on UI."""
        cell = QTableWidgetItem(data)
        cell.setFont(QFont('Free Mono', 11))
        cell.setTextAlignment(Qt.AlignVCenter | Qt.AlignHCenter)

        return cell
Exemple #3
0
    def populate_table(self, table, terminals, nonterminals):
        self.parsing_table.insertColumn(0)
        for symbol in terminals:
            index = self.parsing_table.columnCount()
            self.parsing_table.insertColumn(index)
            self.map[symbol] = index

        self.parsing_table.setHorizontalHeaderLabels([""] + terminals + ["$"])

        for key in table.keys():
            row = self.parsing_table.rowCount()
            self.parsing_table.insertRow(row)

            item = QTableWidgetItem(key)
            item.setTextAlignment(QtCore.Qt.AlignCenter)
            self.parsing_table.setItem(row, 0, item)

            for sec_key in table[key].keys():
                column = self.map[sec_key]

                item = QTableWidgetItem(table[key][sec_key])
                item.setTextAlignment(QtCore.Qt.AlignCenter)
                self.parsing_table.setItem(row, column, item)

        self.parsing_table.horizontalHeader().setSectionResizeMode(
            QtWidgets.QHeaderView.ResizeToContents)
        self.parsing_table.horizontalHeader().setDefaultAlignment(
            QtCore.Qt.AlignHCenter)
Exemple #4
0
    def populate_table(self, firsts, follows):
        for key in follows.keys():
            newRow_index = self.ff_table.rowCount()
            self.ff_table.insertRow(newRow_index)

            item = QTableWidgetItem(key)
            item.setTextAlignment(QtCore.Qt.AlignCenter)
            self.ff_table.setItem(newRow_index, 0, item)

            label = "{"
            for item in firsts[key]:
                label = label + item + ", "
            label = label[:-2]
            label += "}"
            self.ff_table.setItem(newRow_index, 1, QTableWidgetItem(label))

            label = "{"
            for item in follows[key]:
                label = label + item + ", "
            label = label[:-2]
            label += "}"
            self.ff_table.setItem(newRow_index, 2, QTableWidgetItem(label))

        self.ff_table.horizontalHeader().setSectionResizeMode(
            QtWidgets.QHeaderView.ResizeToContents)
        self.ff_table.horizontalHeader().setDefaultAlignment(
            QtCore.Qt.AlignHCenter)
    def setRequiredBlueprints(self):
        """Compute and display required blueprints"""
        for i, target_level in enumerate((5, 10, 15, 20, 25, 30)):
            req_bp = self.computeRequiredBlueprintsForStrengthenLevel(
                target_level, self.researchShipUserData["level"],
                self.researchShipUserData["bp"],
                self.isDecisiveShip(self.researchShip.Shipfu))

            item = QTableWidgetItem(str(req_bp))
            item.setTextAlignment(Qt.AlignCenter)
            self.strengthenLevelTableWidget.setItem(0, i, item)

        if self.hasFateSimulation(self.researchShip):
            req_bp_to_level_30 = \
                self.computeRequiredBlueprintsForStrengthenLevel(
                    30,
                    self.researchShipUserData["level"],
                    self.researchShipUserData["bp"],
                    self.isDecisiveShip(self.researchShip.Shipfu))
            for target_phase in range(1, 6):
                req_bp = self.computeRequiredBlueprintsForFateSimulation(
                    target_phase,
                    self.researchShipUserData["fate_simul_phase"],
                    self.researchShipUserData["bp"])
                req_bp += req_bp_to_level_30

                item = QTableWidgetItem(str(req_bp))
                item.setTextAlignment(Qt.AlignCenter)
                self.fateSimulationTableWidget.setItem(0, target_phase - 1,
                                                       item)
Exemple #6
0
    def refreshTable(self):
        global database
        self.cuentas = database.getAllAccounts()
        self.tabla_cuentas.clearContents()

        row = 0
        for entry in self.cuentas:
            self.tabla_cuentas.setRowCount(row + 1)

            item = QTableWidgetItem(entry[1])
            item.setTextAlignment(4)

            self.tabla_cuentas.setItem(row, 0, QTableWidgetItem(item))
            item.setText(entry[2])
            self.tabla_cuentas.setItem(row, 1, QTableWidgetItem(item))
            item.setText(entry[3])
            self.tabla_cuentas.setItem(row, 2, QTableWidgetItem(item))
            item.setText(len(entry[4]) * str("*"))
            self.tabla_cuentas.setItem(row, 3, QTableWidgetItem(item))
            item.setText(entry[5])
            self.tabla_cuentas.setItem(row, 4, QTableWidgetItem(item))
            item.setText(str(entry[0]))
            self.tabla_cuentas.setItem(row, 5, QTableWidgetItem(item))

            row += 1
Exemple #7
0
 def rows_text_insert(self,
                      where_to=None,
                      editable=None,
                      clickable=None,
                      alignment=None):  # text -> table item
     if where_to is None:
         where_to = self.rowCount()
     if editable is None:
         editable = self.col_editable
     if clickable is None:
         clickable = self.col_clickable
     if alignment is None:
         alignment = self.col_alignment
     n = 0
     while True:
         to_insert = (yield)
         if to_insert is None:  # 꼼수
             where_to = self.rowCount()
             n = 0
             continue
         self.insertRow(where_to + n)
         for col in range(self.columnCount()):
             item = QTableWidgetItem(to_insert[col])
             if not editable[col]:  # false 일때 플래그 제거
                 item.setFlags(item.flags() ^ Qt.ItemIsEditable)
             if not clickable[col]:
                 item.setFlags(item.flags() ^ Qt.ItemIsEnabled)
             if alignment[col]:
                 item.setTextAlignment(alignment[col])  # ex) Qt.AlignCenter
             self.setItem(where_to + n, col, item)
         n += 1
    def preencher_tabela(self):

        self.tableWidget_items.setRowCount(len(self.pedido.itens))

        if len(self.pedido.itens) > 0:
            row = 0
            for item_pedido in self.pedido.itens:
                col = 0
                for coluna in self.colunas_item:
                    valor = item_pedido.to_item_dict()[coluna]

                    if col in (4, 5, 6):
                        item = QTableWidgetItem(self.formatar_numero(valor))
                        item.setTextAlignment(Qt.AlignRight)

                        if col == 4 and item_pedido.alerta != '':
                            item.setIcon(self.icone_alerta)
                            item.setToolTip(item_pedido.alerta)

                    else:
                        item = QTableWidgetItem(self.formatar_numero(valor))

                    self.tableWidget_items.setItem(row, col, item)
                    col = col + 1
                row = row + 1

        self.tableWidget_items.setColumnHidden(0, True)
        self.tableWidget_items.setColumnHidden(1, True)

        self.tableWidget_items.resizeColumnsToContents()

        self.limpar_item()
Exemple #9
0
def _makewidget(parent, val, center=False):
    """ Small helper function that builds a TableWidgetItem and sets up the font the way we want"""
    out = QTableWidgetItem(str(val))
    out.setFlags(Qt.ItemIsEnabled)
    out.setFont(getMonospaceFont(parent))
    if center:
        out.setTextAlignment(Qt.AlignCenter)
    return out
Exemple #10
0
    def generateIdField(id=''):
        """
		@rtype: QTableWidgetItem
		"""
        idField = QTableWidgetItem(str(id))
        idField.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
        idField.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)

        return idField
 def show_files_after_swapping(self):
     files_list = GlobalSetting.CHAPTER_FILES_LIST
     for i in range(len(files_list)):
         if files_list[i] != self.current_files_list[i]:
             item = QTableWidgetItem(" " + files_list[i])
             self.table.setItem(i, 0, item)
             item = QTableWidgetItem(str(i + 1))
             item.setTextAlignment(Qt.AlignCenter)
             self.table.setVerticalHeaderItem(i, item)
             self.current_files_list[i] = files_list[i]
 def fill_table(self, data=None):
     data = self._data if not data else data
     for step, v_ntot in zip(data['Step'], data['v_ntot']):
         step_item = QTableWidgetItem("{:.2f}".format(step))
         vntot_item = QTableWidgetItem("{:.2f}".format(v_ntot))
         vntot_item.setTextAlignment(Qt.AlignRight)
         self.table.insertRow(self.items)
         self.table.setItem(self.items, 0, step_item)
         self.table.setItem(self.items, 1, vntot_item)
         self.items += 1
Exemple #13
0
 def fill_table(self, data=None):
     data = self._data if not data else data
     for desc, price in data.items():
         description_item = QTableWidgetItem(desc)
         price_item = QTableWidgetItem("{:.2f}".format(price))
         price_item.setTextAlignment(Qt.AlignRight)
         self.table.insertRow(self.items)
         self.table.setItem(self.items, 0, description_item)
         self.table.setItem(self.items, 1, price_item)
         self.items += 1
 def show_files(self):
     files_list = GlobalSetting.CHAPTER_FILES_LIST
     self.table.setRowCount(len(files_list))
     self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
     for i in range(len(files_list)):
         item = QTableWidgetItem(" " + files_list[i])
         self.table.setItem(i, 0, item)
         item = QTableWidgetItem(str(i + 1))
         item.setTextAlignment(Qt.AlignCenter)
         self.table.setVerticalHeaderItem(i, item)
     self.current_files_list = files_list[:]  # for copy the rel elements not refrences
Exemple #15
0
 def write(row: int, col: int, value: str):
     if isinstance(value, str):
         pass
     elif isinstance(value, int):
         value = str(value)
     elif isinstance(value, float):
         value = f"{value: 0.2f}"
     else:
         value = value.__str__()
     item = QTableWidgetItem(value)
     item.setTextAlignment(Qt.AlignCenter)
     self.data_table.setItem(row, col, item)
Exemple #16
0
    def show_paramlist(self):
        """Show the list of currently set parameters.
        """
        self.parent.dialog = QDialog(self.parent)
        table = QTableWidget()
        vbox = QVBoxLayout()
        self.parent.dialog.setLayout(vbox)
        self.parent.dialog.setWindowTitle("Parameters list")

        header = ["param", "min", "max", "step", "default"]
        lst = []
        for key, val in self.parent.current_params.items():
            sub = []
            sub.append(key)
            for head in header:
                if head in val:
                    sub.append(val[head])
            lst.append(sub)

        table.setColumnCount(len(header))
        table.setRowCount(len(self.parent.current_params))
        table.setHorizontalHeaderLabels(header)
        table.verticalHeader().setVisible(False)
        table.setAlternatingRowColors(True)
        table.horizontalHeader().setStretchLastSection(True)
        table.setEditTriggers(QAbstractItemView.NoEditTriggers)
        table.setFocusPolicy(Qt.NoFocus)

        for row, content in enumerate(lst):
            for col, elem in enumerate(content):
                item = QTableWidgetItem(str(elem))
                item.setTextAlignment(Qt.AlignLeft | Qt.AlignVCenter)
                item.setFlags(Qt.ItemIsDragEnabled | Qt.ItemIsUserCheckable
                              | Qt.ItemIsEnabled)
                table.setItem(row, col, item)

        table.resizeColumnsToContents()
        table.resizeRowsToContents()
        table.setColumnWidth(0, 250)
        table.setColumnWidth(1, 80)
        table.setColumnWidth(2, 80)
        table.setColumnWidth(3, 80)
        table.setColumnWidth(4, 80)

        button = QPushButton("&Ok")
        button.clicked.connect(self.close)
        button.setAutoDefault(True)

        vbox.addWidget(table)
        vbox.addWidget(button)

        self.parent.dialog.resize(640, 480)
        ret = self.parent.dialog.exec_()
Exemple #17
0
    def loadStudyData(self):
        """
        Function for loading data from our database and
        into the application

        Parameters
        ----------
        database : [SQL Lite Object]
            Database object that we connect to it
            through the db_model

        Return
        ----------
        None
        """
        # initialize ui
        ui = self.ui
        helper = self.helper
        tasks = helper.select_from_db(
            """SELECT task_name, study_time, notes FROM to_do_tasks""")

        for row_number, task in enumerate(tasks):
            # insert rows into the application for as
            # many tasks as we have
            ui.studyWidget.insertRow(row_number)

            # loop through the task to get the amount of columns
            # since we have rows and columns we insert data
            # piece by piece
            for column_number, data in enumerate(task):
                # store the data the appropriate object
                # numerics don't get viewed properly in tablewidget items
                cell = QTableWidgetItem()
                cell.setText(data)
                cell.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)

                # disable functionality for all cells except the notes cell
                # and also edit the alignment for the notes
                if column_number == 2:
                    cell.setTextAlignment(Qt.AlignLeft | Qt.AlignTop)
                else:
                    # disable options
                    cell.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)

                # add the data into the cell
                ui.studyWidget.setItem(row_number, column_number, cell)

                # Load finished task functionality into the table
                finishedTask = QPushButton('Finished Task')
                finishedTask.clicked.connect(self.levelMessageBox)
                ui.studyWidget.setCellWidget(
                    row_number, 3, finishedTask)\
Exemple #18
0
 def update_table_item(self, row, timelog_info):
     column = -1
     for timelog in timelog_info:
         column += 1
         item = QTableWidgetItem()
         item.setFlags(item.flags() & ~QtCore.Qt.ItemIsEditable)
         if column == 2:
             timelog += " hour"
         item.setText(timelog)
         if not column == 3:
             item.setTextAlignment(QtCore.Qt.AlignRight
                                   | QtCore.Qt.AlignVCenter)
         self.tableWidgetTimelog.setItem(row, column, item)
Exemple #19
0
 def _table_item(text='', center=True):
     item = QTableWidgetItem(text)
     font = QFont()
     if center:  # 행번호
         item.setTextAlignment(Qt.AlignCenter)
         item.setFlags(Qt.NoItemFlags)
         item.setFont(font)
         font.setPointSize(7)
     else:
         item.setFlags(Qt.NoItemFlags)
         item.setFont(font)
         font.setPointSize(9)
     return item
Exemple #20
0
    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
Exemple #21
0
    def add_element(self, port, service):
        self.table.insertRow(self.items)
        port_item = QTableWidgetItem(str(port))
        port_item.setTextAlignment(Qt.AlignCenter)
        port_item.setFlags(port_item.flags() ^ Qt.ItemIsEditable)

        service_item = QTableWidgetItem(str(service))
        service_item.setFlags(service_item.flags() ^ Qt.ItemIsEditable)
        service_item.setToolTip("Open in Exploit-db")

        self.table.setItem(self.items, 0, port_item)
        self.table.setItem(self.items, 1, service_item)

        self.items += 1
Exemple #22
0
    def set_string_list_value(self, value: typing.List[typing.Any]):
        if not isinstance(value, list):
            raise ValueError('Only Support List Type Value')
        if len(value) != self.column_count:
            raise ValueError('Value Length Must Equal to TableWidget Column Count')

        self.row_count += 1
        for col in range(self.column_count):
            table_item = QTableWidgetItem(str(value[col]))
            table_item.setTextAlignment(Qt.AlignCenter)
            self.setItem(self.row_count - 1, col, table_item)
        self.index.value = self.row_count - 1
        self.auto_resize_column_width()
        self.string_list.check_change()
    def add_element(self, status_code, url):
        self.table.insertRow(self.items)
        status_code_item = QTableWidgetItem(str(status_code))
        status_code_item.setTextAlignment(Qt.AlignCenter)
        status_code_item.setFlags(status_code_item.flags() ^ Qt.ItemIsEditable)

        url_item = QTableWidgetItem(url)
        url_item.setFlags(url_item.flags() ^ Qt.ItemIsEditable)
        url_item.setToolTip("Open in Browser")

        self.table.setItem(self.items, 0, status_code_item)
        self.table.setItem(self.items, 1, url_item)

        self.items += 1
Exemple #24
0
    def displayNeededExp(self):
        currentLevel = self.currentLevelSpinBox.value()
        currentExp = self.currentExpSpinBox.value()

        realLevel = self.computeRealLevel(currentLevel, currentExp)
        self.realLevelLabel.setText(str(realLevel))

        for i, targetLevel in enumerate((100, 105, 110, 115, 120)):
            neededExp = self.computeNeededExpForLevel(
                targetLevel, currentLevel, currentExp)

            item = QTableWidgetItem(f"{neededExp:,}".replace(',', ' '))
            item.setTextAlignment(Qt.AlignCenter)
            self.tableWidget.setItem(0, i, item)
Exemple #25
0
    def create_table(self):
        # Create the table if files have successfully been selected
        if not len(self.files):
            return

        if self.ext in YAML_EXTS:
            table_files = self.yml_files
        else:
            table_files = self.files

        self.ui.file_options.setRowCount(
            len(table_files[self.idx]))

        # Create the rows
        for row in range(self.ui.file_options.rowCount()):
            for column in range(self.ui.file_options.columnCount()):
                item = QTableWidgetItem()
                item.setTextAlignment(Qt.AlignCenter)
                self.ui.file_options.setItem(row, column, item)

        self.ui.file_options.blockSignals(True)
        # Populate the rows
        for i in range(self.ui.file_options.rowCount()):
            curr = table_files[self.idx][i]
            self.ui.file_options.item(i, 0).setText(Path(curr).name)
            self.ui.file_options.item(i, 1).setText(str(self.empty_frames))
            self.ui.file_options.item(i, 2).setText(str(self.total_frames[i]))
            self.ui.file_options.item(i, 3).setText(str(self.omega_min[i]))
            self.ui.file_options.item(i, 4).setText(str(self.omega_max[i]))
            self.ui.file_options.item(i, 5).setText(
                str(self.total_frames[i] - self.empty_frames))

            # Set tooltips
            self.ui.file_options.item(i, 0).setToolTip(Path(curr).name)
            self.ui.file_options.item(i, 3).setToolTip('Start must be set')
            self.ui.file_options.item(i, 4).setToolTip('Stop must be set')
            self.ui.file_options.item(i, 5).setToolTip('Number of steps')

            # Don't allow editing of file name or total frames
            self.ui.file_options.item(i, 0).setFlags(Qt.ItemIsEnabled)
            self.ui.file_options.item(i, 2).setFlags(Qt.ItemIsEnabled)
            self.ui.file_options.item(i, 5).setFlags(Qt.ItemIsEnabled)
            # If raw data offset can only be changed in YAML file
            if self.ext in YAML_EXTS:
                self.ui.file_options.item(i, 1).setFlags(Qt.ItemIsEnabled)

        self.ui.file_options.blockSignals(False)
        self.ui.file_options.resizeColumnsToContents()
        self.ui.file_options.sortByColumn(0, Qt.AscendingOrder)
Exemple #26
0
    def add_element(self):
        des=self.description.text()
        price=self.price.text()
        self.table.insertRow(self.items)
		
        description_item = QTableWidgetItem(des)
        price_item = QTableWidgetItem("{:.2f}".format(float(price)))
        price_item.setTextAlignment(Qt.AlignRight)

        self.table.setItem(self.items, 0, description_item)
        self.table.setItem(self.items, 1, price_item)

        self.description.setText("")
        self.price.setText("")
        self.items+=1
    def setVerticalHeaderItems(self, type):
        """
        Sets the vertical header items.
        """
        parameter = self.headerItemDefaultParameter(type)

        for row in range(0, self.rowCount()):

            number = row

            item = QTableWidgetItem()
            item.setTextAlignment(Qt.AlignCenter)
            item.setText(self.headerItemText(number, type, parameter))

            self.setVerticalHeaderItem(row, item)
    def setHorizontalHeaderItems(self, type):
        """
        Sets the horizontal header items.
        """
        parameter = self.headerItemDefaultParameter(type)

        for column in range(0, self.columnCount()):

            number = column

            item = QTableWidgetItem()
            item.setTextAlignment(Qt.AlignCenter)
            item.setText(self.headerItemText(number, type, parameter))

            self.setHorizontalHeaderItem(column, item)
Exemple #29
0
 def displayStats(self, *args, **kwargs):
     self.table.setRowCount(0)
     stats = self.getStats()
     for key, val in stats.iteritems():
         self.table.insertRow(0)
         i1 = QTableWidgetItem(key)  # parameter
         i2 = QTableWidgetItem(str(val))  # value
         i1.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
         i2.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
         i1.setTextAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter
                             | QtCore.Qt.AlignCenter)
         i2.setTextAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter
                             | QtCore.Qt.AlignCenter)
         self.table.setItem(0, 0, i1)
         self.table.setItem(0, 1, i2)
Exemple #30
0
 def show_table_fill_contents(self, headers, contents):
     """ 查询到的数据填到表格中 """
     self.show_table.setColumnCount(len(headers))
     self.show_table.setRowCount(len(contents))
     headers_keys = list()
     headers_labels = list()
     for key, value in headers.items():
         headers_keys.append(key)
         headers_labels.append(value)
     self.show_table.setHorizontalHeaderLabels(headers_labels)
     for row, row_item in enumerate(contents):
         self.show_table.setRowHeight(row, 20)
         for col, value_key in enumerate(headers_keys):
             item = QTableWidgetItem(str(row_item[value_key]))
             item.setTextAlignment(Qt.AlignCenter)
             self.show_table.setItem(row, col, item)
    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)