def installer_jouer(self): """Quand on clique sur le bouton installer/jouer...""" # Trouve le nom du jeu actuellement sélectionné (depot) nom_jeu = self.nom_jeu_depot() no_description = self.trouve_index(nom_jeu) # print '>>>', no_description # Trouve l'adresse de téléchargement adresse_telecharge = self.detail_jeux(no_description, type_info="telecharge") # Répère le nom de l'archive du jeu: nom_archive = adresse_telecharge.split("/")[-1] # Si le nom de l'archive est de type "fichier.tar.gz?cmd", on enleve une partie pour s'arreter à l'extension du fichier if "?" in nom_archive: nom_archive = nom_archive.split("?") nom_archive = nom_archive[0] # Si l'archive existe déjà, on ne la re-télécharge pas # print (config(info=2) + '/jeux/') + variables.nom_archive if self.etat_actuel == 0 and os.path.exists((config(info=2) + "/jeux/") + nom_archive) == True: # Si l'archive est plus petite que 500 Ko, on re-télécharge: if int(os.stat((config(info=2) + "/jeux/") + nom_archive).st_size) / 1024 > 500: print "L'archive du jeu existe déjà, elle ne sera pas téléchargé" self.etat_actuel = 2 # print self.etat_actuel commande = self.trouve_commande(dossier=nom_jeu) # Si le jeu n'est pas encore installé, on lance le téléchargement, il sera installé ensuite: if self.etat_actuel == 0: if adresse_telecharge != 0: self.boutton_supprimer.setEnabled(False) self.boutton_installer.setEnabled(False) self.boutton_maj.setEnabled(False) # Répère la version afin de garder en mémoire la version du jeu installé, afin de permettre plus tard la mise à jour: version = self.detail_jeux(no_description, type_info="version") # Récupère le nom de l'icone, il sera affiche dans l'onglet de téléchargement: icone = ( config(info=2) + "/" + config(info=14) + "/icos/" + self.detail_jeux(no_description, type_info="icone") ) # Récupère le titre du jeu qui sera affiché dans la QlistWidget titre = self.liste_jeux[0][no_description]["value"][0][0]["value"] # Envoi la fenêtre de téléchargement: # self.telecharge_ui(adresse_telecharge, nom_archive, nom_jeu, commande, version) self.NouvTelechargement(adresse_telecharge, nom_archive, nom_jeu, commande, version, icone, titre) else: print _("Impossible de trouver l'adresse de telechargement") # Si le jeu est déjà installé, on le lance: if self.etat_actuel == 1: th_lance = lance(nom_jeu, commande) th_lance.start() # Affiche la boite de dialogue "En cours de lancement" pendent 3 secondes: self.MessageLancement = diff.MessageLancement(3, self) self.MessageLancement.show() # Si le jeu est déjà téléchargé, on l'installe if self.etat_actuel == 2: # Répère la version afin de garder en mémoire la version du jeu installé, afin de permettre plus tard la mise à jour: nom_version = self.detail_jeux(no_description, type_info="nom") version = nom_version.split(" ") version = version[len(version) - 1] # Lance l'installation: # nom_archive: le nom réel de l'archive, nom_jeu: répertoire où sera extrait le jeu. th_i = installe(nom_archive, nom_jeu, commande, version) th_i.start()
def lance(self, Qitem="", Djeu="", Darguments=""): """On lance un jeu ici (jeu séléctionné dans la liste de jeux principale ou défini par la variable Djeu), avec si besoin des arguments""" if Djeu == "": # Si on ne défini pas de jeu, on prend l'objet séléctionné dans la liste de jeux principale jeu_actuel = self.nom_jeu_pr() else: for i in range(len(self.liste_jeux_f)): if Djeu == self.liste_jeux_f[i]: jeu_actuel = Djeu break # print self.liste_jeux_f[i] # print '>', jeu_actuel, Darguments, Djeu diff.ecrit_historique(str(jeu_actuel) + _("lance")) # On lance la fonction qui va bien au module 'Dlog', si il existe try: self.trouve_module("Dlog", 1).lance(jeu_actuel) except: pass # Mieux vaut ignorer les exception, sinon on ne peut plus lancer les jeux # Bloque l'interface graphique quelques secondes avant de lancer le jeu: # Si le jeu met un peu de temps à se lancer, l'utilisateur ne pourra pas lancer (bêtement) plusieurs fois le jeu self.listWidget.setEnabled(False) self.bloque_ui = 1 # Si c'est un fichier .desktop, on lance le jeu comme il faut: if ".desktop" in jeu_actuel: cmd = self.lit_fichier_desktop(fichier=jeu_actuel, type_info="Exec") # print '>Commande: ', str(cmd), '/', str(jeu_actuel), self.listWidget.currentRow() # Si le raccourcis utilise une variable path pour définir le réperoire du jeu dir_jeu = self.lit_fichier_desktop(fichier=jeu_actuel, type_info="Path") ##Supprime les espaces dans la ligne de commande et les remplace par '\ ' # if ' ' in cmd: # if '\ ' in cmd: # pass # else: # cmd=cmd.replace(' ', '\ ') # Ajoute les arguments de lancement défini par l'utilisateur (si il y en a) cmd = cmd + " " + Darguments + " " + str(self.trouve_args(jeu_actuel)) th_lance = lance(jeu_actuel, cmd, dir_jeu, raccourci=1) th_lance.start() # Sinon, c'est un jeu installé depuis le dépot, on le lance donc différemment: else: # On récupère la commande du jeu: cmd = self.trouve_commande(dossier=jeu_actuel) # Ajoute les arguments (si il y en a) cmd = cmd + " " + str(self.trouve_args(jeu_actuel)) + " " + Darguments # On lance le jeu avec la class lance() dans installe.py: th_lance = lance(jeu_actuel, cmd) th_lance.start() print ("- " + jeu_actuel + ">" + cmd) # Affiche la sortie dans une boite de dialogue (en fonction de la configuration): if int(config(info=7)) == 1: self.affiche_sortie_jeu() # Affiche la boite de dialogue "En cours de lancement" pendent 3 secondes: self.MessageLancement = diff.MessageLancement(3, self) self.MessageLancement.show()
def lance(self, repertoire, cmd, raccourci): '''Lance le jeu''' from installe import lance th_lance = lance(repertoire, cmd, "", raccourci) th_lance.start()
def lance(self, Qitem='', Djeu='', Darguments=''): '''On lance un jeu ici (jeu séléctionné dans la liste de jeux principale ou défini par la variable Djeu), avec si besoin des arguments''' # if self.tabWidget.currentIndex() == 1: #liste principale # self.lance() # elif self.tabWidget.currentIndex() == 2: #depot # self.maj_description() # self.installer_jouer() if self.int_etendue: # Si on ne défini pas de jeu, on prend l'objet séléctionné dans la liste # de jeux principale if Djeu == '': if self.tabWidget.currentIndex() == 1: # liste principale jeu_actuel = self.nom_jeu_pr() elif self.tabWidget.currentIndex() == 2: # depot jeu_actuel = self.nom_jeu_depot() else: jeu_actuel = self.nom_jeu_pr() else: for i in range(len(self.liste_jeux_f)): if Djeu == self.liste_jeux_f[i]: jeu_actuel = Djeu break else: # Si on utilise l'interface simple... jeu_actuel = self.nom_jeu_pr() # print '>', jeu_actuel, Darguments, Djeu diff.ecrit_historique(str(jeu_actuel) + i18n.traduc("lance")) # On lance la fonction qui va bien au module 'Dlog', si il existe try: self.trouve_module('Dlog', 1).lance(jeu_actuel) except: pass # Mieux vaut ignorer les exception, sinon on ne peut plus lancer les jeux # Bloque l'interface graphique quelques secondes avant de lancer le jeu: # Si le jeu met un peu de temps à se lancer, l'utilisateur ne pourra pas # lancer (bêtement) plusieurs fois le jeu self.listWidget.setEnabled(False) self.bloque_ui = 1 # Si c'est un fichier .desktop, on lance le jeu comme il faut: if '.desktop' in jeu_actuel: cmd = self.lit_fichier_desktop(fichier=jeu_actuel, type_info='Exec') # print '>Commande: ', str(cmd), '/', str(jeu_actuel), self.listWidget.currentRow() # Si le raccourcis utilise une variable path pour définir le réperoire du jeu dir_jeu = self.lit_fichier_desktop(fichier=jeu_actuel, type_info='Path') # Supprime les espaces dans la ligne de commande et les remplace par '\ ' # if ' ' in cmd: # if '\ ' in cmd: # pass # else: #cmd=cmd.replace(' ', '\ ') # Ajoute les arguments de lancement défini par l'utilisateur (si il y en a) cmd = cmd + ' ' + Darguments + ' ' + str( self.trouve_args(jeu_actuel)) th_lance = lance(jeu_actuel, cmd, dir_jeu, raccourci=1) th_lance.start() # Sinon, c'est un jeu installé depuis le dépot, on le lance donc différemment: else: # On récupère la commande du jeu: cmd = self.trouve_commande(dossier=jeu_actuel) # Ajoute les arguments (si il y en a) cmd = cmd + ' ' + str( self.trouve_args(jeu_actuel)) + ' ' + Darguments # On lance le jeu avec la class lance() dans installe.py: th_lance = lance(jeu_actuel, cmd) th_lance.start() print("- " + jeu_actuel + ">" + cmd) # Affiche la sortie dans une boite de dialogue (en fonction de la configuration): if int(config(info=7)) == 1: self.affiche_sortie_jeu() # Affiche la boite de dialogue "En cours de lancement" pendent 3 secondes: self.MessageLancement = diff.MessageLancement(3, self) self.MessageLancement.show()