Exemple #1
0
    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)
Exemple #2
0
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)