def __init__(self, app): """Initialisation de djl.""" QtGui.QMainWindow.__init__(self) self.app = app # print "Id X de djl:", self.winId() print ("Composition de l'affichage: " + str(QtGui.QX11Info.isCompositingManagerRunning())) # Configure l'interface utilisateur. self.setupUi(self) self.GestionThemes() if config(info=10) == "1": self.int_etendue = 1 else: self.int_etendue = 0 # self.ech_fenetre() #Futur 1.2.13 try: QtCore.QCoreApplication.setApplicationName("djl") QtCore.QCoreApplication.setApplicationVersion(str(interface.version())) except: pass # Affiche ou non l'icone dans la boite à miniatures suivant la configuration: if int(config(info=3)) == 1 and QtGui.QSystemTrayIcon.isSystemTrayAvailable(): self.barre_icone() # Nombre d'ajouts dans le menu, sera incrémenté au fur et à mesure que l'on en ajoute dans le menu self.nb_menu_mini = 0 self.Mapper = QtCore.QSignalMapper(self) # Pour le sous-menu de lancement des jeux self.Mapper.connect(self.Mapper, QtCore.SIGNAL("mapped(int)"), self.lance_minitature) # On s'assure que le répertoire pour héberger le dépot existe: self.cree_reps() # Récupère la langue qui sera utilisé pour le WS ou le mini navigateur (pour envoyer des entrée) self.lang = config(info=9, sec=1) # Serveurs pour les mises à jours (en fonction du fait que l'on utilise ou non la version de développement if variables.version_dev == 1: self.serveur_maj = variables.SERVEUR_DEV[:] else: self.serveur_maj = variables.SERVEUR_STABLE[:] # On créé le dépot, soit depuis l'internet, soit depuis le fichier en dur self.SetupUi_Depot() self.methode_depot = 1 # Methode pour sauver et charger le depot (methode perso: 2, pickle: 1) #temp self.charge_depot() # Utilise le mode automatique, si le dépot existe en dur, il est utilisé au lancement (plus rapide) # self.connexion_SOAP() #Charge directement le dépot en ligne au démarrage (très lent) self.Thread_depot() # Charge le dépot en ligne au démarrage (Dans un thread séparé, pour pas ralentir le lancement) #temp # Variable qui défini si l'on utilise l'interface étendu ou pas: if self.int_etendue == 1: # Va cherche les propriétés de la fenêtre principale (taille, position) self.readSettings() else: # Si c'est l'interface minimale, on force l'utilisation d'une petite fenêtre taillex, tailley = 250, 400 self.resize( QtCore.QSize(QtCore.QRect(800, 600, taillex, tailley).size()).expandedTo(self.minimumSizeHint()) ) # x, y = 1280, 1024-40 #Taille de l'écran # ecran = QtGui.QX11Info.appScreen() ##x, y = QtGui.QX11Info.appDpiX(ecran), QtGui.QX11Info.appDpiY(ecran) # print x, y ##print QtGui.QX11Info.display() # print QtGui.QDesktopWidget.numScreens() # self.move((QtCore.QVariant(QtCore.QPoint(x-taillex-5, y-tailley-5))).toPoint()) ######################################### # Liste des jeux: # Dès le démarrage, on vérifi si on peut écrire dans le répertoire de djl: variables.type_maj = 0 try: open(os.getcwd() + "/test.tmp", "w") open(os.getcwd() + "/../test.tmp", "w") except IOError: variables.type_maj = 1 try: os.remove(os.getcwd() + "/test.tmp") os.remove(os.getcwd() + "/../test.tmp") except OSError: variables.type_maj = 1 if variables.type_maj == 1: self.action_maj.setEnabled(False) print _("Impossible d'ecrire dans le repertoire de djl, il ne sera donc pas mis a jour.") diff.ecrit_historique(_("Impossible d'ecrire dans le repertoire de djl, il ne sera donc pas mis a jour.")) # print _("Impossible d'ecrire dans le repertoire de djl, la mise a jour sera installee dans ~/.djl/src") # diff.ecrit_historique(_("Impossible d'ecrire dans le repertoire de djl, la mise a jour sera installee dans ~/.djl/src")) # Défini si djl est lancé (afin de n'activer certaine fonctions qu'une seule fois après son lancement) self.djl_lance = 0 # Variables pour bloquer l'interface principale après que l'on ai lancé un jeu, afin d'éviter que l'utilisateur lance (bétement) plusieurs fois le jeu si il met du temps à démarrer self.bloque_ui = 0 self.boucle_bloque_ui = 0 # Créé la liste des jeux installés # (sauf si l'onglet par défaut est le dépôt, car il rafraichira lui même la liste après avoir téléchargé les informations du dépôt). if config(info=5) != "2" or self.int_etendue == 0: self.liste_jeux_installe() # Le second les raccourcis .desktop standards self.liste_raccourcis() self.djl_lance = 1 if self.int_etendue == 1: # Si c'est l'interface étendue Future, djl 1.2.13, enlever la condition # Si passe à un, on fait clignoter l'icone du client IRC pour dire qu'il y a un message privé self.clignote_IRC = 0 self.clignote_IRC_var = 0 # Envoi l'affichage du client IRC self.setupUiIRC() # On init le client IRC self.init_IRC() # Envoi l'affichage du depot: # self.SetupUi_Depot() # Selectionne le premier jeu de la liste dans le dépot, sinon c'est le dernier ajouté par defaut. self.widget_liste_jeux.setCurrentRow(0) # Envoi l'affichage du gestionnnaire des modules: self.Init_modules() # Envoi l'affichage des flux RSS: self.SetupUi_RSS() # Demande le rafraichissement des flux RSS self.maj_RSS() # On se place dans l'onglet défini par l'utilisateur: self.tabWidget.setCurrentIndex(int(config(info=5))) # Endif// # Au démarrage, vire les éventuels fichiers indésirables, sinon djl peut bloquer: diff.supprime_fichier(config(info=2) + str(config(info=14)) + ".directory") # Vérifi au démarrage si une mise à jour est disponible suivant la configuration: # A condition que l'utilisateur ait les droits nécessaires: # if int(config(info=4)) == 1 and self.connecte_ws == 1 and variables.type_maj == 0: if int(config(info=4)) == 1 and variables.type_maj == 0: # La mise à jour se fera depuis la prochaine itération de la boucle self.timer self.t_maj = 1 else: self.t_maj = 0 variables.instance = self # Ajoute l'intance de la classe principale de djl dans les variables. # Lance la boucle principale de djl. self.timer = QtCore.QBasicTimer() self.timer.start(200, self)
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()
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()
variables.type_maj = 1 try: os.remove(os.getcwd() + '/test.tmp') os.remove(os.getcwd() + '/../test.tmp') except OSError: variables.type_maj = 1 if variables.type_maj == 1: self.action_maj.setEnabled(False) print i18n.traduc_ascii( "Impossible d'ecrire dans le repertoire de djl, il ne sera donc pas mis a jour." ) diff.ecrit_historique( i18n.traduc( "Impossible d'ecrire dans le repertoire de djl, il ne sera donc pas mis a jour." )) # print i18n.traduc_ascii("Impossible d'ecrire dans le repertoire de djl, la mise a jour sera installee dans ~/.djl/src") #diff.ecrit_historique(i18n.traduc("Impossible d'ecrire dans le repertoire de djl, la mise a jour sera installee dans ~/.djl/src")) # Défini si djl est lancé (afin de n'activer certaine fonctions qu'une # seule fois après son lancement) self.djl_lance = 0 # Variables pour bloquer l'interface principale après que l'on ai lancé un # jeu, afin d'éviter que l'utilisateur lance (bétement) plusieurs fois le # jeu si il met du temps à démarrer self.bloque_ui = 0 self.boucle_bloque_ui = 0 # Créé la liste des jeux installés