@ -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 ) {
@ -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 ( ) {
@ -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
@ -134,6 +143,7 @@ define([
}
} ) ;
var logo _img = this . element . find ( "img.current_kernel_logo" ) ;
logo _img . on ( "load" , function ( ) {
logo _img . show ( ) ;
} ) ;