//============================================================================ // Cell //============================================================================ var IPython = (function (IPython) { var utils = IPython.utils; var SaveWidget = function (selector) { this.selector = selector; this.notebook_name_re = /[^/\\]+/ if (this.selector !== undefined) { this.element = $(selector); this.style(); this.bind_events(); } }; SaveWidget.prototype.style = function () { this.element.find('input#notebook_name').addClass('ui-widget ui-widget-content'); this.element.find('button#save_notebook').button(); var left_panel_width = $('div#left_panel').outerWidth(); var left_panel_splitter_width = $('div#left_panel_splitter').outerWidth(); $('span#save_widget').css({marginLeft:left_panel_width+left_panel_splitter_width}); }; SaveWidget.prototype.bind_events = function () { var that = this; this.element.find('button#save_notebook').click(function () { IPython.notebook.save_notebook(); }); $(window).bind('beforeunload', function () { var kill_kernel = $('#kill_kernel').prop('checked'); IPython.notebook.save_notebook(); if (kill_kernel) { IPython.notebook.kernel.kill(); return "You are about to exit this notebook and kill the kernel."; } else { return "You are about the exit this notebook and leave the kernel running."; }; }); }; SaveWidget.prototype.get_notebook_name = function () { return this.element.find('input#notebook_name').attr('value'); } SaveWidget.prototype.set_notebook_name = function (nbname) { this.element.find('input#notebook_name').attr('value',nbname); } SaveWidget.prototype.get_notebook_id = function () { return this.element.find('span#notebook_id').text() }; SaveWidget.prototype.update_url = function () { var notebook_id = this.get_notebook_id(); if (notebook_id !== '') { window.history.replaceState({}, '', notebook_id); }; }; SaveWidget.prototype.test_notebook_name = function () { var nbname = this.get_notebook_name(); if (this.notebook_name_re.test(nbname)) { return true; } else { var bad_name = $('
'); bad_name.html( "The notebook name you entered (" + nbname + ") is not valid. Notebook names can contain any characters except / and \\" ); bad_name.dialog({title: 'Invalid name', modal: true}); return false; }; }; SaveWidget.prototype.status_save = function () { this.element.find('span.ui-button-text').text('Save'); this.element.find('button#save_notebook').button('enable'); }; SaveWidget.prototype.status_saving = function () { this.element.find('span.ui-button-text').text('Saving'); this.element.find('button#save_notebook').button('disable'); }; SaveWidget.prototype.status_loading = function () { this.element.find('span.ui-button-text').text('Loading'); this.element.find('button#save_notebook').button('disable'); }; IPython.SaveWidget = SaveWidget; return IPython; }(IPython));