diff --git a/flatcamGUI/preferences/OptionUI.py b/flatcamGUI/preferences/OptionUI.py index 8915237f..c7e829b2 100644 --- a/flatcamGUI/preferences/OptionUI.py +++ b/flatcamGUI/preferences/OptionUI.py @@ -2,7 +2,7 @@ from typing import Union from PyQt5 import QtWidgets from flatcamGUI.GUIElements import RadioSet, FCCheckBox, FCButton, FCComboBox, FCEntry, FCSpinner, FCColorEntry, \ - FCSliderWithSpinner + FCSliderWithSpinner, FCDoubleSpinner import gettext import FlatCAMTranslation as fcTranslate @@ -108,14 +108,37 @@ class ColorOptionUI(BasicOptionUI): class SliderWithSpinnerOptionUI(BasicOptionUI): - def __init__(self, option: str, label_text: str, label_tooltip: str, min=0, max=100, step=1): - self.min = min - self.max = max + def __init__(self, option: str, label_text: str, label_tooltip: str, min_value=0, max_value=100, step=1): + self.min_value = min_value + self.max_value = max_value self.step = step super().__init__(option=option, label_text=label_text, label_tooltip=label_tooltip) def build_entry_widget(self) -> QtWidgets.QWidget: - entry = FCSliderWithSpinner(min=self.min, max=self.max, step=self.step) + entry = FCSliderWithSpinner(min=self.min_value, max=self.max_value, step=self.step) + return entry + + +class DoubleSpinnerOptionUI(BasicOptionUI): + def __init__(self, option: str, label_text: str, label_tooltip: str, step: float, decimals: int, min_value=None, max_value=None): + self.min_value = min_value + self.max_value = max_value + self.step = step + self.decimals = decimals + super().__init__(option=option, label_text=label_text, label_tooltip=label_tooltip) + + def build_entry_widget(self) -> QtWidgets.QWidget: + entry = FCDoubleSpinner() + entry.set_precision(self.decimals) + entry.setSingleStep(self.step) + if self.min_value is None: + self.min_value = entry.minimum() + else: + entry.setMinimum(self.min_value) + if self.max_value is None: + self.max_value = entry.maximum() + else: + entry.setMaximum(self.max_value) return entry