from gi.repository import Gtk

"""
Since GTK+3 Gtk.CellRenderer doesn't have a destroy signal anymore.
We can do the cleanup in the python destructor method instead.

"""


class MyCellRenderer(Gtk.CellRenderer):
    def __init__(self):
        Gtk.CellRenderer.__init__(self)

    def __del__(self):
        print "cellrenderer destroy"

    def do_render(self, cairo_t, widget, background_area, cell_area, flags):
        pass


def window_destroy_cb(*kwargs):
    print "window destroy"
    Gtk.main_quit()

window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
window.connect("destroy", window_destroy_cb)
window.show()


def treeview_destroy_cb(*kwargs):
    print "treeview destroy"

treeview = Gtk.TreeView()
treeview.connect("destroy", treeview_destroy_cb)
window.add(treeview)
treeview.show()

col = Gtk.TreeViewColumn()
treeview.append_column(col)

cel = MyCellRenderer()
col.pack_start(cel, expand=True)

Gtk.main()