Show More
@@ -0,0 +1,55 b'' | |||||
|
1 | //---------------------------------------------------------------------------- | |||
|
2 | // Copyright (C) 2013 The IPython Development Team | |||
|
3 | // | |||
|
4 | // Distributed under the terms of the BSD License. The full license is in | |||
|
5 | // the file COPYING, distributed as part of this software. | |||
|
6 | //---------------------------------------------------------------------------- | |||
|
7 | ||||
|
8 | //============================================================================ | |||
|
9 | // ImageWidget | |||
|
10 | //============================================================================ | |||
|
11 | ||||
|
12 | /** | |||
|
13 | * @module IPython | |||
|
14 | * @namespace IPython | |||
|
15 | **/ | |||
|
16 | ||||
|
17 | define(["notebook/js/widget"], function(widget_manager){ | |||
|
18 | var ImageWidgetModel = IPython.WidgetModel.extend({}); | |||
|
19 | widget_manager.register_widget_model('ImageWidgetModel', ImageWidgetModel); | |||
|
20 | ||||
|
21 | var ImageView = IPython.WidgetView.extend({ | |||
|
22 | ||||
|
23 | // Called when view is rendered. | |||
|
24 | render : function(){ | |||
|
25 | this.setElement($("<img />")); | |||
|
26 | this.update(); // Set defaults. | |||
|
27 | }, | |||
|
28 | ||||
|
29 | // Handles: Backend -> Frontend Sync | |||
|
30 | // Frontent -> Frontend Sync | |||
|
31 | update : function(){ | |||
|
32 | var image_src = 'data:image/' + this.model.get('image_format') + ';base64,' + this.model.get('_b64value'); | |||
|
33 | this.$el.attr('src', image_src); | |||
|
34 | ||||
|
35 | var width = this.model.get('width'); | |||
|
36 | if (width !== undefined && width.length > 0) { | |||
|
37 | this.$el.attr('width', width); | |||
|
38 | } else { | |||
|
39 | this.$el.removeAttr('width'); | |||
|
40 | } | |||
|
41 | ||||
|
42 | var height = this.model.get('height'); | |||
|
43 | if (height !== undefined && height.length > 0) { | |||
|
44 | this.$el.attr('height', height); | |||
|
45 | } else { | |||
|
46 | this.$el.removeAttr('height'); | |||
|
47 | } | |||
|
48 | return IPython.WidgetView.prototype.update.call(this); | |||
|
49 | }, | |||
|
50 | ||||
|
51 | }); | |||
|
52 | ||||
|
53 | widget_manager.register_widget_view('ImageView', ImageView); | |||
|
54 | ||||
|
55 | }); |
@@ -0,0 +1,38 b'' | |||||
|
1 | """ButtonWidget class. | |||
|
2 | ||||
|
3 | Represents a button in the frontend using a widget. Allows user to listen for | |||
|
4 | click events on the button and trigger backend code when the clicks are fired. | |||
|
5 | """ | |||
|
6 | #----------------------------------------------------------------------------- | |||
|
7 | # Copyright (c) 2013, the IPython Development Team. | |||
|
8 | # | |||
|
9 | # Distributed under the terms of the Modified BSD License. | |||
|
10 | # | |||
|
11 | # The full license is in the file COPYING.txt, distributed with this software. | |||
|
12 | #----------------------------------------------------------------------------- | |||
|
13 | ||||
|
14 | #----------------------------------------------------------------------------- | |||
|
15 | # Imports | |||
|
16 | #----------------------------------------------------------------------------- | |||
|
17 | import base64 | |||
|
18 | ||||
|
19 | from .widget import Widget | |||
|
20 | from IPython.utils.traitlets import Unicode, Bytes | |||
|
21 | ||||
|
22 | #----------------------------------------------------------------------------- | |||
|
23 | # Classes | |||
|
24 | #----------------------------------------------------------------------------- | |||
|
25 | class ImageWidget(Widget): | |||
|
26 | target_name = Unicode('ImageWidgetModel') | |||
|
27 | default_view_name = Unicode('ImageView') | |||
|
28 | ||||
|
29 | # Define the custom state properties to sync with the front-end | |||
|
30 | _keys = ['image_format', 'width', 'height', '_b64value'] | |||
|
31 | image_format = Unicode('png') | |||
|
32 | width = Unicode() | |||
|
33 | height = Unicode() | |||
|
34 | _b64value = Unicode() | |||
|
35 | ||||
|
36 | value = Bytes() | |||
|
37 | def _value_changed(self, name, old, new): | |||
|
38 | self._b64value = base64.b64encode(new) No newline at end of file |
@@ -15,6 +15,7 b' define([' | |||||
15 | "notebook/js/widgets/container", |
|
15 | "notebook/js/widgets/container", | |
16 | "notebook/js/widgets/float", |
|
16 | "notebook/js/widgets/float", | |
17 | "notebook/js/widgets/float_range", |
|
17 | "notebook/js/widgets/float_range", | |
|
18 | "notebook/js/widgets/image", | |||
18 | "notebook/js/widgets/int", |
|
19 | "notebook/js/widgets/int", | |
19 | "notebook/js/widgets/int_range", |
|
20 | "notebook/js/widgets/int_range", | |
20 | "notebook/js/widgets/multicontainer", |
|
21 | "notebook/js/widgets/multicontainer", |
@@ -5,6 +5,7 b' from .widget_button import ButtonWidget' | |||||
5 | from .widget_container import ContainerWidget |
|
5 | from .widget_container import ContainerWidget | |
6 | from .widget_float import FloatWidget |
|
6 | from .widget_float import FloatWidget | |
7 | from .widget_float_range import FloatRangeWidget |
|
7 | from .widget_float_range import FloatRangeWidget | |
|
8 | from .widget_image import ImageWidget | |||
8 | from .widget_int import IntWidget |
|
9 | from .widget_int import IntWidget | |
9 | from .widget_int_range import IntRangeWidget |
|
10 | from .widget_int_range import IntRangeWidget | |
10 | from .widget_multicontainer import MulticontainerWidget |
|
11 | from .widget_multicontainer import MulticontainerWidget |
@@ -49,6 +49,7 b'' | |||||
49 | "- BoolWidget : boolean \n", |
|
49 | "- BoolWidget : boolean \n", | |
50 | "- FloatRangeWidget : bounded float \n", |
|
50 | "- FloatRangeWidget : bounded float \n", | |
51 | "- FloatWidget : unbounded float \n", |
|
51 | "- FloatWidget : unbounded float \n", | |
|
52 | "- ImageWidget : image\n", | |||
52 | "- IntRangeWidget : bounded integer \n", |
|
53 | "- IntRangeWidget : bounded integer \n", | |
53 | "- IntWidget : unbounded integer \n", |
|
54 | "- IntWidget : unbounded integer \n", | |
54 | "- SelectionWidget : enumeration \n", |
|
55 | "- SelectionWidget : enumeration \n", | |
@@ -82,6 +83,7 b'' | |||||
82 | " 'ContainerWidget',\n", |
|
83 | " 'ContainerWidget',\n", | |
83 | " 'FloatRangeWidget',\n", |
|
84 | " 'FloatRangeWidget',\n", | |
84 | " 'FloatWidget',\n", |
|
85 | " 'FloatWidget',\n", | |
|
86 | " 'ImageWidget',\n", | |||
85 | " 'IntRangeWidget',\n", |
|
87 | " 'IntRangeWidget',\n", | |
86 | " 'IntWidget',\n", |
|
88 | " 'IntWidget',\n", | |
87 | " 'MulticontainerWidget',\n", |
|
89 | " 'MulticontainerWidget',\n", | |
@@ -154,8 +156,6 b'' | |||||
154 | "text": [ |
|
156 | "text": [ | |
155 | "['visible',\n", |
|
157 | "['visible',\n", | |
156 | " '_css',\n", |
|
158 | " '_css',\n", | |
157 | " '_add_class',\n", |
|
|||
158 | " '_remove_class',\n", |
|
|||
159 | " 'value',\n", |
|
159 | " 'value',\n", | |
160 | " 'step',\n", |
|
160 | " 'step',\n", | |
161 | " 'max',\n", |
|
161 | " 'max',\n", | |
@@ -303,6 +303,7 b'' | |||||
303 | "| | FloatTextView |\n", |
|
303 | "| | FloatTextView |\n", | |
304 | "| | ProgressView |\n", |
|
304 | "| | ProgressView |\n", | |
305 | "| FloatWidget | *FloatTextView* |\n", |
|
305 | "| FloatWidget | *FloatTextView* |\n", | |
|
306 | "| ImageWidget | *ImageView* |\n", | |||
306 | "| IntRangeWidget | *IntSliderView* |\n", |
|
307 | "| IntRangeWidget | *IntSliderView* |\n", | |
307 | "| | IntTextView |\n", |
|
308 | "| | IntTextView |\n", | |
308 | "| | ProgressView |\n", |
|
309 | "| | ProgressView |\n", |
General Comments 0
You need to be logged in to leave comments.
Login now