diff --git a/IPython/frontend/html/notebook/static/js/menubar.js b/IPython/frontend/html/notebook/static/js/menubar.js
index 2d670a20d..cbd8fa194 100644
--- a/IPython/frontend/html/notebook/static/js/menubar.js
+++ b/IPython/frontend/html/notebook/static/js/menubar.js
@@ -22,7 +22,14 @@ var IPython = (function (IPython) {
MenuBar.prototype.style = function () {
- $('ul#menus').menubar();
+ $('ul#menus').menubar({
+ select : function (event, ui) {
+ // The selected cell looses focus when the menu is entered, so we
+ // re-select it upon selection.
+ var i = IPython.notebook.selected_index();
+ IPython.notebook.select(i);
+ }
+ });
};
diff --git a/IPython/frontend/html/notebook/static/js/notebook.js b/IPython/frontend/html/notebook/static/js/notebook.js
index 91311af09..020e6b039 100644
--- a/IPython/frontend/html/notebook/static/js/notebook.js
+++ b/IPython/frontend/html/notebook/static/js/notebook.js
@@ -200,19 +200,6 @@ var IPython = (function (IPython) {
that.element.animate({height : new_height + 'px'}, 'fast');
});
- this.element.bind('collapse_left_panel', function () {
- var splitter_width = $('div#left_panel_splitter').outerWidth(true);
- var new_margin = splitter_width;
- $('div#notebook_panel').animate({marginLeft : new_margin + 'px'}, 'fast');
- });
-
- this.element.bind('expand_left_panel', function () {
- var splitter_width = $('div#left_panel_splitter').outerWidth(true);
- var left_panel_width = IPython.left_panel.width;
- var new_margin = splitter_width + left_panel_width;
- $('div#notebook_panel').animate({marginLeft : new_margin + 'px'}, 'fast');
- });
-
$(window).bind('beforeunload', function () {
// TODO: Make killing the kernel configurable.
var kill_kernel = false;
@@ -273,7 +260,16 @@ var IPython = (function (IPython) {
Notebook.prototype.index_or_selected = function (index) {
- return index || this.selected_index() || 0;
+ var i;
+ if (index === undefined) {
+ i = this.selected_index();
+ if (i === null) {
+ i = 0;
+ }
+ } else {
+ i = index;
+ }
+ return i;
};
@@ -338,7 +334,7 @@ var IPython = (function (IPython) {
// Cell insertion, deletion and moving.
Notebook.prototype.delete_cell = function (index) {
- var i = index || this.selected_index();
+ var i = this.index_or_selected(index);
if (i !== null && i >= 0 && i < this.ncells()) {
this.cell_elements().eq(i).remove();
if (i === (this.ncells())) {
@@ -664,6 +660,7 @@ var IPython = (function (IPython) {
Notebook.prototype.split_cell = function () {
+ // Todo: implement spliting for other cell types.
var cell = this.selected_cell();
if (cell instanceof IPython.CodeCell) {
var cursor = cell.code_mirror.getCursor();
@@ -680,6 +677,40 @@ var IPython = (function (IPython) {
};
};
+
+ Notebook.prototype.merge_cell_above = function () {
+ // Todo: implement merging for other cell types.
+ var cell = this.selected_cell();
+ var index = this.selected_index();
+ if (index > 0) {
+ upper_cell = this.cells()[index-1];
+ lower_cell = this.cells()[index];
+ if (upper_cell instanceof IPython.CodeCell && lower_cell instanceof IPython.CodeCell) {
+ upper_text = upper_cell.get_code();
+ lower_text = lower_cell.get_code();
+ lower_cell.set_code(upper_text+'\n'+lower_text);
+ this.delete_cell(index-1);
+ };
+ };
+ };
+
+
+ Notebook.prototype.merge_cell_below = function () {
+ // Todo: implement merging for other cell types.
+ var cell = this.selected_cell();
+ var index = this.selected_index();
+ if (index < this.ncells()-1) {
+ upper_cell = this.cells()[index];
+ lower_cell = this.cells()[index+1];
+ if (upper_cell instanceof IPython.CodeCell && lower_cell instanceof IPython.CodeCell) {
+ upper_text = upper_cell.get_code();
+ lower_text = lower_cell.get_code();
+ upper_cell.set_code(upper_text+'\n'+lower_text);
+ this.delete_cell(index+1);
+ };
+ };
+ };
+
// Cell collapsing and output clearing
Notebook.prototype.collapse = function (index) {