From de12a930e54ef7cc7473e9287025fcf25fc1f191 Mon Sep 17 00:00:00 2001 From: luiz Date: Wed, 7 Apr 2021 13:01:12 +0200 Subject: [PATCH 1/2] include custom widget --- nwbwidgets/view.py | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/nwbwidgets/view.py b/nwbwidgets/view.py index 9e98dca3..d1829623 100644 --- a/nwbwidgets/view.py +++ b/nwbwidgets/view.py @@ -1,4 +1,5 @@ from collections import OrderedDict +from collections.abc import Iterable import h5py import hdmf @@ -82,5 +83,31 @@ def show_dynamic_table(node, **kwargs) -> widgets.Widget: } -def nwb2widget(node, neurodata_vis_spec=default_neurodata_vis_spec): +def nwb2widget(node, neurodata_vis_spec=default_neurodata_vis_spec, include_widgets: list=None): + + # Include user custom widgets + if include_widgets is None: + include_widgets = list() + for item in include_widgets: + widget = item.get('widget', None) + label = item.get('label', None) + pynwb_class = item.get('pynwb_class', None) + if widget and label and pynwb_class: + neurodata_vis_spec = include_widget( + neurodata_vis_spec=neurodata_vis_spec, + widget=widget, + label=label, + pynwb_class=pynwb_class + ) + else: + print(f'Failed to include widget {widget} with label {label} to pynwb_class {pynwb_class}') + return base.nwb2widget(node, neurodata_vis_spec) + + +def include_widget(neurodata_vis_spec, widget, label, pynwb_class): + if pynwb_class in neurodata_vis_spec: + neurodata_vis_spec[pynwb_class].update({ + label: widget + }) + return neurodata_vis_spec \ No newline at end of file From 568cb5335636da03637043426247cf241858c338 Mon Sep 17 00:00:00 2001 From: Luiz Tauffer Date: Wed, 7 Apr 2021 13:52:26 +0200 Subject: [PATCH 2/2] Update nwbwidgets/view.py Co-authored-by: Ben Dichter --- nwbwidgets/view.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nwbwidgets/view.py b/nwbwidgets/view.py index d1829623..7a1f0399 100644 --- a/nwbwidgets/view.py +++ b/nwbwidgets/view.py @@ -107,7 +107,7 @@ def nwb2widget(node, neurodata_vis_spec=default_neurodata_vis_spec, include_widg def include_widget(neurodata_vis_spec, widget, label, pynwb_class): if pynwb_class in neurodata_vis_spec: - neurodata_vis_spec[pynwb_class].update({ - label: widget - }) - return neurodata_vis_spec \ No newline at end of file + neurodata_vis_spec[pynwb_class].update({label: widget}) + else: + neurodata_vis_spec[pynwb_class] = {label: widget} + return neurodata_vis_spec