widget_string.py
87 lines
| 3.0 KiB
| text/x-python
|
PythonLexer
Jonathan Frederic
|
r17598 | """String class. | ||
Jonathan Frederic
|
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 | ||||
#----------------------------------------------------------------------------- | ||||
Jonathan Frederic
|
r14658 | from .widget import DOMWidget, CallbackDispatcher | ||
Jonathan Frederic
|
r15465 | from IPython.utils.traitlets import Unicode, Bool | ||
Jonathan Frederic
|
r17598 | from IPython.utils.warn import DeprecatedClass | ||
Jonathan Frederic
|
r14243 | |||
Jonathan Frederic
|
r14283 | #----------------------------------------------------------------------------- | ||
# Classes | ||||
#----------------------------------------------------------------------------- | ||||
Jonathan Frederic
|
r17598 | class _String(DOMWidget): | ||
Jonathan Frederic
|
r17602 | """Base class used to create widgets that represent a string.""" | ||
Jonathan Frederic
|
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
|
r16321 | placeholder = Unicode("", help="Placeholder text to display when nothing has been typed", sync=True) | ||
Jonathan Frederic
|
r14391 | |||
Jonathan Frederic
|
r17598 | class HTML(_String): | ||
Jonathan Frederic
|
r17602 | """Renders the string `value` as HTML.""" | ||
MinRK
|
r14793 | _view_name = Unicode('HTMLView', sync=True) | ||
Jonathan Frederic
|
r14670 | |||
Jonathan Frederic
|
r17598 | class Latex(_String): | ||
Jonathan Frederic
|
r17602 | """Renders math inside the string `value` as Latex (requires $ $ or $$ $$ | ||
and similar latex tags).""" | ||||
Jonathan Frederic
|
r14701 | _view_name = Unicode('LatexView', sync=True) | ||
Jonathan Frederic
|
r14592 | |||
Jonathan Frederic
|
r14391 | |||
Jonathan Frederic
|
r17598 | class Textarea(_String): | ||
Jonathan Frederic
|
r17602 | """Multiline text area widget.""" | ||
Jonathan Frederic
|
r14834 | _view_name = Unicode('TextareaView', sync=True) | ||
Jonathan Frederic
|
r14391 | |||
Jonathan Frederic
|
r14393 | def scroll_to_bottom(self): | ||
Jonathan Frederic
|
r14406 | self.send({"method": "scroll_to_bottom"}) | ||
Jonathan Frederic
|
r14393 | |||
Jonathan Frederic
|
r17598 | class Text(_String): | ||
Jonathan Frederic
|
r17602 | """Single line textbox widget.""" | ||
Jonathan Frederic
|
r14834 | _view_name = Unicode('TextView', sync=True) | ||
Jonathan Frederic
|
r14592 | |||
def __init__(self, **kwargs): | ||||
Jonathan Frederic
|
r17598 | super(Text, self).__init__(**kwargs) | ||
MinRK
|
r14793 | self._submission_callbacks = CallbackDispatcher() | ||
Jonathan Frederic
|
r14592 | self.on_msg(self._handle_string_msg) | ||
MinRK
|
r14793 | def _handle_string_msg(self, _, content): | ||
Jonathan Frederic
|
r14607 | """Handle a msg from the front-end. | ||
Jonathan Frederic
|
r14402 | |||
Parameters | ||||
---------- | ||||
content: dict | ||||
Content of the msg.""" | ||||
MinRK
|
r14793 | if content.get('event', '') == 'submit': | ||
Jonathan Frederic
|
r14658 | self._submission_callbacks(self) | ||
Jonathan Frederic
|
r14402 | |||
Jonathan Frederic
|
r14391 | def on_submit(self, callback, remove=False): | ||
Jonathan Frederic
|
r14607 | """(Un)Register a callback to handle text submission. | ||
Triggered when the user clicks enter. | ||||
Jonathan Frederic
|
r14391 | |||
Parameters | ||||
MinRK
|
r14793 | ---------- | ||
callback: callable | ||||
Will be called with exactly one argument: the Widget instance | ||||
Jonathan Frederic
|
r14391 | remove: bool (optional) | ||
MinRK
|
r14793 | Whether to unregister the callback""" | ||
Jonathan Frederic
|
r14658 | self._submission_callbacks.register_callback(callback, remove=remove) | ||
Jonathan Frederic
|
r17598 | |||
Jonathan Frederic
|
r17602 | |||
# Remove in IPython 4.0 | ||||
Jonathan Frederic
|
r17598 | HTMLWidget = DeprecatedClass(HTML, 'HTMLWidget') | ||
LatexWidget = DeprecatedClass(Latex, 'LatexWidget') | ||||
TextareaWidget = DeprecatedClass(Textarea, 'TextareaWidget') | ||||
TextWidget = DeprecatedClass(Text, 'TextWidget') | ||||