Exemple #1
0
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)
Exemple #2
0
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)
Exemple #3
0
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)