class DownloaderDlg(QDialog): def __init__(self, parent=None, conf=None, tt=''): super(DownloaderDlg, self).__init__(parent) self.conf = conf self.downloader = None self.ui= Ui_Dialog() self.ui.setupUi(self) self.when_title(tt) def start(self): # title = _fromQString(self.windowTitle()) bid = _fromQString(self.ui.lineEdit_id.text()) name = _fromQString(self.ui.lineEdit_name.text()) self.when_message('Title: %s' % self.windowTitle().toUtf8()) self.when_message('ID: %s' % bid) self.when_message('Name: %s' % name) self.when_message('downloading...') self.when_message('---------') proxy = self.conf.getProxy() self.downloader = Downloader(bid, name, proxy[0], proxy[1], proxy[2]) self.downloader.bind(Downloader.ON_STOP, self.cbStop) self.downloader.bind(Downloader.EVT_LOG, self.cbLog) self.downloader.bind(Downloader.EVT_PROG, self.cbProgress) self.downloader.start() def stop(self): if self.downloader: self.downloader.stop() self.downloader = None def cbStop(self, event): self.when_progress(100) self.downloader = None def cbLog(self, event, msgStr): self.when_message(msgStr) def cbProgress(self, event, prog): self.when_progress(prog) def setId(self, id): self.when_id(id) def setName(self, name): self.when_name(name) #### slots & signals ################################################################################################## def do_start(self, checked): ''' start download process ''' if checked: print 'checked' self.start() else: print 'unchecked' self.stop() def do_stop(self): ''' stop download process ''' print 'destroy' self.stop() def when_id(self, id): self.emit(QtCore.SIGNAL('when_id(QString)'), id) def when_name(self, name): self.emit(QtCore.SIGNAL('when_name(QString)'), name) def when_progress(self, prog): self.emit(QtCore.SIGNAL('when_progress(int)'), prog) def when_message(self, msgStr): self.emit(QtCore.SIGNAL('when_message(QString)'), _fromUtf8(msgStr)) def when_title(self, title): self.emit(QtCore.SIGNAL('when_title(QString)'), title)
class DownloaderWnd(wx.Frame): def __init__(self, conf, tt=""): self.conf = conf wx.Frame.__init__(self, None, title=tt, size=(640, 170)) panel = wx.Panel(self) lblId = wx.StaticText(panel, -1, "ID: ", style=1) lblName = wx.StaticText(panel, -1, "Name: ", style=1) self.teId = wx.TextCtrl(panel, style=wx.TE_PROCESS_ENTER) self.teName = wx.TextCtrl(panel, style=wx.TE_PROCESS_ENTER) self.btnDownload = wx.ToggleButton(panel, label="Download") self.btnDownload.Bind(wx.EVT_TOGGLEBUTTON, self.start) self.teName.Bind(wx.EVT_TEXT_ENTER, self.OnKeyDown) hbox = wx.BoxSizer() hbox.Add(lblId, proportion=0, flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL, border=5) hbox.Add(self.teId, proportion=1, flag=wx.EXPAND) hbox.Add(lblName, proportion=0, flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL, border=5) hbox.Add(self.teName, proportion=1, flag=wx.EXPAND) hbox.Add(self.btnDownload, proportion=0, flag=wx.LEFT, border=5) self.teInfo = wx.TextCtrl(panel, style=wx.TE_MULTILINE | wx.HSCROLL) self.gauge = wx.Gauge(panel, -1, 100, style=wx.GA_PROGRESSBAR) vbox = wx.BoxSizer(wx.VERTICAL) vbox.Add(hbox, proportion=0, flag=wx.EXPAND | wx.ALL, border=5) vbox.Add(self.gauge, proportion=0, flag=wx.EXPAND | wx.ALL, border=5) vbox.Add(self.teInfo, proportion=1, flag=wx.EXPAND | wx.LEFT | wx.BOTTOM | wx.RIGHT, border=5) panel.SetSizer(vbox) def OnExit(self, event): self.stop(event) self.Close(True) def OnKeyDown(self, event): self.start(event) def start(self, event): if self.btnDownload.GetValue(): self.gauge.SetValue(10) self.teInfo.Clear() bid = str(self.teId.GetValue()) name = str(self.teName.GetValue()) self.addLog("ID: %s\n" % bid) self.addLog("Name: %s\n" % name) self.addLog("downloading...\n") self.addLog("---------\n") proxy = self.conf.getProxy() self.downloader = Downloader(bid, name, proxy[0], proxy[1], proxy[2]) self.downloader.bind(Downloader.ON_STOP, self.cbStop) self.downloader.bind(Downloader.EVT_LOG, self.cbLog) self.downloader.bind(Downloader.EVT_PROG, self.cbProgress) self.downloader.start() else: self.downloader.stop() def stop(self, event): self.downloader.stop() def addLog(self, log): self.teInfo.AppendText(log) def cbStop(self, event): wx.CallAfter(self.gauge.SetValue, 100) def cbLog(self, event, str): wx.CallAfter(self.addLog, str) def cbProgress(self, event, prog): wx.CallAfter(self.gauge.SetValue, prog) def setId(self, id): self.teId.SetValue(id) def setName(self, name): self.teName.SetValue(name)
class DownloaderWnd(wx.Frame): def __init__(self, conf, tt=''): self.conf = conf wx.Frame.__init__(self, None, title=tt, size=(640, 170)) panel = wx.Panel(self) lblId = wx.StaticText(panel, -1, "ID: ", style=1) lblName = wx.StaticText(panel, -1, "Name: ", style=1) self.teId = wx.TextCtrl(panel, style=wx.TE_PROCESS_ENTER) self.teName = wx.TextCtrl(panel, style=wx.TE_PROCESS_ENTER) self.btnDownload = wx.ToggleButton(panel, label='Download') self.btnDownload.Bind(wx.EVT_TOGGLEBUTTON, self.start) self.teName.Bind(wx.EVT_TEXT_ENTER, self.OnKeyDown) hbox = wx.BoxSizer() hbox.Add(lblId, proportion=0, flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL, border=5) hbox.Add(self.teId, proportion=1, flag=wx.EXPAND) hbox.Add(lblName, proportion=0, flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL, border=5) hbox.Add(self.teName, proportion=1, flag=wx.EXPAND) hbox.Add(self.btnDownload, proportion=0, flag=wx.LEFT, border=5) self.teInfo = wx.TextCtrl(panel, style=wx.TE_MULTILINE | wx.HSCROLL) self.gauge = wx.Gauge(panel, -1, 100, style=wx.GA_PROGRESSBAR) vbox = wx.BoxSizer(wx.VERTICAL) vbox.Add(hbox, proportion=0, flag=wx.EXPAND | wx.ALL, border=5) vbox.Add(self.gauge, proportion=0, flag=wx.EXPAND | wx.ALL, border=5) vbox.Add(self.teInfo, proportion=1, flag=wx.EXPAND | wx.LEFT | wx.BOTTOM | wx.RIGHT, border=5) panel.SetSizer(vbox) def OnExit(self, event): self.stop(event) self.Close(True) def OnKeyDown(self, event): self.start(event) def start(self, event): if self.btnDownload.GetValue(): self.gauge.SetValue(10) self.teInfo.Clear() bid = str(self.teId.GetValue()) name = str(self.teName.GetValue()) self.addLog('ID: %s\n' % bid) self.addLog('Name: %s\n' % name) self.addLog('downloading...\n') self.addLog('---------\n') proxy = self.conf.getProxy() self.downloader = Downloader(bid, name, proxy[0], proxy[1], proxy[2]) self.downloader.bind(Downloader.ON_STOP, self.cbStop) self.downloader.bind(Downloader.EVT_LOG, self.cbLog) self.downloader.bind(Downloader.EVT_PROG, self.cbProgress) self.downloader.start() else: self.downloader.stop() def stop(self, event): self.downloader.stop() def addLog(self, log): self.teInfo.AppendText(log) def cbStop(self, event): wx.CallAfter(self.gauge.SetValue, 100) def cbLog(self, event, str): wx.CallAfter(self.addLog, str) def cbProgress(self, event, prog): wx.CallAfter(self.gauge.SetValue, prog) def setId(self, id): self.teId.SetValue(id) def setName(self, name): self.teName.SetValue(name)