Show More
@@ -1,18 +1,31 | |||
|
1 | 1 | |
|
2 | 2 | from copy import copy |
|
3 | from glob import glob | |
|
3 | 4 | import uuid |
|
4 | 5 | import sys |
|
6 | import os | |
|
5 | 7 | |
|
8 | import IPython | |
|
6 | 9 | from IPython.kernel.comm import Comm |
|
7 | 10 | from IPython.config import LoggingConfigurable |
|
8 | 11 | from IPython.utils.traitlets import Unicode, Dict |
|
9 | 12 | from IPython.display import Javascript, display |
|
13 | from IPython.utils.py3compat import string_types | |
|
14 | from IPython.utils.javascript import display_all_js | |
|
10 | 15 | |
|
11 | class Widget(Comm): | |
|
16 | def init_widget_js(cls): | |
|
17 | path = os.path.split(os.path.abspath( __file__ ))[0] | |
|
18 | display_all_js(path) | |
|
19 | for root, dirs, files in os.walk(path): | |
|
20 | for sub_directory in dirs: | |
|
21 | display_all_js(os.path.join(path, sub_directory)) | |
|
22 | ||
|
23 | ||
|
24 | class Widget(LoggingConfigurable): | |
|
12 | 25 | |
|
13 | 26 | ### Public declarations |
|
14 | 27 | target_name = Unicode('widget') |
|
15 | view_name = Unicode() | |
|
28 | default_view_name = Unicode() | |
|
16 | 29 | |
|
17 | 30 | |
|
18 | 31 | ### Private/protected declarations |
@@ -31,20 +44,11 class Widget(Comm): | |||
|
31 | 44 | if parent is not None: |
|
32 | 45 | parent._children.append(self) |
|
33 | 46 | self._parent = parent |
|
34 | ||
|
35 | # Send frontend type code. | |
|
36 | display(Javascript(data=self._get_backbone_js())) | |
|
37 | ||
|
38 | # Create a comm. | |
|
39 | self.comm = Comm(target_name=self.target_name) | |
|
40 | self.comm.on_msg(self._handle_msg) | |
|
47 | self.comm = None | |
|
41 | 48 | |
|
42 | 49 | # Register after init to allow default values to be specified |
|
43 | 50 | self.on_trait_change(self._handle_property_changed, self.keys) |
|
44 | 51 | |
|
45 | # Set initial properties on client model. | |
|
46 | self.send_state() | |
|
47 | ||
|
48 | 52 | |
|
49 | 53 | def __del__(self): |
|
50 | 54 | self.close() |
@@ -117,11 +121,20 class Widget(Comm): | |||
|
117 | 121 | self.send_state() |
|
118 | 122 | |
|
119 | 123 | |
|
124 | def _handle_close(self): | |
|
125 | self.comm = None | |
|
126 | ||
|
127 | ||
|
120 | 128 | ### Public methods |
|
121 | def _repr_widget_(self): | |
|
122 | view_name = self.view_name | |
|
129 | def _repr_widget_(self, view_name=None): | |
|
123 | 130 | if not view_name: |
|
124 |
view_name = self. |
|
|
131 | view_name = self.default_view_name | |
|
132 | ||
|
133 | # Create a comm. | |
|
134 | if self.comm is None: | |
|
135 | self.comm = Comm(target_name=self.target_name) | |
|
136 | self.comm.on_msg(self._handle_msg) | |
|
137 | self.comm.on_close(self._handle_close) | |
|
125 | 138 |
|
|
126 | 139 | # Make sure model is syncronized |
|
127 | 140 | self.send_state() |
@@ -137,7 +150,7 class Widget(Comm): | |||
|
137 | 150 | # Now show children if any. |
|
138 | 151 | for child in self.children: |
|
139 | 152 | child._repr_widget_() |
|
140 |
return |
|
|
153 | return None | |
|
141 | 154 | |
|
142 | 155 | |
|
143 | 156 | def send_state(self): |
@@ -150,6 +163,3 class Widget(Comm): | |||
|
150 | 163 | self.comm.send({"method": "update", |
|
151 | 164 | "state": state}) |
|
152 | 165 |
|
|
No newline at end of file | ||
|
153 | ### Private methods | |
|
154 | def _get_backbone_js(self): | |
|
155 | return 'alert("woohoo!");' |
General Comments 0
You need to be logged in to leave comments.
Login now