mirror of
https://github.com/jupyter/notebook.git
synced 2025-01-06 11:35:24 +08:00
Added cell level cut/copy/paste.
This commit is contained in:
parent
0051dd3bda
commit
ccc5aa04b2
@ -61,6 +61,12 @@ var IPython = (function (IPython) {
|
||||
IPython.print_widget.print_notebook();
|
||||
});
|
||||
// Edit
|
||||
this.element.find('#cut_cell').click(function () {
|
||||
IPython.notebook.cut_cell();
|
||||
});
|
||||
this.element.find('#copy_cell').click(function () {
|
||||
IPython.notebook.copy_cell();
|
||||
});
|
||||
this.element.find('#delete_cell').click(function () {
|
||||
IPython.notebook.delete_cell();
|
||||
});
|
||||
|
@ -20,6 +20,7 @@ var IPython = (function (IPython) {
|
||||
this.element.data("notebook", this);
|
||||
this.next_prompt_number = 1;
|
||||
this.kernel = null;
|
||||
this.clipboard = null;
|
||||
this.dirty = false;
|
||||
this.msg_cell_map = {};
|
||||
this.metadata = {};
|
||||
@ -321,7 +322,6 @@ var IPython = (function (IPython) {
|
||||
|
||||
// Cell insertion, deletion and moving.
|
||||
|
||||
|
||||
Notebook.prototype.delete_cell = function (index) {
|
||||
var i = index || this.selected_index();
|
||||
if (i !== null && i >= 0 && i < this.ncells()) {
|
||||
@ -563,6 +563,91 @@ var IPython = (function (IPython) {
|
||||
};
|
||||
|
||||
|
||||
// Copy/Paste
|
||||
|
||||
Notebook.prototype.enable_paste = function () {
|
||||
var that = this;
|
||||
$('#paste_cell').removeClass('ui-state-disabled')
|
||||
.on('click', function () {that.paste_cell();});
|
||||
$('#paste_cell_above').removeClass('ui-state-disabled')
|
||||
.on('click', function () {that.paste_cell_above();});
|
||||
$('#paste_cell_below').removeClass('ui-state-disabled')
|
||||
.on('click', function () {that.paste_cell_below();});
|
||||
};
|
||||
|
||||
|
||||
Notebook.prototype.disable_paste = function () {
|
||||
$('#paste_cell').addClass('ui-state-disabled').off('click');
|
||||
$('#paste_cell_above').addClass('ui-state-disabled').off('click');
|
||||
$('#paste_cell_below').addClass('ui-state-disabled').off('click');
|
||||
};
|
||||
|
||||
|
||||
Notebook.prototype.cut_cell = function () {
|
||||
this.copy_cell();
|
||||
this.delete_cell();
|
||||
}
|
||||
|
||||
Notebook.prototype.copy_cell = function () {
|
||||
var cell = this.selected_cell();
|
||||
this.clipboard = cell.toJSON();
|
||||
this.enable_paste();
|
||||
};
|
||||
|
||||
|
||||
Notebook.prototype.paste_cell = function () {
|
||||
if (this.clipboard !== null) {
|
||||
var cell_data = this.clipboard;
|
||||
if (cell_data.cell_type == 'code') {
|
||||
new_cell = this.insert_code_cell_above();
|
||||
new_cell.fromJSON(cell_data);
|
||||
} else if (cell_data.cell_type === 'html') {
|
||||
new_cell = this.insert_html_cell_above();
|
||||
new_cell.fromJSON(cell_data);
|
||||
} else if (cell_data.cell_type === 'markdown') {
|
||||
new_cell = this.insert_markdown_cell_above();
|
||||
new_cell.fromJSON(cell_data);
|
||||
};
|
||||
};
|
||||
this.select_next();
|
||||
this.delete_cell();
|
||||
};
|
||||
|
||||
|
||||
Notebook.prototype.paste_cell_above = function () {
|
||||
if (this.clipboard !== null) {
|
||||
var cell_data = this.clipboard;
|
||||
if (cell_data.cell_type == 'code') {
|
||||
new_cell = this.insert_code_cell_above();
|
||||
new_cell.fromJSON(cell_data);
|
||||
} else if (cell_data.cell_type === 'html') {
|
||||
new_cell = this.insert_html_cell_above();
|
||||
new_cell.fromJSON(cell_data);
|
||||
} else if (cell_data.cell_type === 'markdown') {
|
||||
new_cell = this.insert_markdown_cell_above();
|
||||
new_cell.fromJSON(cell_data);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Notebook.prototype.paste_cell_below = function () {
|
||||
if (this.clipboard !== null) {
|
||||
var cell_data = this.clipboard;
|
||||
if (cell_data.cell_type == 'code') {
|
||||
new_cell = this.insert_code_cell_above();
|
||||
new_cell.fromJSON(cell_data);
|
||||
} else if (cell_data.cell_type === 'html') {
|
||||
new_cell = this.insert_html_cell_above();
|
||||
new_cell.fromJSON(cell_data);
|
||||
} else if (cell_data.cell_type === 'markdown') {
|
||||
new_cell = this.insert_markdown_cell_above();
|
||||
new_cell.fromJSON(cell_data);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
// Cell collapsing and output clearing
|
||||
|
||||
Notebook.prototype.collapse = function (index) {
|
||||
|
@ -84,6 +84,11 @@
|
||||
</li>
|
||||
<li><a href="#">Edit</a>
|
||||
<ul>
|
||||
<li id="cut_cell"><a href="#">Cut</a></li>
|
||||
<li id="copy_cell"><a href="#">Copy</a></li>
|
||||
<li id="paste_cell" class="ui-state-disabled"><a href="#">Paste</a></li>
|
||||
<li id="paste_cell_above" class="ui-state-disabled"><a href="#">Paste Above</a></li>
|
||||
<li id="paste_cell_below" class="ui-state-disabled"><a href="#">Paste Below</a></li>
|
||||
<li id="delete_cell"><a href="#">Delete</a></li>
|
||||
<hr/>
|
||||
<li id="move_cell_up"><a href="#">Move Cell Up</a></li>
|
||||
|
Loading…
Reference in New Issue
Block a user