code: def sort_by(self, attr_or_key, direction='asc'):
          if direction in ('+', 'asc', gtk.SORT_ASCENDING):
              direction = gtk.SORT_ASCENDING
          elif direction in ('-', 'desc', gtk.SORT_DESCENDING):
              direction = gtk.SORT_DESCENDING
          else:
              raise AttributeError('unrecognised direction')
          if callable(attr_or_key):
              sort_func = self._key_sort_func
          else:
              sort_func = self._attr_sort_func
          self.model.set_default_sort_func(sort_func, attr_or_key)
          self.model.set_sort_column_id(-1, direction)