From f8e87bb959f01a2104f03b7cb01892d6be7b7544 2013-06-09 21:48:43
From: MinRK
Date: 2013-06-09 21:48:43
Subject: [PATCH] bootstrap dialogs
---
diff --git a/IPython/frontend/html/notebook/static/notebook/js/mathjaxutils.js b/IPython/frontend/html/notebook/static/notebook/js/mathjaxutils.js
index 7c7cb1a..560cf99 100644
--- a/IPython/frontend/html/notebook/static/notebook/js/mathjaxutils.js
+++ b/IPython/frontend/html/notebook/static/notebook/js/mathjaxutils.js
@@ -30,9 +30,9 @@ IPython.mathjaxutils = (function (IPython) {
MathJax.Hub.Configured();
} else if (window.mathjax_url != "") {
// Don't have MathJax, but should. Show dialog.
- var dialog = $('')
+ var message = $('')
.append(
- $("").addClass('dialog').html(
+ $("
").addClass('dialog').html(
"Math/LaTeX rendering will be disabled."
)
).append(
@@ -68,11 +68,14 @@ IPython.mathjaxutils = (function (IPython) {
$("").addClass('dialog').html(
"which will prevent this dialog from appearing."
)
- ).dialog({
- title: "Failed to retrieve MathJax from '" + window.mathjax_url + "'",
- width: "70%",
- modal: true,
- })
+ )
+ IPython.dialog.modal({
+ title : "Failed to retrieve MathJax from '" + window.mathjax_url + "'",
+ body : message,
+ buttons : {
+ OK : {class: "btn-danger"}
+ }
+ });
} else {
// No MathJax, but none expected. No dialog.
};
diff --git a/IPython/frontend/html/notebook/static/notebook/js/notebook.js b/IPython/frontend/html/notebook/static/notebook/js/notebook.js
index a89b762..2d57a44 100644
--- a/IPython/frontend/html/notebook/static/notebook/js/notebook.js
+++ b/IPython/frontend/html/notebook/static/notebook/js/notebook.js
@@ -1341,21 +1341,18 @@ var IPython = (function (IPython) {
*/
Notebook.prototype.restart_kernel = function () {
var that = this;
- var dialog = $('');
- dialog.html('Do you want to restart the current kernel? You will lose all variables defined in it.');
- $(document.body).append(dialog);
- dialog.dialog({
- resizable: false,
- modal: true,
- title: "Restart kernel or continue running?",
- closeText: '',
+ IPython.dialog.modal({
+ title : "Restart kernel or continue running?",
+ body : $("").html(
+ 'Do you want to restart the current kernel? You will lose all variables defined in it.'
+ ),
buttons : {
- "Restart": function () {
- that.kernel.restart();
- $(this).dialog('close');
- },
- "Continue running": function () {
- $(this).dialog('close');
+ "Continue running" : {},
+ "Restart" : {
+ "class" : "btn-danger",
+ "click" : function() {
+ that.kernel.restart();
+ }
}
}
});
@@ -1526,24 +1523,16 @@ var IPython = (function (IPython) {
};
};
if (data.worksheets.length > 1) {
- var dialog = $('');
- dialog.html("This notebook has " + data.worksheets.length + " worksheets, " +
- "but this version of IPython can only handle the first. " +
- "If you save this notebook, worksheets after the first will be lost."
- );
- this.element.append(dialog);
- dialog.dialog({
- resizable: false,
- modal: true,
- title: "Multiple worksheets",
- closeText: "",
- close: function(event, ui) {$(this).dialog('destroy').remove();},
+ IPython.dialog.modal({
+ title : "Multiple worksheets",
+ body : "This notebook has " + data.worksheets.length + " worksheets, " +
+ "but this version of IPython can only handle the first. " +
+ "If you save this notebook, worksheets after the first will be lost.",
buttons : {
- "OK": function () {
- $(this).dialog('close');
+ OK : {
+ class : "btn-danger"
}
- },
- width: 400
+ }
});
}
};
@@ -1722,27 +1711,20 @@ var IPython = (function (IPython) {
this.select(0);
this.scroll_to_top();
if (data.orig_nbformat !== undefined && data.nbformat !== data.orig_nbformat) {
- msg = "This notebook has been converted from an older " +
+ var msg = "This notebook has been converted from an older " +
"notebook format (v"+data.orig_nbformat+") to the current notebook " +
"format (v"+data.nbformat+"). The next time you save this notebook, the " +
- "newer notebook format will be used and older verions of IPython " +
+ "newer notebook format will be used and older versions of IPython " +
"may not be able to read it. To keep the older version, close the " +
"notebook without saving it.";
- var dialog = $('');
- dialog.html(msg);
- this.element.append(dialog);
- dialog.dialog({
- resizable: false,
- modal: true,
- title: "Notebook converted",
- closeText: "",
- close: function(event, ui) {$(this).dialog('destroy').remove();},
+ IPython.dialog.modal({
+ title : "Notebook converted",
+ body : msg,
buttons : {
- "OK": function () {
- $(this).dialog('close');
+ OK : {
+ class : "btn-primary"
}
- },
- width: 400
+ }
});
} else if (data.orig_nbformat_minor !== undefined && data.nbformat_minor !== data.orig_nbformat_minor) {
var that = this;
@@ -1752,21 +1734,14 @@ var IPython = (function (IPython) {
this_vs + ". You can still work with this notebook, but some features " +
"introduced in later notebook versions may not be available."
- var dialog = $('');
- dialog.html(msg);
- this.element.append(dialog);
- dialog.dialog({
- resizable: false,
- modal: true,
- title: "Newer Notebook",
- closeText: "",
- close: function(event, ui) {$(this).dialog('destroy').remove();},
+ IPython.dialog.modal({
+ title : "Newer Notebook",
+ body : msg,
buttons : {
- "OK": function () {
- $(this).dialog('close');
+ OK : {
+ class : "btn-danger"
}
- },
- width: 400
+ }
});
}
@@ -1795,21 +1770,13 @@ var IPython = (function (IPython) {
"this notebook is in a newer format than is supported by this " +
"version of IPython. This version can load notebook formats " +
"v"+this.nbformat+" or earlier.";
- var dialog = $('');
- dialog.html(msg);
- this.element.append(dialog);
- dialog.dialog({
- resizable: false,
- modal: true,
+
+ IPython.dialog.modal({
title: "Error loading notebook",
- closeText: "",
- close: function(event, ui) {$(this).dialog('destroy').remove();},
+ body : msg,
buttons : {
- "OK": function () {
- $(this).dialog('close');
- }
- },
- width: 400
+ "OK": {}
+ }
});
}
}
@@ -1917,7 +1884,7 @@ var IPython = (function (IPython) {
console.log("restore dialog, but no checkpoint to restore to!");
return;
}
- var dialog = $('').append(
+ var body = $('').append(
$('').addClass("p-space").text(
"Are you sure you want to revert the notebook to " +
"the latest checkpoint?"
@@ -1934,23 +1901,18 @@ var IPython = (function (IPython) {
).css("text-align", "center")
);
- $(document.body).append(dialog);
-
- dialog.dialog({
- resizable: false,
- modal: true,
- title: "Revert notebook to checkpoint",
- closeText: '',
+ IPython.dialog.modal({
+ title : "Revert notebook to checkpoint",
+ body : body,
buttons : {
- "Revert": function () {
- that.restore_checkpoint(checkpoint.checkpoint_id);
- $(this).dialog('close');
+ Revert : {
+ class : "btn-danger",
+ click : function () {
+ that.restore_checkpoint(checkpoint.checkpoint_id);
+ }
},
- "Cancel": function () {
- $(this).dialog('close');
+ Cancel : {}
}
- },
- width: 400
});
}
diff --git a/IPython/frontend/html/notebook/static/notebook/js/notificationarea.js b/IPython/frontend/html/notebook/static/notebook/js/notificationarea.js
index b7ac857..0f52b7e 100644
--- a/IPython/frontend/html/notebook/static/notebook/js/notificationarea.js
+++ b/IPython/frontend/html/notebook/static/notebook/js/notificationarea.js
@@ -92,28 +92,24 @@ var IPython = (function (IPython) {
});
$([IPython.events]).on('status_dead.Kernel',function () {
- var dialog = $('');
- dialog.html('The kernel has died, and the automatic restart has failed.' +
+ var msg = 'The kernel has died, and the automatic restart has failed.' +
' It is possible the kernel cannot be restarted.' +
' If you are not able to restart the kernel, you will still be able to save' +
' the notebook, but running code will no longer work until the notebook' +
- ' is reopened.'
- );
- $(document.body).append(dialog);
- dialog.dialog({
- resizable: false,
- modal: true,
+ ' is reopened.';
+
+ IPython.dialog.modal({
title: "Dead kernel",
- close: function(event, ui) {$(this).dialog('destroy').remove();},
+ body : msg,
buttons : {
- "Manual Restart": function () {
- $([IPython.events]).trigger('status_restarting.Kernel');
- IPython.notebook.start_kernel();
- $(this).dialog('close');
+ "Manual Restart": {
+ class: "btn-danger",
+ click: function () {
+ $([IPython.events]).trigger('status_restarting.Kernel');
+ IPython.notebook.start_kernel();
+ }
},
- "Don't restart": function () {
- $(this).dialog('close');
- }
+ "Don't restart": {}
}
});
});
@@ -134,25 +130,18 @@ var IPython = (function (IPython) {
msg = "A WebSocket connection to could not be established." +
" You will NOT be able to run code. Check your" +
" network connection or notebook server configuration.";
- var dialog = $('');
- dialog.html(msg);
- $(document.body).append(dialog);
- dialog.dialog({
- resizable: false,
- modal: true,
+ IPython.dialog.modal({
title: "WebSocket connection failed",
- closeText: "",
- close: function(event, ui) {$(this).dialog('destroy').remove();},
+ body: msg,
buttons : {
- "OK": function () {
- $(this).dialog('close');
- },
- "Reconnect": function () {
- knw.set_message('Reconnecting WebSockets', 1000);
- setTimeout(function () {
- kernel.start_channels();
- }, 5000);
- $(this).dialog('close');
+ "OK": {},
+ "Reconnect": {
+ click: function () {
+ knw.set_message('Reconnecting WebSockets', 1000);
+ setTimeout(function () {
+ kernel.start_channels();
+ }, 5000);
+ }
}
}
});
diff --git a/IPython/frontend/html/notebook/static/notebook/js/savewidget.js b/IPython/frontend/html/notebook/static/notebook/js/savewidget.js
index f13bf4b..73c1a78 100644
--- a/IPython/frontend/html/notebook/static/notebook/js/savewidget.js
+++ b/IPython/frontend/html/notebook/static/notebook/js/savewidget.js
@@ -69,28 +69,23 @@ var IPython = (function (IPython) {
SaveWidget.prototype.rename_notebook = function () {
var that = this;
- var dialog = $('');
- dialog.append(
- $('').html('Enter a new notebook name:')
- .css({'margin-bottom': '10px'})
- );
+ var dialog = $('').append($("").addClass("rename-message")
+ .html('Enter a new notebook name:'));
dialog.append(
$('').attr('type','text').attr('size','25')
- .addClass('ui-widget ui-widget-content')
- .attr('value',IPython.notebook.get_notebook_name())
+ .val(IPython.notebook.get_notebook_name())
);
- // $(document.body).append(dialog);
- dialog.dialog({
- resizable: false,
- modal: true,
+ IPython.dialog.modal({
title: "Rename Notebook",
- closeText: "",
- close: function(event, ui) {$(this).dialog('destroy').remove();},
+ body: dialog,
buttons : {
- "OK": function () {
- var new_name = $(this).find('input').attr('value');
+ "Cancel": {},
+ "OK": {
+ class: "btn-primary",
+ click: function () {
+ var new_name = $(this).find('input').val();
if (!IPython.notebook.test_notebook_name(new_name)) {
- $(this).find('h3').html(
+ $(this).find('.rename-message').html(
"Invalid notebook name. Notebook names must "+
"have 1 or more characters and can contain any characters " +
"except :/\\. Please enter a new notebook name:"
@@ -98,21 +93,18 @@ var IPython = (function (IPython) {
} else {
IPython.notebook.set_notebook_name(new_name);
IPython.notebook.save_notebook();
- $(this).dialog('close');
}
+ }}
},
- "Cancel": function () {
- $(this).dialog('close');
- }
- },
open : function (event, ui) {
var that = $(this);
// Upon ENTER, click the OK button.
that.find('input[type="text"]').keydown(function (event, ui) {
if (event.which === utils.keycodes.ENTER) {
- that.parent().find('button').first().click();
+ that.find('.btn-primary').first().click();
}
});
+ that.find('input[type="text"]').focus();
}
});
}
diff --git a/IPython/frontend/html/notebook/templates/notebook.html b/IPython/frontend/html/notebook/templates/notebook.html
index b01049d..a64c8be 100644
--- a/IPython/frontend/html/notebook/templates/notebook.html
+++ b/IPython/frontend/html/notebook/templates/notebook.html
@@ -220,6 +220,7 @@ class="notebook_app"
+