import wx, os, sys import Tribler.Core.Widgets.widgets as widgets from Tribler.Core.simpledefs import * from Tribler.Core.exceptions import * from Tribler.Core.TorrentDef import TorrentDef from Tribler.Core.Session import Session from Tribler.Core.CacheDB.CacheDBHandler import TorrentDBHandler, Notifier from Tribler.Main.Dialogs.GUITaskQueue import GUITaskQueue widget_name = "mywidget" class mywidget(widgets.tribler_widget): __name__ = "Newest discovered torrents" __author__ = "A.M. van den Berg" __version__ = "0.1" __widgetid__ = "7fb6a49e-72db-4782-bbe4-a9e3570a4c57" width = 300 height = 200 def __init__(self, *args, **kw): widgets.tribler_widget.__init__(self, *args, **kw) self.torrentFileDict = {} print >>sys.stderr,"INIT WIDGET " self.torrentdb = TorrentDBHandler.getInstance() self.notifier = Notifier.getInstance() self.session = Session.get_instance() self.config = self.session.get_current_startup_config_copy().sessconfig self.torrentList = wx.ListCtrl(self, -1, (0,0),(self.width, self.height-20), wx.LC_REPORT) self.torrentList.InsertColumn(0, 'Torrent') self.torrentList.InsertColumn(1, 'Seeders') self.torrentList.InsertColumn(2, 'Leechers') self.torrentList.SetColumnWidth(0, 150) self.torrentList.SetColumnWidth(1, 25) self.torrentList.SetColumnWidth(2, 25) self.downloadButton = wx.Button(self,-1,"Download",(0,self.height-20)) self.downloadButton.Bind(wx.EVT_LEFT_UP, self.OnDownloadClicked) #self.RefreshList() self.notifier.add_observer(self.OnNotify, NTFY_TORRENTS, [NTFY_INSERT]) self.guiserver = GUITaskQueue.getInstance() #wx.CallAfter(self.guiserver.add_task(lambda:self.RefreshList(), 5.0)) def OnDownloadClicked(self, event): itemId = self.torrentList.GetFirstSelected() if itemId != -1: torrent_name = self.torrentList.GetItem(itemId, 0).GetText() torrent_file = self.torrentFileDict[torrent_name] tdef=TorrentDef.load(os.path.join(self.config['torrent_collecting_dir'],torrent_file)) try: d = self.session.start_download(tdef) except DuplicateDownloadException: return else: test = wx.MessageDialog(self, "Please select an item to download first.", "Select item", wx.OK) result = test.ShowModal() test.Destroy() def OnNotify(self, subject, type, infohash): torrent = self.torrentdb.getTorrent(infohash, ('name','num_seeders','num_leechers', 'torrent_file_name'),include_mypref=False) self.torrentList.InsertStringItem(0, torrent['name']) self.torrentList.SetStringItem(0, 1, str(torrent['num_seeders'])) self.torrentList.SetStringItem(0, 2, str(torrent['num_leechers'])) self.torrentFileDict[torrent['name']] = torrent['torrent_file_name'] # print >>sys.stderr,"NOTIFIED! ", args, "\n\n KWARGS:" ,kwargs