- def __init__(self, parent, id):
- wx.Panel.__init__(self, parent, id)
- self.list = SuperListCtrl(self, id)
- self.list.InsertColumn( 0, 'Name')
- self.list.InsertColumn( 1, 'Address')
- self.list.InsertColumn( 2, 'Port')
- self.list.InsertColumn( 3, 'Cipher')
- self.list.InsertColumn( 4, 'Digest')
- self.list.InsertColumn( 5, 'MACLength')
- self.list.InsertColumn( 6, 'Compression')
- self.list.InsertColumn( 7, 'Options')
- self.list.InsertColumn( 8, 'Status')
- self.list.InsertColumn( 9, 'Nexthop')
- self.list.InsertColumn(10, 'Via')
- self.list.InsertColumn(11, 'Distance')
- self.list.InsertColumn(12, 'PMTU')
- self.list.InsertColumn(13, 'Min MTU')
- self.list.InsertColumn(14, 'Max MTU')
-
- hbox = wx.BoxSizer(wx.HORIZONTAL)
- hbox.Add(self.list, 1, wx.EXPAND)
- self.SetSizer(hbox)
- self.refresh()
-
- def refresh(self):
- self.list.itemDataMap = {}
- i = 0
-
- for key, node in vpn.nodes.items():
- if self.list.GetItemCount() <= i:
- self.list.InsertStringItem(i, node.name)
- else:
- self.list.SetStringItem(i, 0, node.name)
- self.list.SetStringItem(i, 1, node.address)
- self.list.SetStringItem(i, 2, node.port)
- self.list.SetStringItem(i, 3, str(node.cipher))
- self.list.SetStringItem(i, 4, str(node.digest))
- self.list.SetStringItem(i, 5, str(node.maclength))
- self.list.SetStringItem(i, 6, str(node.compression))
- self.list.SetStringItem(i, 7, str(node.options))
- self.list.SetStringItem(i, 8, str(node.status))
- self.list.SetStringItem(i, 9, node.nexthop)
- self.list.SetStringItem(i, 10, node.via)
- self.list.SetStringItem(i, 11, str(node.distance))
- self.list.SetStringItem(i, 12, str(node.pmtu))
- self.list.SetStringItem(i, 13, str(node.minmtu))
- self.list.SetStringItem(i, 14, str(node.maxmtu))
- self.list.itemDataMap[i] = (node.name, node.address, node.port, node.cipher, node.digest, node.maclength, node.compression, node.options, node.status, node.nexthop, node.via, node.distance, node.pmtu, node.minmtu, node.maxmtu)
- self.list.SetItemData(i, i)
- i += 1
-
- while self.list.GetItemCount() > i:
- self.list.DeleteItem(self.list.GetItemCount() - 1)
+ def __init__(self, parent, id):
+ wx.Panel.__init__(self, parent, id)
+ self.list = SuperListCtrl(self, id)
+ self.list.InsertColumn(0, 'Name')
+ self.list.InsertColumn(1, 'Address')
+ self.list.InsertColumn(2, 'Port')
+ self.list.InsertColumn(3, 'Cipher')
+ self.list.InsertColumn(4, 'Digest')
+ self.list.InsertColumn(5, 'MACLength')
+ self.list.InsertColumn(6, 'Compression')
+ self.list.InsertColumn(7, 'Options')
+ self.list.InsertColumn(8, 'Status')
+ self.list.InsertColumn(9, 'Nexthop')
+ self.list.InsertColumn(10, 'Via')
+ self.list.InsertColumn(11, 'Distance')
+ self.list.InsertColumn(12, 'PMTU')
+ self.list.InsertColumn(13, 'Min MTU')
+ self.list.InsertColumn(14, 'Max MTU')
+ self.list.InsertColumn(15, 'Since')
+
+ hbox = wx.BoxSizer(wx.HORIZONTAL)
+ hbox.Add(self.list, 1, wx.EXPAND)
+ self.SetSizer(hbox)
+ self.refresh()
+
+ def refresh(self):
+ sortstate = self.list.GetSortState()
+ self.list.itemDataMap = {}
+ i = 0
+
+ for key, node in vpn.nodes.items():
+ if self.list.GetItemCount() <= i:
+ self.list.InsertStringItem(i, node.name)
+ else:
+ self.list.SetStringItem(i, 0, node.name)
+ self.list.SetStringItem(i, 1, node.address)
+ self.list.SetStringItem(i, 2, node.port)
+ self.list.SetStringItem(i, 3, str(node.cipher))
+ self.list.SetStringItem(i, 4, str(node.digest))
+ self.list.SetStringItem(i, 5, str(node.maclength))
+ self.list.SetStringItem(i, 6, str(node.compression))
+ self.list.SetStringItem(i, 7, format(node.options, "x"))
+ self.list.SetStringItem(i, 8, format(node.status, "04x"))
+ self.list.SetStringItem(i, 9, node.nexthop)
+ self.list.SetStringItem(i, 10, node.via)
+ self.list.SetStringItem(i, 11, str(node.distance))
+ self.list.SetStringItem(i, 12, str(node.pmtu))
+ self.list.SetStringItem(i, 13, str(node.minmtu))
+ self.list.SetStringItem(i, 14, str(node.maxmtu))
+ if node.last_state_change:
+ since = time.strftime("%Y-%m-%d %H:%M", time.localtime(node.last_state_change))
+ else:
+ since = "never"
+ self.list.SetStringItem(i, 15, since)
+ self.list.itemDataMap[i] = (node.name, node.address, node.port, node.cipher, node.digest, node.maclength,
+ node.compression, node.options, node.status, node.nexthop, node.via,
+ node.distance, node.pmtu, node.minmtu, node.maxmtu, since)
+ self.list.SetItemData(i, i)
+ i += 1
+
+ while self.list.GetItemCount() > i:
+ self.list.DeleteItem(self.list.GetItemCount() - 1)
+
+ self.list.SortListItems(sortstate[0], sortstate[1])
+