widget_string.py
72 lines
| 2.4 KiB
| text/x-python
|
PythonLexer
Jonathan Frederic
|
r14283 | """StringWidget class. | ||
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
|
r14243 | |||
Jonathan Frederic
|
r14283 | #----------------------------------------------------------------------------- | ||
# Classes | ||||
#----------------------------------------------------------------------------- | ||||
Jonathan Frederic
|
r14670 | class _StringWidget(DOMWidget): | ||
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) | ||||
Jonathan Frederic
|
r14391 | |||
Jonathan Frederic
|
r14670 | class HTMLWidget(_StringWidget): | ||
MinRK
|
r14793 | _view_name = Unicode('HTMLView', sync=True) | ||
Jonathan Frederic
|
r14670 | |||
class LatexWidget(_StringWidget): | ||||
Jonathan Frederic
|
r14701 | _view_name = Unicode('LatexView', sync=True) | ||
Jonathan Frederic
|
r14592 | |||
Jonathan Frederic
|
r14391 | |||
Jonathan Frederic
|
r14834 | class TextareaWidget(_StringWidget): | ||
_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
|
r14834 | class TextWidget(_StringWidget): | ||
_view_name = Unicode('TextView', sync=True) | ||||
Jonathan Frederic
|
r14592 | |||
def __init__(self, **kwargs): | ||||
Jonathan Frederic
|
r14834 | super(TextWidget, 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) | ||