def killSaveAllInformation(self,bit=0) :
		''' Kills all information of process & saves it's information '''
		for key in self.pid_dict :
			obj = self.pid_dict[key]
			if not(obj == None) :
				obj.mutex.acquire(True)
				while obj.LOCK.value == 1: # Wait till process is in a state (concurrent) to be killed
					pass
				if not(obj.LOCK.value == 3) :
					obj.LOCK.value=0
					if not(obj.P==None):
						if obj.P.is_alive(): #Kill if process is alive
							obj.P.terminate()
				obj.mutex.release()				
		
		if bit == 1:
			''' Operates if all download has been commited '''
			if not(self.info==None) :
				for key in self.pid_dict :
					obj = self.pid_dict[key]
					if not(obj==None) :
						self.info.partition[key]=[obj.LL,obj.UL,obj.length.value] 								
				self.wMutex.acquire(True)
				dLoadInfo().WriteInformation(self.info)
				self.wMutex.release()
				self.clear()			
				
		while not(self.monitor.empty()) :
			''' Empties PIPE & forces them to fill the output queue '''
			data=self.monitor.get()
			data=data.split(':')
			if len(data) == 4 :
				if data[1]=='Done' :
					self.Commited=self.Commited+1 # Commits all process
Beispiel #2
0
    def killSaveAllInformation(self, bit=0):
        ''' Kills all information of process & saves it's information '''
        for key in self.pid_dict:
            obj = self.pid_dict[key]
            if not (obj == None):
                obj.mutex.acquire(True)
                while obj.LOCK.value == 1:  # Wait till process is in a state (concurrent) to be killed
                    pass
                if not (obj.LOCK.value == 3):
                    obj.LOCK.value = 0
                    if not (obj.P == None):
                        if obj.P.is_alive():  #Kill if process is alive
                            obj.P.terminate()
                obj.mutex.release()

        if bit == 1:
            ''' Operates if all download has been commited '''
            if not (self.info == None):
                for key in self.pid_dict:
                    obj = self.pid_dict[key]
                    if not (obj == None):
                        self.info.partition[key] = [
                            obj.LL, obj.UL, obj.length.value
                        ]
                self.wMutex.acquire(True)
                dLoadInfo().WriteInformation(self.info)
                self.wMutex.release()
                self.clear()

        while not (self.monitor.empty()):
            ''' Empties PIPE & forces them to fill the output queue '''
            data = self.monitor.get()
            data = data.split(':')
            if len(data) == 4:
                if data[1] == 'Done':
                    self.Commited = self.Commited + 1  # Commits all process
    def __init__(self, wMutex, parent=None):
        QtGui.QTabWidget.__init__(self, parent)
        self.parent = parent
        self.wMutex = wMutex

        self.dLI = dLoadInfo()

        self.setColumnCount(8)

        self.setColumnWidth(0, 100)
        self.setColumnWidth(1, 60)
        self.setColumnWidth(2, 60)
        self.setColumnWidth(3, 90)
        self.setColumnWidth(4, 100)
        self.setColumnWidth(5, 100)
        self.setColumnWidth(6, 30)
        self.setColumnWidth(7, 44)

        self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)

        hitem = QtGui.QTableWidgetItem()
        hitem.setText("File Name")
        self.setHorizontalHeaderItem(0, hitem)
        hitem = QtGui.QTableWidgetItem()
        hitem.setText("Length")
        self.setHorizontalHeaderItem(1, hitem)
        hitem = QtGui.QTableWidgetItem()
        hitem.setText("Loaded")
        self.setHorizontalHeaderItem(2, hitem)
        hitem = QtGui.QTableWidgetItem()
        hitem.setText("Time Left")
        self.setHorizontalHeaderItem(3, hitem)
        hitem = QtGui.QTableWidgetItem()
        hitem.setText("Access Date")
        self.setHorizontalHeaderItem(4, hitem)
        hitem = QtGui.QTableWidgetItem()
        hitem.setText("Access Time")
        self.setHorizontalHeaderItem(5, hitem)
        hitem = QtGui.QTableWidgetItem()
        hitem.setText("X")
        self.setHorizontalHeaderItem(6, hitem)
        hitem = QtGui.QTableWidgetItem()
        hitem.setText("Y")
        self.setHorizontalHeaderItem(7, hitem)

        self.LoadInfo()
        self.connect(self, QtCore.SIGNAL("cellClicked(int,int)"), self.slotSectionClicked)
	def __init__(self,wMutex,parent=None) :
		QtGui.QTabWidget.__init__(self,parent)
		self.parent = parent
		self.wMutex=wMutex
		
		self.dLI = dLoadInfo()
		
		self.setColumnCount(8)
		
		self.setColumnWidth(0,100)
		self.setColumnWidth(1,60)
		self.setColumnWidth(2,60)
		self.setColumnWidth(3,90)
		self.setColumnWidth(4,100)
		self.setColumnWidth(5,100)
		self.setColumnWidth(6,30)
		self.setColumnWidth(7,44)	
		
		self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)	
		
		hitem = QtGui.QTableWidgetItem()
		hitem.setText('File Name')
		self.setHorizontalHeaderItem(0,hitem)
		hitem = QtGui.QTableWidgetItem()
		hitem.setText('Length')
		self.setHorizontalHeaderItem(1,hitem)
		hitem = QtGui.QTableWidgetItem()
		hitem.setText('Loaded')
		self.setHorizontalHeaderItem(2,hitem)
		hitem = QtGui.QTableWidgetItem()
		hitem.setText('Time Left')
		self.setHorizontalHeaderItem(3,hitem)								
		hitem = QtGui.QTableWidgetItem()
		hitem.setText('Access Date')
		self.setHorizontalHeaderItem(4,hitem)
		hitem = QtGui.QTableWidgetItem()
		hitem.setText('Access Time')
		self.setHorizontalHeaderItem(5,hitem)
		hitem = QtGui.QTableWidgetItem()
		hitem.setText('X')
		self.setHorizontalHeaderItem(6,hitem)
		hitem = QtGui.QTableWidgetItem()
		hitem.setText('Y')
		self.setHorizontalHeaderItem(7,hitem)

		self.LoadInfo()
		self.connect(self,QtCore.SIGNAL('cellClicked(int,int)'),self.slotSectionClicked)
    def getPartDownload(self, obj, packet, wMutex, bit):
        ''' When a download to be resumes it's partial information is fetched & download is resumed '''
        self.wMutex = wMutex
        self.packet = packet
        self.urlLabel.setText(str(obj.url)[0:80])
        self.recv = Queue()
        self.setWindowTitle(str(obj.url))

        self.outFile = obj.fileName
        self.dLength = int(obj.length)
        info = Info()
        info.url = obj.url
        info.fileName = obj.fileName
        info.date = obj.date
        info.time = obj.time
        info.length = obj.length

        obj = dLoadInfo().getSpecificInformation(obj)
        if obj == None:
            raise urllib2.URLError

        info.partition = obj.partition
        for i in range(len(info.partition)):
            self.dFile[obj.partition[i][0]] = None

        if obj == None:
            return 0
        else:
            if bit == 1:
                fName, length, cmtd = self.downloader.YTubePartition(
                    info, self.recv, self.PARTS, wMutex, self.dFlag, bit)
                self.PARTS = self.PARTS - cmtd
                if fName == None:
                    self.dLength = int(obj.length) - length
                    self.timer.start(1000)
                    return 1
                else:
                    self.packet.fileName = fName
                    self.packet.length = length
                    self.dLength = length
                    self.fileName = fName
                    self.outFile = fName
                    self.dLength = length
                    self.timer.start(1000)
                    return 2
        self.timer.start(1000)
        return 1
	def getPartDownload(self,obj,packet,wMutex,bit) :
		''' When a download to be resumes it's partial information is fetched & download is resumed '''
		self.wMutex=wMutex
		self.packet=packet
		self.urlLabel.setText(str(obj.url)[0:80])
		self.recv = Queue()
		self.setWindowTitle(str(obj.url))
		
		self.outFile=obj.fileName
		self.dLength=int(obj.length)
		info = Info()
		info.url=obj.url
		info.fileName=obj.fileName
		info.date=obj.date
		info.time=obj.time
		info.length=obj.length
		
		obj=dLoadInfo().getSpecificInformation(obj)
		if obj==None :
			raise urllib2.URLError
			
		info.partition=obj.partition
		for i in range(len(info.partition)) :
			self.dFile[obj.partition[i][0]]=None
			
		if obj == None :
			return 0
		else :
			if bit==1 :
				fName,length,cmtd=self.downloader.YTubePartition(info,self.recv,self.PARTS,wMutex,self.dFlag,bit)
				self.PARTS=self.PARTS-cmtd
				if fName==None  :
					self.dLength=int(obj.length)-length		
					self.timer.start(1000)
					return 1
				else :
					self.packet.fileName=fName
					self.packet.length=length
					self.dLength=length
					self.fileName=fName
					self.outFile = fName
					self.dLength=length
					self.timer.start(1000)
					return 2
		self.timer.start(1000)
		return 1