diff --git a/src/cutecoin/gui/network_tab.py b/src/cutecoin/gui/network_tab.py index bf4b8ccb7234092d5ec9a39ee4eb3b2784ff1a1d..f30d5ce7402183df63efdd86a585b96cd579d2e1 100644 --- a/src/cutecoin/gui/network_tab.py +++ b/src/cutecoin/gui/network_tab.py @@ -28,7 +28,7 @@ class NetworkTabWidget(QWidget, Ui_NetworkTabWidget): proxy.setSourceModel(model) self.table_network.setModel(proxy) self.table_network.sortByColumn(0, Qt.DescendingOrder) - + self.table_network.resizeColumnsToContents() community.network.nodes_changed.connect(self.refresh_nodes) def refresh_nodes(self): diff --git a/src/cutecoin/models/network.py b/src/cutecoin/models/network.py index 685d9c8ccdb098cfbb602018ca404eae03a207bb..01153efd77071f12d4023bb540901b98106979be 100644 --- a/src/cutecoin/models/network.py +++ b/src/cutecoin/models/network.py @@ -35,14 +35,16 @@ class NetworkFilterProxyModel(QSortFilterProxyModel): if role != Qt.DisplayRole: return QVariant() - header_names = {'pubkey': 'Pubkey', - 'is_member': 'Member', - 'uid': 'UID', - 'address': 'Address', - 'port': 'Port', - 'current_block': 'Block'} - type = self.sourceModel().headerData(section, orientation, role) - return header_names[type] + header_names = { + 'address': 'Address', + 'port': 'Port', + 'current_block': 'Block', + 'uid': 'UID', + 'is_member': 'Member', + 'pubkey': 'Pubkey' + } + _type = self.sourceModel().headerData(section, orientation, role) + return header_names[_type] def data(self, index, role): source_index = self.mapToSource(index) @@ -50,14 +52,20 @@ class NetworkFilterProxyModel(QSortFilterProxyModel): return QVariant() source_data = self.sourceModel().data(source_index, role) if index.column() == self.sourceModel().column_types.index('is_member') \ - and role == Qt.DisplayRole: + and role == Qt.DisplayRole: value = {True: 'yes', False: 'no', None: 'offline'} return value[source_data] + + if role == Qt.TextAlignmentRole: + if source_index.column() == self.sourceModel().column_types.index('address') or source_index.column() == self.sourceModel().column_types.index('current_block'): + return Qt.AlignRight | Qt.AlignVCenter + if source_index.column() == self.sourceModel().column_types.index('is_member'): + return Qt.AlignCenter + return source_data class NetworkTableModel(QAbstractTableModel): - ''' A Qt abstract item model to display ''' @@ -69,13 +77,25 @@ class NetworkTableModel(QAbstractTableModel): super().__init__(parent) self.community = community self.column_types = ( - 'pubkey', - 'is_member', - 'uid', 'address', 'port', - 'current_block' + 'current_block', + 'uid', + 'is_member', + 'pubkey' ) + self.node_colors = { + Node.ONLINE: QColor('#99ff99'), + Node.OFFLINE: QColor('#ff9999'), + Node.DESYNCED: QColor('#ffbd81'), + Node.CORRUPTED: QColor(Qt.lightGray) + } + self.node_states = { + Node.ONLINE: 'Online', + Node.OFFLINE: 'Offline', + Node.DESYNCED: 'Unsynchronized', + Node.CORRUPTED: 'Corrupted' + } @property def nodes(self): @@ -114,7 +134,7 @@ class NetworkTableModel(QAbstractTableModel): address = node.endpoint.ipv6 port = node.endpoint.port - return node.pubkey, is_member, node.uid, address, port, node.block + return address, port, node.block, node.uid, is_member, node.pubkey def data(self, index, role): row = index.row() @@ -127,19 +147,11 @@ class NetworkTableModel(QAbstractTableModel): if role == Qt.DisplayRole: return self.data_node(node)[col] if role == Qt.BackgroundColorRole: - colors = {Node.ONLINE: QVariant(), - Node.OFFLINE: QColor(Qt.darkRed), - Node.DESYNCED: QColor(Qt.gray), - Node.CORRUPTED: QColor(Qt.darkRed) - } - return colors[node.state] - if role == Qt.ForegroundRole: - colors = {Node.ONLINE: QVariant(), - Node.OFFLINE: QColor(Qt.lightGray), - Node.DESYNCED: QColor(Qt.black), - Node.CORRUPTED: QColor(Qt.lightGray) - } - return colors[node.state] + return self.node_colors[node.state] + if role == Qt.ToolTipRole: + return self.node_states[node.state] + + return QVariant() def flags(self, index): return Qt.ItemIsSelectable | Qt.ItemIsEnabled