Show More
@@ -26,8 +26,16 b' var IPython = (function (IPython) {' | |||||
26 |
|
26 | |||
27 | /* |
|
27 | /* | |
28 | * @constructor |
|
28 | * @constructor | |
|
29 | * | |||
|
30 | * * @param {object|undefined} [options] | |||
|
31 | * @param [options.cm_config] {object} config to pass to CodeMirror, will extend default parameters | |||
29 | */ |
|
32 | */ | |
30 | var Cell = function () { |
|
33 | var Cell = function (options) { | |
|
34 | ||||
|
35 | options = options || {}; | |||
|
36 | // superclass default overwrite our default | |||
|
37 | this.cm_config = $.extend({},Cell.cm_default,options.cm_config); | |||
|
38 | ||||
31 | this.placeholder = this.placeholder || ''; |
|
39 | this.placeholder = this.placeholder || ''; | |
32 | this.read_only = false; |
|
40 | this.read_only = false; | |
33 | this.selected = false; |
|
41 | this.selected = false; | |
@@ -43,6 +51,11 b' var IPython = (function (IPython) {' | |||||
43 | this.cell_id = utils.uuid(); |
|
51 | this.cell_id = utils.uuid(); | |
44 | }; |
|
52 | }; | |
45 |
|
53 | |||
|
54 | Cell.cm_default = { | |||
|
55 | indentUnit : 4, | |||
|
56 | readOnly: this.read_only, | |||
|
57 | }; | |||
|
58 | ||||
46 |
|
59 | |||
47 | /** |
|
60 | /** | |
48 | * Empty. Subclasses must implement create_element. |
|
61 | * Empty. Subclasses must implement create_element. |
@@ -32,14 +32,29 b' var IPython = (function (IPython) {' | |||||
32 | * |
|
32 | * | |
33 | * @constructor |
|
33 | * @constructor | |
34 | * @param {Object|null} kernel |
|
34 | * @param {Object|null} kernel | |
|
35 | * @param {object|undefined} [options] | |||
|
36 | * @param [options.cm_config] {object} config to pass to CodeMirror | |||
35 | */ |
|
37 | */ | |
36 | var CodeCell = function (kernel) { |
|
38 | var CodeCell = function (kernel, options) { | |
37 | this.kernel = kernel || null; |
|
39 | this.kernel = kernel || null; | |
38 | this.code_mirror = null; |
|
40 | this.code_mirror = null; | |
39 | this.input_prompt_number = null; |
|
41 | this.input_prompt_number = null; | |
40 | this.collapsed = false; |
|
42 | this.collapsed = false; | |
41 | this.default_mode = 'python'; |
|
43 | this.default_mode = 'python'; | |
42 | IPython.Cell.apply(this, arguments); |
|
44 | ||
|
45 | ||||
|
46 | var cm_overwrite_options = { | |||
|
47 | extraKeys: {"Tab": "indentMore","Shift-Tab" : "indentLess",'Backspace':"delSpaceToPrevTabStop"}, | |||
|
48 | onKeyEvent: $.proxy(this.handle_codemirror_keyevent,this) | |||
|
49 | }; | |||
|
50 | ||||
|
51 | var arg_cm_options = options.cm_options || {}; | |||
|
52 | var cm_config = $.extend({},CodeCell.cm_default, arg_cm_options, cm_overwrite_options); | |||
|
53 | ||||
|
54 | var options = {}; | |||
|
55 | options.cm_config = cm_config; | |||
|
56 | ||||
|
57 | IPython.Cell.apply(this,[options]); | |||
43 |
|
58 | |||
44 | var that = this; |
|
59 | var that = this; | |
45 | this.element.focusout( |
|
60 | this.element.focusout( | |
@@ -47,6 +62,13 b' var IPython = (function (IPython) {' | |||||
47 | ); |
|
62 | ); | |
48 | }; |
|
63 | }; | |
49 |
|
64 | |||
|
65 | CodeCell.cm_default = { | |||
|
66 | mode: 'python', | |||
|
67 | theme: 'ipython', | |||
|
68 | matchBrackets: true | |||
|
69 | }; | |||
|
70 | ||||
|
71 | ||||
50 | CodeCell.prototype = new IPython.Cell(); |
|
72 | CodeCell.prototype = new IPython.Cell(); | |
51 |
|
73 | |||
52 | /** |
|
74 | /** | |
@@ -70,15 +92,7 b' var IPython = (function (IPython) {' | |||||
70 | input.append($('<div/>').addClass('prompt input_prompt')); |
|
92 | input.append($('<div/>').addClass('prompt input_prompt')); | |
71 | vbox.append(this.celltoolbar.element); |
|
93 | vbox.append(this.celltoolbar.element); | |
72 | var input_area = $('<div/>').addClass('input_area'); |
|
94 | var input_area = $('<div/>').addClass('input_area'); | |
73 |
this.code_mirror = CodeMirror(input_area.get(0), |
|
95 | this.code_mirror = CodeMirror(input_area.get(0), this.cm_config); | |
74 | indentUnit : 4, |
|
|||
75 | mode: 'python', |
|
|||
76 | theme: 'ipython', |
|
|||
77 | readOnly: this.read_only, |
|
|||
78 | extraKeys: {"Tab": "indentMore","Shift-Tab" : "indentLess",'Backspace':"delSpaceToPrevTabStop"}, |
|
|||
79 | onKeyEvent: $.proxy(this.handle_codemirror_keyevent,this), |
|
|||
80 | matchBrackets: true |
|
|||
81 | }); |
|
|||
82 | vbox.append(input_area); |
|
96 | vbox.append(input_area); | |
83 | input.append(vbox); |
|
97 | input.append(vbox); | |
84 | var output = $('<div></div>'); |
|
98 | var output = $('<div></div>'); |
@@ -26,14 +26,38 b' var IPython = (function (IPython) {' | |||||
26 | * @class TextCell |
|
26 | * @class TextCell | |
27 | * @constructor TextCell |
|
27 | * @constructor TextCell | |
28 | * @extend Ipython.Cell |
|
28 | * @extend Ipython.Cell | |
|
29 | * @param {object|undefined} [options] | |||
|
30 | * @param [options.cm_config] {object} config to pass to CodeMirror, will extend/overwrite default config | |||
29 | */ |
|
31 | */ | |
30 | var TextCell = function () { |
|
32 | var TextCell = function (options) { | |
31 | this.code_mirror_mode = this.code_mirror_mode || 'htmlmixed'; |
|
33 | this.code_mirror_mode = this.code_mirror_mode || 'htmlmixed'; | |
32 | IPython.Cell.apply(this, arguments); |
|
34 | var options = options || {}; | |
|
35 | ||||
|
36 | var cm_overwrite_options = { | |||
|
37 | extraKeys: {"Tab": "indentMore","Shift-Tab" : "indentLess"}, | |||
|
38 | onKeyEvent: $.proxy(this.handle_codemirror_keyevent,this) | |||
|
39 | }; | |||
|
40 | ||||
|
41 | var arg_cm_options = options.cm_options || {}; | |||
|
42 | var cm_config = $.extend({},TextCell.cm_default, arg_cm_options, cm_overwrite_options); | |||
|
43 | ||||
|
44 | var options = {}; | |||
|
45 | options.cm_config = cm_config; | |||
|
46 | ||||
|
47 | ||||
|
48 | IPython.Cell.apply(this, [options]); | |||
33 | this.rendered = false; |
|
49 | this.rendered = false; | |
34 | this.cell_type = this.cell_type || 'text'; |
|
50 | this.cell_type = this.cell_type || 'text'; | |
35 | }; |
|
51 | }; | |
36 |
|
52 | |||
|
53 | TextCell.cm_default = { | |||
|
54 | mode: this.code_mirror_mode, | |||
|
55 | theme: 'default', | |||
|
56 | value: this.placeholder, | |||
|
57 | lineWrapping : true, | |||
|
58 | } | |||
|
59 | ||||
|
60 | ||||
37 | TextCell.prototype = new IPython.Cell(); |
|
61 | TextCell.prototype = new IPython.Cell(); | |
38 |
|
62 | |||
39 | /** |
|
63 | /** | |
@@ -50,16 +74,7 b' var IPython = (function (IPython) {' | |||||
50 | cell.append(this.celltoolbar.element); |
|
74 | cell.append(this.celltoolbar.element); | |
51 |
|
75 | |||
52 | var input_area = $('<div/>').addClass('text_cell_input border-box-sizing'); |
|
76 | var input_area = $('<div/>').addClass('text_cell_input border-box-sizing'); | |
53 |
this.code_mirror = CodeMirror(input_area.get(0), |
|
77 | this.code_mirror = CodeMirror(input_area.get(0), this.cm_config); | |
54 | indentUnit : 4, |
|
|||
55 | mode: this.code_mirror_mode, |
|
|||
56 | theme: 'default', |
|
|||
57 | value: this.placeholder, |
|
|||
58 | readOnly: this.read_only, |
|
|||
59 | lineWrapping : true, |
|
|||
60 | extraKeys: {"Tab": "indentMore","Shift-Tab" : "indentLess"}, |
|
|||
61 | onKeyEvent: $.proxy(this.handle_codemirror_keyevent,this) |
|
|||
62 | }); |
|
|||
63 | // The tabindex=-1 makes this div focusable. |
|
78 | // The tabindex=-1 makes this div focusable. | |
64 | var render_area = $('<div/>').addClass('text_cell_render border-box-sizing'). |
|
79 | var render_area = $('<div/>').addClass('text_cell_render border-box-sizing'). | |
65 | addClass('rendered_html').attr('tabindex','-1'); |
|
80 | addClass('rendered_html').attr('tabindex','-1'); |
General Comments 0
You need to be logged in to leave comments.
Login now