Skip to content

Commit

Permalink
Merge pull request #7340 from minrk/kernel-js-event
Browse files Browse the repository at this point in the history
load kernel js, css, logo on spec_changed event
  • Loading branch information
Carreau committed Jan 1, 2015
2 parents 1e0e703 + bff10f3 commit af92cce
Showing 1 changed file with 44 additions and 34 deletions.
78 changes: 44 additions & 34 deletions IPython/html/static/notebook/js/kernelselector.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,37 +54,32 @@ define([
change_kernel_submenu.append(ks_submenu_entry);
}
};

KernelSelector.prototype.change_kernel = function(kernel_name) {
/**
* TODO, have a methods to set kernel spec directly ?
**/
if (kernel_name === this.current_selection) {
return;

KernelSelector.prototype._spec_changed = function (event, ks) {
/** event handler for spec_changed */

// update selection
this.current_selection = ks.name;

// load logo
var logo_img = this.element.find("img.current_kernel_logo");
$("#kernel_indicator").find('.kernel_indicator_name').text(ks.spec.display_name);
if (ks.resources['logo-64x64']) {
logo_img.attr("src", ks.resources['logo-64x64']);
logo_img.show();
} else {
logo_img.hide();
}
var ks = this.kernelspecs[kernel_name];

// load kernel css
var css_url = ks.resources['kernel.css'];
if (css_url) {
$('#kernel-css').attr('href', css_url);
} else {
$('#kernel-css').attr('href', '');
}

try {
this.notebook.start_session(kernel_name);
} catch (e) {
if (e.name === 'SessionAlreadyStarting') {
console.log("Cannot change kernel while waiting for pending session start.");
} else {
// unhandled error
throw e;
}
// only trigger spec_changed if change was successful
return;
}
this.events.trigger('spec_changed.Kernel', ks);

// load kernel js
if (ks.resources['kernel.js']) {
require([ks.resources['kernel.js']],
function (kernel_mod) {
Expand All @@ -100,7 +95,31 @@ define([
}
);
}
};

KernelSelector.prototype.change_kernel = function (kernel_name) {
/**
* TODO, have a methods to set kernel spec directly ?
**/
if (kernel_name === this.current_selection) {
return;
}
var ks = this.kernelspecs[kernel_name];

try {
this.notebook.start_session(kernel_name);
} catch (e) {
if (e.name === 'SessionAlreadyStarting') {
console.log("Cannot change kernel while waiting for pending session start.");
} else {
// unhandled error
throw e;
}
// only trigger spec_changed if change was successful
return;
}
console.log('spec', kernel_name, ks);
this.events.trigger('spec_changed.Kernel', ks);
};

KernelSelector.prototype.lock_switch = function() {
Expand All @@ -112,19 +131,9 @@ define([

KernelSelector.prototype.bind_events = function() {
var that = this;
var logo_img = this.element.find("img.current_kernel_logo");
this.events.on('spec_changed.Kernel', function(event, data) {
that.current_selection = data.name;
$("#kernel_indicator").find('.kernel_indicator_name').text(data.spec.display_name);
if (data.resources['logo-64x64']) {
logo_img.attr("src", data.resources['logo-64x64']);
logo_img.show();
} else {
logo_img.hide();
}
});
this.events.on('spec_changed.Kernel', $.proxy(this._spec_changed, this));

this.events.on('kernel_created.Session', function(event, data) {
this.events.on('kernel_created.Session', function (event, data) {
if (data.kernel.name !== that.current_selection) {
// If we created a 'python' session, we only know if it's Python
// 3 or 2 on the server's reply, so we fire the event again to
Expand All @@ -134,6 +143,7 @@ define([
}
});

var logo_img = this.element.find("img.current_kernel_logo");
logo_img.on("load", function() {
logo_img.show();
});
Expand Down

0 comments on commit af92cce

Please sign in to comment.