class AbstractFilterListView(AbstractListView): no_filter = (lambda wid: True, 'all') task_filters = (no_filter,) def __init__(self, data_model): self._filters_ring = itertools.cycle(self.task_filters) self.cur_filter = next(self._filters_ring) self.filter_model = FilterListProxyModel(data_model, self.cur_filter[0]) super().__init__(self.filter_model) def switch_to_next_filter(self): self.cur_filter = next(self._filters_ring) self.set_title(self.title_markup()) self.filter_model.set_filter(self.cur_filter[0]) def title_markup(self): return '{} ({})'.format(self.list_title, self.cur_filter[1]) def keypress(self, size, key): if key in ACCEL_NEXT_LIST_FILTER: self.switch_to_next_filter() else: return super().keypress(size, key)
def __init__(self, data_model): self._filters_ring = itertools.cycle(self.task_filters) self.cur_filter = next(self._filters_ring) self.filter_model = FilterListProxyModel(data_model, self.cur_filter[0]) super().__init__(self.filter_model)