##// END OF EJS Templates
Adding engine selection UI control to DirectViewWidget.
Brian Granger -
Show More
@@ -28,6 +28,19 b' DirectViewWidget.prototype.create_element = function () {'
28 28 this.element.addClass('cell border-box-sizing code_cell vbox');
29 29 this.element.attr('tabindex','2');
30 30 this.element.css('padding-right',0);
31
32 var control = $('<div/>').addClass('dv_control').height('30px');
33 var control_label = $('<span/>').html('Select engine(s) to run code on interactively: ');
34 control_label.css('line-height','30px');
35 var select = $('<select/>').addClass('dv_select ui-widget ui-widget-content');
36 select.css('font-size','85%%').css('margin-bottom','5px');
37 var n = this.targets.length;
38 select.append($('<option/>').html('all').attr('value','all'));
39 for (var i=0; i<n; i++) {
40 select.append($('<option/>').html(this.targets[i]).attr('value',this.targets[i]))
41 }
42 control.append(control_label).append(select);
43
31 44 var input = $('<div></div>').addClass('input hbox');
32 45 var input_area = $('<div/>').addClass('input_area box-flex1');
33 46 this.code_mirror = CodeMirror(input_area.get(0), {
@@ -38,7 +51,9 b' DirectViewWidget.prototype.create_element = function () {'
38 51 });
39 52 input.append(input_area);
40 53 var output = $('<div></div>');
41 this.element.append(input).append(output);
54
55
56 this.element.append(control).append(input).append(output);
42 57 this.output_area = new IPython.OutputArea(output, false);
43 58
44 59 };
@@ -100,7 +115,11 b' DirectViewWidget.prototype.execute = function () {'
100 115 'output': $.proxy(this.output_area.handle_output, this.output_area),
101 116 'clear_output': $.proxy(this.output_area.handle_clear_output, this.output_area),
102 117 };
103 var code = '%(widget_var)s.execute("""'+this.get_text()+'""")';
118 var target = this.element.find('.dv_select option:selected').attr('value');
119 if (target === 'all') {
120 target = '"all"';
121 }
122 var code = '%(widget_var)s.execute("""'+this.get_text()+'""",targets='+target+')';
104 123 console.log(code);
105 124 console.log(this.get_text());
106 125 var msg_id = this.kernel.execute(code, callbacks, {silent: false});
@@ -50,18 +50,25 b' class DirectViewWidget(JavascriptWidget):'
50 50 jscode = jscode % data
51 51 return jscode
52 52
53 def execute(self,code):
54 ar = self.dv.execute(code,block=False,targets='all')
53 def execute(self, code, targets='all'):
54 if targets == 'all':
55 targets = self.targets
56 ar = self.dv.execute(code,block=False,targets=targets)
55 57 ar.wait()
56 58 metadata = ar.metadata
57 for md in metadata:
58 if md['stdout']:
59 publish_pretty(md['stdout'],{'engine_id':md['engine_id']})
60 if md['stderr']:
61 publish_pretty(md['stderr'],{'engine_id':md['engine_id']})
62 if md['pyerr']:
63 publish_pretty(md['pyerr'],{'engine_id':md['engine_id']})
64
59 if isinstance(metadata, (list,tuple)):
60 for md in metadata:
61 self.publish_md(md)
62 elif isinstance(metadata, dict):
63 self.publish_md(metadata)
64
65 def publish_md(self, md):
66 if md['stdout']:
67 publish_pretty(md['stdout'],{'engine_id':md['engine_id']})
68 if md['stderr']:
69 publish_pretty(md['stderr'],{'engine_id':md['engine_id']})
70 if md['pyerr']:
71 publish_pretty(md['pyerr'],{'engine_id':md['engine_id']})
65 72
66 73
67 74 def interact(dv):
General Comments 0
You need to be logged in to leave comments. Login now