예제 #1
0
파일: djl_main.py 프로젝트: freemind/Djl
    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)
예제 #2
0
    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()
예제 #3
0
파일: djl_main.py 프로젝트: freemind/Djl
    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()
예제 #4
0
            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