diff --git a/IPython/html/widgets/widget.py b/IPython/html/widgets/widget.py index 9f389ca..90f0f73 100644 --- a/IPython/html/widgets/widget.py +++ b/IPython/html/widgets/widget.py @@ -31,8 +31,9 @@ class Widget(LoggingConfigurable): widgets = {} def on_widget_constructed(callback): - """Class method, registers a callback to be called when a widget is - constructed. The callback must have the following signature: + """Registers a callback to be called when a widget is constructed. + + The callback must have the following signature: callback(widget)""" Widget.widget_construction_callback = callback @@ -41,8 +42,6 @@ class Widget(LoggingConfigurable): if Widget.widget_construction_callback is not None and callable(Widget.widget_construction_callback): Widget.widget_construction_callback(widget) - - # Public declarations (Instance level) model_name = Unicode('WidgetModel', help="""Name of the backbone model registered in the front-end to create and sync this widget with.""") @@ -80,8 +79,7 @@ class Widget(LoggingConfigurable): _comm = Instance('IPython.kernel.comm.Comm') def __init__(self, **kwargs): - """Public constructor - """ + """Public constructor""" self.closed = False self._property_lock = (None, None) self._display_callbacks = [] @@ -97,21 +95,21 @@ class Widget(LoggingConfigurable): self.close() def close(self): - """Close method. Closes the widget which closes the underlying comm. + """Close method. + + Closes the widget which closes the underlying comm. When the comm is closed, all of the widget views are automatically removed from the front-end.""" if not self.closed: self._comm.close() self._close() - def _close(self): """Unsafe close""" del Widget.widgets[self.model_id] self._comm = None self.closed = True - @property def comm(self): if self._comm is None: @@ -147,7 +145,6 @@ class Widget(LoggingConfigurable): if 'custom_content' in data: self._handle_custom_msg(data['custom_content']) - def _handle_receive_state(self, sync_data): """Called when a state is received from the front-end.""" for name in self.keys: @@ -156,13 +153,11 @@ class Widget(LoggingConfigurable): with self.property_lock(name, value): setattr(self, name, value) - def _handle_custom_msg(self, content): """Called when a custom msg is received.""" for handler in self._msg_callbacks: handler(self, content) - def _handle_property_changed(self, name, old, new): """Called when a property has been changed.""" # Make sure this isn't information that the front-end just sent us. @@ -198,10 +193,8 @@ class Widget(LoggingConfigurable): keys = self.keys if key is None else [key] return {k: self._pack_widgets(getattr(self, k)) for k in keys} - def _pack_widgets(self, values): - """This function recursively converts all widget instances to model id - strings. + """Recursively converts all widget instances to model id strings. Children widgets will be stored and transmitted to the front-end by their model ids.""" @@ -220,10 +213,8 @@ class Widget(LoggingConfigurable): else: return values - def _unpack_widgets(self, values): - """This function recursively converts all model id strings to widget - instances. + """Recursively converts all model id strings to widget instances. Children widgets will be stored and transmitted to the front-end by their model ids.""" @@ -245,7 +236,6 @@ class Widget(LoggingConfigurable): else: return values - def send(self, content): """Sends a custom msg to the widget model in the front-end. @@ -256,10 +246,8 @@ class Widget(LoggingConfigurable): """ self._send({"method": "custom", "custom_content": content}) - def on_msg(self, callback, remove=False): - """Register or unregister a callback for when a custom msg is recieved - from the front-end. + """(Un)Register a custom msg recieve callback. Parameters ---------- @@ -291,10 +279,8 @@ class Widget(LoggingConfigurable): else: raise Exception('Callback must be callable.') - def on_displayed(self, callback, remove=False): - """Register or unregister a callback to be called when the widget has - been displayed. + """(Un)Register a widget displayed callback. Parameters ---------- @@ -312,20 +298,16 @@ class Widget(LoggingConfigurable): else: raise Exception('Callback must be callable.') - # Support methods def _ipython_display_(self, **kwargs): - """Function that is called when `IPython.display.display` is called on - the widget.""" - + """Called when `IPython.display.display` is called on the widget.""" # Show view. By sending a display message, the comm is opened and the # initial state is sent. self._send({"method": "display"}) self._handle_displayed(**kwargs) - def _send(self, msg): - """Sends a message to the model in the front-end""" + """Sends a message to the model in the front-end.""" self.comm.send(msg) @@ -408,9 +390,8 @@ class DOMWidget(Widget): else: raise Exception('set_css only accepts 1-3 arguments') - def add_class(self, class_names, selector=""): - """Add class[es] to a DOM element + """Add class[es] to a DOM element. Parameters ---------- @@ -428,9 +409,8 @@ class DOMWidget(Widget): "class_list": class_list, "selector": selector}) - def remove_class(self, class_names, selector=""): - """Remove class[es] from a DOM element + """Remove class[es] from a DOM element. Parameters ---------- diff --git a/IPython/html/widgets/widget_bool.py b/IPython/html/widgets/widget_bool.py index 0ad088a..f558189 100644 --- a/IPython/html/widgets/widget_bool.py +++ b/IPython/html/widgets/widget_bool.py @@ -27,6 +27,7 @@ class CheckBoxWidget(DOMWidget): description = Unicode('', help="Description of the boolean (label).", sync=True) disabled = Bool(False, help="Enable or disable user changes.", sync=True) + class ToggleButtonWidget(CheckBoxWidget): view_name = Unicode('ToggleButtonView', sync=True) \ No newline at end of file diff --git a/IPython/html/widgets/widget_button.py b/IPython/html/widgets/widget_button.py index 793ae6f..326b367 100644 --- a/IPython/html/widgets/widget_button.py +++ b/IPython/html/widgets/widget_button.py @@ -30,17 +30,17 @@ class ButtonWidget(DOMWidget): description = Unicode('', help="Description of the button (label).", sync=True) disabled = Bool(False, help="Enable or disable user changes.", sync=True) - def __init__(self, **kwargs): + """Constructor""" super(ButtonWidget, self).__init__(**kwargs) self._click_handlers = [] self.on_msg(self._handle_button_msg) - def on_click(self, callback, remove=False): - """Register a callback to execute when the button is clicked. The - callback can either accept no parameters or one sender parameter: + """Register a callback to execute when the button is clicked. + + The callback can either accept no parameters or one sender parameter: - callback() - callback(sender) If the callback has a sender parameter, the ButtonWidget instance that @@ -55,9 +55,8 @@ class ButtonWidget(DOMWidget): elif not callback in self._click_handlers: self._click_handlers.append(callback) - def _handle_button_msg(self, content): - """Handle a msg from the front-end + """Handle a msg from the front-end. Parameters ---------- @@ -66,11 +65,10 @@ class ButtonWidget(DOMWidget): if 'event' in content and content['event'] == 'click': self._handle_click() - def _handle_click(self): - """Handles when the button has been clicked. Fires on_click - callbacks when appropriate.""" - + """Handles when the button has been clicked. + + Fires on_click callbacks when appropriate.""" for handler in self._click_handlers: if callable(handler): argspec = inspect.getargspec(handler) @@ -88,4 +86,3 @@ class ButtonWidget(DOMWidget): else: raise TypeError('ButtonWidget click callback must ' \ 'accept 0 or 1 arguments.') - diff --git a/IPython/html/widgets/widget_container.py b/IPython/html/widgets/widget_container.py index b1aa4ae..54211a9 100644 --- a/IPython/html/widgets/widget_container.py +++ b/IPython/html/widgets/widget_container.py @@ -29,5 +29,6 @@ class ContainerWidget(DOMWidget): description = Unicode(sync=True) button_text = Unicode(sync=True) + class ModalWidget(ContainerWidget): view_name = Unicode('ModalView', sync=True) diff --git a/IPython/html/widgets/widget_float_range.py b/IPython/html/widgets/widget_float_range.py index 6d5aeb4..e49aed9 100644 --- a/IPython/html/widgets/widget_float_range.py +++ b/IPython/html/widgets/widget_float_range.py @@ -34,7 +34,7 @@ class BoundedFloatTextWidget(DOMWidget): self.on_trait_change(self._validate, ['value', 'min', 'max']) def _validate(self, name, old, new): - """Validate value, max, min""" + """Validate value, max, min.""" if self.min > new or new > self.max: self.value = min(max(new, self.min), self.max) diff --git a/IPython/html/widgets/widget_int_range.py b/IPython/html/widgets/widget_int_range.py index 7f3afa1..f9d5cd5 100644 --- a/IPython/html/widgets/widget_int_range.py +++ b/IPython/html/widgets/widget_int_range.py @@ -36,7 +36,7 @@ class BoundedIntTextWidget(DOMWidget): self.on_trait_change(self._validate, ['value', 'min', 'max']) def _validate(self, name, old, new): - """Validate value, max, min""" + """Validate value, max, min.""" if self.min > new or new > self.max: self.value = min(max(new, self.min), self.max) diff --git a/IPython/html/widgets/widget_selectioncontainer.py b/IPython/html/widgets/widget_selectioncontainer.py index 77416db..c5c97d0 100644 --- a/IPython/html/widgets/widget_selectioncontainer.py +++ b/IPython/html/widgets/widget_selectioncontainer.py @@ -31,7 +31,7 @@ class AccordionWidget(DOMWidget): # Public methods def set_title(self, index, title): - """Sets the title of a container page + """Sets the title of a container page. Parameters ---------- @@ -42,9 +42,8 @@ class AccordionWidget(DOMWidget): self._titles[index] = title self.send_state('_titles') - def get_title(self, index): - """Gets the title of a container pages + """Gets the title of a container pages. Parameters ---------- diff --git a/IPython/html/widgets/widget_string.py b/IPython/html/widgets/widget_string.py index cb1d377..ad53683 100644 --- a/IPython/html/widgets/widget_string.py +++ b/IPython/html/widgets/widget_string.py @@ -51,7 +51,7 @@ class TextBoxWidget(HTMLWidget): self.on_msg(self._handle_string_msg) def _handle_string_msg(self, content): - """Handle a msg from the front-end + """Handle a msg from the front-end. Parameters ---------- @@ -62,8 +62,9 @@ class TextBoxWidget(HTMLWidget): handler(self) def on_submit(self, callback, remove=False): - """Register a callback to handle text submission (triggered when the - user clicks enter). + """(Un)Register a callback to handle text submission. + + Triggered when the user clicks enter. Parameters callback: Method handle