From f3bdaf802338fd860a3b8f3eb43191328850c0fc Mon Sep 17 00:00:00 2001 From: David Robertson Date: Sun, 3 May 2020 02:27:17 +0100 Subject: [PATCH] Added DoubleSpinnerOptionUI --- flatcamGUI/preferences/OptionUI.py | 33 +++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) 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