class FiltersWidget(CompositeWidget): """ a composite widget to choose a filtering method based on subclasses of Filter class """ @temporarySettingsDecorator() def __init__(self, parent, **params): get_or_put(params, 'layout', QVBoxLayout()) super(FiltersWidget, self).__init__(parent, **params) self.params = Params(**params) self.data_accessor = self.params.data_accessor # alias #if self.params.use_apply_button == True: if 1 == 1: self.data_accessor.addListener(self, __FilterActivatedDataVectorListener__(self)) filtersGroup = GroupBoxWidget(self, layout=QVBoxLayout(), i18n_def=params.get('title', 'Filters')) annotation_widget_class = params.get('annotation_widget_class', False) if annotation_widget_class: self.__annotation_filter__ = annotation_widget_class( filtersGroup, data_accessor=self.data_accessor) else: self.__annotation_filter__ = CommonAnnotationFilterWidget( filtersGroup, data_accessor=self.data_accessor) self.__square_filter__ = SquareFilterWidget(filtersGroup, data_accessor=self.data_accessor, use_apply_button=self.params.use_apply_button) if params.get('restore_button', False): self.__restore_button__ = PushButtonWidget(filtersGroup, i18n_def='Back to unfiltered data', clicked_handler=self.__restore_handler__, enabled=False) def __restore_handler__(self): self.data_accessor.restore(remove_filter_names=True) self.__annotation_filter__.reset() self.__square_filter__.reset() if hasattr(self, '__restore_button__'): self.__restore_button__.setEnabled(False) def enableRestoreButton(self): if hasattr(self, '__restore_button__'): self.__restore_button__.setEnabled(True) def getSquareFilterParams(self): return self.__square_filter__.getSquareFilterParams() @temporarySetterDecorator(name='square_filter_params', _conv=QVariant.toPyObject, _getter_handler=getSquareFilterParams) def setSquareFilterParams(self, square_filter_params): self.__square_filter__.setSquareFilterParams(square_filter_params) def getAnnotationFilterParams(self): return self.__annotation_filter__.getAnnotationFilterParams() @temporarySetterDecorator(name='annotation_filter_params', _conv=QVariant.toPyObject, _getter_handler=getAnnotationFilterParams) def setAnnotationFilterParams(self, annotation_filter_params): self.__annotation_filter__.setAnnotationFilterParams( annotation_filter_params)