def do_quit(udata, clist):

    print "Values before:"
    print recipe.get_values()

    print
    print "Values after:"
    ul = UndoList()    
    for c in clist:
        c.check_out(undolist=ul)
    print recipe.get_values()

    print "Undoing: "
    ul.execute()
    print recipe.get_values()

    gtk.main_quit()
    def set_region(self, row, col, array, coerce=True, undolist=[]):
        undo_data = self.get_region(row, col, len(array), len(array.dtype.fields[-1]))
        ul = UndoList()
        ul.append(UndoInfo(self.set_region, row, col, undo_data))

        try:
            names = array.dtype.fields[-1]
            i = 0
            for name in self.names[col:col+len(array)]:
                if coerce is True:
                    z = self.get_column_type(col+i)(array[names[i]])
                else:
                    z = array[names[i]]
                self._array[name][row:row+len(array)] = z
                i += 1
        except Exception, msg:
            print "set_region failed: %s.  undoing." % msg
            ul.execute()