def finishDownloadCallback(self, pkgName, downloadStatus):
        '''Finish download, start new download if have download in queue.'''
        # Remove pkgName from download list.
        utils.removeFromList(self.downloadingQueue, pkgName)
        del self.downloadingChannel[pkgName]

        # Call back if download success.
        if downloadStatus in [
                DOWNLOAD_STATUS_COMPLETE, DOWNLOAD_STATUS_DONT_NEED
        ]:
            self.finishCallback(pkgName)
        elif downloadStatus == DOWNLOAD_STATUS_FAILED:
            self.failedCallback(pkgName)
        elif downloadStatus == DOWNLOAD_STATUS_TIMEOUT:
            print "Download %s timeout." % (pkgName)
            self.failedCallback(pkgName)
        elif downloadStatus == DOWNLOAD_STATUS_STOP:
            print "Download %s stop." % (pkgName)
        elif downloadStatus == DOWNLOAD_STATUS_PAUSE:
            print "Download %s pause." % (pkgName)

        # Start new download thread if download list's length is not reach max limit.
        if len(self.downloadingQueue) < self.maxConcurrentDownloads and len(
                self.waitQueue) > 0:
            self.startDownloadThread(self.waitQueue.pop(0))
 def stopDownload(self, pkgName):
     '''Stop download.'''
     # Send pause signal if package at download list.
     if pkgName in self.downloadingQueue:
         if self.downloadingChannel.has_key(pkgName):
             # Pause download.
             self.downloadingChannel[pkgName].signalChannel.put('PAUSE')
         else:
             print "Impossible: downloadingChannel not key '%s'" % (pkgName)
     # Otherwise just simple remove from download queue.
     else:
         utils.removeFromList(self.waitQueue, pkgName)
 def stopDownload(self, pkgName):
     '''Stop download.'''
     # Send pause signal if package at download list.
     if pkgName in self.downloadingQueue:
         if self.downloadingChannel.has_key(pkgName):
             # Pause download.
             self.downloadingChannel[pkgName].signalChannel.put('PAUSE')
         else:
             print "Impossible: downloadingChannel not key '%s'" % (pkgName)
     # Otherwise just simple remove from download queue.
     else:
         utils.removeFromList(self.waitQueue, pkgName)
 def removePkgFromIgnoreList(self, pkgNames):
     '''Remove package in ignore list.'''
     for pkgName in pkgNames:
         # Remove package from ignore list.
         utils.removeFromList(self.ignorePkgs, pkgName)
             
         # Add package to upgradable list if package upgradable.
         if self.cache.has_key(pkgName) and self.cache[pkgName].pkg.is_upgradable:
             self.upgradablePkgs.append(pkgName)
         
     # Record.
     self.upgradablePkgs = self.sortPackages(self.upgradablePkgs)
             
     # Update file content.
     writeFile("./ignorePkgs", str(self.ignorePkgs))
    def finishAction(self, pkgName, actionType):
        '''Finish action, start new action if have action in queue.'''
        # Remove finish action.
        utils.removeFromList(self.queue, (pkgName, actionType))

        # Start new action if queue has other request.
        if len(self.queue) > 0:
            (newPkgName, newActionType) = self.queue.pop(0)

            self.startActionThread(newPkgName, newActionType)
        # Otherwise release lock.
        else:
            self.lock = False
            self.pkgName = None
            self.actionType = None
    def finishAction(self, pkgName, actionType):
        '''Finish action, start new action if have action in queue.'''
        # Remove finish action.
        utils.removeFromList(self.queue, (pkgName, actionType))

        # Start new action if queue has other request.
        if len(self.queue) > 0:
            (newPkgName, newActionType) = self.queue.pop(0)

            self.startActionThread(newPkgName, newActionType)
        # Otherwise release lock.
        else:
            self.lock = False
            self.pkgName = None
            self.actionType = None
 def removePkgFromIgnoreList(self, pkgNames):
     '''Remove package in ignore list.'''
     for pkgName in pkgNames:
         # Remove package from ignore list.
         utils.removeFromList(self.ignorePkgs, pkgName)
             
         # Add package to upgradable list if package upgradable.
         if self.cache.has_key(pkgName) and self.cache[pkgName].pkg.is_upgradable:
             self.upgradablePkgs.append(pkgName)
         
     # Record.
     self.upgradablePkgs = self.sortPackages(self.upgradablePkgs)
             
     # Update file content.
     writeFile("./ignorePkgs", str(self.ignorePkgs))
 def finishDownloadCallback(self, pkgName, downloadStatus):
     '''Finish download, start new download if have download in queue.'''
     # Remove pkgName from download list.
     utils.removeFromList(self.downloadingQueue, pkgName)
     del self.downloadingChannel[pkgName]
             
     # Call back if download success.
     if downloadStatus in [DOWNLOAD_STATUS_COMPLETE, DOWNLOAD_STATUS_DONT_NEED]:
         self.finishCallback(pkgName)
     elif downloadStatus == DOWNLOAD_STATUS_FAILED:
         self.failedCallback(pkgName)
     elif downloadStatus == DOWNLOAD_STATUS_TIMEOUT:
         print "Download %s timeout." % (pkgName)
         self.failedCallback(pkgName)
     elif downloadStatus == DOWNLOAD_STATUS_STOP:
         print "Download %s stop." % (pkgName)
     elif downloadStatus == DOWNLOAD_STATUS_PAUSE:
         print "Download %s pause." % (pkgName)
     
     # Start new download thread if download list's length is not reach max limit.
     if len(self.downloadingQueue) < self.maxConcurrentDownloads and len(self.waitQueue) > 0:
         self.startDownloadThread(self.waitQueue.pop(0))
 def unselectPkg(self, pkgName):
     '''Un-select package.'''
     utils.removeFromList(self.selectList, pkgName)
 def removePkgFromUninstallableList(self, pkgName):
     '''Remove package from uninstallable list.'''
     utils.removeFromList(self.uninstallablePkgs, pkgName)
 def removePkgFromUpgradableList(self, pkgName):
     '''Remove package from upgradable list.'''
     utils.removeFromList(self.upgradablePkgs, pkgName)
 def unselectPkg(self, pkgName):
     '''Un-select package.'''
     utils.removeFromList(self.selectList, pkgName)
 def removePkgFromUninstallableList(self, pkgName):
     '''Remove package from uninstallable list.'''
     utils.removeFromList(self.uninstallablePkgs, pkgName)
 def removePkgFromUpgradableList(self, pkgName):
     '''Remove package from upgradable list.'''
     utils.removeFromList(self.upgradablePkgs, pkgName)