?? abcdetailframe.py
字號:
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 + -