import wx, os, sys import Tribler.Core.Widgets.widgets as widgets from Tribler.Core.Session import Session from Tribler.Core.simpledefs import * from Tribler.Main.Dialogs.GUITaskQueue import GUITaskQueue widget_name = "mywidget" class mywidget(widgets.tribler_widget): __name__ = "Top Contributors" __author__ = "A.M. van den Berg" __version__ = "0.1" __widgetid__ = "c54cbcfa-8505-44e6-b830-ef065bc462ac" width = 300 height = 200 def __init__(self, *args, **kw): widgets.tribler_widget.__init__(self, *args, **kw) self.session = Session.get_instance() #self.bartercastdb = BarterCastDBHandler.getInstance() self.contribList = wx.ListCtrl(self, -1, (0,0),(self.width, self.height), wx.LC_REPORT) self.contribList.InsertColumn(0, 'No.') self.contribList.InsertColumn(1, 'Peer') self.contribList.InsertColumn(2, 'Up') self.contribList.InsertColumn(3, 'Down') self.contribList.SetColumnWidth(0, 25) self.contribList.SetColumnWidth(1, 175) self.contribList.SetColumnWidth(2, 50) self.contribList.SetColumnWidth(3, 50) self.RefreshList() self.guiserver = GUITaskQueue.getInstance() wx.CallAfter(self.guiserver.add_task(lambda:self.RefreshList(), 5.0)) def RefreshList(self): bartercastdb = self.session.open_dbhandler(NTFY_BARTERCAST) self.topTen = bartercastdb.getTopNPeers( 10) self.session.close_dbhandler(bartercastdb) self.contribList.DeleteAllItems() if len(self.topTen) == 0: self.contribList.InsertStringItem(0, "No contributors found") j = 0 peerdb = self.session.open_dbhandler(NTFY_PEERS) for item in self.topTen['top']: name = peerdb.getPeer(item[0], 'name') if name == None or name == '': name = 'unknown peer' self.contribList.InsertStringItem(j, str(j+1)) self.contribList.SetStringItem(j, 1, name) self.contribList.SetStringItem(j, 2, str(item[1])) self.contribList.SetStringItem(j, 3, str(item[2])) j+=1 self.session.close_dbhandler(peerdb) guiserver = GUITaskQueue.getInstance() guiserver.add_task(lambda: self.RefreshList(), 5.0)