⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abcdetailframe.py

📁 BitTorrentABC-Linux-V.2.4.3源码
💻 PY
📖 第 1 页 / 共 2 页
字号:
from wxPython.wx import *
from wxPython import *
from os.path import join
from os import getcwd, path, chdir
from BitTorrent.bencode import *
from webbrowser import open_new
from threading import Thread
from BitTorrent.zurllib import urlopen
from sha import sha
from time import time
import re
import binascii


class ABCDetailFrame(wxFrame):
    def __init__(self, parent, ID, title, abcpath, torrentsrc, index, size):        
        wxFrame.__init__(self, parent, ID, title, wxDefaultPosition, size=size)

        if(sys.platform == 'win32'):
            self.icon = wxIcon(path.join(abcpath,'icon_abc.ico'), wxBITMAP_TYPE_ICO)
            self.SetIcon(self.icon)

        self.parent = parent
        self.index  = index

        metainfo = self.parent.queue.getResponse(self.index)
        if metainfo is None:
            return

        if metainfo.has_key('announce'):
            announce = metainfo['announce']
        else:
            announce = None

        if metainfo.has_key('announce-list'):
            announce_list = metainfo['announce-list']
        else:
            announce_list = None
            
        info = metainfo['info']
        info_hash = sha(bencode(info))
                
        panel = wxPanel(self, -1, size = wxSize (200,200))
        colSizer = wxFlexGridSizer(cols = 1, vgap = 3)

        aboutTitle = wxStaticText(panel, -1, info['name'])
        aboutTitle.SetFont(wxFont(14, wxDEFAULT, wxNORMAL, wxNORMAL, false))
        colSizer.Add (aboutTitle, -1, wxALIGN_CENTER)

        metainfoSizer = wxFlexGridSizer(cols = 2, vgap = 3, hgap = 3)
        colSizer.Add(metainfoSizer, -1, wxALIGN_CENTER)

        # Info Hash
        #############
        metainfoSizer.Add(wxStaticText(panel, -1, 'Info hash :'))
        metainfoSizer.Add(wxTextCtrl(panel, -1, info_hash.hexdigest(), size = (300, -1), style = wxTE_READONLY))
        # Annouce URL
        ###############
        if announce_list is None:
            metainfoSizer.Add(wxStaticText(panel, -1, 'Announce url : '))
            metainfoSizer.Add(wxTextCtrl(panel, -1, announce, size = (300, -1), style = wxTE_READONLY))
        else:
            metainfoSizer.Add(wxStaticText(panel, -1, 'Announce urls :'))
            trackerList = wxListCtrl(panel, -1, wxPoint(-1,-1), (325,75), wxLC_REPORT)
            trackerList.SetAutoLayout (true)
            trackerList.InsertColumn(0, "")
            trackerList.InsertColumn(1, "Announce urls :")

            for tier in range(len(announce_list)):
                for t in range(len(announce_list[tier])):
                    i = wxListItem()
#                    i.SetFont(self.default_font)
                    trackerList.InsertItem(i)
            if announce is not None:
                for l in [1,2]:
                    i = wxListItem()
