OK JF,
Tu as raison, dans le cas où tu souhaiterais te débarrasser des données en
base64 et les remplacer par le texte lisible, c'est très simple.
if edit.selectedText:
# S'il y a une sélection, on remplace celle-ci.
edit.selectedText = s
else:
# Aucune sélection à l'horizon, on remplace tout le buffer.
edit.text = s
Bien amicalement,
Abdel.
----- Original Message -----
From: "Jean-François Colas" <[email protected]>
To: <[email protected]>
Sent: Friday, March 25, 2016 9:02 PM
Subject: [progliste] Re: 6pad++ et zo ne d'édition
Hello re Abdel,
Disons que dans mon plan, il faut que le texte soit remplacé car je n'ai
aucun intérêt à garder le pavé en base64. De toute façon, le seul intérêt
du base64 à mon simple niveau, c'est d'être décodé, sinon c'est rien que
de la pollution, je ne vois même pas bien l'intérêt supérieur par rapport
au Quoted-printable. fin bon, ça c'est une autre histoire.
Sinon j'aime beaucoup la ligne:
text = edit.text if not edit.selectedText else edit.selectedText
J'avais oublié qu'on pouvait utiliser if ainsi, en dehors des list
comprehensions!
Ah que j'aimerais avoir plus de temps pour programmer!
bonne soirée,
J.-F.
Le 25/03/2016 20:15, _Abdel_ a écrit :
Resalut JF et la liste,
Voici une amélioration de la fonction permettant de convertir du base64
en str.
Je t'ai ajouté une autre fonction permettant de réaliser l'opération dans
l'autre sens.
Afin que le texte converti ne soit pas supprimé ou remplacé, je pense
qu'il est préférable d'inscrire le résultat de la conversion à la suite
du texte converti, qu'en pense-tu?
Toute idée d'amélioration sera la bienvenue.
Voici les 2 fonctions qui devraient permettre de convertir du base64 vers
str, et vissé-versa grâce aux raccourcis-clavier CTRL+SHIFT+F12 et
CTRL+SHIFT+F11, que tu pourras bien sûr modifier à ta guise :
def decode_base64():
# Permet de convertir un texte base64 en str.
# s'applique à une sélection s'il y en a une, sinon au buffer entier.
# Le résultat sera alors inscrit à la suite du texte converti.
# Importation de base64.
import base64
# Création d'une variable pour la page courante.
edit = sp.window.curPage
# On définit le texte à convertir, selon l'état de la sélection.
text = edit.text if not edit.selectedText else edit.selectedText
# On vérifie quand même s'il y a réellement du texte.
if not text:
sp.window.alert("Aucun texte à décoder !", "Erreur")
return
try:
# On vérifie si on est en base64.
s = str(base64.b64decode(text).decode("utf-8"))
except ValueError:
# On est pas en base64, le texte n'est pas convertible.
sp.window.alert("Le texte à décoder n'est pas en base64",
"Erreur")
return
# On localise la fin du buffer ou de la sélection.
iEnd = edit.selectionEnd if edit.selectedText else edit.textLength
# On inscrit le résultat du décodage.
edit.insert(iEnd, "\r\nRésultat du décodage en str :\r\n" + s)
sp.window.addAccelerator("CTRL+SHIFT+F12", decode_base64)
def encode_str_to_base64():
# Permet de convertir un texte str en base64.
# s'applique à une sélection s'il y en a une, sinon au buffer entier.
# Le résultat sera alors inscrit à la suite du texte converti.
# Importation de base64.
import base64
# Création d'une variable pour la page courante.
edit = sp.window.curPage
# On définit le texte à convertir, selon l'état de la sélection.
text = edit.text if not edit.selectedText else edit.selectedText
# On vérifie quand même s'il y a réellement du texte.
if not text:
sp.window.alert("Aucun texte à encoder !", "Erreur")
return
# On applique notre conversion.
b = base64.b64encode(text.encode("utf-8"))
# On localise la fin du buffer ou de la sélection.
iEnd = edit.selectionEnd if edit.selectedText else edit.textLength
# On vérifie le résultat.
s = str(b)
s = s[2:-1] # On retire le préfixe b' et la fin '.
# On inscrit le résultat de la conversion à la suite du texte
converti.
edit.insert(iEnd, "\r\nRésultat de l'encodage en base64 :\r\n" + s)
sp.window.addAccelerator("CTRL+SHIFT+F11", encode_str_to_base64)
Bien amicalement,
Abdel.
----- Original Message ----- From: "_Abdel_" <[email protected]>
To: <[email protected]>
Sent: Friday, March 25, 2016 12:04 AM
Subject: [progliste] Re: 6pad++ et zone d'édition
Salut JF,
Tiens, essaie cette modif, en principe, pour le texte en base64 suivant
"TW9uIHRleHRl", tu devrais avoir "Mon texte" comme résultat.
Pour plus d'informations, essaie de lire ce poste sur Stack overflow, il
parle de la base64 avec Python 3x :
http://stackoverflow.com/questions/8908287/base64-encoding-in-python-3
def decode_base64():
# s'applique à une sélection s'il y en a une, sinon au buffer entier
# getSelection est une fonction personnelle retournant le texte entre
selStart et selEnd.
import base64
edit = sp.window.curPage
if getSelection() == "":
# Il n'y a pas de sélection, on sélectionne donc tout le bufer.
edit.selectedText = edit.text
try:
# On vérifie si on est en base64.
s = base64.b64decode(getSelection()).decode("utf-8")
except UnicodeDecodeError:
# On est pas en base64, le texte n'est pas convertible.
sp.window.alert("Le texte à décoder n'est pas en base64",
"Erreur")
return
# On efface la sélection actuelle.
edit.text = edit.text.replace(edit.selectedText, "")
# On inscrit le résultat de la conversion à la place.
edit.selectedText = s
sp.window.addAccelerator("CTRL+SHIFT+F12", decode_base64)
Bien amicalement,
Abdel.
----- Original Message ----- From: "Jean-François Colas"
<[email protected]>
To: <[email protected]>
Sent: Thursday, March 24, 2016 9:09 PM
Subject: [progliste] 6pad++ et zone d'édition
Hello la ML,
Désolé, cet objet me plaît pas trop mais c'est pas une journée de grive
aujourd'hui...
Un truc qui m'échappe.
Je voulais doter 6Pad++ d'une fonction de décodage de données base64.
(Voir la fonction que je mets sous ma signature). Pour ça, je passe une
chaîne à base64.b64decode, j'obtiens en retour une chaîne. Je voudrais
que cette chaîne devienne partie intégrante de window.curPage.text, à
la place de ce que je décode. Et en définitive, je me retrouve avec une
seule ligne, sans retour chariot ni saut de ligne, mais des \r et \n
littéralement... Où se trouve le problème? Je dois faire fausse route
quelque part, quel autre chemin pourrais-je prendre?
Merci,
J.-F.
def decode_base64():
# s'applique à une sélection s'il y en a une, sinon au buffer entier
# getSelection est une fonction personnelle retournant le texte entre
selStart et selEnd.
import base64
edit = sp.window.curPage
if getSelection() == "":
edit.select(0, edit.textLength-1)
s = str(base64.b64decode(getSelection()))
edit.delete(edit.selectionStart, edit.selectionEnd)
edit.selectionEnd = edit.selectionStart # sais pas si c'est utile
edit.insert(edit.position, s)
Progliste :
Pour se dsinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pices jointe sont activs leur taille est limit
2 MO
Pour accder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv,
je vous rpondrez en priv.
Progliste :
Pour se dsinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pices jointe sont activs leur taille est limit
2 MO
Pour accder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv,
je vous rpondrez en priv.
Progliste :
Pour se d�sinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pi�ces jointe sont activ�s leur taille est
limit� � 2 MO
Pour acc�der aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�,
je vous r�pondrez en priv�.
Progliste :
Pour se dsinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pices jointe sont activs leur taille est limit 2
MO
Pour accder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv, je
vous rpondrez en priv.
Progliste :
Pour se d�sinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pi�ces jointe sont activ�s leur taille est limit� � 2 MO
Pour acc�der aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, je
vous r�pondrez en priv�.