##// END OF EJS Templates
Merge pull request #1480 from minrk/npmagic...
Merge pull request #1480 from minrk/npmagic Fix %notebook magic, etc. nbformat unicode tests and fixes. * json.writes always gives unicode, so that `current.writes` can be trusted to give the same interface * setup base TestCase for nbformat tests, to consolidate code, and better test both file formats * add tests for reading/writing to files * allow `name` as kwarg to new_notebook to avoid unnecessary breakage of previous API. * remove fallback to xml, which would hide corrupt notebook files behind a nonsensical 'xml unsupported' message. Closes #1545, #1487.

File last commit:

r6047:ed256378
r6479:c4cf9403 merge
Show More
savewidget.js
139 lines | 4.7 KiB | application/javascript | JavascriptLexer
Brian E. Granger
More review changes....
r4609 //----------------------------------------------------------------------------
// Copyright (C) 2008-2011 The IPython Development Team
//
// Distributed under the terms of the BSD License. The full license is in
// the file COPYING, distributed as part of this software.
//----------------------------------------------------------------------------
Brian E. Granger
Minors fixes and initial work on save widget....
r4369
//============================================================================
Brian E. Granger
More review changes....
r4609 // SaveWidget
Brian E. Granger
Minors fixes and initial work on save widget....
r4369 //============================================================================
var IPython = (function (IPython) {
var utils = IPython.utils;
var SaveWidget = function (selector) {
Brian E. Granger
Work on save widget, kernel status widget and notebook section.
r4372 this.selector = selector;
if (this.selector !== undefined) {
this.element = $(selector);
this.style();
Brian E. Granger
Minors fixes and initial work on save widget....
r4369 this.bind_events();
}
};
Brian E. Granger
Work on save widget, kernel status widget and notebook section.
r4372 SaveWidget.prototype.style = function () {
Brian Granger
Improved notebook renaming....
r5859 this.element.find('span#save_widget').addClass('ui-widget');
this.element.find('span#notebook_name').addClass('ui-widget ui-widget-content');
Brian Granger
Improving the save notification....
r5874 this.element.find('span#save_status').addClass('ui-widget ui-widget-content')
.css({border: 'none', 'margin-left': '20px'});
Brian E. Granger
Work on save widget, kernel status widget and notebook section.
r4372 };
Brian E. Granger
Minors fixes and initial work on save widget....
r4369 SaveWidget.prototype.bind_events = function () {
var that = this;
Brian Granger
Improved notebook renaming....
r5859 this.element.find('span#notebook_name').click(function () {
that.rename_notebook();
Brian E. Granger
Work on save widget, kernel status widget and notebook section.
r4372 });
Brian Granger
Improved notebook renaming....
r5859 this.element.find('span#notebook_name').hover(function () {
$(this).addClass("ui-state-hover");
}, function () {
$(this).removeClass("ui-state-hover");
Brian E. Granger
Save button becomes Rename when the notebook name changes.
r4630 });
Brian Granger
Major refactoring of saving, notification....
r6047 $([IPython.events]).on('notebook_loaded.Notebook', function () {
that.set_last_saved();
that.update_notebook_name();
that.update_document_title();
});
$([IPython.events]).on('notebook_saved.Notebook', function () {
that.set_last_saved();
that.update_notebook_name();
that.update_document_title();
});
$([IPython.events]).on('notebook_save_failed.Notebook', function () {
that.set_save_status('');
});
Felix Werner
Update document title and last_saved_name only after a successful save.
r5006 };
Brian Granger
Improved notebook renaming....
r5859 SaveWidget.prototype.rename_notebook = function () {
var that = this;
var dialog = $('<div/>');
dialog.append(
$('<h3/>').html('Enter a new notebook name:')
.css({'margin-bottom': '10px'})
);
dialog.append(
Brian Granger
More minor theme/styling changes.
r5871 $('<input/>').attr('type','text').attr('size','25')
Brian Granger
Solid first go at jquery-ui based menus.
r5869 .addClass('ui-widget ui-widget-content')
Brian Granger
Major refactoring of saving, notification....
r6047 .attr('value',IPython.notebook.get_notebook_name())
Brian Granger
Improved notebook renaming....
r5859 );
Brian Granger
Remove Rename dialog from the DOM upon closing it.
r5872 // $(document).append(dialog);
Brian Granger
Improved notebook renaming....
r5859 dialog.dialog({
resizable: false,
modal: true,
title: "Rename Notebook",
closeText: "",
Brian Granger
Fixing bug in dialog closing, drafting print css.
r5873 close: function(event, ui) {$(this).dialog('destroy').remove();},
Brian Granger
Improved notebook renaming....
r5859 buttons : {
"OK": function () {
var new_name = $(this).find('input').attr('value');
Brian Granger
Major refactoring of saving, notification....
r6047 if (!IPython.notebook.test_notebook_name(new_name)) {
Brian Granger
Improved notebook renaming....
r5859 $(this).find('h3').html(
Brian Granger
Disallow empty notebook names.
r5955 "Invalid notebook name. Notebook names must "+
"have 1 or more characters and can contain any characters " +
Brian Granger
Improved notebook renaming....
r5859 "except / and \\. Please enter a new notebook name:"
);
} else {
Brian Granger
Major refactoring of saving, notification....
r6047 IPython.notebook.set_notebook_name(new_name);
IPython.notebook.save_notebook();
Brian Granger
Improved notebook renaming....
r5859 $(this).dialog('close');
}
},
"Cancel": function () {
$(this).dialog('close');
}
}
});
}
Brian E. Granger
Adding keyboard shortcuts.
r4645
Brian Granger
Major refactoring of saving, notification....
r6047 SaveWidget.prototype.update_notebook_name = function () {
var nbname = IPython.notebook.get_notebook_name();
Brian Granger
Improved notebook renaming....
r5859 this.element.find('span#notebook_name').html(nbname);
Stefan van der Walt
Clean up javascript based on js2-mode feedback.
r5479 };
Brian E. Granger
Work on save widget, kernel status widget and notebook section.
r4372
Brian E. Granger
Minors fixes and initial work on save widget....
r4369
Brian Granger
Major refactoring of saving, notification....
r6047 SaveWidget.prototype.update_document_title = function () {
var nbname = IPython.notebook.get_notebook_name();
Brian E. Granger
Misc changes to the notebook....
r5104 document.title = nbname;
Brian E. Granger
Browser window title follows the name of the notebook.
r4549 };
Brian E. Granger
Massive work on the notebook document format....
r4484
SaveWidget.prototype.update_url = function () {
Brian Granger
Major refactoring of saving, notification....
r6047 var notebook_id = IPython.notebook.get_notebook_id();
if (notebook_id !== null) {
Andrew Straw
bugfix: use baseProjectUrl when re-writing URL in address bar
r6003 var new_url = $('body').data('baseProjectUrl') + notebook_id;
Brian Granger
Finishing work on "Make a Copy" functionality.
r5861 window.history.replaceState({}, '', new_url);
Brian E. Granger
Massive work on the notebook document format....
r4484 };
};
Brian Granger
Major refactoring of saving, notification....
r6047 SaveWidget.prototype.set_save_status = function (msg) {
this.element.find('span#save_status').html(msg);
}
Brian E. Granger
Massive work on the notebook document format....
r4484
Brian Granger
Improving the save notification....
r5874 SaveWidget.prototype.set_last_saved = function () {
var d = new Date();
Brian Granger
Major refactoring of saving, notification....
r6047 this.set_save_status('Last saved: '+d.format('mmm dd h:MM TT'));
Brian E. Granger
Save button becomes Rename when the notebook name changes.
r4630 };
Brian E. Granger
Minors fixes and initial work on save widget....
r4369 IPython.SaveWidget = SaveWidget;
return IPython;
}(IPython));