#                    i.SetFont(self.default_font)
                    trackerList.InsertItem(i)

            x = 0
            for tier in range(len(announce_list)):
                for t in range(len(announce_list[tier])):
                    if t == 0:
                        trackerList.SetStringItem(x, 0, 'tier '+str(tier)+':')
                    trackerList.SetStringItem(x, 1, announce_list[tier][t])
                    x += 1
            if announce is not None:
                trackerList.SetStringItem(x+1, 0, 'single:')
                trackerList.SetStringItem(x+1, 1, announce)
            trackerList.SetColumnWidth(0,wxLIST_AUTOSIZE)
            trackerList.SetColumnWidth(1,wxLIST_AUTOSIZE)
            metainfoSizer.Add(trackerList)

        if announce is None and announce_list is not None:
            announce = announce_list[0][0]

        # Tracker
        ###############            
        if announce is not None:
            metainfoSizer.Add(wxStaticText(panel, -1, 'Likely tracker :'))
            p = re.compile( '(.*/)[^/]+')
            turl = p.sub (r'\1', announce)
            trackerUrl = wxStaticText(panel, -1, turl)
            trackerUrl.SetForegroundColour('Blue');
            trackerUrl.SetFont(wxFont(-1, wxDEFAULT, wxNORMAL, wxNORMAL, true))
            metainfoSizer.Add(trackerUrl)
        else:
            metainfoSizer.Add(wxStaticText(panel, -1, 'Likely tracker :'))
            metainfoSizer.Add("")

        colSizer.Add(wxStaticText(panel, -1, ""))

        detailSizer = wxFlexGridSizer(cols = 2, vgap = 6, hgap = 100)
        colSizer.Add (detailSizer, -1, wxALIGN_CENTER)

        leftdetailSizer  = wxFlexGridSizer(cols = 2, vgap = 3, hgap = 5)
        rightdetailSizer = wxFlexGridSizer(cols = 2, vgap = 3, hgap = 5)
        detailSizer.Add(leftdetailSizer)
        detailSizer.Add(rightdetailSizer)

        # # SEED
        ###################
        self.seedtitle = wxStaticText(panel, -1, "# Connected seed :")
        self.numseed   = wxStaticText(panel, -1, "0")        
        leftdetailSizer.Add(self.seedtitle)
        leftdetailSizer.Add(self.numseed)
        
        # # Peers
        ###################
        self.numpeer  = wxStaticText(panel, -1, "0")        
        leftdetailSizer.Add(wxStaticText(panel, -1, "# Connected peer :"))
        leftdetailSizer.Add(self.numpeer)

        # # Seeing Copies
        ##################
        self.numcopy  = wxStaticText(panel, -1, "0")        
        rightdetailSizer.Add(wxStaticText(panel, -1, "# Seeing copies :"))
        rightdetailSizer.Add(self.numcopy)
        
        # Avg peer
        ##################
        self.avgprogress  = wxStaticText(panel, -1, "0 %")        
        rightdetailSizer.Add(wxStaticText(panel, -1, "Avg peer progress :"))
        rightdetailSizer.Add(self.avgprogress)
        
        
        # Download Size
        ##################
        self.downsize  = wxStaticText(panel, -1, "0 MB")        
        leftdetailSizer.Add(wxStaticText(panel, -1, "Downloaded size :"))
        leftdetailSizer.Add(self.downsize)
        
        # Upload Size
        ##################
        self.upsize = wxStaticText(panel, -1, "0 MB")        
        rightdetailSizer.Add(wxStaticText(panel, -1, "Uploaded size : "))
        rightdetailSizer.Add(self.upsize)

        # Total Speed
        ##################
        self.totalspeed  = wxStaticText(panel, -1, "0 kB/s")        
        leftdetailSizer.Add(wxStaticText(panel, -1, "Total speed : "))
        leftdetailSizer.Add(self.totalspeed)

        # Shad0w Advance display
        #####################
        def StaticText(text): #, font = self.FONT, underline = false, color = None, panel = panel):
            x = wxStaticText(panel, -1, text, style = wxALIGN_LEFT)
            #x.SetFont(wxFont(font, wxDEFAULT, wxNORMAL, wxNORMAL, underline))
            #if color is not None:
            #    x.SetForegroundColour(color)
            return x
        
        try:    # get system font width
            fw = wxSystemSettings_GetFont(wxSYS_DEFAULT_GUI_FONT).GetPointSize()+1
        except:
            fw = wxSystemSettings_GetFont(wxSYS_SYSTEM_FONT).GetPointSize()+1


        spewList = wxListCtrl(panel, -1, wxPoint(-1,-1), (fw*60,200), wxLC_REPORT|wxLC_HRULES|wxLC_VRULES)
        self.spewList = spewList
        colSizer.Add(spewList, -1, wxEXPAND)


        colSizer.Add(StaticText(''))
        self.storagestats1 = StaticText('')
        self.storagestats2 = StaticText('')
        colSizer.Add(self.storagestats1, -1, wxEXPAND)
        colSizer.Add(self.storagestats2, -1, wxEXPAND)
        colSizer.Add(StaticText(''))

        buttonSizer = wxFlexGridSizer (cols = 5, hgap = 20)

        scrapeButton = wxButton(panel, -1, "Get #Seed/#Peer")
        buttonSizer.Add(scrapeButton)

        reannounceButton = wxButton(panel, -1, 'Manual Announce')
        buttonSizer.Add (reannounceButton)

        extannounceButton = wxButton(panel, -1, 'External Announce')
        buttonSizer.Add (extannounceButton)

        bgallocButton = wxButton(panel, -1, 'Finish Allocation')
        buttonSizer.Add (bgallocButton)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -