Colin Fox <[EMAIL PROTECTED]> writes:
> On Sun, 2003-08-10 at 11:30, Doug Quale wrote:
> Thanks! That's perfect. Just out of curiosity, how would I show
> different images for when the item is expanded and collapsed?
You need to connect signal handlers to the 'row-expanded' and
'row-collapsed' signals that will set the icon column in the treemodel
row appropriately. It could look something like this:
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
import gobject
class silly_list(gtk.TreeView):
def __init__(self):
gtk.TreeView.__init__(self)
self.init_model()
self.init_view_columns()
self.connect('row-expanded', self.on_row_expanded)
self.connect('row-collapsed', self.on_row_collapsed)
def init_model(self):
store = gtk.TreeStore(gtk.gdk.Pixbuf, gobject.TYPE_STRING)
# Fill the model with some silly sample data.
for p in xrange(10):
parent = store.append(None, (self.get_icon_pixbuf(gtk.STOCK_ADD),
'Parent %s' % p))
for c in xrange(5):
store.append(parent, (None, 'Child %s' % c))
self.set_model(store)
def get_icon_pixbuf(self, stock):
return self.render_icon(stock,
size=gtk.ICON_SIZE_MENU,
detail=None)
def init_view_columns(self):
col = gtk.TreeViewColumn()
col.set_title('Silly Example')
render_pixbuf = gtk.CellRendererPixbuf()
col.pack_start(render_pixbuf, expand=False)
col.add_attribute(render_pixbuf, 'pixbuf', 0)
render_text = gtk.CellRendererText()
col.pack_start(render_text, expand=True)
col.add_attribute(render_text, 'text', 1)
self.append_column(col)
def set_row_icon(self, treeiter, stock):
store = self.get_model()
store.set(treeiter, 0, self.get_icon_pixbuf(stock))
def on_row_expanded(self, treeiter, path):
self.set_row_icon(treeiter, gtk.STOCK_REMOVE)
on_row_expanded = staticmethod(on_row_expanded)
def on_row_collapsed(self, treeiter, path):
self.set_row_icon(treeiter, gtk.STOCK_ADD)
on_row_collapsed = staticmethod(on_row_collapsed)
if __name__ == '__main__':
w = gtk.Window()
w.set_title('Silly Example')
w.set_size_request(width=400, height=300)
w.connect('destroy', gtk.mainquit)
sw = gtk.ScrolledWindow()
sw.add(silly_list())
w.add(sw)
w.show_all()
gtk.mainloop()
_______________________________________________
pygtk mailing list [EMAIL PROTECTED]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/