📄 abcdetailframe.py
字号:
okButton = wxButton(panel, -1, 'Ok')
buttonSizer.Add (okButton)
colSizer.Add (buttonSizer, 0, wxALIGN_CENTER)
colSizer.Add(StaticText(''))
colSizer.AddGrowableCol(0)
colSizer.AddGrowableRow(4)
panel.SetSizer(colSizer)
panel.SetAutoLayout(true)
spewList.InsertColumn(0, "Optimistic Unchoke", format=wxLIST_FORMAT_CENTER, width=fw*2)
spewList.InsertColumn(1, "IP", width=fw*11)
spewList.InsertColumn(2, "Local/Remote", format=wxLIST_FORMAT_CENTER, width=fw*3)
spewList.InsertColumn(3, "Up", format=wxLIST_FORMAT_RIGHT, width=fw*6)
spewList.InsertColumn(4, "Interested", format=wxLIST_FORMAT_CENTER, width=fw*2)
spewList.InsertColumn(5, "Choking", format=wxLIST_FORMAT_CENTER, width=fw*2)
spewList.InsertColumn(6, "Down", format=wxLIST_FORMAT_RIGHT, width=fw*6)
spewList.InsertColumn(7, "Interesting", format=wxLIST_FORMAT_CENTER, width=fw*2)
spewList.InsertColumn(8, "Choked", format=wxLIST_FORMAT_CENTER, width=fw*2)
spewList.InsertColumn(9, "Snubbed", format=wxLIST_FORMAT_CENTER, width=fw*2)
spewList.InsertColumn(10, "Downloaded", format=wxLIST_FORMAT_RIGHT, width=fw*7)
spewList.InsertColumn(11, "Uploaded", format=wxLIST_FORMAT_RIGHT, width=fw*7)
spewList.InsertColumn(12, "Completed", format=wxLIST_FORMAT_RIGHT, width=fw*6)
spewList.InsertColumn(13, "Peer Download Speed", format=wxLIST_FORMAT_RIGHT, width=fw*6)
def getScrape(self, frame = self):
# If torrent is not active, why u want to get SCRAPE !!
if frame.parent.queue.isProcActive(frame.index) == False:
return
# Get Meta info from Scheduler
metainfo = frame.parent.queue.getResponse(frame.index)
if metainfo is None:
return
# If last request scrape data is less than 1 min return
if (time() - frame.parent.queue.getLastScrape(frame.index)) < 60:
return
# Perform get scrape operation
##############################################
info = metainfo['info']
info_hash = sha(bencode(info))
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
if announce is None and announce_list is not None :
announce = annouce_list[0][0]
if announce is not None:
p = re.compile( '(.*/)[^/]+')
surl = p.sub (r'\1', announce)
surl = surl + "scrape?info_hash="
info_hash_hex = info_hash.hexdigest()
hashlen = len(info_hash_hex)
for i in range(0, hashlen):
if (i % 2 == 0):
surl = surl + "%"
surl = surl + info_hash_hex[i]
# connect scrape URL
try :
h = urlopen(surl)
scrapedata = h.read()
h.close()
scrapedata = bdecode(scrapedata)
scrapedata = scrapedata['files']
for i in scrapedata.keys():
if binascii.b2a_hex(i) == info_hash_hex:
currentpeer = str(scrapedata[i]['incomplete'])
currentseed = str(scrapedata[i]['complete'])
break
# Tell scheduler to update in ABCengine
frame.parent.queue.updateScrapeData(frame.index, currentpeer, currentseed)
except:
frame.parent.queue.updateScrapeData(frame.index, "?", "?")
else:
return
EVT_BUTTON(self, scrapeButton.GetId(), getScrape)
def reannounce(self, frame = self):
frame.parent.queue.reannounce(frame.index)
EVT_BUTTON(self, reannounceButton.GetId(), reannounce)
self.advextannouncebox = None
def reannounce_external(self, frame = self):
if (frame.advextannouncebox is not None):
try:
frame.advextannouncebox.Close ()
except wxPyDeadObjectError, e:
frame.advextannouncebox = None
frame.advextannouncebox = wxFrame(None, -1, 'External Announce', size = (1,1))
if (sys.platform == 'win32'):
frame.advextannouncebox.SetIcon(frame.icon)
panel = wxPanel(frame.advextannouncebox, -1)
fullsizer = wxFlexGridSizer(cols = 1, vgap = 13)
msg = wxStaticText(panel, -1, "Enter tracker anounce URL:")
fullsizer.Add(msg)
frame.advexturl = wxTextCtrl(parent = panel, id = -1, value = '',
size = (255, 20), style = wxTE_PROCESS_TAB)
frame.advexturl.SetValue(frame.parent.queue.getlastexternalannounce(frame.index))
fullsizer.Add(frame.advexturl)
buttonSizer = wxFlexGridSizer (cols = 2, hgap = 10)
okButton = wxButton(panel, -1, 'OK')
buttonSizer.Add (okButton)
cancelButton = wxButton(panel, -1, 'Cancel')
buttonSizer.Add (cancelButton)
fullsizer.Add (buttonSizer, 0, wxALIGN_CENTER)
border = wxBoxSizer(wxHORIZONTAL)
border.Add(fullsizer, 1, wxEXPAND | wxALL, 4)
panel.SetSizer(border)
panel.SetAutoLayout(true)
def ok(self, frame = frame):
special = frame.advexturl.GetValue()
if special:
frame.parent.queue.setlastexternalannounce(frame.index, special)
frame.parent.queue.reannounce(frame.index, special)
frame.advextannouncebox.Close()
EVT_BUTTON(frame.advextannouncebox, okButton.GetId(), ok)
def cancel(self, frame = frame):
frame.advextannouncebox.Close()
EVT_BUTTON(frame.advextannouncebox, cancelButton.GetId(), cancel)
def kill(self, frame = frame):
frame.advextannouncebox.Destroy()
frame.advextannouncebox = None
EVT_CLOSE(frame.advextannouncebox, kill)
frame.advextannouncebox.Show ()
fullsizer.Fit(panel)
frame.advextannouncebox.Fit()
EVT_BUTTON(self, extannounceButton.GetId(), reannounce_external)
def bgalloc(self, frame = self):
frame.parent.queue.bgalloc(frame.index)
EVT_BUTTON(self, bgallocButton.GetId(), bgalloc)
border = wxBoxSizer(wxHORIZONTAL)
border.Add(colSizer, 1, wxEXPAND | wxALL, 15)
self.Show ()
#border.Fit(panel)
#self.Fit()
def trackerurl(self, turl = turl):
Thread(target = open_new(turl)).start()
EVT_LEFT_DOWN(trackerUrl, trackerurl)
EVT_CLOSE(self, self.onKillDetail)
EVT_BUTTON(self, okButton.GetId(), self.onKillDetail)
def changeIndex(self, index):
self.index = index
def onKillDetail(self, event):
self.killAdv()
def killAdv(self):
self.parent.queue.deleteDetailWin(self.index)
if (self.advextannouncebox is not None):
try:
self.advextannouncebox.Close ()
except wxPyDeadObjectError, e:
pass
self.advextannouncebox = None
self.Destroy()
def onPause(self):
self.seedtitle.SetLabel("# Connected seed :")
self.numseed.SetLabel("0")
self.numpeer.SetLabel("0")
self.numcopy.SetLabel("0")
self.avgprogress.SetLabel("0 %")
#self.downsize.SetLabel("0 MB")
#self.upsize.SetLabel("0 MB")
self.totalspeed.SetLabel("0 kB/s")
num = self.spewList.GetItemCount()
for i in range(0, num):
self.spewList.DeleteItem(0)
self.storagestats1.SetLabel('')
self.storagestats2.SetLabel('')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -