예제 #1
0
    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()
예제 #2
0
    def __init__(self, parent, **params):
        params['layout'] = QHBoxLayout()
        super(DecimalPrecisionWidget, self).__init__(parent, **params)
        LabelWidget(self, i18n_def='Precision')

        self.__precision_choice__ = ComboBoxWidget(
            self,
            clicked_handler=self.__precision_change_handler__,
            sizePolicy=QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed))
        for row in range(1, DecimalPrecisionWidget.MAX_PRECISION):
            self.__precision_choice__.addItem(str(row))
        precision = params.get('precision',
                               DecimalPrecisionWidget.MAX_PRECISION)
        self.__precision_choice__.setCurrentIndex(precision - 1)

        LabelWidget(self,
                    i18n_def='.',
                    sizePolicy=QSizePolicy(QSizePolicy.Fixed,
                                           QSizePolicy.Fixed))
        self.__scale_choice__ = ComboBoxWidget(self,
                                               sizePolicy=QSizePolicy(
                                                   QSizePolicy.Fixed,
                                                   QSizePolicy.Fixed))
        self.__rescale__()
        scale = params.get('scale', None)
        if scale:
            if scale <= self.__scale_choice__.count():
                self.__scale_choice__.setCurrentIndex(scale)
        self.layout().addStretch(1)
예제 #3
0
    def __init__(self, parent, data_accessor):
        super(__StepperSizeWidget__, self).__init__(parent,
                                                    layout=QVBoxLayout())

        self.data_accessor = data_accessor

        info_group = CompositeWidget(self, layout=QHBoxLayout())
        LabelWidget(info_group, i18n_def='Stepper size:')
        self.__size_value__ = LabelWidget(info_group, i18n_def='<value>')
        self.__unit_value__ = LabelWidget(info_group, i18n_def='')

        self.__size_slider__ = SliderWidget(
            self,
            orientation=Qt.Horizontal,
            sizePolicy=QSizePolicy(QSizePolicy.MinimumExpanding,
                                   QSizePolicy.Fixed),
            value_changed_handler=self.__value_changed__)
        self.__size_slider__.setTickPosition(QSlider.TicksBelow)
        self.setValueInUnit(self.data_accessor.signal_x_unit)
        self.setUnit(self.data_accessor.signal_x_unit)

        self.__unitsWidget__ = TimeUnitsWidget(
            self,
            i18n_def='Units',
            default_unit=self.data_accessor.signal_x_unit,
            change_unit_handler=self.changeUnit,
            layout=QHBoxLayout())
        self.__unitsWidget__.addUnit(OrderUnit)
예제 #4
0
class __StepperSizeWidget__(CompositeWidget):
    """
    widget used to change stepper size
    """
    def __init__(self, parent, data_accessor):
        super(__StepperSizeWidget__, self).__init__(parent,
                                            layout=QVBoxLayout())

        self.data_accessor = data_accessor

        info_group = CompositeWidget(self, layout=QHBoxLayout())
        LabelWidget(info_group, i18n_def='Stepper size:')
        self.__size_value__ = LabelWidget(info_group, i18n_def='<value>')
        self.__unit_value__ = LabelWidget(info_group, i18n_def='')

        self.__size_slider__ = SliderWidget(self, orientation=Qt.Horizontal,
                        sizePolicy=QSizePolicy(QSizePolicy.MinimumExpanding,
                                               QSizePolicy.Fixed),
                        value_changed_handler=self.__value_changed__)
        self.__size_slider__.setTickPosition(QSlider.TicksBelow)
        self.setValueInUnit(self.data_accessor.signal_x_unit)
        self.setUnit(self.data_accessor.signal_x_unit)

        self.__unitsWidget__ = TimeUnitsWidget(self, i18n_def='Units',
                        default_unit=self.data_accessor.signal_x_unit,
                        change_unit_handler=self.changeUnit,
                        layout=QHBoxLayout())
        self.__unitsWidget__.addUnit(OrderUnit)

    def __value_changed__(self, _value):
        self.__size_value__.setText(str(_value))

    def setValueInUnit(self, _unit):
        signal = self.data_accessor.signal_in_unit(_unit)
        self.__size_slider__.setMaximum(int(pl.amax(signal)))
        self.__size_slider__.setValue(0)
        self.__size_slider__.setTickInterval(self.__size_slider__.maximum() / 10)  # @IgnorePep8

    def setUnit(self, _unit):
        self.__unit_value__.setText(_unit.name)

    @property
    def size(self):
        value = self.__size_slider__.value()
        return None if value == 0 else value

    def setSize(self, _size):
        self.__size_slider__.setValue(int(_size))

    def changeUnit(self, _unit):
        if not _unit == None:
            self.setValueInUnit(_unit)
            self.setUnit(_unit)
            self.__unitsWidget__.setUnit(_unit)

    @property
    def unit(self):
        return self.__unitsWidget__.getUnit()
예제 #5
0
class DirWidget(CompositeWidget):
    """
    widget gives ability to choose a directory
    """
    def __init__(self, parent, **params):
        layout = QHBoxLayout()
        layout.setAlignment(Qt.AlignLeft)
        get_or_put(params, 'layout', layout)
        super(DirWidget, self).__init__(parent, **params)

        LabelWidget(self, i18n_def='Directory:')

        self.__dir_label__ = LabelWidget(self,
                                         i18n_def=__NOT_SET_LABEL__,
                                         sizePolicy=QSizePolicy(
                                             QSizePolicy.MinimumExpanding,
                                             QSizePolicy.Minimum))

        PushButtonWidget(self,
                         i18n_def="Browse",
                         clicked_handler=self.__clicked_handler__)

    def __clicked_handler__(self):
        _dir = self.__dir_label__.text() if self.__dir_label__.text() else '.'
        output_dir = QFileDialog.getExistingDirectory(
            self,
            caption='Choose dir',
            directory=_dir,
            options=QFileDialog.ShowDirsOnly
            | QFileDialog.DontResolveSymlinks)
        if output_dir:
            self.setDirectory(output_dir)

    @property
    def directory(self):
        _dir = str(self.__dir_label__.text())
        if not (is_empty(_dir) or __NOT_SET_LABEL__ == _dir):
            _dir = str(QDir(_dir[1:-1]).path())
            return _dir

    def validate(self):
        if self.directory == None:
            ErrorWindow(message="The directory must be selected !")
            return False
        return True

    def setDirectory(self, output_dir):
        """
        set directory by external code
        """
        self.__dir_label__.setText("[%s]" % output_dir)
예제 #6
0
class DirWidget(CompositeWidget):
    """
    widget gives ability to choose a directory
    """

    def __init__(self, parent, **params):
        layout = QHBoxLayout()
        layout.setAlignment(Qt.AlignLeft)
        get_or_put(params, "layout", layout)
        super(DirWidget, self).__init__(parent, **params)

        LabelWidget(self, i18n_def="Directory:")

        self.__dir_label__ = LabelWidget(
            self, i18n_def=__NOT_SET_LABEL__, sizePolicy=QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Minimum)
        )

        PushButtonWidget(self, i18n_def="Browse", clicked_handler=self.__clicked_handler__)

    def __clicked_handler__(self):
        _dir = self.__dir_label__.text() if self.__dir_label__.text() else "."
        output_dir = QFileDialog.getExistingDirectory(
            self,
            caption="Choose dir",
            directory=_dir,
            options=QFileDialog.ShowDirsOnly | QFileDialog.DontResolveSymlinks,
        )
        if output_dir:
            self.setDirectory(output_dir)

    @property
    def directory(self):
        _dir = str(self.__dir_label__.text())
        if not (is_empty(_dir) or __NOT_SET_LABEL__ == _dir):
            _dir = str(QDir(_dir[1:-1]).path())
            return _dir

    def validate(self):
        if self.directory == None:
            ErrorWindow(message="The directory must be selected !")
            return False
        return True

    def setDirectory(self, output_dir):
        """
        set directory by external code
        """
        self.__dir_label__.setText("[%s]" % output_dir)
예제 #7
0
 def __createFilePreview__(self, parent, filename):
     composite = CompositeWidget(parent)
     layout = QVBoxLayout()
     composite.setLayout(layout)
     informationLabel = LabelWidget(composite)
     layout.addWidget(informationLabel)
     preview = PlainTextEditWidget(composite, readonly=True)
     layout.addWidget(preview)
     file_ = QFile(filename)
     if file_.open(QFile.ReadOnly):
         preview.insertPlainText(QString(file_.readAll()))
         preview.moveCursor(QTextCursor.Start)
         informationLabel.setText('Lines # '
                                  + str(preview.document().lineCount()))
         file_.close()
     return composite
예제 #8
0
 def __createFilePreview__(self, parent, filename):
     composite = CompositeWidget(parent)
     layout = QVBoxLayout()
     composite.setLayout(layout)
     informationLabel = LabelWidget(composite)
     layout.addWidget(informationLabel)
     preview = PlainTextEditWidget(composite, readonly=True)
     layout.addWidget(preview)
     file_ = QFile(filename)
     if file_.open(QFile.ReadOnly):
         preview.insertPlainText(QString(file_.readAll()))
         preview.moveCursor(QTextCursor.Start)
         informationLabel.setText('Lines # ' +
                                  str(preview.document().lineCount()))
         file_.close()
     return composite
예제 #9
0
    def __init__(self, parent, **params):
        get_or_put(params, 'layout', QVBoxLayout())
        get_or_put(params, 'i18n_def', 'Miscellaneous')
        super(MiscellaneousWidget, self).__init__(parent, **params)

        LabelWidget(self, i18n_def='Data window shift: 1')
        self.params = Params(**params)
        self.params.data_accessor.addListener(
            self, __MiscellaneousVectorListener__(self))
        self.__window_size__ = __DataWindowSizeWidget__(
            self, self.params.data_accessor)

        self.__unitsWidget__ = TimeUnitsWidget(
            self,
            i18n_def='Units',
            default_unit=self.params.data_accessor.signal_x_unit,
            change_unit_handler=self.changeUnit,
            layout=QHBoxLayout())
        self.__unitsWidget__.addUnit(OrderUnit)

        self.__use_parameters__ = CompositeWidget(self, layout=QHBoxLayout())
        self.__use_buffer__ = CheckBoxWidget(self.__use_parameters__,
                                             i18n_def='Use buffer',
                                             checked=True)
        self.__use_identity_line__ = CheckBoxWidget(
            self.__use_parameters__,
            i18n_def='Use identity line',
            checked=True)

        self.__sample_step__ = __SampleStepWidget__(self,
                                                    self.params.data_accessor)

        self.__stepper_size__ = __StepperSizeWidget__(
            self, self.params.data_accessor)
예제 #10
0
    def __init__(self, parent, **params):
        layout = QHBoxLayout()
        layout.setAlignment(Qt.AlignLeft)
        get_or_put(params, 'layout', layout)
        super(DirWidget, self).__init__(parent, **params)

        LabelWidget(self, i18n_def='Directory:')

        self.__dir_label__ = LabelWidget(self,
                                         i18n_def=__NOT_SET_LABEL__,
                                         sizePolicy=QSizePolicy(
                                             QSizePolicy.MinimumExpanding,
                                             QSizePolicy.Minimum))

        PushButtonWidget(self,
                         i18n_def="Browse",
                         clicked_handler=self.__clicked_handler__)
예제 #11
0
class __SampleStepWidget__(CompositeWidget):
    """
    widget used to change sample step value
    """
    def __init__(self, parent, data_accessor):
        super(__SampleStepWidget__, self).__init__(parent,
                                                   layout=QVBoxLayout())

        self.data_accessor = data_accessor

        info_group = CompositeWidget(self, layout=QHBoxLayout())
        LabelWidget(info_group, i18n_def='Sample step:')
        self.__step_value__ = LabelWidget(info_group, i18n_def='<value>')
        self.__unit_value__ = LabelWidget(info_group, i18n_def='')

        self.__step_slider__ = SliderWidget(
            self,
            orientation=Qt.Horizontal,
            sizePolicy=QSizePolicy(QSizePolicy.MinimumExpanding,
                                   QSizePolicy.Fixed),
            value_changed_handler=self.__value_changed__)
        self.__step_slider__.setTickPosition(QSlider.TicksBelow)
        self.setValueInSignalUnit()
        self.setUnit()

    def __value_changed__(self, _value):
        self.__step_value__.setText(str(_value))

    def setValueInSignalUnit(self):
        signal = self.data_accessor.signal
        self.__step_slider__.setMaximum(int(pl.amax(signal)))
        self.__step_slider__.setValue(0)
        self.__step_slider__.setTickInterval(self.__step_slider__.maximum() /
                                             10)  # @IgnorePep8

    def setUnit(self):
        self.__unit_value__.setText(
            self.data_accessor.signal_unit.display_label)

    @property
    def step(self):
        value = self.__step_slider__.value()
        return None if value == 0 else value

    def setStep(self, _step):
        self.__step_slider__.setValue(_step)
예제 #12
0
    def __createFileConstraintsComposite__(self, parent):
        fileConstraintsComposite = CompositeWidget(parent,
                                                   layout=QHBoxLayout())

        self.chooseRootDirButton = PushButtonWidget(
            fileConstraintsComposite,
            i18n="datasource.datasource.choose.root.dir.button",
            i18n_def="Choose root dir",
            clicked_handler=self.chooseRootDirAction)

        LabelWidget(fileConstraintsComposite,
                    i18n="datasource.root.dir.label",
                    i18n_def="Root dir:")
        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
        self.rootDirLabel = LabelWidget(fileConstraintsComposite,
                                        i18n="datasource.root.dir.label",
                                        i18n_def="[Not set]",
                                        sizePolicy=sizePolicy,
                                        stretch_after_widget=1)

        LabelWidget(fileConstraintsComposite,
                    i18n="datasource.file.name.filter.label",
                    i18n_def="Files name filter")

        self.filesExtension = LineEditWidget(
            fileConstraintsComposite,
            maxLength=15,
            width=get_width_of_n_letters(14),
            text="*",
            enabled_precheck_handler=self.enabledPrecheckHandler)

        self.recursively = CheckBoxWidget(
            fileConstraintsComposite,
            i18n="datasource.search.files.recursively.label",
            i18n_def="Search files recursively",
            clicked_handler=self.reload,
            enabled_precheck_handler=self.enabledPrecheckHandler)

        self.onlyKnownTypes = CheckBoxWidget(
            fileConstraintsComposite,
            i18n="datasource.only.known.types.checkbox",
            i18n_def="Only known types",
            checked=True,
            clicked_handler=self.reload,
            enabled_precheck_handler=self.enabledPrecheckHandler)
예제 #13
0
    def __init__(self, parent, data_accessor):
        super(__SampleStepWidget__, self).__init__(parent,
                                            layout=QVBoxLayout())

        self.data_accessor = data_accessor

        info_group = CompositeWidget(self, layout=QHBoxLayout())
        LabelWidget(info_group, i18n_def='Sample step:')
        self.__step_value__ = LabelWidget(info_group, i18n_def='<value>')
        self.__unit_value__ = LabelWidget(info_group, i18n_def='')

        self.__step_slider__ = SliderWidget(self, orientation=Qt.Horizontal,
                        sizePolicy=QSizePolicy(QSizePolicy.MinimumExpanding,
                                               QSizePolicy.Fixed),
                        value_changed_handler=self.__value_changed__)
        self.__step_slider__.setTickPosition(QSlider.TicksBelow)
        self.setValueInSignalUnit()
        self.setUnit()
예제 #14
0
class __DataWindowSizeWidget__(CompositeWidget):
    """
    widget used to change data window size
    """
    def __init__(self, parent, data_accessor):
        super(__DataWindowSizeWidget__, self).__init__(parent,
                                                       layout=QVBoxLayout())

        self.data_accessor = data_accessor

        info_group = CompositeWidget(self, layout=QHBoxLayout())
        LabelWidget(info_group, i18n_def='Data window size:')
        self.__size_value__ = LabelWidget(info_group, i18n_def='<value>')
        self.__unit_value__ = LabelWidget(info_group, i18n_def='')

        self.__size_slider__ = SliderWidget(
            self,
            orientation=Qt.Horizontal,
            sizePolicy=QSizePolicy(QSizePolicy.MinimumExpanding,
                                   QSizePolicy.Fixed),
            value_changed_handler=self.__value_changed__)
        self.__size_slider__.setTickPosition(QSlider.TicksBelow)
        self.setValueInUnit(self.data_accessor.signal_x_unit)
        self.setUnit(self.data_accessor.signal_x_unit)

    def __value_changed__(self, _value):
        self.__size_value__.setText(str(_value))

    def setValueInUnit(self, _unit):
        signal = self.data_accessor.signal_in_unit(_unit)
        self.__size_slider__.setMaximum(int(pl.amax(signal)))
        self.__size_slider__.setValue(0)
        self.__size_slider__.setTickInterval(self.__size_slider__.maximum() /
                                             10)  # @IgnorePep8

    def setUnit(self, _unit):
        self.__unit_value__.setText(_unit.name)

    @property
    def size(self):
        return self.__size_slider__.value()

    def setSize(self, _size):
        self.__size_slider__.setValue(int(_size))
예제 #15
0
class __SampleStepWidget__(CompositeWidget):
    """
    widget used to change sample step value
    """
    def __init__(self, parent, data_accessor):
        super(__SampleStepWidget__, self).__init__(parent,
                                            layout=QVBoxLayout())

        self.data_accessor = data_accessor

        info_group = CompositeWidget(self, layout=QHBoxLayout())
        LabelWidget(info_group, i18n_def='Sample step:')
        self.__step_value__ = LabelWidget(info_group, i18n_def='<value>')
        self.__unit_value__ = LabelWidget(info_group, i18n_def='')

        self.__step_slider__ = SliderWidget(self, orientation=Qt.Horizontal,
                        sizePolicy=QSizePolicy(QSizePolicy.MinimumExpanding,
                                               QSizePolicy.Fixed),
                        value_changed_handler=self.__value_changed__)
        self.__step_slider__.setTickPosition(QSlider.TicksBelow)
        self.setValueInSignalUnit()
        self.setUnit()

    def __value_changed__(self, _value):
        self.__step_value__.setText(str(_value))

    def setValueInSignalUnit(self):
        signal = self.data_accessor.signal
        self.__step_slider__.setMaximum(int(pl.amax(signal)))
        self.__step_slider__.setValue(0)
        self.__step_slider__.setTickInterval(self.__step_slider__.maximum() / 10)  # @IgnorePep8

    def setUnit(self):
        self.__unit_value__.setText(
                            self.data_accessor.signal_unit.display_label)

    @property
    def step(self):
        value = self.__step_slider__.value()
        return None if value == 0 else value

    def setStep(self, _step):
        self.__step_slider__.setValue(_step)
예제 #16
0
    def __init__(self, parent, data_accessor):
        super(__SampleStepWidget__, self).__init__(parent,
                                                   layout=QVBoxLayout())

        self.data_accessor = data_accessor

        info_group = CompositeWidget(self, layout=QHBoxLayout())
        LabelWidget(info_group, i18n_def='Sample step:')
        self.__step_value__ = LabelWidget(info_group, i18n_def='<value>')
        self.__unit_value__ = LabelWidget(info_group, i18n_def='')

        self.__step_slider__ = SliderWidget(
            self,
            orientation=Qt.Horizontal,
            sizePolicy=QSizePolicy(QSizePolicy.MinimumExpanding,
                                   QSizePolicy.Fixed),
            value_changed_handler=self.__value_changed__)
        self.__step_slider__.setTickPosition(QSlider.TicksBelow)
        self.setValueInSignalUnit()
        self.setUnit()
예제 #17
0
class __DataWindowSizeWidget__(CompositeWidget):
    """
    widget used to change data window size
    """
    def __init__(self, parent, data_accessor):
        super(__DataWindowSizeWidget__, self).__init__(parent,
                                            layout=QVBoxLayout())

        self.data_accessor = data_accessor

        info_group = CompositeWidget(self, layout=QHBoxLayout())
        LabelWidget(info_group, i18n_def='Data window size:')
        self.__size_value__ = LabelWidget(info_group, i18n_def='<value>')
        self.__unit_value__ = LabelWidget(info_group, i18n_def='')

        self.__size_slider__ = SliderWidget(self, orientation=Qt.Horizontal,
                        sizePolicy=QSizePolicy(QSizePolicy.MinimumExpanding,
                                               QSizePolicy.Fixed),
                        value_changed_handler=self.__value_changed__)
        self.__size_slider__.setTickPosition(QSlider.TicksBelow)
        self.setValueInUnit(self.data_accessor.signal_x_unit)
        self.setUnit(self.data_accessor.signal_x_unit)

    def __value_changed__(self, _value):
        self.__size_value__.setText(str(_value))

    def setValueInUnit(self, _unit):
        signal = self.data_accessor.signal_in_unit(_unit)
        self.__size_slider__.setMaximum(int(pl.amax(signal)))
        self.__size_slider__.setValue(0)
        self.__size_slider__.setTickInterval(self.__size_slider__.maximum() / 10)  # @IgnorePep8

    def setUnit(self, _unit):
        self.__unit_value__.setText(_unit.name)

    @property
    def size(self):
        return self.__size_slider__.value()

    def setSize(self, _size):
        self.__size_slider__.setValue(int(_size))
예제 #18
0
    def __init__(self, parent, **params):
        layout = QHBoxLayout()
        layout.setAlignment(Qt.AlignLeft)
        get_or_put(params, "layout", layout)
        super(DirWidget, self).__init__(parent, **params)

        LabelWidget(self, i18n_def="Directory:")

        self.__dir_label__ = LabelWidget(
            self, i18n_def=__NOT_SET_LABEL__, sizePolicy=QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Minimum)
        )

        PushButtonWidget(self, i18n_def="Browse", clicked_handler=self.__clicked_handler__)
    def __init__(self, _parent, _header_label, _header_elements):
        QWidget.__init__(self, parent=_parent)
        layout = QVBoxLayout(self)
        self.setLayout(layout)

        LabelWidget(self, i18n_def=_header_label)

        self.__buttons__ = {}
        for header_element in _header_elements:
            handler = __Handler__(header_element.handler, self)
            self.__buttons__[header_element.name] = CheckBoxWidget(self,
                                        i18n_def=header_element.label,
                                        clicked_handler=handler)
예제 #20
0
    def __init__(self, parent, data_accessor):
        super(__StepperSizeWidget__, self).__init__(parent,
                                            layout=QVBoxLayout())

        self.data_accessor = data_accessor

        info_group = CompositeWidget(self, layout=QHBoxLayout())
        LabelWidget(info_group, i18n_def='Stepper size:')
        self.__size_value__ = LabelWidget(info_group, i18n_def='<value>')
        self.__unit_value__ = LabelWidget(info_group, i18n_def='')

        self.__size_slider__ = SliderWidget(self, orientation=Qt.Horizontal,
                        sizePolicy=QSizePolicy(QSizePolicy.MinimumExpanding,
                                               QSizePolicy.Fixed),
                        value_changed_handler=self.__value_changed__)
        self.__size_slider__.setTickPosition(QSlider.TicksBelow)
        self.setValueInUnit(self.data_accessor.signal_x_unit)
        self.setUnit(self.data_accessor.signal_x_unit)

        self.__unitsWidget__ = TimeUnitsWidget(self, i18n_def='Units',
                        default_unit=self.data_accessor.signal_x_unit,
                        change_unit_handler=self.changeUnit,
                        layout=QHBoxLayout())
        self.__unitsWidget__.addUnit(OrderUnit)
예제 #21
0
    def __init__(self, parent, **params):
        super(ActivityWidget, self).__init__(parent,
                                             layout=QHBoxLayout(),
                                             **params)
        self.activityButton = CheckBoxWidget(
            self,
            i18n="activity.button",
            i18n_def="Save as activity",
            clicked_handler=self.__clickedHandler__)

        LabelWidget(self,
                    i18n="activity.description.label",
                    i18n_def="Activity description (optional):")

        self.activityDescription = LineEditWidget(self, enabled=False)
예제 #22
0
    def __createFileConstraintsComposite__(self, parent):
        fileConstraintsComposite = CompositeWidget(parent,
                                                   layout=QHBoxLayout())

        self.chooseRootDirButton = PushButtonWidget(fileConstraintsComposite,
                        i18n="datasource.datasource.choose.root.dir.button",
                        i18n_def="Choose root dir",
                        clicked_handler=self.chooseRootDirAction)

        LabelWidget(fileConstraintsComposite,
                     i18n="datasource.root.dir.label",
                     i18n_def="Root dir:")
        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
        self.rootDirLabel = LabelWidget(fileConstraintsComposite,
                                        i18n="datasource.root.dir.label",
                                        i18n_def="[Not set]",
                                        sizePolicy=sizePolicy,
                                        stretch_after_widget=1)

        LabelWidget(fileConstraintsComposite,
                    i18n="datasource.file.name.filter.label",
                    i18n_def="Files name filter")

        self.filesExtension = LineEditWidget(fileConstraintsComposite,
                        maxLength=15,
                        width=get_width_of_n_letters(14),
                        text="*",
                        enabled_precheck_handler=self.enabledPrecheckHandler)

        self.recursively = CheckBoxWidget(fileConstraintsComposite,
                        i18n="datasource.search.files.recursively.label",
                        i18n_def="Search files recursively",
                        clicked_handler=self.reload,
                        enabled_precheck_handler=self.enabledPrecheckHandler)

        self.onlyKnownTypes = CheckBoxWidget(fileConstraintsComposite,
                        i18n="datasource.only.known.types.checkbox",
                        i18n_def="Only known types",
                        checked=True,
                        clicked_handler=self.reload,
                        enabled_precheck_handler=self.enabledPrecheckHandler)
예제 #23
0
    def __init__(self, parent, **params):

        layout = QVBoxLayout()
        layout.setAlignment(Qt.AlignCenter)
        get_or_put(params, 'layout', layout)
        super(ChooseColorWidget, self).__init__(parent, **params)

        get_or_put(params, 'title', 'Color changer')
        get_or_put(params, 'default_color', Qt.black)
        self.params = Params(**params)
        LabelWidget(self, i18n_def=self.params.title)

        PushButtonWidget(self, i18n_def="Change color",
                clicked_handler=self.__change_color_handler__)

        self.__color_area__ = __FrameWidget__(self)

        PushButtonWidget(self, i18n_def="Restore default",
                clicked_handler=self.__restore_default_handler__)

        self.setcolor(self.params.default_color)
예제 #24
0
class ChooseDatasourcePage(QWizardPage):

    def __init__(self, _parent):
        QWizardPage.__init__(self, parent=_parent)

    def initializePage(self):
        title_I18N(self, "datasource.page.title", "Datasource chooser")
        #self.setSubTitle('Setup frame specific data')
        pageLayout = QVBoxLayout()
        self.setLayout(pageLayout)
        self.__createFilesGroupBox(pageLayout)

        #to force call of isComplete(self) method by the Wizard framework
        #which causes state next button to be updated
        self.emit(WIZARD_COMPLETE_CHANGED_SIGNAL)
        self.rootDir = None

    def __createFilesGroupBox(self, pageLayout):
        self.filesGroupBox = GroupBoxWidget(self,
                                    i18n="datasource.files.group.title",
                                    i18n_def="Files",
                                    layout=QVBoxLayout())

        self.__createFileConstraintsComposite__(self.filesGroupBox)

        self.__createReloadButton__(self.filesGroupBox)

        self.__createTableView__(self.filesGroupBox)

        self.__createFilesOperationsComposite__(self.filesGroupBox)

        self.changeEnablemend(False)
        self.chooseRootDirButton.setEnabled(True)

    def __createFileConstraintsComposite__(self, parent):
        fileConstraintsComposite = CompositeWidget(parent,
                                                   layout=QHBoxLayout())

        self.chooseRootDirButton = PushButtonWidget(fileConstraintsComposite,
                        i18n="datasource.datasource.choose.root.dir.button",
                        i18n_def="Choose root dir",
                        clicked_handler=self.chooseRootDirAction)

        LabelWidget(fileConstraintsComposite,
                     i18n="datasource.root.dir.label",
                     i18n_def="Root dir:")
        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
        self.rootDirLabel = LabelWidget(fileConstraintsComposite,
                                        i18n="datasource.root.dir.label",
                                        i18n_def="[Not set]",
                                        sizePolicy=sizePolicy,
                                        stretch_after_widget=1)

        LabelWidget(fileConstraintsComposite,
                    i18n="datasource.file.name.filter.label",
                    i18n_def="Files name filter")

        self.filesExtension = LineEditWidget(fileConstraintsComposite,
                        maxLength=15,
                        width=get_width_of_n_letters(14),
                        text="*",
                        enabled_precheck_handler=self.enabledPrecheckHandler)

        self.recursively = CheckBoxWidget(fileConstraintsComposite,
                        i18n="datasource.search.files.recursively.label",
                        i18n_def="Search files recursively",
                        clicked_handler=self.reload,
                        enabled_precheck_handler=self.enabledPrecheckHandler)

        self.onlyKnownTypes = CheckBoxWidget(fileConstraintsComposite,
                        i18n="datasource.only.known.types.checkbox",
                        i18n_def="Only known types",
                        checked=True,
                        clicked_handler=self.reload,
                        enabled_precheck_handler=self.enabledPrecheckHandler)

    def __createReloadButton__(self, parent):
        self.reloadButton = PushButtonWidget(parent,
                        i18n="datasource.reload.button",
                        i18n_def="Reload",
                        clicked_handler=self.reload,
                        alignment=Qt.AlignRight,
                        enabled_precheck_handler=self.enabledPrecheckHandler)

    def __createTableView__(self, parent):
        self.filesTableView = FilesTableView(parent,
                        model=QStandardItemModel(self),
                        onClickedAction=self.onClickedAction,
                        wizardButtons=(QWizard.NextButton,),
                        wizard_handler=self.wizard,
                        sorting=True,
                        enabled_precheck_handler=self.enabledPrecheckHandler)

    def __createFilesOperationsComposite__(self, parent):
        filesOperations = CompositeWidget(parent,
                                            layout=QHBoxLayout())

        self.filePreviewButton = PushButtonWidget(filesOperations,
                        i18n="datasource.file.preview.button",
                        i18n_def="File preview",
                        stretch_after_widget=1,
                        clicked_handler=self.filePreviewAction,
                        enabled_precheck_handler=self.enabledPrecheckHandler)

        self.selectAllButton = PushButtonWidget(filesOperations,
                        i18n="datasource.accept.select.all.button",
                        i18n_def="Select all",
                        enabled=False,
                        clicked_handler=self.__select_all_handler__,
                        enabled_precheck_handler=self.enabledPrecheckHandler)

        self.unselectAllButton = PushButtonWidget(filesOperations,
                        i18n="datasource.accept.unselect.all.button",
                        i18n_def="Unselect all",
                        enabled=False,
                        clicked_handler=self.__unselect_all_handler__,
                        enabled_precheck_handler=self.enabledPrecheckHandler)

    def chooseRootDirAction(self):
        SettingsFactory.loadSettings(self, Setter(rootDir=None))

        rootDir = QFileDialog.getExistingDirectory(self,
                                    caption=self.chooseRootDirButton.text(),
                                    directory=self.rootDir)
        if rootDir:
            self.rootDir = rootDir + os.path.sep
            SettingsFactory.saveSettings(self, Setter(rootDir=self.rootDir))
            self.rootDirLabel.setText(self.rootDir)
            self.reload()

    def __select_all_handler__(self):
        self.__change_selection__(True)

    def __unselect_all_handler__(self):
        self.__change_selection__(False)

    def __change_selection__(self, _select):
        self.changeEnablemend(False)
        count = self.filesTableView.getRowCount()
        progressManager = ProgressDialogManager(self,
                label_text=("Selecting..." if _select else "Unselecting..."),
                max_value=count)
        with progressManager as progress:
            for idx in range(count):
                if (progress.wasCanceled()):
                    break
                progress.increaseCounter()
                if _select:
                    self.filesTableView.setCheckedRowState(idx, Qt.Checked)
                else:
                    self.filesTableView.setCheckedRowState(idx, Qt.Unchecked)
        self.filesTableView.changeCompleteState()
        self.changeEnablemend(True)

    def filePreviewAction(self):
        showFilesPreviewDialog(
                    self.filesTableView.getSelectedPathAndFilename())

    def reload(self):
        self.changeEnablemend(True)
        if self.rootDirLabel.text():

            self.filesTableView.clear()
            self.changeEnablemend(False)

            iteratorFlag = QDirIterator.Subdirectories \
                            if self.recursively.isChecked() \
                            else QDirIterator.NoIteratorFlags
            nameFilters = QStringList(
                    self.filesExtension.text()) \
                    if len(self.filesExtension.text()) > 0 \
                            and not self.filesExtension.text() \
                                in ("*", "*.*", "", None) \
                    else QStringList()
            self.iterator = QDirIterator(
                                self.rootDirLabel.text(),
                                nameFilters,
                                QDir.Filters(QDir.Files),
                                iteratorFlag)

            with ProgressDialogManager(self) as progress:
                while(self.iterator.next()):
                    if (progress.wasCanceled()):
                        break
                    fileInfo = self.iterator.fileInfo()
                    if fileInfo.size() == 0 or fileInfo.isFile() == False:
                        continue
                    if self.filesExtension.text() in ("*", "*.*", "", None):
                        if (sys.platform == 'win32' \
                            and fileInfo.isExecutable() == True) \
                            or is_text_file(fileInfo.filePath(),
                                    self.onlyKnownTypes.checkState()) == False:
                            continue
                    progress.increaseCounter()

                    checkable = QStandardItem("")
                    checkable.setCheckable(True)
                    filename = QStandardItem(fileInfo.fileName())
                    progress.setLabelText(fileInfo.fileName())
                    size = QStandardItem(str(fileInfo.size()))
                    path = QStandardItem(fileInfo.path())
                    self.filesTableView.addRow((checkable, filename, size, path)) # @IgnorePep8

            self.filesTableView.resizeColumnsToContents()
            self.filesExtension.setFocus()
            self.changeEnablemend(True)

    def onClickedAction(self, idx):
        self.filePreviewButton.setEnabled(True)
        self.filesTableView.onClickedAction(idx)

    def isComplete(self):
        """
        method used by QWizard to check if next/previous buttons have to
        be disabled/enabled (when False/True is returned)
        """
        return self.filesTableView.isCompletedCount()

    def changeEnablemend(self, enabled):
        self.emit(SIGNAL(ENABLED_SIGNAL_NAME), enabled)
        self.chooseRootDirButton.setEnabled(enabled)

    def enabledPrecheckHandler(self, widget):
        """
        only interested widgets return bool value others none value
        """
        if widget in (self.selectAllButton, self.unselectAllButton):
            return self.filesTableView.count() > 0
        elif widget == self.filePreviewButton:
            return self.filesTableView.getSelectedRowCount() > 0

    def getDatasourceModel(self):
        return self.filesTableView.getModel()
예제 #25
0
class ChooseDatasourcePage(QWizardPage):
    def __init__(self, _parent):
        QWizardPage.__init__(self, parent=_parent)

    def initializePage(self):
        title_I18N(self, "datasource.page.title", "Datasource chooser")
        #self.setSubTitle('Setup frame specific data')
        pageLayout = QVBoxLayout()
        self.setLayout(pageLayout)
        self.__createFilesGroupBox(pageLayout)

        #to force call of isComplete(self) method by the Wizard framework
        #which causes state next button to be updated
        self.emit(WIZARD_COMPLETE_CHANGED_SIGNAL)
        self.rootDir = None

    def __createFilesGroupBox(self, pageLayout):
        self.filesGroupBox = GroupBoxWidget(
            self,
            i18n="datasource.files.group.title",
            i18n_def="Files",
            layout=QVBoxLayout())

        self.__createFileConstraintsComposite__(self.filesGroupBox)

        self.__createReloadButton__(self.filesGroupBox)

        self.__createTableView__(self.filesGroupBox)

        self.__createFilesOperationsComposite__(self.filesGroupBox)

        self.changeEnablemend(False)
        self.chooseRootDirButton.setEnabled(True)

    def __createFileConstraintsComposite__(self, parent):
        fileConstraintsComposite = CompositeWidget(parent,
                                                   layout=QHBoxLayout())

        self.chooseRootDirButton = PushButtonWidget(
            fileConstraintsComposite,
            i18n="datasource.datasource.choose.root.dir.button",
            i18n_def="Choose root dir",
            clicked_handler=self.chooseRootDirAction)

        LabelWidget(fileConstraintsComposite,
                    i18n="datasource.root.dir.label",
                    i18n_def="Root dir:")
        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
        self.rootDirLabel = LabelWidget(fileConstraintsComposite,
                                        i18n="datasource.root.dir.label",
                                        i18n_def="[Not set]",
                                        sizePolicy=sizePolicy,
                                        stretch_after_widget=1)

        LabelWidget(fileConstraintsComposite,
                    i18n="datasource.file.name.filter.label",
                    i18n_def="Files name filter")

        self.filesExtension = LineEditWidget(
            fileConstraintsComposite,
            maxLength=15,
            width=get_width_of_n_letters(14),
            text="*",
            enabled_precheck_handler=self.enabledPrecheckHandler)

        self.recursively = CheckBoxWidget(
            fileConstraintsComposite,
            i18n="datasource.search.files.recursively.label",
            i18n_def="Search files recursively",
            clicked_handler=self.reload,
            enabled_precheck_handler=self.enabledPrecheckHandler)

        self.onlyKnownTypes = CheckBoxWidget(
            fileConstraintsComposite,
            i18n="datasource.only.known.types.checkbox",
            i18n_def="Only known types",
            checked=True,
            clicked_handler=self.reload,
            enabled_precheck_handler=self.enabledPrecheckHandler)

    def __createReloadButton__(self, parent):
        self.reloadButton = PushButtonWidget(
            parent,
            i18n="datasource.reload.button",
            i18n_def="Reload",
            clicked_handler=self.reload,
            alignment=Qt.AlignRight,
            enabled_precheck_handler=self.enabledPrecheckHandler)

    def __createTableView__(self, parent):
        self.filesTableView = FilesTableView(
            parent,
            model=QStandardItemModel(self),
            onClickedAction=self.onClickedAction,
            wizardButtons=(QWizard.NextButton, ),
            wizard_handler=self.wizard,
            sorting=True,
            enabled_precheck_handler=self.enabledPrecheckHandler)

    def __createFilesOperationsComposite__(self, parent):
        filesOperations = CompositeWidget(parent, layout=QHBoxLayout())

        self.filePreviewButton = PushButtonWidget(
            filesOperations,
            i18n="datasource.file.preview.button",
            i18n_def="File preview",
            stretch_after_widget=1,
            clicked_handler=self.filePreviewAction,
            enabled_precheck_handler=self.enabledPrecheckHandler)

        self.selectAllButton = PushButtonWidget(
            filesOperations,
            i18n="datasource.accept.select.all.button",
            i18n_def="Select all",
            enabled=False,
            clicked_handler=self.__select_all_handler__,
            enabled_precheck_handler=self.enabledPrecheckHandler)

        self.unselectAllButton = PushButtonWidget(
            filesOperations,
            i18n="datasource.accept.unselect.all.button",
            i18n_def="Unselect all",
            enabled=False,
            clicked_handler=self.__unselect_all_handler__,
            enabled_precheck_handler=self.enabledPrecheckHandler)

    def chooseRootDirAction(self):
        SettingsFactory.loadSettings(self, Setter(rootDir=None))

        rootDir = QFileDialog.getExistingDirectory(
            self,
            caption=self.chooseRootDirButton.text(),
            directory=self.rootDir)
        if rootDir:
            self.rootDir = rootDir + os.path.sep
            SettingsFactory.saveSettings(self, Setter(rootDir=self.rootDir))
            self.rootDirLabel.setText(self.rootDir)
            self.reload()

    def __select_all_handler__(self):
        self.__change_selection__(True)

    def __unselect_all_handler__(self):
        self.__change_selection__(False)

    def __change_selection__(self, _select):
        self.changeEnablemend(False)
        count = self.filesTableView.getRowCount()
        progressManager = ProgressDialogManager(
            self,
            label_text=("Selecting..." if _select else "Unselecting..."),
            max_value=count)
        with progressManager as progress:
            for idx in range(count):
                if (progress.wasCanceled()):
                    break
                progress.increaseCounter()
                if _select:
                    self.filesTableView.setCheckedRowState(idx, Qt.Checked)
                else:
                    self.filesTableView.setCheckedRowState(idx, Qt.Unchecked)
        self.filesTableView.changeCompleteState()
        self.changeEnablemend(True)

    def filePreviewAction(self):
        showFilesPreviewDialog(
            self.filesTableView.getSelectedPathAndFilename())

    def reload(self):
        self.changeEnablemend(True)
        if self.rootDirLabel.text():

            self.filesTableView.clear()
            self.changeEnablemend(False)

            iteratorFlag = QDirIterator.Subdirectories \
                            if self.recursively.isChecked() \
                            else QDirIterator.NoIteratorFlags
            nameFilters = QStringList(
                    self.filesExtension.text()) \
                    if len(self.filesExtension.text()) > 0 \
                            and not self.filesExtension.text() \
                                in ("*", "*.*", "", None) \
                    else QStringList()
            self.iterator = QDirIterator(self.rootDirLabel.text(), nameFilters,
                                         QDir.Filters(QDir.Files),
                                         iteratorFlag)

            with ProgressDialogManager(self) as progress:
                while (self.iterator.next()):
                    if (progress.wasCanceled()):
                        break
                    fileInfo = self.iterator.fileInfo()
                    if fileInfo.size() == 0 or fileInfo.isFile() == False:
                        continue
                    if self.filesExtension.text() in ("*", "*.*", "", None):
                        if (sys.platform == 'win32' \
                            and fileInfo.isExecutable() == True) \
                            or is_text_file(fileInfo.filePath(),
                                    self.onlyKnownTypes.checkState()) == False:
                            continue
                    progress.increaseCounter()

                    checkable = QStandardItem("")
                    checkable.setCheckable(True)
                    filename = QStandardItem(fileInfo.fileName())
                    progress.setLabelText(fileInfo.fileName())
                    size = QStandardItem(str(fileInfo.size()))
                    path = QStandardItem(fileInfo.path())
                    self.filesTableView.addRow(
                        (checkable, filename, size, path))  # @IgnorePep8

            self.filesTableView.resizeColumnsToContents()
            self.filesExtension.setFocus()
            self.changeEnablemend(True)

    def onClickedAction(self, idx):
        self.filePreviewButton.setEnabled(True)
        self.filesTableView.onClickedAction(idx)

    def isComplete(self):
        """
        method used by QWizard to check if next/previous buttons have to
        be disabled/enabled (when False/True is returned)
        """
        return self.filesTableView.isCompletedCount()

    def changeEnablemend(self, enabled):
        self.emit(SIGNAL(ENABLED_SIGNAL_NAME), enabled)
        self.chooseRootDirButton.setEnabled(enabled)

    def enabledPrecheckHandler(self, widget):
        """
        only interested widgets return bool value others none value
        """
        if widget in (self.selectAllButton, self.unselectAllButton):
            return self.filesTableView.count() > 0
        elif widget == self.filePreviewButton:
            return self.filesTableView.getSelectedRowCount() > 0

    def getDatasourceModel(self):
        return self.filesTableView.getModel()
예제 #26
0
class __StepperSizeWidget__(CompositeWidget):
    """
    widget used to change stepper size
    """
    def __init__(self, parent, data_accessor):
        super(__StepperSizeWidget__, self).__init__(parent,
                                                    layout=QVBoxLayout())

        self.data_accessor = data_accessor

        info_group = CompositeWidget(self, layout=QHBoxLayout())
        LabelWidget(info_group, i18n_def='Stepper size:')
        self.__size_value__ = LabelWidget(info_group, i18n_def='<value>')
        self.__unit_value__ = LabelWidget(info_group, i18n_def='')

        self.__size_slider__ = SliderWidget(
            self,
            orientation=Qt.Horizontal,
            sizePolicy=QSizePolicy(QSizePolicy.MinimumExpanding,
                                   QSizePolicy.Fixed),
            value_changed_handler=self.__value_changed__)
        self.__size_slider__.setTickPosition(QSlider.TicksBelow)
        self.setValueInUnit(self.data_accessor.signal_x_unit)
        self.setUnit(self.data_accessor.signal_x_unit)

        self.__unitsWidget__ = TimeUnitsWidget(
            self,
            i18n_def='Units',
            default_unit=self.data_accessor.signal_x_unit,
            change_unit_handler=self.changeUnit,
            layout=QHBoxLayout())
        self.__unitsWidget__.addUnit(OrderUnit)

    def __value_changed__(self, _value):
        self.__size_value__.setText(str(_value))

    def setValueInUnit(self, _unit):
        signal = self.data_accessor.signal_in_unit(_unit)
        self.__size_slider__.setMaximum(int(pl.amax(signal)))
        self.__size_slider__.setValue(0)
        self.__size_slider__.setTickInterval(self.__size_slider__.maximum() /
                                             10)  # @IgnorePep8

    def setUnit(self, _unit):
        self.__unit_value__.setText(_unit.name)

    @property
    def size(self):
        value = self.__size_slider__.value()
        return None if value == 0 else value

    def setSize(self, _size):
        self.__size_slider__.setValue(int(_size))

    def changeUnit(self, _unit):
        if not _unit == None:
            self.setValueInUnit(_unit)
            self.setUnit(_unit)
            self.__unitsWidget__.setUnit(_unit)

    @property
    def unit(self):
        return self.__unitsWidget__.getUnit()