def etat(self, nom_jeu): '''Permet de savoir si le jeu est installé ou non Si etat = 0: pas installé, 1 = installé, 2 = téléchargé mais pas installé''' repertoire = config(info=2) + '/etat_jeux/' fichier = repertoire + nom_jeu if os.path.isdir(fichier): return # Vérifi si le fichier etat existe et l'utilise if os.path.exists(fichier) == True: txt_etat = open(fichier, 'r') etat = int(txt_etat.read()) txt_etat.close() # Si le fichier etat qui n'existe pas, on part du principe que le jeu n'est pas installé else: etat = 0 # print nom_jeu, str(etat) if etat == 0: self.boutton_installer.setText(i18n.traduc("Installer")) self.boutton_installer.setEnabled(True) self.boutton_supprimer.setEnabled(False) self.boutton_maj.setEnabled(False) self.label_4.setText(i18n.traduc("Etat: Non installe")) # print 'Le jeu n\'est pas installé' if etat == 1: self.label_4.setText(i18n.traduc("Etat: Installe")) self.boutton_installer.setText(i18n.traduc("Jouer")) self.boutton_installer.setEnabled(True) self.boutton_supprimer.setEnabled(True) # Verifi si la mise à jour est possible: self.verif_maj_jeu(nom_jeu) # print 'Le jeu est installé' if etat == 2: self.label_4.setText(i18n.traduc("Etat: Telecharge")) self.boutton_installer.setText(i18n.traduc("Installer")) self.boutton_installer.setEnabled(True) self.boutton_maj.setEnabled(False) # self.boutton_supprimer.setEnabled(True) # print 'Le jeu est en cours d\'installation' # Si l'etat est à 4, c'est qu'on a annulé le téléchargement if etat == 4: self.label_4.setText(i18n.traduc("Etat: Non installe")) self.boutton_installer.setText(i18n.traduc("Installer")) self.boutton_installer.setEnabled(True) self.boutton_supprimer.setEnabled(False) self.boutton_maj.setEnabled(False) modif_etat(nom_jeu, val_etat=0) etat = 0 self.etat_actuel = etat
def timerEventDepot(self): '''Cette fonction est appellée toutes les secondes, ça permet de mettre à jour l'affichage et le calcul du débit par seconde du téléchargement.''' # print "-------" # print self.listeTelechargement # print variables.installe # Fais clignoter la barre de titre du dépôt si demandé: # if self.clignote_depot: # if self.val_clignote_depot == 0: #self.tabDepot.setTabIcon(1, self.IconOngletTelechargement1) #self.val_clignote_depot = 1 # else: #self.tabDepot.setTabIcon(1, self.IconOngletTelechargement2) #self.val_clignote_depot = 0 # Parcours la liste des téléchargements pour mettre à jour l'affichage for id in range(len(self.listeTelechargement)): obj = self.listeTelechargement[id] # Récupère les informations de téléchargement sur le Thread: nb_blocs, taille_bloc, taille_fichier = obj[0].renvoi_infos() # Tant que le téléchargement n'est pas lancé, on n'affiche rien if taille_fichier != 1: if (nb_blocs * taille_bloc) <= taille_fichier: # Calcul la taille de ce qui a déjà été téléchargé (en octets) telecharge = nb_blocs * taille_bloc # Calcul la taille de ce qu'il reste à télécharger (en octets): reste = taille_fichier - telecharge # Calcul le total de données téléchargés et divise par le nombre de # secondes afin d'avoir le débit kb/S debit = (telecharge / self.iterationBoucleTele) / 1024 if debit > 0: # Calcul le pourcentage d'avancement du téléchargement: pourcentage = int(((telecharge + 0.) / taille_fichier + 0.) * 100) # Calcule le temps restant à télécharger en fonction du débit et du # reste... temps_restant = (reste / 1024) / debit # Récupère le nombre de minutes en divisant simplement par 60 temps_restant_minutes = temps_restant / 60 # Recupère le nombre de secondes restantes temps_restant_secondes = temps_restant - (temps_restant_minutes * 60) if temps_restant_secondes < 10: temps_restant_secondes = "0" + str(temps_restant_secondes) nom_jeu = obj[3] # On demande d'éditer la ligne, on récupère l'index, puis l'objet depuis # l'index et enfin on édite l'objet item = self.listWidgetTelechargement.item(id) item.setText(nom_jeu + ' - ' + str(pourcentage) + ' % - ' + str(taille_fichier / 1048576) + " " + _('Mo') + ' - ' + str(debit) + ' ' + _('Ko/s') + ' - ' + i18n.traduc("Temps restant:") + " " + str(temps_restant_minutes) + ":" + str(temps_restant_secondes)) else: #item = self.listWidgetTelechargement.item(self.listWidgetTelechargement.currentRow()) item = self.listWidgetTelechargement.item(id) try: item.setText(i18n.traduc("Decompression de l'archive en cours...")) except AttributeError, x: print x continue # Vérifi si l'installation est terminée: if variables.installe[obj[2]]: print "Terminé:" + str(obj[2]) # Supprime la ligne de la liste (Widget) self.listWidgetTelechargement.takeItem(id) modif_etat(obj[2], val_etat=1) # Met l'etat du jeu a 'installé' self.maj_liste() # Met à jour la liste de jeux principale del variables.installe[obj[2]] del self.listeTelechargement[id] return ( # On passe l'itération du timer pour éviter les problèmes suite à la # suppression des éléments dans les listes )
self.listeTelechargement[id][0]._Thread__stop() except TypeError, x: print x # Supprime l'archive: (une exception est levée si le téléchargement n'a # pas encore commencé, puisqu'il n'y a pas d'archive) try: supprime_archive(self.listeTelechargement[id][1]) except OSError, x: print x # Vire la variable d'installation du jeu (nom_jeu) del variables.installe[self.listeTelechargement[id][2]] # Modif l'etat pour que le dépot comprenne que l'installation a été annulée modif_etat(self.listeTelechargement[id][2], val_etat=4) self.maj_liste() # Met à jour la liste de jeux principale self.listWidgetTelechargement.takeItem(id) # Supprime la ligne de la liste (Widget) del self.listeTelechargement[id] # Supprime l'instance de la liste (Tableau) # print self.listeTelechargement def NouvTelechargement(self, adresse_telecharge, nom_archive, nom_jeu, commande, version, icone, titre): '''L'utilisateur a lancé un nouveau téléchargement, on l'ajoute à la liste''' item = QtGui.QListWidgetItem() item.setIcon(QtGui.QIcon(icone)) item.setText(titre)
def etat(self, nom_jeu): """Permet de savoir si le jeu est installé ou non Si etat = 0: pas installé, 1 = installé, 2 = téléchargé mais pas installé""" repertoire = config(info=2) + "/etat_jeux/" fichier = repertoire + nom_jeu # Vérifi si le fichier etat existe et l'utilise if os.path.exists(fichier) == True: txt_etat = open(fichier, "r") etat = int(txt_etat.read()) txt_etat.close() else: # Si le fichier etat qui n'existe pas, on part du principe que le jeu n'est pas installé etat = 0 if etat == 0: self.boutton_installer.setText( QtGui.QApplication.translate("MainWindow", _("Installer"), None, QtGui.QApplication.UnicodeUTF8) ) self.boutton_installer.setEnabled(True) self.boutton_supprimer.setEnabled(False) self.boutton_maj.setEnabled(False) self.label_4.setText( QtGui.QApplication.translate( "MainWindow", _("Etat: Non installe"), None, QtGui.QApplication.UnicodeUTF8 ) ) # print 'Le jeu n\'est pas installé' if etat == 1: self.label_4.setText( QtGui.QApplication.translate("MainWindow", _("Etat: Installe"), None, QtGui.QApplication.UnicodeUTF8) ) self.boutton_installer.setText( QtGui.QApplication.translate("MainWindow", _("Jouer"), None, QtGui.QApplication.UnicodeUTF8) ) self.boutton_installer.setEnabled(True) self.boutton_supprimer.setEnabled(True) # Verifi si la mise à jour est possible: self.verif_maj_jeu(nom_jeu) # print 'Le jeu est installé' if etat == 2: self.label_4.setText( QtGui.QApplication.translate("MainWindow", _("Etat: Telecharge"), None, QtGui.QApplication.UnicodeUTF8) ) self.boutton_installer.setText( QtGui.QApplication.translate("MainWindow", _("Installer"), None, QtGui.QApplication.UnicodeUTF8) ) self.boutton_installer.setEnabled(True) self.boutton_maj.setEnabled(False) # self.boutton_supprimer.setEnabled(True) # print 'Le jeu est en cours d\'installation' # Si l'etat est à 4, c'est qu'on a annulé le téléchargement if etat == 4: self.label_4.setText( QtGui.QApplication.translate( "MainWindow", _("Etat: Non installe"), None, QtGui.QApplication.UnicodeUTF8 ) ) self.boutton_installer.setText( QtGui.QApplication.translate("MainWindow", _("Installer"), None, QtGui.QApplication.UnicodeUTF8) ) self.boutton_installer.setEnabled(True) self.boutton_supprimer.setEnabled(False) self.boutton_maj.setEnabled(False) modif_etat(nom_jeu, val_etat=0) etat = 0 self.etat_actuel = etat
def timerEventDepot(self, event): ''' This function is called every second, to calculate the download speed''' #print "-------" #print self.listeTelechargement #print variables.installe #Fais clignoter la barre de titre du dépôt si demandé: #if self.clignote_depot: #if self.val_clignote_depot == 0: #self.tabDepot.setTabIcon(1, self.IconOngletTelechargement1) #self.val_clignote_depot = 1 #else: #self.tabDepot.setTabIcon(1, self.IconOngletTelechargement2) #self.val_clignote_depot = 0 #Parcours la liste des téléchargements pour mettre à jour l'affichage for id in range(len(self.listeTelechargement)): obj = self.listeTelechargement[id] #Récupère les informations de téléchargement sur le Thread: nb_blocs, taille_bloc, taille_fichier = obj[0].renvoi_infos() #Tant que le téléchargement n'est pas lancé, on n'affiche rien if taille_fichier != 1: if (nb_blocs*taille_bloc) <= taille_fichier: #Calcul la taille de ce qui a déjà été téléchargé (en octets) telecharge = nb_blocs * taille_bloc #Calcul la taille de ce qu'il reste à télécharger (en octets): reste = taille_fichier - telecharge #Calcul le total de données téléchargés et divise par le nombre de secondes afin d'avoir le débit kb/S debit = (telecharge/self.iterationBoucleTele)/1024 if debit > 0: #Calcul le pourcentage d'avancement du téléchargement: pourcentage = int(((telecharge+0.)/taille_fichier+0.)*100) #Calcule le temps restant à télécharger en fonction du débit et du reste... temps_restant = (reste/1024) / debit temps_restant_minutes = temps_restant / 60 #Récupère le nombre de minutes en divisant simplement par 60 temps_restant_secondes = temps_restant - (temps_restant_minutes*60) #Recupère le nombre de secondes restantes if temps_restant_secondes < 10: temps_restant_secondes = "0" + str(temps_restant_secondes) nom_jeu = obj[3] #On demande d'éditer la ligne, on récupère l'index, puis l'objet depuis l'index et enfin on édite l'objet item = self.listWidgetTelechargement.item(id) item.setText(nom_jeu + ' - ' + str(pourcentage) + ' % - ' + str(taille_fichier/1048576) + " " + _('Mo') + ' - ' + str(debit)+' ' + _('Ko/s') + ' - ' + _("Temps restant:") + " " + str(temps_restant_minutes) + ":" + str(temps_restant_secondes)) else: item = self.listWidgetTelechargement.item(self.listWidgetTelechargement.currentRow()) try: item.setText(QtGui.QApplication.translate("Dialog", _("Decompression de l'archive en cours..."), None, QtGui.QApplication.UnicodeUTF8)) except AttributeError, x: print x continue #Vérifi si l'installation est terminée: if variables.installe[obj[2]]: print "Terminé:" + str(obj[2]) self.listWidgetTelechargement.takeItem(id) #Removes the line from the list (Widget)S modif_etat(obj[2], val_etat = 1) #Puts the game's state to 'installed' self.maj_liste() #Updates the main list games del variables.installe[obj[2]] del self.listeTelechargement[id] return #Jumped the time iteration, to avoid problems after removing elements on the list
try: self.listeTelechargement[id][0].annule() self.listeTelechargement[id][0]._Thread__stop() except TypeError, x: print x #Removes the file: (an exception is raised if the download haven't started yet, because the file doesn't exist) try: supprime_archive(self.listeTelechargement[id][1]) except OSError, x: print x del variables.installe[self.listeTelechargement[id][2]] #Vire la variable d'installation du jeu (nom_jeu) #Modif l'etat pour que le dépot comprenne que l'installation a été annulée modif_etat(self.listeTelechargement[id][2], val_etat=4) self.maj_liste() #Updates the main games' list self.listWidgetTelechargement.takeItem(id) #Removes the line from list (Widget) del self.listeTelechargement[id] #Removes the instance from list (Table) #print self.listeTelechargement def NouvTelechargement(self, adresse_telecharge, nom_archive, nom_jeu, commande, version, icone, titre): '''The user has launched a new download, it's added to the list''' item = QtGui.QListWidgetItem() item.setIcon(QtGui.QIcon(icone)) item.setText(titre) self.listWidgetTelechargement.addItem(item)