[pygyk] TextBuffer & Window

Marco Pensallorto n4rc0s@gmail.com
Sab 18 Nov 2006 09:26:25 CET


2006/11/18, gallows <g4ll0ws@gmail.com>:
> Sto imparando un po' il python e mi sono ritrovato a scrivere un piccolo
>     editor di testo. Vorrei chiedere ai guru pythoniani:

bene...bene...molto bene :)

> 1) E` possibile usare il TextBuffer con la codifica iso8859-1(5)? Di
> default sembra usare la utf-8, infatti quando apro con `emacs' o `less'
> un file creato da questo editor i caratteri "particolari" (accentate
> ecc.) li vedo strambi.

Premesso che le codifiche fanno venire il mal di testa a tutti ed io
ieri sera ho anche bevuto un po' ... (mi sa che quest'anno mi iscrivo
all'anonima alcolisti :P)
io direi... usa UTF-8 che ti passa.

- http://www.async.com.br/faq/pygtk/index.py?req=show&file=faq04.010.htp
- pydoc unicode

> 2) Pių importante: come posso intercettare il segnale di chiusura
> inviato dal window manager?

- http://www.async.com.br/faq/pygtk/index.py?req=show&file=faq10.006.htp

ovvero, riprendendo il tuo codice qualcosa del tipo:

[code]
def quit(self, widget, document):

        res = False # keep default behaviour

        if document.modified :
            if not dialog.question('Sure?', '%s is modified but not
saved!\nDo you want
quit?' % document.name):
                res = True # mmmmhhh... not so sure about leavin'

         return res

self.win0.connect('delete', quit, document)
[/code]

che pero' io farei piu' pitonescamente in una linea:

[code]
self.win0.connect('delete', lambda w,e,d: d.modified and not
dialog.question('Sure?','%s is modified but not saved!\nDo you want
quit?' % d.name))
[/code]

Nel sistema di gestione degli eventi delle pygtk il primo gestore che
restituisce True interrompe la propagazione dell'evento.

se il gestore on_delete restiruisce True l'evento e' considerato
intercettato e non si propaga ulteriormente ergo la finestra _non_
viene distrutta.

quindi non c'č bisogno di chiamare destroy, fallo fare al wm :)

ciao,

  N4.


Maggiori informazioni sulla lista palermo