def __init__(self, parent, **params): get_or_put(params, 'layout', QHBoxLayout()) self.params = Params(**params) self.data_accessor = self.params.data_accessor # alias i18n_def = "Square filter " + self.data_accessor.signal_unit.display_label # @IgnorePep8 super(SquareFilterWidget, self).__init__(parent, i18n_def=i18n_def, **params) self.__filter__ = SquareFilter() LabelWidget(self, i18n_def="Min value") self.__min_value__ = NumberEditWidget( self, text_changed_handler=self.__min_handler__) LabelWidget(self, i18n_def="Max value") self.__max_value__ = NumberEditWidget( self, text_changed_handler=self.__max_handler__) if self.params.use_apply_button: self.__action_button__ = PushButtonWidget( self, i18n_def='Apply', clicked_handler=self.__filter_handler__) else: self.__action_button__ = CheckBoxWidget( self, i18n_def='Use filter', clicked_handler=self.__use_handler__) self.data_accessor.addListener( self, __SquareFilterDataVectorListener__(self)) self.__action_button__.setChecked(False) self.reset()
def __init__(self, parent, **params): get_or_put(params, 'layout', QHBoxLayout()) self.params = Params(**params) self.data_accessor = self.params.data_accessor # alias i18n_def = "Square filter " + self.data_accessor.signal_unit.display_label # @IgnorePep8 super(SquareFilterWidget, self).__init__(parent, i18n_def=i18n_def, **params) self.__filter__ = SquareFilter() LabelWidget(self, i18n_def="Min value") self.__min_value__ = NumberEditWidget(self, text_changed_handler=self.__min_handler__) LabelWidget(self, i18n_def="Max value") self.__max_value__ = NumberEditWidget(self, text_changed_handler=self.__max_handler__) if self.params.use_apply_button: self.__action_button__ = PushButtonWidget(self, i18n_def='Apply', clicked_handler=self.__filter_handler__) else: self.__action_button__ = CheckBoxWidget(self, i18n_def='Use filter', clicked_handler=self.__use_handler__) self.data_accessor.addListener(self, __SquareFilterDataVectorListener__(self)) self.__action_button__.setChecked(False) self.reset()
class SquareFilterWidget(GroupBoxWidget): """ graphical representation of a square filter """ def __init__(self, parent, **params): get_or_put(params, 'layout', QHBoxLayout()) self.params = Params(**params) self.data_accessor = self.params.data_accessor # alias i18n_def = "Square filter " + self.data_accessor.signal_unit.display_label # @IgnorePep8 super(SquareFilterWidget, self).__init__(parent, i18n_def=i18n_def, **params) self.__filter__ = SquareFilter() LabelWidget(self, i18n_def="Min value") self.__min_value__ = NumberEditWidget(self, text_changed_handler=self.__min_handler__) LabelWidget(self, i18n_def="Max value") self.__max_value__ = NumberEditWidget(self, text_changed_handler=self.__max_handler__) if self.params.use_apply_button: self.__action_button__ = PushButtonWidget(self, i18n_def='Apply', clicked_handler=self.__filter_handler__) else: self.__action_button__ = CheckBoxWidget(self, i18n_def='Use filter', clicked_handler=self.__use_handler__) self.data_accessor.addListener(self, __SquareFilterDataVectorListener__(self)) self.__action_button__.setChecked(False) self.reset() def __use_handler__(self): if not self.params.use_apply_button: if not self.isCorrectSignalRange(self.data_accessor.signal): self.__action_button__.setChecked(False) def __filter_handler__(self): if self.isCorrectSignalRange(self.data_accessor.signal): run_filter(self.parent(), self.__filter__, self.data_accessor, filter_name='square') def isCorrectSignalRange(self, _signal): _min = pl.amin(_signal) if _min >= self.__filter__.min_value and \ _min <= self.__filter__.max_value: return True _max = pl.amax(_signal) if _max >= self.__filter__.min_value and \ _max <= self.__filter__.max_value: return True if _min <= self.__filter__.min_value and \ _max >= self.__filter__.max_value: return True InformationWindow(message="Signal data out of range !") return False def __min_handler__(self, text): self.__filter__.min_value = text self.__check_range__(self.__min_value__) def __max_handler__(self, text): self.__filter__.max_value = text self.__check_range__(self.__max_value__) def __check_range__(self, _widget): message = self.__filter__.check() if message == None: self.__action_button__.setEnabled(True) _widget.setToolTip('') self.__action_button__.setToolTip('') return True else: _widget.setToolTip(message) self.__action_button__.setToolTip(message) self.__action_button__.setEnabled(False) if not self.params.use_apply_button: self.__action_button__.setChecked(False) return False def useFilter(self): return self.__action_button__.isChecked() \ if not self.params.use_apply_button else False def getFilter(self): return self.__filter__ def reset(self): self.setSquareFilterParams(SquareFilterParams( int(pl.amin(self.data_accessor.signal)), int(pl.amax(self.data_accessor.signal)), True)) def setEnabled(self, _enabled): self.__min_value__.setEnabled(_enabled) self.__max_value__.setEnabled(_enabled) def setSquareFilterParams(self, square_filter_params): """ set up square filter widget parameters """ self.__filter__.min_value = square_filter_params.min_value self.__min_value__.setText(self.__filter__.min_value) self.__filter__.max_value = square_filter_params.max_value self.__max_value__.setText(self.__filter__.max_value) if not self.params.use_apply_button: self.__action_button__.setChecked(square_filter_params.use_filter) def getSquareFilterParams(self): return SquareFilterParams(self.__filter__.min_value, self.__filter__.max_value, self.useFilter())
class SquareFilterWidget(GroupBoxWidget): """ graphical representation of a square filter """ def __init__(self, parent, **params): get_or_put(params, 'layout', QHBoxLayout()) self.params = Params(**params) self.data_accessor = self.params.data_accessor # alias i18n_def = "Square filter " + self.data_accessor.signal_unit.display_label # @IgnorePep8 super(SquareFilterWidget, self).__init__(parent, i18n_def=i18n_def, **params) self.__filter__ = SquareFilter() LabelWidget(self, i18n_def="Min value") self.__min_value__ = NumberEditWidget( self, text_changed_handler=self.__min_handler__) LabelWidget(self, i18n_def="Max value") self.__max_value__ = NumberEditWidget( self, text_changed_handler=self.__max_handler__) if self.params.use_apply_button: self.__action_button__ = PushButtonWidget( self, i18n_def='Apply', clicked_handler=self.__filter_handler__) else: self.__action_button__ = CheckBoxWidget( self, i18n_def='Use filter', clicked_handler=self.__use_handler__) self.data_accessor.addListener( self, __SquareFilterDataVectorListener__(self)) self.__action_button__.setChecked(False) self.reset() def __use_handler__(self): if not self.params.use_apply_button: if not self.isCorrectSignalRange(self.data_accessor.signal): self.__action_button__.setChecked(False) def __filter_handler__(self): if self.isCorrectSignalRange(self.data_accessor.signal): run_filter(self.parent(), self.__filter__, self.data_accessor, filter_name='square') def isCorrectSignalRange(self, _signal): _min = pl.amin(_signal) if _min >= self.__filter__.min_value and \ _min <= self.__filter__.max_value: return True _max = pl.amax(_signal) if _max >= self.__filter__.min_value and \ _max <= self.__filter__.max_value: return True if _min <= self.__filter__.min_value and \ _max >= self.__filter__.max_value: return True InformationWindow(message="Signal data out of range !") return False def __min_handler__(self, text): self.__filter__.min_value = text self.__check_range__(self.__min_value__) def __max_handler__(self, text): self.__filter__.max_value = text self.__check_range__(self.__max_value__) def __check_range__(self, _widget): message = self.__filter__.check() if message == None: self.__action_button__.setEnabled(True) _widget.setToolTip('') self.__action_button__.setToolTip('') return True else: _widget.setToolTip(message) self.__action_button__.setToolTip(message) self.__action_button__.setEnabled(False) if not self.params.use_apply_button: self.__action_button__.setChecked(False) return False def useFilter(self): return self.__action_button__.isChecked() \ if not self.params.use_apply_button else False def getFilter(self): return self.__filter__ def reset(self): self.setSquareFilterParams( SquareFilterParams(int(pl.amin(self.data_accessor.signal)), int(pl.amax(self.data_accessor.signal)), True)) def setEnabled(self, _enabled): self.__min_value__.setEnabled(_enabled) self.__max_value__.setEnabled(_enabled) def setSquareFilterParams(self, square_filter_params): """ set up square filter widget parameters """ self.__filter__.min_value = square_filter_params.min_value self.__min_value__.setText(self.__filter__.min_value) self.__filter__.max_value = square_filter_params.max_value self.__max_value__.setText(self.__filter__.max_value) if not self.params.use_apply_button: self.__action_button__.setChecked(square_filter_params.use_filter) def getSquareFilterParams(self): return SquareFilterParams(self.__filter__.min_value, self.__filter__.max_value, self.useFilter())