##// END OF EJS Templates
Initial messing around....
Initial messing around. Latex tab completion will have to be done outside the normal completer logic as the completer line splitting logic uses \\ as a special character to split lines on. I probably want to put the latex completions first and it if finds any matches, don't do any other completion logic. The only issue is that might short circuit dir/path matching on windows. Hmmm.

File last commit:

r16120:24b93a1d
r17700:7b6d94ef
Show More
File Upload Widget.ipynb
248 lines | 8.6 KiB | text/plain | TextLexer
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 {
"metadata": {
"cell_tags": [
[
"<None>",
null
]
],
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
Jonathan Frederic
s/LabelView/HTMLView
r14446 "import base64\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "from __future__ import print_function # py 2.7 compat.\n",
"from IPython.html import widgets # Widget definitions.\n",
"from IPython.utils.traitlets import Unicode # Traitlet needed to add synced attributes to the widget."
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 ],
"language": "python",
"metadata": {},
Jonathan Frederic
Remove init_widget_js, use require.js for everything...
r14342 "outputs": [],
Jonathan Frederic
Updated comments in File Upload Widget example.
r14338 "prompt_number": 1
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 },
{
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "cell_type": "markdown",
Jonathan Frederic
FileUploadWidget- Removed backbone events line, added headers
r14339 "metadata": {},
"source": [
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "This is a custom widget that allows the user to upload file data to the notebook server. The file data is sent via a statefull `value` attribute of the widget. The widget has an upload failed event that fires in the front-end and is echoed to the back-end using a custom msg."
Jonathan Frederic
FileUploadWidget- Removed backbone events line, added headers
r14339 ]
},
{
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 "cell_type": "code",
"collapsed": false,
"input": [
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "class FileWidget(widgets.DOMWidget):\n",
" _view_name = Unicode('FilePickerView', sync=True)\n",
" value = Unicode(sync=True)\n",
" filename = Unicode(sync=True)\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 " \n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 " def __init__(self, **kwargs):\n",
" \"\"\"Constructor\"\"\"\n",
" widgets.DOMWidget.__init__(self, **kwargs) # Call the base.\n",
" \n",
" # Allow the user to register error callbacks with the following signatures:\n",
" # callback()\n",
" # callback(sender)\n",
" self.errors = widgets.CallbackDispatcher(accepted_nargs=[0, 1])\n",
" \n",
" # Listen for custom msgs\n",
" self.on_msg(self._handle_custom_msg)\n",
"\n",
" def _handle_custom_msg(self, content):\n",
" \"\"\"Handle a msg from the front-end.\n",
"\n",
" Parameters\n",
" ----------\n",
" content: dict\n",
" Content of the msg.\"\"\"\n",
" if 'event' in content and content['event'] == 'error':\n",
" self.errors()\n",
" self.errors(self)\n",
" "
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 ],
"language": "python",
"metadata": {},
"outputs": [],
Jonathan Frederic
Updated comments in File Upload Widget example.
r14338 "prompt_number": 2
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 },
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%javascript\n",
"\n",
epifanio
Update File Upload Widget.ipynb
r15743 "require([\"widgets/js/widget\"], function(WidgetManager){\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 " var FilePickerView = IPython.WidgetView.extend({\n",
" render: function(){\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 " // Render the view.\n",
" this.setElement($('<input />')\n",
" .attr('type', 'file'));\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 " },\n",
" \n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 " events: {\n",
" // List of events and their handlers.\n",
" 'change': 'handle_file_change',\n",
" },\n",
" \n",
" handle_file_change: function(evt) { \n",
" // Handle when the user has changed the file.\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 " \n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 " // Retrieve the first (and only!) File from the FileList object\n",
" var file = evt.target.files[0];\n",
" if (file) {\n",
"\n",
" // Read the file's textual content and set value to those contents.\n",
" var that = this;\n",
" var file_reader = new FileReader();\n",
" file_reader.onload = function(e) {\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 " that.model.set('value', e.target.result);\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 " that.touch();\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 " }\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 " file_reader.readAsText(file);\n",
Jonathan Frederic
Updated comments in File Upload Widget example.
r14338 " } else {\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "\n",
" // The file couldn't be opened. Send an error msg to the\n",
" // back-end.\n",
" this.send({ 'event': 'error' });\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 " }\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "\n",
" // Set the filename of the file.\n",
" this.model.set('filename', file.name);\n",
" this.touch();\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 " },\n",
" });\n",
" \n",
" // Register the DatePickerView with the widget manager.\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 " WidgetManager.register_widget_view('FilePickerView', FilePickerView);\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 "});"
],
"language": "python",
"metadata": {},
"outputs": [
{
"javascript": [
"\n",
epifanio
Update File Upload Widget.ipynb
r15744 "require([\"widgets/js/widget\"], function(WidgetManager){\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 " var FilePickerView = IPython.WidgetView.extend({\n",
" render: function(){\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 " // Render the view.\n",
" this.setElement($('<input />')\n",
" .attr('type', 'file'));\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 " },\n",
" \n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 " events: {\n",
" // List of events and their handlers.\n",
" 'change': 'handle_file_change',\n",
" },\n",
" \n",
" handle_file_change: function(evt) { \n",
" // Handle when the user has changed the file.\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 " \n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 " // Retrieve the first (and only!) File from the FileList object\n",
" var file = evt.target.files[0];\n",
" if (file) {\n",
"\n",
" // Read the file's textual content and set value to those contents.\n",
" var that = this;\n",
" var file_reader = new FileReader();\n",
" file_reader.onload = function(e) {\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 " that.model.set('value', e.target.result);\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 " that.touch();\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 " }\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 " file_reader.readAsText(file);\n",
Jonathan Frederic
Updated comments in File Upload Widget example.
r14338 " } else {\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "\n",
" // The file couldn't be opened. Send an error msg to the\n",
" // back-end.\n",
" this.send({ 'event': 'error' });\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 " }\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "\n",
" // Set the filename of the file.\n",
" this.model.set('filename', file.name);\n",
" this.touch();\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 " },\n",
" });\n",
" \n",
" // Register the DatePickerView with the widget manager.\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 " WidgetManager.register_widget_view('FilePickerView', FilePickerView);\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 "});"
],
"metadata": {},
"output_type": "display_data",
"text": [
Jonathan Frederic
Renamed widgets......
r14834 "<IPython.core.display.Javascript at 0x36df2d0>"
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 ]
}
],
Jonathan Frederic
Updated comments in File Upload Widget example.
r14338 "prompt_number": 3
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 },
{
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "cell_type": "markdown",
Jonathan Frederic
FileUploadWidget- Removed backbone events line, added headers
r14339 "metadata": {},
"source": [
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "The following shows how the file widget can be used."
Jonathan Frederic
FileUploadWidget- Removed backbone events line, added headers
r14339 ]
},
{
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 "cell_type": "code",
"collapsed": false,
"input": [
"file_widget = FileWidget()\n",
"\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "# Register an event to echo the filename when it has been changed.\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 "def file_loading():\n",
Jonathan Frederic
Widget examples Python 3.x compatability.
r14413 " print(\"Loading %s\" % file_widget.filename)\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "file_widget.on_trait_change(file_loading, 'filename')\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 "\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "# Register an event to echo the filename and contents when a file\n",
"# has been uploaded.\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 "def file_loaded():\n",
Jonathan Frederic
Widget examples Python 3.x compatability.
r14413 " print(\"Loaded, file contents: %s\" % file_widget.value)\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "file_widget.on_trait_change(file_loaded, 'value')\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 "\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "# Register an event to print an error message when a file could not\n",
"# be opened. Since the error messages are not handled through\n",
"# traitlets but instead handled through custom msgs, the registration\n",
"# of the handler is different than the two examples above. Instead\n",
"# the API provided by the CallbackDispatcher must be used.\n",
"def file_failed():\n",
" print(\"Could not load file contents of %s\" % file_widget.filename)\n",
"file_widget.errors.register_callback(file_failed)\n",
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 "\n",
Jonathan Frederic
Fixed some more example files (see list below)......
r14742 "file_widget"
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 ],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Loading test.txt\n"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
Jonathan Frederic
Widget examples Python 3.x compatability.
r14413 "Loaded, file contents: Hello World!\n",
"\n"
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 ]
}
],
Jonathan Frederic
Updated comments in File Upload Widget example.
r14338 "prompt_number": 4
Jonathan Frederic
Added File Upload Widget example for Chris Kees
r14337 }
],
"metadata": {}
}
]
epifanio
Update File Upload Widget.ipynb
r15743 }