def Importer(self, event=None): # Ouverture de la fenêtre de dialogue wildcard = _(u"Module python (*.py)|*.py|Tous les fichiers (*.*)|*.*") sp = wx.StandardPaths.Get() dlg = wx.FileDialog(self, message=_(u"Choisissez une extension à importer"), defaultDir=sp.GetDocumentsDir(), defaultFile="", wildcard=wildcard, style=wx.FD_OPEN) if dlg.ShowModal() == wx.ID_OK: nomFichierCourt = dlg.GetFilename() nomFichierLong = dlg.GetPath() dlg.Destroy() else: dlg.Destroy() return # Cherche si le fichier fichier = codecs.open(nomFichierLong, encoding='iso-8859-15', mode='r') texte = "\n".join(fichier.readlines()) fichier.close() if "def Extension(" not in texte: dlg = wx.MessageDialog( self, _(u"Cette extension ne semble pas valide.\n\nUne extension est un module Python qui doit obligatoirement contenir une fonction Extension()." ), _(u"Erreur"), wx.OK | wx.ICON_ERROR) dlg.ShowModal() dlg.Destroy() return False # Copie le fichier vers le répertoire Extensions shutil.copyfile(nomFichierLong, UTILS_Fichiers.GetRepExtensions(nomFichierCourt)) self.MAJ()
def getFileList(): """Récupére la liste des fichiers d'extensions""" dossierExtensions = UTILS_Fichiers.GetRepExtensions() if not os.path.isdir(dossierExtensions): return () fichiers = os.listdir(dossierExtensions) fichiers.sort() return fichiers
def getFileVersion(filename): path = UTILS_Fichiers.GetRepExtensions(filename) try: fd = open(path, "r") lines = fd.readlines() for line in lines: if "VERSION =" in line: return line.split('"')[1] return None except Exception: return None
def Executer(self, event=None): if self.GetSelection() == -1: dlg = wx.MessageDialog(self, _(u"Aucune extension n'a été sélectionnée dans la liste !"), _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() return False # Exécution de l'extension nom_fichier = self.GetStringSelection() sys.path.append(UTILS_Fichiers.GetRepExtensions()) module = importlib.import_module(nom_fichier) module.Extension()
def Supprimer(self, event=None): if self.GetSelection() == -1: dlg = wx.MessageDialog(self, _(u"Aucune extension n'a été sélectionnée dans la liste !"), _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() return False nom_fichier = self.GetStringSelection() dlg = wx.MessageDialog(self, _(u"Souhaitez-vous vraiment supprimer l'extension '%s' ?") % nom_fichier, _(u"Suppression"), wx.YES_NO|wx.NO_DEFAULT|wx.CANCEL|wx.ICON_EXCLAMATION) reponse = dlg.ShowModal() dlg.Destroy() if reponse != wx.ID_YES : return False os.remove(UTILS_Fichiers.GetRepExtensions(nom_fichier + ".py")) self.MAJ()
def MAJ(self, IDactivite=None): # Recherche d'extensions dans le répertoire ext = "py" fichiers = os.listdir(UTILS_Fichiers.GetRepExtensions()) fichiers.sort() listeExtensions = [] for fichier in fichiers: if fichier.endswith(ext): nomFichier = os.path.split(fichier)[1] titre = nomFichier[:-(len(ext) + 1)] listeExtensions.append(titre) listeItems = [] self.Clear() if len(listeExtensions) > 0: self.Set(listeExtensions) self.Select(0)
def updateExtension(extension): filename = UTILS_Fichiers.GetRepExtensions(extension) if DEV: content = subprocess.check_output( ["git", "cat-file", "--textconv", "--", "HEAD:" + extension], cwd=DEV) fd = open(filename, "w") fd.write(content) fd.close() return True url = githubUrl(extension) renamed = False if os.path.exists(filename): renamed = True os.rename(filename, filename + ".old") urllib.request.urlcleanup() urllib.request.urlretrieve(url, filename) if renamed: os.remove(filename + ".old") return True
import importlib import wx import Data import traceback VERSION = "_v2.0.2" ext = "py" mainFile = "ext_Extensions_automatiques.py" listeErreurs = {} # Ajouter la version du bootstrap dans le repertoire des extensions chargées Data.extensionsAutomatiques = ["Utils__init__" + VERSION] # Ajouter le repertoire des extensions au PATH sys.path.append(UTILS_Fichiers.GetRepExtensions()) def getFileList(): """Récupére la liste des fichiers d'extensions""" dossierExtensions = UTILS_Fichiers.GetRepExtensions() if not os.path.isdir(dossierExtensions): return () fichiers = os.listdir(dossierExtensions) fichiers.sort() return fichiers def launch(fichier): """Execute les Initialisation des extensions et collecte les erreurs""" if not fichier.endswith(ext):
def deleteExtension(extension): filename = UTILS_Fichiers.GetRepExtensions(extension) if os.path.isfile(filename): os.remove(filename)