📄 scheduler.py
字号:
dlg.Destroy()
else:
#check if super seed already run
if self.proctab[index][self.ABCENGINE_ADR].superseed:
dlg = wxMessageDialog(self.parent, "Super-seed mode is already enable" , "Error!!", wxICON_ERROR)
dlg.ShowModal()
dlg.Destroy()
else:
#dialogbox warnning after use this mode can't go back
dlg = wxMessageDialog(self.parent, """
This option greatly reduces the torrent's efficiency.
The only people who should be using super-seed are those
doing initial seeding or re-seeding.
Once you enable super-seed mode, you can't turn it off
unless you use "pause", "queue", "remove" operations.
"""
, "Warning!!", wxOK|wxCANCEL)
if dlg.ShowModal() != wxID_OK:
return
else:
#Enter super-seed mode
self.proctab[index][self.ABCENGINE_ADR].superseed = true
if self.proctab[index][self.ABCENGINE_ADR].config is None:
self.proctab[index][self.ABCENGINE_ADR].config = self.proctab[index][self.ABCENGINE_ADR].dow.getConfig()
self.proctab[index][self.ABCENGINE_ADR].dow.set_super_seed()# one way change, don't go back
#change BTstatus to super-seeding
rank = self.guiman.getRankfromID(6) #BT status: ID=6
if rank != -1:
self.list.SetStringItem(index, rank, "super-seeding")
#self.list.SetStringItem(index, 2, "super-seeding")
else:
#dialogbox running torrent before using super-seed mode
dlg = wxMessageDialog(self.parent, "You must running this torrent before using Super-Seed mode" , "Error!!", wxICON_ERROR)
dlg.ShowModal()
dlg.Destroy()
# def procCANCEL(self, index): #Call only when cancel from choosing file at first time
# indexstatus = self.proctab[index][self.LISTINDEX]
# if self.abcparams['removetorrent'] == "1":
# try:
# remove(self.proctab[index][self.SRC])
# except:
# pass
# if self.proctab[index][self.DETAIL_ADR] is not None:
# self.proctab[index][self.DETAIL_ADR].killAdv()
# if indexstatus >= 0 :
# self.parent.list.DeleteItem(index)
# self.proctab[index][self.DOWNSIZE], self.proctab[index][self.UPSIZE] = self.proctab[index][self.ABCENGINE_ADR].getDownUpSize()
# self.proctab[index][self.LISTINDEX] = -1
# self.proctab[index][self.DONEFLAG] = None
# if self.proctab[index][self.ABCENGINE_ADR].timer != None:
# self.proctab[index][self.ABCENGINE_ADR].timer.cancel()
# self.proctab[index][self.ABCENGINE_ADR].fin = true
# self.proctab[index][self.ABCENGINE_ADR].done(None)
# self.proctab[index][self.ABCENGINE_ADR] = None
# if index != self.maxtorrent - 1:
# for i in range(index+1, self.maxtorrent):
# if self.proctab[i][self.LISTINDEX] == -1:
# self.proctab[i - 1][0] = -1
# self.proctab[i - 1][1] = None
# self.proctab[i - 1][2] = ""
# self.proctab[i - 1][3] = ""
# self.proctab[i - 1][4] = ""
# self.proctab[i - 1][5] = 2
# self.proctab[i - 1][6] = None
# self.proctab[i - 1][7] = ""
# self.proctab[i - 1][8] = ""
# self.proctab[i - 1][9] = ""
# self.proctab[i - 1][10] = ""
# self.proctab[i - 1][11] = ""
# self.proctab[i - 1][12] = ""
# self.proctab[i - 1][13] = ""
# self.proctab[i - 1][14] = None
# self.proctab[i - 1][15] = 0.0
# self.proctab[i - 1][16] = 0.0
# break
# if self.proctab[i][0] > 0:
# self.proctab[i - 1][0] = i - 1
# else:
# self.proctab[i - 1][0] = self.proctab[i][0] #actually it's -2
#
# self.proctab[i - 1][1] = self.proctab[i][1]
# self.proctab[i - 1][2] = self.proctab[i][2]
# self.proctab[i - 1][3] = self.proctab[i][3]
# self.proctab[i - 1][4] = self.proctab[i][4]
# self.proctab[i - 1][5] = self.proctab[i][5]
# self.proctab[i - 1][6] = self.proctab[i][6]
# self.proctab[i - 1][7] = self.proctab[i][7]
# self.proctab[i - 1][8] = self.proctab[i][8]
# self.proctab[i - 1][9] = self.proctab[i][9]
# self.proctab[i - 1][10] = self.proctab[i][10]
# self.proctab[i - 1][11] = self.proctab[i][11]
# self.proctab[i - 1][12] = self.proctab[i][12]
# self.proctab[i - 1][13] = self.proctab[i][13]
# self.proctab[i - 1][14] = self.proctab[i][14]
# self.proctab[i - 1][15] = self.proctab[i][15]
# self.proctab[i - 1][16] = self.proctab[i][16]
# if self.proctab[i - 1][self.ABCENGINE_ADR] != None:
# self.proctab[i - 1][self.ABCENGINE_ADR].changeIndex(i - 1)
# self.proctab[i - 1][self.ABCENGINE_ADR].changeDoneFlag(self.proctab[i][self.DONEFLAG])
# self.proctab[i - 1][self.ABCENGINE_ADR].changePrio(self.proctab[i][self.PRIO])
#
# self.proctab[self.maxtorrent - 1][0] = -1
# self.proctab[self.maxtorrent - 1][1] = None
# self.proctab[self.maxtorrent - 1][2] = ""
# self.proctab[self.maxtorrent - 1][3] = ""
# self.proctab[self.maxtorrent - 1][4] = ""
# self.proctab[self.maxtorrent - 1][5] = 2
# self.proctab[self.maxtorrent - 1][6] = None
# self.proctab[self.maxtorrent - 1][7] = ""
# self.proctab[self.maxtorrent - 1][8] = ""
# self.proctab[self.maxtorrent - 1][9] = ""
# self.proctab[self.maxtorrent - 1][10] = ""
# self.proctab[self.maxtorrent - 1][11] = ""
# self.proctab[self.maxtorrent - 1][12] = ""
# self.proctab[self.maxtorrent - 1][13] = ""
# self.proctab[self.maxtorrent - 1][14] = None
# self.proctab[self.maxtorrent - 1][15] = 0.0
# self.proctab[self.maxtorrent - 1][16] = 0.0
# self.updateTorrentList()
# self.invokeLater(self.Scheduler)
def procRESUME(self, index):
indexstatus = self.proctab[index][self.LISTINDEX]
if indexstatus != -2: #ignore resume active process
return
self.proctab[index][self.STATUS] = "queue"
self.updateTorrentList()
self.currentproc += 1
self.runProc(index, 0)
#self.invokeLater(self.Scheduler) don't need scheduler
def procQUEUE(self, index, firsttime_flag):
indexstatus = self.proctab[index][self.LISTINDEX]
if indexstatus == -1:
return
if self.proctab[index][self.DETAIL_ADR] is not None:
self.proctab[index][self.DETAIL_ADR].onPause()
oldstatus = self.proctab[index][self.STATUS]
self.proctab[index][self.STATUS] = "queue"
if indexstatus != -2:
self.proctab[index][self.DOWNSIZE], self.proctab[index][self.UPSIZE] = self.proctab[index][self.ABCENGINE_ADR].getDownUpSize()
self.proctab[index][self.LISTINDEX] = -2
self.proctab[index][self.DONEFLAG] = None
if self.proctab[index][self.ABCENGINE_ADR].timer != None:
self.proctab[index][self.ABCENGINE_ADR].timer.cancel()
self.proctab[index][self.ABCENGINE_ADR].fin = true
self.proctab[index][self.ABCENGINE_ADR].done(None)
self.proctab[index][self.ABCENGINE_ADR] = None
if oldstatus != "completed" and firsttime_flag == 0:
self.currentproc -= 1
self.updateTorrentList()
self.invokeLater(self.Scheduler)
def addNewProc(self, src, forceasklocation): #from 3 sources, add from file, add from URL, autoadd
#from file, URL maybe down torrent.lst from addProc
# change at onChooseFile make sure they choose dest
try:
metainfo_file = open(src, 'rb')
metainfo = bdecode(metainfo_file.read())
metainfo_file.close()
info = metainfo['info']
except :
metainfo_file.close()
dlg = wxMessageDialog(self.parent, "Failed : Invalid torrent file." , "Error!!", wxICON_ERROR)
dlg.ShowModal()
dlg.Destroy()
try:
remove(src)
except:
pass
return
# No default directory
if self.abcparams['setdefaultfolder'] == '0' or forceasklocation:
if info.has_key('length'): #1 file for this torrent
dl = wxFileDialog(self.parent, 'Choose file to save as, pick a partial download to resume (%.1f MB)'%(info['length']/(1<<20)), '', info['name'], '*.*', wxSAVE)
else: # Directory torrent
file_length = 0
for x in info['files']:
file_length += x['length']
dl = wxDirDialog(self.parent, 'Choose a directory to save to, pick a partial download to resume (%.1f MB)'%(file_length/(1<<20)), path.join(getcwd(), info['name']), style = wxDD_DEFAULT_STYLE | wxDD_NEW_DIR_BUTTON)
if dl.ShowModal() != wxID_OK:
if self.abcparams['removetorrent'] == "1":
try:
remove(src)
except:
pass
return
else:
getslot = 0
for i in range(0, self.maxtorrent):
if self.proctab[i][self.LISTINDEX] == -1:
self.proctab[i][self.LISTINDEX] = -2 # set queue status
self.proctab[i][self.ABCENGINE_ADR] = None # @ ABCEngine
self.proctab[i][self.SRC] = src # .torrent source file
self.proctab[i][self.DEST] = dl.GetPath() # destination download file
self.proctab[i][self.STATUS] = "queue"
self.proctab[i][self.PRIO] = 2 # Priority "Normal"
self.proctab[i][self.DONEFLAG] = None # Done flag
self.proctab[i][self.FILENAME] = info['name']
self.proctab[i][self.MAXUPLOAD] = self.abcparams['maxupload']
self.proctab[i][self.MAXUPLOADRATE] = self.abcparams['maxuploadrate']
self.proctab[i][self.UPLOADOPT] = self.abcparams['uploadoption']
self.proctab[i][self.UPLOADTIMEH] = self.abcparams['uploadtimeh']
self.proctab[i][self.UPLOADTIMEM] = self.abcparams['uploadtimem']
self.proctab[i][self.UPLOADRATIO] = self.abcparams['uploadratio']
self.proctab[i][self.DETAIL_ADR] = None
self.proctab[i][self.DOWNSIZE] = 0.0
self.proctab[i][self.UPSIZE] = 0.0
getslot = 1
numslot = i
break
if getslot == 0:
return
self.parent.list.InsertStringItem(numslot, "")
#Add Status info in List
for rank in range(0, self.guiman.getNumCol()):
colid = self.guiman.getIDfromRank(rank)
if colid == 4:
self.parent.list.SetStringItem(numslot, rank, self.proctab[numslot][self.FILENAME])
elif colid == 6:
self.parent.list.SetStringItem(numslot, rank, "queue")
elif colid == 7:
self.parent.list.SetStringItem(numslot, rank, self.priotext[self.proctab[numslot][self.PRIO]])
else:
self.parent.list.SetStringItem(numslot, rank, "")
self.updateTorrentList()
self.Scheduler()
else:
getslot = 0
for i in range(0, self.maxtorrent):
if self.proctab[i][self.LISTINDEX] == -1:
self.proctab[i][self.LISTINDEX] = -2 # set queue status
self.proctab[i][self.ABCENGINE_ADR] = None # @ ABCEngine
self.proctab[i][self.SRC] = src # .torrent source file
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -