Browse Source

Fix IndexError SignalHandler.py handle()

doc-issue-template
MrS0m30n3 11 years ago
parent
commit
8919a7d838
2 changed files with 29 additions and 17 deletions
  1. 44
      youtube_dl_gui/SignalHandler.py
  2. 2
      youtube_dl_gui/YoutubeDLGUI.py

44
youtube_dl_gui/SignalHandler.py

@ -13,7 +13,11 @@ class DownloadHandler():
self.finished = False
self.closed = False
self.error = False
self.handlers = []
self.init_handlers()
def init_handlers(self):
''' Initialise handlers '''
self.handlers = [None for i in range(self.ListCtrl.ListIndex)]
def _has_closed(self):
return self.closed
@ -24,26 +28,32 @@ class DownloadHandler():
def _has_error(self):
return self.error
def _add_empty_handler(self):
self.handlers.append(None)
def handle(self, msg):
''' Handles msg base to Signals.txt '''
pack = msg.data
index = pack.index
''' Manage global index = -1 '''
if index == -1:
if pack.header == 'close':
self.closed = True
elif pack.header == 'finish':
self.finished = True
if pack.index == -1:
self.global_handler(pack)
else:
''' Manage handlers for its index '''
if index == len(self.handlers):
''' Create new IndexDownloadHandler and add it to handlers '''
self.handlers.append(IndexDownloadHandler(self.ListCtrl, index))
''' Let IndexDownloadHandler handle message data for current index '''
self.handlers[index].handle(pack)
if self.handlers[index].has_error():
self.error = True
self.index_handler(pack)
def global_handler(self, pack):
''' Manage global index = -1 '''
if pack.header == 'close':
self.closed = True
elif pack.header == 'finish':
self.finished = True
def index_handler(self, pack):
''' Manage handlers base on index '''
if self.handlers[pack.index] == None:
self.handlers[pack.index] = IndexDownloadHandler(self.ListCtrl, pack.index)
self.handlers[pack.index].handle(pack)
if self.handlers[pack.index].has_error():
self.error = True
class IndexDownloadHandler():
def __init__(self, ListCtrl, index):

2
youtube_dl_gui/YoutubeDLGUI.py

@ -250,6 +250,8 @@ class MainFrame(wx.Frame):
if url not in self.urlList and url != '':
''' Add url into original download list '''
self.urlList.append(url)
''' Add handler for url '''
self.downloadHandler._add_empty_handler()
''' Add url into statusList '''
self.statusList._add_item(url)
''' Retrieve last item as {url:url, index:indexNo} '''

Loading…
Cancel
Save