##// END OF EJS Templates
Persistence API,...
Persistence API, This is a combination of 10 commits. Enable widget instanciation from front-end. Address @minrk 's review comments. Make API that allows users to persist widget state easily. Added support for view persistence Started adding support for model persistence. Half way there! Finished persistence API. Move persistence code into the widget framework. Fin. Bug fixes

File last commit:

r18533:b46a0ee8
r19350:a8e5e600
Show More
widget_string.py
91 lines | 3.1 KiB | text/x-python | PythonLexer
Jonathan Frederic
Renamed *Widget to *,...
r17598 """String class.
Jonathan Frederic
Cleaned up Python widget code.
r14283
Represents a unicode string using a widget.
"""
#-----------------------------------------------------------------------------
# Copyright (c) 2013, the IPython Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file COPYING.txt, distributed with this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
Sylvain Corlay
registering core widgets
r18531 from .widget import DOMWidget, CallbackDispatcher, register
Jonathan Frederic
Changed children list to CTuple....
r15465 from IPython.utils.traitlets import Unicode, Bool
Jonathan Frederic
Renamed *Widget to *,...
r17598 from IPython.utils.warn import DeprecatedClass
Jonathan Frederic
Add string widget
r14243
Jonathan Frederic
Cleaned up Python widget code.
r14283 #-----------------------------------------------------------------------------
# Classes
#-----------------------------------------------------------------------------
Jonathan Frederic
Renamed *Widget to *,...
r17598 class _String(DOMWidget):
Jonathan Frederic
Added some doc strings on the widgets....
r17602 """Base class used to create widgets that represent a string."""
Jonathan Frederic
sync=True isntead of a keys list
r14588 value = Unicode(help="String value", sync=True)
disabled = Bool(False, help="Enable or disable user changes", sync=True)
description = Unicode(help="Description of the value this widget represents", sync=True)
Jessica B. Hamrick
Add placeholder attribute to text widgets
r16321 placeholder = Unicode("", help="Placeholder text to display when nothing has been typed", sync=True)
Jonathan Frederic
Added TextBox submit event
r14391
Sylvain Corlay
jupyter -> IPython
r18533 @register('IPython.HTML')
Jonathan Frederic
Renamed *Widget to *,...
r17598 class HTML(_String):
Jonathan Frederic
Added some doc strings on the widgets....
r17602 """Renders the string `value` as HTML."""
MinRK
review pass on Python-side of widgets...
r14793 _view_name = Unicode('HTMLView', sync=True)
Jonathan Frederic
Create base widget classes
r14670
Sylvain Corlay
jupyter -> IPython
r18533 @register('IPython.Latex')
Jonathan Frederic
Renamed *Widget to *,...
r17598 class Latex(_String):
Jonathan Frederic
Added some doc strings on the widgets....
r17602 """Renders math inside the string `value` as Latex (requires $ $ or $$ $$
and similar latex tags)."""
Jonathan Frederic
s/view_name/_view_name
r14701 _view_name = Unicode('LatexView', sync=True)
Jonathan Frederic
1-to-1 widget / view mapping
r14592
Jonathan Frederic
Added TextBox submit event
r14391
Sylvain Corlay
jupyter -> IPython
r18533 @register('IPython.Textarea')
Jonathan Frederic
Renamed *Widget to *,...
r17598 class Textarea(_String):
Jonathan Frederic
Added some doc strings on the widgets....
r17602 """Multiline text area widget."""
Jonathan Frederic
Renamed widgets......
r14834 _view_name = Unicode('TextareaView', sync=True)
Jonathan Frederic
Added TextBox submit event
r14391
Jonathan Frederic
Add scroll_to_bottom method for TextAreaView (StringWidget).
r14393 def scroll_to_bottom(self):
Jonathan Frederic
Fix scroll_to_bottom
r14406 self.send({"method": "scroll_to_bottom"})
Jonathan Frederic
Add scroll_to_bottom method for TextAreaView (StringWidget).
r14393
Sylvain Corlay
jupyter -> IPython
r18533 @register('IPython.Text')
Jonathan Frederic
Renamed *Widget to *,...
r17598 class Text(_String):
Jonathan Frederic
Added some doc strings on the widgets....
r17602 """Single line textbox widget."""
Jonathan Frederic
Renamed widgets......
r14834 _view_name = Unicode('TextView', sync=True)
Jonathan Frederic
1-to-1 widget / view mapping
r14592
def __init__(self, **kwargs):
Jonathan Frederic
Renamed *Widget to *,...
r17598 super(Text, self).__init__(**kwargs)
MinRK
review pass on Python-side of widgets...
r14793 self._submission_callbacks = CallbackDispatcher()
Jonathan Frederic
1-to-1 widget / view mapping
r14592 self.on_msg(self._handle_string_msg)
MinRK
review pass on Python-side of widgets...
r14793 def _handle_string_msg(self, _, content):
Jonathan Frederic
More PEP8 changes
r14607 """Handle a msg from the front-end.
Jonathan Frederic
Changed on_submit to use custom messages instead of stateful communcation
r14402
Parameters
----------
content: dict
Content of the msg."""
MinRK
review pass on Python-side of widgets...
r14793 if content.get('event', '') == 'submit':
Jonathan Frederic
Added new CallbackDispatcher class
r14658 self._submission_callbacks(self)
Jonathan Frederic
Changed on_submit to use custom messages instead of stateful communcation
r14402
Jonathan Frederic
Added TextBox submit event
r14391 def on_submit(self, callback, remove=False):
Jonathan Frederic
More PEP8 changes
r14607 """(Un)Register a callback to handle text submission.
Triggered when the user clicks enter.
Jonathan Frederic
Added TextBox submit event
r14391
Parameters
MinRK
review pass on Python-side of widgets...
r14793 ----------
callback: callable
Will be called with exactly one argument: the Widget instance
Jonathan Frederic
Added TextBox submit event
r14391 remove: bool (optional)
MinRK
review pass on Python-side of widgets...
r14793 Whether to unregister the callback"""
Jonathan Frederic
Added new CallbackDispatcher class
r14658 self._submission_callbacks.register_callback(callback, remove=remove)
Jonathan Frederic
Renamed *Widget to *,...
r17598
Jonathan Frederic
Added some doc strings on the widgets....
r17602
# Remove in IPython 4.0
Jonathan Frederic
Renamed *Widget to *,...
r17598 HTMLWidget = DeprecatedClass(HTML, 'HTMLWidget')
LatexWidget = DeprecatedClass(Latex, 'LatexWidget')
TextareaWidget = DeprecatedClass(Textarea, 'TextareaWidget')
TextWidget = DeprecatedClass(Text, 'TextWidget')