[Python-es] Cómo integrar GtkSourceView en una aplicación

Arnau Sanchez pyarnau en gmail.com
Lun Mar 1 15:01:23 CET 2010


On 01/03/10 02:42, Andreina Mejia wrote:

> Un amigo me recomendó integrar GtkSourceView
> (http://projects.gnome.org/gtksourceview/index.html) a mi aplicación
> para poder hacer uso de una de las herramientas implementadas en esta
> librería: deshacer/rehacer ilimitado.

GtkSourceView lo usa -entre otros- gedit, así que parece un camino seguro para 
hacer algo parecido a un editor de texto.

> En /usr/share/doc/python-gtksourceview2/examples/ aparece un ejemplo
> sobre cómo debe integrarse GtkSourceView a una aplicación, pero sigo sin
> entender.
>
> Éste es el código del ejemplo que aparece en “examples”:

Está bien que estudies el código de ejemplo, pero si no tienes mucha experiencia 
con GTK es normal que no entiendas algunas cosas. Te recomendaría empezar un 
script de cero e ir complicándolo poco a poco, teniendo siempre un ojo en la 
documentación:

http://people.gnome.org/~gianmt/pygtksourceview2/

Para que tengas un punto de partida, lo que comentas (gtksourceview + funciones 
undo/redo), se puede hacer así:

import gtk
import gtksourceview2 as gtkview

def on_undo_clicked(button, viewbuffer):
     if viewbuffer.can_undo():
         viewbuffer.undo()

def on_redo_clicked(button, viewbuffer):
     if viewbuffer.can_redo():
         viewbuffer.redo()

window = gtk.Window()
viewbuffer = gtkview.Buffer()
view = gtkview.View(viewbuffer)
undo_button = gtk.Button("undo")
undo_button.connect("clicked", on_undo_clicked, viewbuffer)
redo_button = gtk.Button("redo")
redo_button.connect("clicked", on_redo_clicked, viewbuffer)

box = gtk.VBox()
bbox = gtk.HBox()
bbox.pack_start(undo_button)
bbox.pack_start(redo_button)
box.pack_start(bbox, expand=False)
box.pack_start(view)
window.add(box)
window.resize(640, 480)
window.show_all()
gtk.main()

-- 
http://www.arnau-sanchez.com



Más información sobre la lista de distribución Python-es