From 9870ce5c2d0d6fd058532abcca8b1eebd1349022 Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Thu, 28 Nov 2024 15:33:12 +0100 Subject: [PATCH] reduce code duplication between stringwidget and filenamewidget --- src/ess/reduce/widgets/__init__.py | 23 +------------- src/ess/reduce/widgets/_filename_widget.py | 36 ++-------------------- src/ess/reduce/widgets/_string_widget.py | 1 - 3 files changed, 4 insertions(+), 56 deletions(-) diff --git a/src/ess/reduce/widgets/__init__.py b/src/ess/reduce/widgets/__init__.py index 78fd08de..27780af7 100644 --- a/src/ess/reduce/widgets/__init__.py +++ b/src/ess/reduce/widgets/__init__.py @@ -26,7 +26,7 @@ from ._linspace_widget import LinspaceWidget from ._vector_widget import VectorWidget from ._bounds_widget import BoundsWidget -from ._string_widget import StringWidget, MultiStringWidget +from ._string_widget import MultiStringWidget, StringWidget from ._switchable_widget import SwitchWidget from ._optional_widget import OptionalWidget @@ -102,27 +102,6 @@ def boolean_parameter_widget(param: BooleanParameter): ) -# @create_parameter_widget.register(StringParameter) -# def string_parameter_widget(param: StringParameter): -# name = param.name -# description = param.description -# if param.switchable: -# return widgets.Text( -# description=name, -# tooltip=description, -# layout=default_layout, -# style=default_style, -# ) -# else: -# return widgets.Text( -# value=param.default, -# description=name, -# tooltip=description, -# layout=default_layout, -# style=default_style, -# ) - - @create_parameter_widget.register(StringParameter) def string_parameter_widget(param: StringParameter): return StringWidget( diff --git a/src/ess/reduce/widgets/_filename_widget.py b/src/ess/reduce/widgets/_filename_widget.py index 705db564..ebda89d0 100644 --- a/src/ess/reduce/widgets/_filename_widget.py +++ b/src/ess/reduce/widgets/_filename_widget.py @@ -1,40 +1,10 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2024 Scipp contributors (https://github.com/scipp) -# import scipp as sc -from ipywidgets import HBox, Text, ValueWidget -from ._config import default_layout +from ._string_widget import MultiStringWidget, StringWidget -class FilenameWidget(HBox, ValueWidget): - def __init__(self, description: str, value: str | None = None, **kwargs): - super().__init__(layout=default_layout) - self.text_widget = Text(description=description, value=value, **kwargs) - self.children = [self.text_widget] +class FilenameWidget(StringWidget): ... - @property - def value(self) -> str | None: - v = self.text_widget.value.strip() - if not v: - return None - return v - @value.setter - def value(self, value: str | None): - if value is None: - self.text_widget.value = '' - else: - self.text_widget.value = value - - -class MultiFilenameWidget(FilenameWidget): - @property - def value(self) -> tuple[str, ...]: - v = super().value - if v is None: - return () - return tuple(s.strip() for s in v.split(',')) - - @value.setter - def value(self, value: tuple[str, ...]): - self.text_widget.value = ', '.join(value) +class MultiFilenameWidget(MultiStringWidget): ... diff --git a/src/ess/reduce/widgets/_string_widget.py b/src/ess/reduce/widgets/_string_widget.py index 00380d3a..dc1273f0 100644 --- a/src/ess/reduce/widgets/_string_widget.py +++ b/src/ess/reduce/widgets/_string_widget.py @@ -1,6 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2024 Scipp contributors (https://github.com/scipp) -# import scipp as sc from ipywidgets import HBox, Text, ValueWidget from ._config import default_layout