##// END OF EJS Templates
only rich display outputs have metadata...
only rich display outputs have metadata even affects v3, which had some bugs that didn't describe actual js behavior

File last commit:

r18377:848742ff
r18590:be819bae
Show More
maintoolbar.js
226 lines | 8.4 KiB | application/javascript | JavascriptLexer
// Copyright (c) IPython Development Team.
// Distributed under the terms of the Modified BSD License.
define([
'base/js/namespace',
'jquery',
'notebook/js/toolbar',
'notebook/js/celltoolbar',
], function(IPython, $, toolbar, celltoolbar) {
"use strict";
var MainToolBar = function (selector, options) {
// Constructor
//
// Parameters:
// selector: string
// options: dictionary
// Dictionary of keyword arguments.
// events: $(Events) instance
// notebook: Notebook instance
toolbar.ToolBar.apply(this, arguments);
this.events = options.events;
this.notebook = options.notebook;
this.construct();
this.add_celltype_list();
this.add_celltoolbar_list();
this.bind_events();
};
MainToolBar.prototype = Object.create(toolbar.ToolBar.prototype);
MainToolBar.prototype.construct = function () {
var that = this;
this.add_buttons_group([
{
id : 'save_b',
label : 'Save and Checkpoint',
icon : 'fa-save',
callback : function () {
that.notebook.save_checkpoint();
}
}
]);
this.add_buttons_group([
{
id : 'insert_below_b',
label : 'Insert Cell Below',
icon : 'fa-plus',
callback : function () {
that.notebook.insert_cell_below('code');
that.notebook.select_next();
that.notebook.focus_cell();
}
}
],'insert_above_below');
this.add_buttons_group([
{
id : 'cut_b',
label : 'Cut Cell',
icon : 'fa-cut',
callback : function () {
that.notebook.cut_cell();
}
},
{
id : 'copy_b',
label : 'Copy Cell',
icon : 'fa-copy',
callback : function () {
that.notebook.copy_cell();
}
},
{
id : 'paste_b',
label : 'Paste Cell Below',
icon : 'fa-paste',
callback : function () {
that.notebook.paste_cell_below();
}
}
],'cut_copy_paste');
this.add_buttons_group([
{
id : 'move_up_b',
label : 'Move Cell Up',
icon : 'fa-arrow-up',
callback : function () {
that.notebook.move_cell_up();
}
},
{
id : 'move_down_b',
label : 'Move Cell Down',
icon : 'fa-arrow-down',
callback : function () {
that.notebook.move_cell_down();
}
}
],'move_up_down');
this.add_buttons_group([
{
id : 'run_b',
label : 'Run Cell',
icon : 'fa-play',
callback : function () {
// emulate default shift-enter behavior
that.notebook.execute_cell_and_select_below();
}
},
{
id : 'interrupt_b',
label : 'Interrupt',
icon : 'fa-stop',
callback : function () {
that.notebook.kernel.interrupt();
}
},
{
id : 'repeat_b',
label : 'Restart Kernel',
icon : 'fa-repeat',
callback : function () {
that.notebook.restart_kernel();
}
}
],'run_int');
};
MainToolBar.prototype.add_celltype_list = function () {
this.element
.append($('<select/>')
.attr('id','cell_type')
.addClass('form-control select-xs')
.append($('<option/>').attr('value','code').text('Code'))
.append($('<option/>').attr('value','markdown').text('Markdown'))
.append($('<option/>').attr('value','raw').text('Raw NBConvert'))
.append($('<option/>').attr('value','heading1').text('Heading 1'))
.append($('<option/>').attr('value','heading2').text('Heading 2'))
.append($('<option/>').attr('value','heading3').text('Heading 3'))
.append($('<option/>').attr('value','heading4').text('Heading 4'))
.append($('<option/>').attr('value','heading5').text('Heading 5'))
.append($('<option/>').attr('value','heading6').text('Heading 6'))
);
};
MainToolBar.prototype.add_celltoolbar_list = function () {
var label = $('<span/>').addClass("navbar-text").text('Cell Toolbar:');
var select = $('<select/>')
.attr('id', 'ctb_select')
.addClass('form-control select-xs')
.append($('<option/>').attr('value', '').text('None'));
this.element.append(label).append(select);
var that = this;
select.change(function() {
var val = $(this).val();
if (val ==='') {
celltoolbar.CellToolbar.global_hide();
delete that.notebook.metadata.celltoolbar;
} else {
celltoolbar.CellToolbar.global_show();
celltoolbar.CellToolbar.activate_preset(val, that.events);
that.notebook.metadata.celltoolbar = val;
}
});
// Setup the currently registered presets.
var presets = celltoolbar.CellToolbar.list_presets();
for (var i=0; i<presets.length; i++) {
var name = presets[i];
select.append($('<option/>').attr('value', name).text(name));
}
// Setup future preset registrations.
this.events.on('preset_added.CellToolbar', function (event, data) {
var name = data.name;
select.append($('<option/>').attr('value', name).text(name));
});
// Update select value when a preset is activated.
this.events.on('preset_activated.CellToolbar', function (event, data) {
if (select.val() !== data.name)
select.val(data.name);
});
};
MainToolBar.prototype.bind_events = function () {
var that = this;
this.element.find('#cell_type').change(function () {
var cell_type = $(this).val();
if (cell_type === 'code') {
that.notebook.to_code();
} else if (cell_type === 'markdown') {
that.notebook.to_markdown();
} else if (cell_type === 'raw') {
that.notebook.to_raw();
} else if (cell_type === 'heading1') {
that.notebook.to_heading(undefined, 1);
} else if (cell_type === 'heading2') {
that.notebook.to_heading(undefined, 2);
} else if (cell_type === 'heading3') {
that.notebook.to_heading(undefined, 3);
} else if (cell_type === 'heading4') {
that.notebook.to_heading(undefined, 4);
} else if (cell_type === 'heading5') {
that.notebook.to_heading(undefined, 5);
} else if (cell_type === 'heading6') {
that.notebook.to_heading(undefined, 6);
}
});
this.events.on('selected_cell_type_changed.Notebook', function (event, data) {
if (data.cell_type === 'heading') {
that.element.find('#cell_type').val(data.cell_type+data.level);
} else {
that.element.find('#cell_type').val(data.cell_type);
}
});
};
// Backwards compatability.
IPython.MainToolBar = MainToolBar;
return {'MainToolBar': MainToolBar};
});