¿Es posible dibujar GtkTreeView como GtkIconView?

Estoy trabajando en una aplicación GTK + escrita en python. Obviamente uso PyGtk. Mi aplicación es sobre colecciones de videos. Es una especie de punto F o Picasa, pero para video.

Como puedes ver en estas dos aplicaciones, tienes un área central donde puedes ver todas tus fotos con miniaturas de tags debajo.

En mi aplicación, quiero implementar el mismo kinf de vista. Por ahora simplemente uso esto:

Una gtk.Table contiene un VBox , dentro del VBox un Pixbuf (miniatura de mi video) y un HBox , y dentro del HBox , tantos Pixbuf como tags.

Está funcionando pero es feo y parece que no es la mejor solución.

Mirando profundamente en los documentos, he encontrado dos widgets cerca de mis necesidades: IconView y TreeView . Pero IconView solo puede mostrar un pixbuf por “fila” y TreeView no se muestra como una cuadrícula como IconView .

Mi pregunta: ¿Hay una manera de mostrar un TreeView como un IconView (en una cuadrícula)? ¿Cómo implementarías la forma F-spot de organizar fotos y tags?

IconView es lo que necesitas. En el ListStore cada fila representa solo un pixbuf pero el IconView ajusta las imágenes en una cuadrícula. Aquí un pequeño ejemplo, ejecútelo con los archivos de imagen que desea mostrar como argumentos, por ejemplo:

 python example.py /usr/share/icons/hicolor/16x16/apps/* 

.

 import sys import gtk store = gtk.ListStore(gtk.gdk.Pixbuf) iv = gtk.IconView(store) iv.set_pixbuf_column(0) for arg in sys.argv[1:]: pixbuf = gtk.gdk.pixbuf_new_from_file(arg) store.append((pixbuf, )) w = gtk.Window() w.connect('destroy', lambda w: gtk.main_quit()) sw = gtk.ScrolledWindow() w.add(sw) sw.add(iv) w.show_all() gtk.main() 

El mejor enfoque es seguir con una tabla y volver a implementar las selecciones o Usar una versión personalizada de IconView con un procesador de celdas personalizado que pueda tomar gtk.HBox ().

Algunas pautas sobre el prestamista personalizado son:

http://faq.pygtk.org/index.py?req=show&file=faq13.045.htp

http://faq.pygtk.org/index.py?req=show&file=faq13.056.htp

una discusión ocurrió en la lista de correo pygtk:

htp: //old.nabble.com/Drawing-widgets-in-a-custom-cellrenderer-td14207692.html

WWWalter crea un código de muestra: http://www.translate.org.za/blogs/walter/en/content/conquering-cellrendererwidget

Según Ruben Vermeersch, f-pot usa una versión modificada de IconView. El código se puede encontrar aquí: http://git.gnome.org/browse/f-spot/?h=icon-view-cleanup