Aqui está uma modificação do seu script, que na verdade permite editar o html diretamente.
Ele também lida com problemas de codificação de caracteres: se você responder a um e-mail de alguém usando o Windows, é provável que a codificação esteja presa em UTF-16, o que não é bom para
edição. Talvez seja necessário instalar o chardet
module em Python.
Substitua 'vi'
pelo editor de texto de sua escolha, em subprocess.call(...
.
#!/usr/bin/env python
import gtk
import chardet
import os
import getopt
import subprocess
dtype = 'text/html'
htmlclip = gtk.Clipboard().wait_for_contents(dtype).data
encoding = chardet.detect(htmlclip)['encoding']
# Shove the clipboard to a temporary file
tmpfn = '/tmp/htmlclip_%i' % os.getpid()
with open (tmpfn, 'w') as editfile:
editfile.write(htmlclip.decode(encoding))
# Manually edit the temporary file
subprocess.call(['vi', tmpfn])
with open (tmpfn, 'r') as editfile:
htmlclip = editfile.read().encode(encoding)
# Put the modified data back to clipboard
gtk.Clipboard().set_with_data(
[(dtype,0,0)],
lambda cb, sd, info, data: sd.set(dtype, 8, htmlclip),
lambda cb, d: None )
gtk.Clipboard().set_can_store([(dtype,0,0)])
gtk.Clipboard().store()
Isso faz um ciclo de edição completo, modificando a área de transferência "no lugar".
Eu o uso para compensar a falta irritante de um recurso de editor de html do Thunderbird:
-
selecione todos com ctrl + a na janela de composição da mensagem
- ctrl + c
- execute o script acima, que abre um editor -
- faça as alterações na fonte de html
- salve e saia
-
ctrl + v na janela de composição sobrescreve todo o conteúdo com sua versão editada em html.