Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Avatar for KuCalc : devops.
Download
50654 views
1
// Copyright (c) IPython Development Team.
2
// Distributed under the terms of the Modified BSD License.
3
4
define([
5
'require',
6
'base/js/namespace',
7
'jquery',
8
'./toolbar',
9
'./celltoolbar'
10
], function(require, IPython, $, toolbar, celltoolbar) {
11
"use strict";
12
13
var MainToolBar = function (selector, options) {
14
/**
15
* Constructor
16
*
17
* Parameters:
18
* selector: string
19
* options: dictionary
20
* Dictionary of keyword arguments.
21
* events: $(Events) instance
22
* notebook: Notebook instance
23
**/
24
toolbar.ToolBar.apply(this, [selector, options] );
25
this.events = options.events;
26
this.notebook = options.notebook;
27
this._make();
28
Object.seal(this);
29
};
30
31
MainToolBar.prototype = Object.create(toolbar.ToolBar.prototype);
32
33
MainToolBar.prototype._make = function () {
34
var grps = [
35
[
36
['ipython.save-notebook'],
37
'save-notbook'
38
],
39
[
40
['ipython.insert-cell-after'],
41
'insert_above_below'],
42
[
43
['ipython.cut-selected-cell',
44
'ipython.copy-selected-cell',
45
'ipython.paste-cell-after'
46
] ,
47
'cut_copy_paste'],
48
[
49
['ipython.move-selected-cell-up',
50
'ipython.move-selected-cell-down'
51
],
52
'move_up_down'],
53
[ ['ipython.run-select-next',
54
'ipython.interrupt-kernel',
55
'ipython.restart-kernel'
56
],
57
'run_int'],
58
['<add_celltype_list>'],
59
['<add_celltoolbar_list>']
60
];
61
this.construct(grps);
62
};
63
64
// add a cell type drop down to the maintoolbar.
65
// triggered when the pseudo action `<add_celltype_list>` is
66
// encountered when building a toolbar.
67
MainToolBar.prototype._pseudo_actions.add_celltype_list = function () {
68
var that = this;
69
var sel = $('<select/>')
70
.attr('id','cell_type')
71
.addClass('form-control select-xs')
72
.append($('<option/>').attr('value','code').text('Code'))
73
.append($('<option/>').attr('value','markdown').text('Markdown'))
74
.append($('<option/>').attr('value','raw').text('Raw NBConvert'))
75
.append($('<option/>').attr('value','heading').text('Heading'));
76
this.notebook.keyboard_manager.register_events(sel);
77
this.events.on('selected_cell_type_changed.Notebook', function (event, data) {
78
if (data.cell_type === 'heading') {
79
sel.val('Markdown');
80
} else {
81
sel.val(data.cell_type);
82
}
83
});
84
sel.change(function () {
85
var cell_type = $(this).val();
86
switch (cell_type) {
87
case 'code':
88
that.notebook.to_code();
89
break;
90
case 'markdown':
91
that.notebook.to_markdown();
92
break;
93
case 'raw':
94
that.notebook.to_raw();
95
break;
96
case 'heading':
97
that.notebook._warn_heading();
98
that.notebook.to_heading();
99
sel.val('markdown');
100
break;
101
default:
102
console.log("unrecognized cell type:", cell_type);
103
}
104
that.notebook.focus_cell();
105
});
106
return sel;
107
108
};
109
110
MainToolBar.prototype._pseudo_actions.add_celltoolbar_list = function () {
111
var label = $('<span/>').addClass("navbar-text").text('Cell Toolbar:');
112
var select = $('<select/>')
113
.attr('id', 'ctb_select')
114
.addClass('form-control select-xs')
115
.append($('<option/>').attr('value', '').text('None'));
116
var that = this;
117
select.change(function() {
118
var val = $(this).val();
119
if (val ==='') {
120
celltoolbar.CellToolbar.global_hide();
121
delete that.notebook.metadata.celltoolbar;
122
} else {
123
celltoolbar.CellToolbar.global_show();
124
celltoolbar.CellToolbar.activate_preset(val, that.events);
125
that.notebook.metadata.celltoolbar = val;
126
}
127
that.notebook.focus_cell();
128
});
129
this.notebook.keyboard_manager.register_events(select);
130
// Setup the currently registered presets.
131
var presets = celltoolbar.CellToolbar.list_presets();
132
for (var i=0; i<presets.length; i++) {
133
var name = presets[i];
134
select.append($('<option/>').attr('value', name).text(name));
135
}
136
// Setup future preset registrations.
137
this.events.on('preset_added.CellToolbar', function (event, data) {
138
var name = data.name;
139
select.append($('<option/>').attr('value', name).text(name));
140
});
141
this.events.on('unregistered_preset.CellToolbar', function (event, data) {
142
if (select.val() === data.name){
143
select.val('');
144
celltoolbar.CellToolbar.global_hide();
145
delete that.notebook.metadata.celltoolbar;
146
}
147
select.find("option[value='"+name+"']" ).remove();
148
});
149
// Update select value when a preset is activated.
150
this.events.on('preset_activated.CellToolbar', function (event, data) {
151
if (select.val() !== data.name){
152
select.val(data.name);
153
}
154
});
155
156
var wrapper = $('<div/>').addClass('btn-group');
157
wrapper.append(label).append(select);
158
return wrapper;
159
};
160
161
// Backwards compatibility.
162
IPython.MainToolBar = MainToolBar;
163
164
return {'MainToolBar': MainToolBar};
165
});
166
167