From 3c4b74aa650ab195ce1983b3ca4e848b5e6bf1bb Mon Sep 17 00:00:00 2001 From: Oliver Hensby Date: Fri, 19 Jan 2024 17:27:31 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20disabled=20observation=20?= =?UTF-8?q?=F0=9F=90=9B=20Resolved=20other=20issues=20in=20testing=20cells?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ipyautoui/autoobject.py | 48 ++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/ipyautoui/autoobject.py b/src/ipyautoui/autoobject.py index f43fb20b..de009b5b 100644 --- a/src/ipyautoui/autoobject.py +++ b/src/ipyautoui/autoobject.py @@ -104,7 +104,9 @@ class AutoObject(w.VBox, WatchValidate, TitleDescription): type = tr.Unicode(default_value="object") allOf = tr.List(allow_none=True, default_value=None) properties = tr.Dict() - _value = tr.Dict(allow_none=True) # NOTE: value setter and getter in `WatchValidate` + _value = tr.Dict( + allow_none=True + ) # NOTE: value setter and getter in `WatchValidate` fdir = tr.Instance(klass=pathlib.PurePath, default_value=None, allow_none=True) align_horizontal = tr.Bool(default_value=True) nested_widgets = tr.List() @@ -196,8 +198,13 @@ def observe_disabled(self, on_change): logger.warning(f"{k}: widget does not have a `disabled` traitlet") else: for k, v in self.di_widgets.items(): - if "disabled" in self.pr[k].schema_ and self.pr[k].schema_["disabled"]: - logger.info(f"{k}: widget disabled in base schema") + if ( + "disabled" in self.properties[k].keys() + and self.properties[k]["disabled"] + ): + logger.info( + f"{k}: widget is disabled in base schema. Enabling not allowed." + ) else: try: v.disabled = False @@ -304,7 +311,7 @@ def __init__( self.vbx_error = w.VBox() self.vbx_widget = w.VBox() # TODO: ^ move common container attributes to WatchValidate - + self.model = None super().__init__() kwargs = self.get_ordered_kwargs(kwargs) @@ -314,16 +321,13 @@ def __init__( self.value = kwargs["value"] else: self._value = self.di_widgets_value - - self._set_children() + + self._set_children() self._post_init(**kwargs) - + def _set_children(self): - self.children = [ - self.hbx_title_description, - self.vbx_widget - ] - + self.children = [self.hbx_title_description, self.vbx_widget] + def _post_init(self, **kwargs): pass @@ -342,7 +346,7 @@ def default_order(self): try: return list(self.di_widgets.keys()) except: - None + return None @property def json(self): @@ -384,7 +388,8 @@ def _init_controls(self): def set_watcher(self, key, widget, watch): logger.debug(f"{watch} trait found for: {key}") widget.observe( - self._watch_validate_change, watch # NOTE: `_watch_validate_change` in WatchValidate + self._watch_validate_change, + watch, # NOTE: `_watch_validate_change` in WatchValidate ) def _init_watch_widgets(self): @@ -394,7 +399,6 @@ def _init_watch_widgets(self): self.set_watcher(k, v, watch) break # if `_value` is found don't look for `value` - def _update_widgets_from_value(self): with self.silence_autoui_traits(): for k, v in self.value.items(): @@ -409,7 +413,7 @@ def _update_widgets_from_value(self): logging.critical( f"no widget created for {k}, with value {str(v)}. fix this in the schema!" ) - + def _get_value(self): return self.di_widgets_value @@ -470,7 +474,7 @@ def display_showraw(self): # NOTE: this overwritten this in AutoObjectForm # s["align_horizontal"] = False s["order_can_hide_rows"] = True s["order"] = ["int_slider_req", "dropdown_int", "int_range_slider_disabled"] - ui = AutoObjectForm.from_schema(s, value=v) + ui = AutoObjectForm.from_jsonschema(s, value=v) display(ui) if __name__ == "__main__": @@ -485,19 +489,15 @@ def display_showraw(self): # NOTE: this overwritten this in AutoObjectForm s = replace_refs(NestedEditableGrid.model_json_schema()) s["order_can_hide_rows"] = False s["open_nested"] = True - ui = AutoObject.from_schema(s) + ui = AutoObject.from_jsonschema(s) display(ui) -# + -# ui.schema -# - - if __name__ == "__main__": from ipyautoui.demo_schemas import NestedEditableGrid, ComplexSerialisation s = replace_refs(ComplexSerialisation.model_json_schema()) s["order_can_hide_rows"] = False - ui = AutoObject.from_schema(s) + ui = AutoObject.from_jsonschema(s) display(ui) if __name__ == "__main__": @@ -529,7 +529,7 @@ def display_showraw(self): # NOTE: this overwritten this in AutoObjectForm s = replace_refs(CoreIpywidgets.model_json_schema()) # s["align_horizontal"] = False s["order_can_hide_rows"] = False - ui = AutoObject.from_schema(s, value=v) + ui = AutoObject.from_jsonschema(s, value=v) display(ui) if __name__ == "__main__":